当前位置: 首页 > news >正文

systemverilog function的一点小case

关于function的应用无论是在systemverilog还是verilog中都有很广泛的应用,但是一直有一个模糊的概念困扰着我,今天刚好有时间来搞清楚并记录下来。

关于fucntion的返回值的问题:

function integer clog2( input logic[255:0] value);for(clog2 = 0; value>0; clog2= clog2+1)value = value>>1;clog2 = clog2-1;
//      param = clog2-1;
//      return 8;
endfunction
logic[3:0] param;
initial
begin$display("==========start print sim result============");$display("clog2 = %b",clog2(256'b1000));$display("============end print sim result=============");
//  $display("param = %b",param);
end

上述function vcs编译之后打印的结果为:

==========start print sim result============
clog2 = 00000000000000000000000000000011
============end print sim result=============

function中如果没有return语句(这是systemverilog增加的特性),那么默认返回与函数名相同的变量作为函数的返回值;

如果以下面的方式code:

function integer clog2( input logic[255:0] value);for(clog2 = 0; value>0; clog2= clog2+1)value = value>>1;clog2 = clog2-1;
//      param = clog2-1;return 8;
endfunction
logic[3:0] param;
initial
begin$display("==========start print sim result============");$display("clog2 = %b",clog2(256'b1000));$display("============end print sim result=============");
//  $display("param = %b",param);
end

那么编译之后打印的结果是什么呢?

==========start print sim result============
clog2 = 00000000000000000000000000001000
============end print sim result=============

看到了吧,function会以return语句声明的值作为函数的返回值;

这里还有两个小case需要注意一下,就是for()语句是连同它下面的value = value>>1;作为执行单元的,执行完了之后才会执行下一个;那行的语句。

还有这里要另外注意:

function 返回值的类型:

void:如果你想调用函数并且忽略它的返回值,可以使用void进行声明函数类型,比如函数只用来打印一些想要的信息:

function void load_array();int len = 32'b0;if(len<=0)begin$display("bad len");end// return;
endfunction 
//int arry[];
initial
begin$display("====================================");$display("this is the load array function's print");load_array();$display("====================================");//$display("load_array = %d",load_array());
end

打印结果:

====================================
this is the load array function's print
bad len
====================================

但是你如果把这句解开:

 $display("load_array = %d",load_array());

那就会报错了,因为这里使用了load_array()的返回值,但是void函数是没有返回值的。

报错:

Void functions cannot be used in contexts which require return values

 函数类型还有logic,int,static,automatic,数组,结构体等等类型;

Systemverilog中static、automatic区别_automatic变量-CSDN博客

 

相关文章:

systemverilog function的一点小case

关于function的应用无论是在systemverilog还是verilog中都有很广泛的应用&#xff0c;但是一直有一个模糊的概念困扰着我&#xff0c;今天刚好有时间来搞清楚并记录下来。 关于fucntion的返回值的问题&#xff1a; function integer clog2( input logic[255:0] value);for(cl…...

微服务的初步使用

环境说明 jdk1.8 maven3.6.3 mysql8 idea2022 spring cloud2022.0.8 微服务案例的搭建 新建父工程 打开IDEA&#xff0c;File->New ->Project&#xff0c;填写Name&#xff08;工程名称&#xff09;和Location&#xff08;工程存储位置&#xff09;&#xff0c;选…...

【2023年11月第四版教材】第18章《项目绩效域》(合集篇)

第18章《项目绩效域》&#xff08;合集篇&#xff09; 1 章节内容2 干系人绩效域2.1 绩效要点2.2 执行效果检查2.3 与其他绩效域的相互作用 3 团队绩效域3.1 绩效要点3.2 与其他绩效域的相互作用3.3 执行效果检查3.4 开发方法和生命周期绩效域 4 绩效要点4.1 与其他绩效域的相互…...

Android 11.0 mt6771新增分区功能实现三

1.前言 在11.0的系统开发中,在对某些特殊模块中关于数据的存储方面等需要新增分区来保存, 所以就需要在系统分区新增分区,接下来就来实现这个功能,看系列三的实现过程 2.mt6771新增分区功能实现三的核心类 build/make/tools/releasetools/common.py device/mediatek/mt6…...

计算机网络——计算机网络的性能指标(上)-速率、带宽、吞吐量、时延

目录 速率 比特 速率 例1 带宽 带宽在模拟信号系统中的意义 带宽在计算机网络中的意义 吞吐量 时延 发送时延 传播时延 处理时延 例2 例3 速率 了解速率之前&#xff0c;先详细了解一下比特&#xff1a; 比特 计算机中数据量的单位&#xff0c;也是信息论中信…...

每日一题 518零钱兑换2(完全背包)

题目 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号整…...

Linux shell编程学习笔记8:使用字符串

一、前言 字符串是大多数编程语言中最常用最有用的数据类型&#xff0c;这在Linux shell编程中也不例外。 本文讨论了Linux Shell编程中的字符串的三种定义方式的差别&#xff0c;以及字符串拼接、取字符串长度、提取字符串、查找子字符串等常用字符串操作,&#xff0c;以及反…...

【Spring笔记03】Spring依赖注入各种数据类型

这篇文章&#xff0c;详细介绍一下Spring框架中如何注入各种数据类型&#xff0c;包含&#xff1a;注入基本数据类型、数组、集合、Map映射、Property属性、注入空字符串、注入null值、注入特殊字符等内容&#xff0c;以及如何使用命名空间进行依赖注入。 目录 一、注入各种数据…...

2023计算机保研——双非上岸酒吧舞

我大概是从22年10月份开始写博客的&#xff0c;当时因为本校专业的培养方案的原因&#xff0c;课程很多&#xff0c;有些知识纸质记录很不方便&#xff0c;于是选择了打破了自己的成见使用博客来记录学习生活。对于我个人而言&#xff0c;保研生活在前一大半过程中都比较艰难&a…...

《计算机视觉中的多视图几何》笔记(13)

13 Scene planes and homographies 本章主要讲述两个摄像机和一个世界平面之间的射影几何关系。 我们假设空间有一平面 π \pi π&#xff0c;平面上的一点为 x π x_{\pi} xπ​。 x π x_{\pi} xπ​分别在两幅图像 P , P ′ P, P P,P′上形成了 x , x ′ x, x x,x′。 那…...

H5移动端购物商城系统源码 小型商城全新简洁风格全新UI 支持易支付接口

一款比较简单的 H5 移动端购物商城系统源码&#xff0c;比较适合单品商城、小型商城使用。带有易支付接口。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88391704 源码下载2&#xff1a;评论留言或私信留言...

全志ARM926 Melis2.0系统的开发指引⑤

全志ARM926 Melis2.0系统的开发指引⑤ 编写目的8. 固件修改工具(ImageModify)使用8.1.界面说明8.2.操作步骤8.2.1. 配置平台8.2.2. 选择固件8.2.3. 选择要替换的文件8.2.4. 替换文件8.2.5. 保存固件 8.3.注意事项8.4.增加固件修改权限设置8.4.1. 概述8.4.2. 操作说明8.4.2.1.打…...

【AI视野·今日Robot 机器人论文速览 第四十七期】Wed, 4 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Wed, 4 Oct 2023 Totally 40 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;基于神经网络的多模态触觉感知, classification, position, posture, and force of the grasped object多模态形象的解耦(f…...

GPX可视化工具 GPX航迹预览工具

背景 当我们收到别人分享的航迹文档&#xff0c;即gpx文档时&#xff0c;如何快速的进行浏览呢&#xff1f;我们可以使用GIS软件来打开gpx文档并显示gpx中所记录的航迹&#xff0c;例如常用的GIS软件有googleEarth&#xff0c; Basecamp&#xff0c; GPXsee&#xff0c; GPX E…...

学信息系统项目管理师第4版系列18_采购管理

1. 协议 1.1. 合同 1.1.1. 国际合作的项目经理应牢记&#xff0c;无论合同规定如何详尽&#xff0c;文化和当地法律对合同及其可执行性均有影响 1.2. 服务水平协议&#xff08;SLA&#xff09; 1.3. 谅解备忘录 1.4. 协议备忘录&#xff08;MOA&#xff09; 1.5. 订购单 …...

标准化数据模型

标准化数据模型 标准化被定义为减少或消除数据集中冗余的过程。 它已成为关系数据库中数据建模的事实上的方法&#xff0c;很大程度上是由于这些系统最初设计时所围绕的底层资源限制&#xff1a;缓慢的磁盘和昂贵的 RAM。更少的数据冗余/重复意味着更有效地从磁盘读取数据并占…...

linux平台源码编译ffmpeg

目录 编译平台 编译步骤 编译平台 中标麒麟 编译步骤 1 从Download FFmpeg 下载源码&#xff0c;我选中了4.2.9版 2 解压 3 在解压后的目录下输入 ./configure --enable-shared --prefix/usr/local/ffmpeg 4 make 5 sudo make install 6 ffmpeg的头文件、可执行程…...

Vue中如何进行拖拽与排序功能实现

在Vue中实现拖拽与排序功能 在Web应用程序中&#xff0c;实现拖拽和排序功能是非常常见的需求&#xff0c;特别是在管理界面、任务列表和图形用户界面等方面。Vue.js作为一个流行的JavaScript框架&#xff0c;提供了许多工具和库来简化拖拽和排序功能的实现。本文将介绍如何使…...

新款UI动态壁纸头像潮图小程序源码

新款UI动态壁纸头像潮图小程序源码&#xff0c;不需要域名服务器&#xff0c;直接添加合法域名&#xff0c;上传发布就能使用。 可以对接开通流量主&#xff0c;个人也能运营&#xff0c;不需要服务器源码完整。整合头像&#xff0c;动态壁纸&#xff0c;文案功能齐全。 源码…...

Python逐日填补Excel中的日期并用0值填充缺失日期的数据

本文介绍基于Python语言&#xff0c;读取一个不同的列表示不同的日期的.csv格式文件&#xff0c;将其中缺失的日期数值加以填补&#xff1b;并用0值对这些缺失日期对应的数据加以填充的方法。 首先&#xff0c;我们明确一下本文的需求。现在有一个.csv格式文件&#xff0c;其第…...

Vue3 的 JSX 函数组件,每次更新都会重新运行吗?

我用最直白、最无歧义、100%准确的方式&#xff0c;只回答你这一个问题&#xff1a; ✅ 最终答案&#xff08;背它&#xff09; 在 Vue3 中&#xff1a; 你写的 JSX 函数组件&#xff0c;整个函数 只会在组件初始化时运行 1 次&#xff01; 更新时&#xff0c;整个函数 不会重新…...

wflow工作流设计器:5分钟快速上手的企业流程自动化完整指南

wflow工作流设计器&#xff1a;5分钟快速上手的企业流程自动化完整指南 【免费下载链接】wflow workflow 工作流设计器&#xff0c;企业OA流程设计。表单流程设计界面操作超级简单&#xff01;&#xff01;普通用户也能分分钟上手&#xff0c;不需要专业知识。本设计器支持可视…...

如何快速搭建QQ机器人?LuckyLilliaBot入门指南

如何快速搭建QQ机器人&#xff1f;LuckyLilliaBot入门指南 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot 在数字化时代&#xff0c;QQ机器人开发已成为自动化交互的重要工具。LuckyLilliaBot作为N…...

OpenClaw深度配置:Qwen3.5-9B模型参数调优指南

OpenClaw深度配置&#xff1a;Qwen3.5-9B模型参数调优指南 1. 为什么需要关注模型参数调优&#xff1f; 第一次用OpenClaw对接Qwen3.5-9B模型时&#xff0c;我遇到了一个奇怪现象&#xff1a;同样的"整理桌面截图并分类归档"任务&#xff0c;白天执行成功率能达到8…...

某民办高校关键人才梯队建设项目成功案例纪实

——破解“断层”隐忧&#xff0c;构建人才梯队蓄水池【客户行业】学校、民办学校、民办高等教育【问题类型】人才梯队建设&#xff1b;人才培养体系&#xff1b;激励体系&#xff1b;核心人才保留【客户背景】长三角地区一所知名的民办应用型本科院校&#xff0c;建校25年&…...

立知-lychee-rerank-mm效果展示:汽车配置单与实拍图一致性验证

立知-lychee-rerank-mm效果展示&#xff1a;汽车配置单与实拍图一致性验证 1. 引言&#xff1a;多模态重排序的实用价值 在日常工作和生活中&#xff0c;我们经常遇到这样的场景&#xff1a;看到一份产品配置单&#xff0c;但不确定实际产品是否真的符合描述&#xff1b;或者…...

自适应混沌粒子群优化算法在PID参数整定中的应用:高效控制策略的代码详解与模型分享

自适应混沌粒子群整定PID/ACPSO-PID/PID参数整定 ACPSO&#xff08;自适应混沌粒子群优化&#xff09;整定PID&#xff08;比例-积分-微分控制器&#xff09;是一种高效的控制参数优化方法。 它利用粒子群优化&#xff08;PSO&#xff09;的基本框架&#xff0c;同时融入混沌理…...

团队用ai写代码越来越猛但为什么改个功能像在拆炸弹背后是流程断了

最近不少团队反馈&#xff0c;AI Coding 跑得飞快&#xff0c;两周就能堆出新功能&#xff0c;可一旦要改个按钮颜色&#xff0c;整个系统却像在拆炸弹。这种“改功能崩塌”的怪圈&#xff0c;正让许多管理者头疼&#xff1a;明明用了最先进的工具&#xff0c;交付反而更慢了。…...

【linux】Xorg与X Window System的交互机制解析

1. X Window System与Xorg的关系 当你打开Linux电脑看到图形界面时&#xff0c;背后默默工作的就是X Window System。这个诞生于1984年的图形系统至今仍是Linux桌面环境的基石&#xff0c;而Xorg则是它的现代实现版本。简单来说&#xff0c;X Window System定义了图形显示的标准…...

QT程序从Windows到ARM开发板:手把手教你解决交叉编译中的屏幕适配问题

QT程序从Windows到ARM开发板&#xff1a;手把手教你解决交叉编译中的屏幕适配问题 在嵌入式开发领域&#xff0c;QT框架因其跨平台特性和丰富的UI组件库而广受欢迎。然而&#xff0c;当我们将QT程序从熟悉的Windows环境迁移到ARM开发板时&#xff0c;往往会遇到各种意想不到的挑…...