SystemVerilog-跳转语句

数字硬件建模SystemVerilog-跳转语句

ee38dfd76c128df5c46a55fc2b93ce68.png

经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。

马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~

33b152f922d594f9168d250cf5728c72.png

跳转语句允许程序代码跳过一个或多个编程语句,SystemVerilog的jump语句是continue、break和disable。

continue 和 break跳转语句

continue和break-跳转语句在循环中用于控制循环中语句的执行。这些跳转语句只能用于for循环、while循环和foreach循环。它们不能在循环之外使用。

continue语句跳转到循环的结尾,并计算循环的结束表达式(end expression),以确定循环是否应继续进行另一次迭代。下面的代码段使用for循环遍历一个小查找表的地址,该表被建模为16-bit的一维数组。使用continue语句跳过表中值为0的位置。对于非零位置,调用函数对该值进行某种操作(函数未显示)。

2e990a9ea28ec65d7283a76acdca4ddb.png

break语句立即终止循环的执行。循环退出,任何循环控制语句(如for循环步骤分配)都不会执行。

示例6-10说明了如何使用continue和break来查找在一个位范围内设置为1的第一位。图6-10显示了该示例的综合结果。

示例6-10:使用continue和break控制循环执行
//`begin_keywords "1800-2012" // use SystemVerilog-2012 keywords
module find_bit_in_range
#(parameter N = 4) // bus size
(input  logic [N-1:0]         data,
input  logic [$clog2(N)-1:0] start_range, end_range,
output logic [$clog2(N)-1:0] low_bit
);
 timeunit 1ns; timeprecision 1ns;

 always_comb begin 
   low_bit = '0;
   for (int i=0; i<N; i++) begin 
     if (i < start_range) continue;  // skip rest of loop
     if (i > end_range)   break;     // exit loop
     if ( data[i] ) begin 
       low_bit = i;
       break;                        // exit loop
     end 
   end  // end of the loop
   // ...  // process data based on lowest bit set
 end 

endmodule: find_bit_in_range
//`end_keywords
e6f0b78262063c419d74a0d21463b771.png图6-10:示例6-10的综合结果

disable跳转语句

SystemVerilog 的disable语句类似于其他编程语言中的go-to语句。disable跳转到一组命名语句的末尾或任务的末尾。disable跳转语句的一般用法是:

bc04eb5b36e0b15227359331e6c1ded1.png

在这个代码片段中,begin-end语句组被命名为search_loop。disable语句指示仿真立即跳到名为begin-end 语句组的末尾。

最初的Verilog语言没有continue和break-跳转语句。相反,disable语句与通用go-to行为一样用于跳转到循环的末尾,但会继续执行循环的下一个过程。disable语句通过跳过循环的末端,过早地跳出循环。要跳过循环中的语句,继续执行循环时,命名的begin-end语句组必须包含在循环中。要跳出循环,命名的begin-end语句组必须包含整个循环。

下面的示例显示了与示例6-10相同的功能,除了使用disable 跳转语句而不是continue和break语句,

374bfcebb7d47f2ae14895995769118c.png
最佳实践指南6-6
使用continue和break-跳转语句控制循环迭代。不要使用disable跳转语句.

disable 跳转语句提供与break和continue 跳转语句相同的功能,如上所示。然而,disable 跳转语句使代码更难读懂和维护,使用continue和break是一种更简单、更直观的编码方式。

disable跳转语句是一个通用的go-to语句,可以在验证中使用。综合编译器通常不支持使用disable的其他方法。

No-op声明

SystemVerilog编程语句以分号;(分号本身被视为完整的编程语句)表示没有要执行的功能。单独的分号执行空操作,通常被称为无操作语句(no-op语句)。

下面的代码片段表示存储数据变量的寄存器(使用触发器)。由case语句表示的多路输入确定要存储在数据寄存器中的值。

2cf929517378dbb6a4054631810cb9dc.png

此代码段中的case语句不会对mode的2’b11值进行解码。虽然在本例中功能上是正确的,但不完整的case语句不是完美的,并且可能会在代码验证期间引发问题,或者其他工程师在维护或重用代码时引入歧义(解码模式值2’b11是不是故意的?还是模型中的疏忽(错误))。在这个例子中,没有任何东西可以说明这种或那种方式。添加关于未使用的2’b11值的注释可能会很有帮助,但不是所有人都会用心的注释代码。

使用无操作语句有助于使RTL模型更加自我记录和可读。下面的代码片段在功能上与前面的示例相同,但是,即使没有注释,很明显,也很方便人们理解代码。

613f918e85c6bbb903abe496d5fffe47.png

时序逻辑中的无操作语句将被综合编译器忽略。没有要实现的功能,因此寄存器将保留其初始值。然而,综合编译器不能忽略组合逻辑中的no-op语句。当没有为变量赋值时,它将保留以前的值。综合时可能会添加一个锁存器,以便逻辑可以保存以前的值。

最佳实践指南6-7
不要将no-op语句用于RTL建模,

尽管综合编译器支持no-op,但它在RTL功能中没有任何用途,并且可能导致组合逻辑中出现意外的锁存器。为了完整性,我们讨论了no-op语句,但不建议在RTL代码中使用。

往期推荐

数字硬件建模SystemVerilog-循环语句

SystemVerilog-决策语句-case语句

数字IC验证:System Verilog学习 - 过程语句与控制流
IC Beginner的博客
07-22 2435
文章目录1 引言Introduction2 选择语句Selection Statements2.1 if 语句2.2 case语句2.3 case inside语句2.4 例程unique_priority.sv3 循环语句Loop Statement3.1 例程:do_while_loop.sv3.2 例程:for_loop.sv3.3 例程:foreach_loop.sv4 跳转语句Jump Statement4.1 例程:break_loop.sv4.2 例程:continue_loop.sv4.3
【从零开始学习 SystemVerilog】3.2、SystemVerilog 控制流—— break 和 continue
努力,加油每一天鸭~
09-10 481
【从零开始学习 SystemVerilog】3.2、SystemVerilog 控制流—— break 和 continue
过程语句和子程序
GGbao_的博客
04-29 305
SystemVerilog中增加return语句用于返回,如果没有,则任务中的剩下的部分就必须被放到一个else条件语句中,从而使得代码变得不规整,可读性也降低了。Verilog中的$timeformat的四个参数分别是事件标度(-9表示纳秒、-12表示皮秒)、小数点后的数据精度、时间值之后的后缀字符串、显示数值的最小宽度。这样它就能被任何任务或函数所调用了。在静态代码块中声明并初始化变量的时候存在漏洞,变量是静态分配的,所以实际上在仿真的一开始它就有初值,解决的办法及时将程序快声明为automatic。
system verilog 处理子进程(关闭/等待/跳转
踩坑记录
09-15 2291
如何关闭 fork 里某个子进程?disable语句可以用在task或者块中去终止指定的task或块,包括终止disable语句所在的块或者task。disable也可以用在function中去终止task或者块,但不能用于终止function。当在function中用dsiable语句终止了一个task或者块,而这个task或者块刚好又是这个function的caller,这种情况的结果是未知的。方法:给每个begin end块起个名字,然后就可以在该begin end中关闭该子进程。
system verilog中的跳转操作 disable break continue return
热门推荐
kebu12345678的博客
08-21 1万+
verilog中,使用disable声明来从执行流程中的某一点跳转到另一点。特别地,disable声明使执行流程跳转到标注名字的声明组末尾,或者一个任务的末尾。 verilog中的disable命令用法有很多,下面是一个简单的例子,解释了disable的作用范围: 1 // find first bit set within a range of bits 2 always @* ...
Matlab代码verilog-micro-jump:跳至F4的任何功能,类或标题。Go,Markdown,Python,C...微型编辑器的
05-27
Matlab代码verilog 微型跳转-跳转到微型编辑器中的功能 跳至F4的任何功能,类或标题。 Go,Markdown,Python,C ...微型编辑器的插件。 安装 先决条件。 Ctags提取标题,函数和类。 Fzf显示了交互式模糊查找以选择跳转的位置。 这些说明已在Ubuntu 20.04和Debian 10 Buster中进行了测试。 对于较旧Linux,您可能需要从源代码安装fzf。 $ sudo apt-get update $ sudo apt-get -y install fzf ctags git 插件。 如果您以前从未运行过micro,请启动“ micro”并用Ctrl-Q退出以创建配置文件。 $ mkdir $HOME/.config/micro/plug/ $ cd $HOME/.config/micro/plug/ $ git clone https://github.com/terokarvinen/micro-jump $ cd 使用F4跳跃 $ micro tero.py 写一些Python。 Jump还支持Go,C,JavaScript ... d
System Verilog与功能验证(三)
小灰灰的FPGA的博客
03-04 2717
System Verilog过程语句 (1)赋值语句 (2)条件选择语句 (3)循环语句 (4)跳转语句 (5)子程序调用 (6)事件控制 1、赋值语句四类 阻塞赋值:使用 = ; 非阻塞赋值:使用 <= ; 自加/自减赋值:使用 ++/-- ; 过程连续赋值语句:使用 assign/deassign、force/release; 例子: initial begin logic data; logic data_out; logic data_test; data_out <= 1'b1
systemverilog.vim-1.9插件包
11-06
该插件能够识别并区分SystemVerilog的各种元素,如关键字、常量、变量、函数、条件语句等,使用不同的颜色进行标记。视觉上的差异有助于快速定位代码问题,提高代码审查效率。 3. **语法检查**:实时语法检查可以...
SystemVerilog语言简介(三)
12-09
本篇将重点介绍SystemVerilog中的强制类型转换、操作符、唯一性和优先级决定语句、底部检测的循环以及跳转语句。 1. **强制类型转换** 在Verilog中,不同数据类型间的转换并不直接支持。然而,SystemVerilog引入了...
SystemVerilog笔记
weixin_44381276的博客
08-16 1231
SV笔记 数据类型 四值逻辑类型:integer、logic、reg、net-type(例如wire、tri) 二值逻辑类型:byte、short int、int、long int、bit 有符号类型:byte、short int、int、long int、integer 无符号类型:bit、logic、reg、net-type(例如wire、tri) 定宽数组:int a[x]; a[] = '{ }; 动态数组:int a[]; a = new[x]; a[x] = '{ }; 队列: i
System Verilogverilog的对比
04-20
system verilogverilog的区别,也讲了开发时的注意事项
vim打造最强systemverilog编辑器
niuiic的博客
10-27 1万+
首发于我的个人博客(https://www.niuiic.top) 本文介绍如何使用 vim 搭建 systemverilog 编辑环境。功能包括自动补全、语法高亮、语法检查、格式化等。 自动补全与语法检查 自动补全功能使用 lsp。本文选用 svls 作为 systemverilog 的语言服务器。 svls 使用 rust 语言编写,需要 rust 语言环境,使用 rust 包管理器 cargo 安装。或者可以从 snap 商店下载。 选择一款管理调用 lsp 的 vim 插件。本文选用 coc.nv
【SystemVerilog】并行线程的几种实现(从@语句中break的问题延伸)
IC Beginner的博客
03-04 1054
文章目录一、从@语句中break的问题二、并行线程的几种实现 一、从@语句中break的问题 最近遇到一个情形,已经进入@语句等待敏感事件A,但是中途若出现另一个事件B,要求立即从@语句中break出来,且不执行后续语句。写了个简化逻辑如下: task wait_a; @(A); // 阻塞等待 execute_function(); // 事件A触发后,才会执行execute_function endtask 不同于设置进入@语句的条件,可以通过 iff 或 -> 来约束,对于已经进入阻塞等待
systemVerilog过程语句:for循环语句控制/跳转 continue break return
Leo ICer的博客
11-15 3049
仿真命令:vcs -R -sverilog continue_loop.sv当i的值在(i>=5)&&(i=5)&&(i
systemverilog语法(二)
南国之邱
02-11 1万+
九、过程语句和子程序 1、过程语句:begin•••end、fork•••join。 用于循环的continue:表示跳过本轮循环剩下的语句直接进入下一轮循环。 Break:用于终止并跳出循环。 2、任务task、函数function以及void函数 任务消耗时间而函数不消耗。 如果你想调用函数并且忽略它的返回值,可以使用void进行结果转换。 例: 3、在子程序中去掉begin•
Systemverilog(绿皮书)学习日记(2)— 过程语句与子程序
最新发布
weixin_48957185的博客
08-01 912
Verilog语法总结(三)
li_qcxy的专栏
10-30 1353
数据类型 按抽象数据类型分: l  Integer l  Real l  Event l  Parameter:参数型数据是被命名的常量,在仿真钱对其赋值,在整个仿真过程中保持其值不变,数据的具体类型由所赋值决定。用来定义变量位宽及延迟时间等。   Ø  算术运算符 + - * / % Ø  符号运算符 + - Ø  关系运算符 ==逻辑相等  !=逻辑不
System Verilog验证笔记:第三章 过程语句和子程序
qq_41535675的博客
10-15 476
System Verilog验证绿皮书学习笔记,第三章
6.嵌套循环&break和continue使用&死循环
学python从入门,到入土...
11-12 837
嵌套循环&break和continue使用&死循环
liunx systemverilog-formatter-vscode
07-27
对于VS Code,可以使用一些插件来格式化SystemVerilog代码。其中一个常用的插件是SystemVerilog formatter,它可以帮助自动格式化SystemVerilog代码,使其具有一致的缩进、换行和空格。 要在VS Code中使用SystemVerilog formatter插件,可以按照以下步骤操作: 1. 打开VS Code,并在左侧导航栏中选择扩展(Extensions)图标。 2. 在搜索栏中输入 "SystemVerilog formatter" 并按下 Enter 键。 3. 从搜索结果中选择一个符合您需求的插件(如 "SystemVerilog Formatter" 或 "SV-Formatter")。 4. 单击插件名称旁边的 "Install" 按钮进行安装。 5. 安装完成后,可以在VS Code的右上角找到插件图标(通常是一个小螺丝扳手或齿轮的图标)。 6. 单击该图标以打开插件设置。 7. 在插件设置中,您可以配置格式化选项,例如缩进大小、换行风格等。根据您的需求进行配置。 8. 在编辑SystemVerilog代码时,可以使用快捷键(如Ctrl + Shift + I)或右键单击选择 "Format Document" 来触发代码格式化。 请注意,不同的插件可能具有不同的功能和设置选项。您可以根据个人偏好尝试不同的插件,并根据需要进行自定义配置。此外,确保您的VS Code已经安装了适用于SystemVerilog的语法高亮插件,以获得更好的代码阅读体验。
写文章

热门文章

  • Cadence License破解失败解决办法 62942
  • 高速差分信号AC耦合电容详解 52196
  • FPGA 主流芯片选型指导和命名规则(一) 49047
  • 史上最详细的ALLEGRO导出GERBER教程!卧龙会草根西米原创(转) 48533
  • 隔离模块介绍-隔离电源模块 39460

分类专栏

  • 优秀的 Verilog/FPGA开源项目介绍 付费 99篇
  • AXI 付费 25篇
  • 开源FPGA和它的工具们 17篇
  • FPGA和CNN 10篇
  • 数字硬件建模-SystemVerilog篇 40篇
  • HDLBits:SystemVerilog 30篇
  • Vivado那些事儿 65篇
  • HLS 18篇
  • ISP 4篇
  • ZYNQ 16篇
  • 数字硬件建模-Verilog篇 23篇
  • 古老CPU启示录 5篇
  • MIPI 4篇
  • PCIe 15篇
  • SDR 5篇
  • 笔试面试 2篇
  • Vitis 2篇
  • 杂七杂八 13篇
  • OpenCL 10篇
  • FPGA 223篇
  • C++
  • Vega-Prime
  • Matlab 1篇
  • Linux 3篇
  • C语言 3篇
  • 实用技巧 10篇
  • Office操作 2篇
  • 电路小常识 37篇
  • PCB 24篇
  • vivado-教程 3篇
  • EMC 1篇
  • OpenCV 1篇
  • 树莓派 3篇
  • 机器视觉 4篇
  • SOC-FPGA 4篇
  • CPU-FPGA 2篇
  • 并行计算 1篇
  • MPI 3篇
  • python 1篇
  • 物联网小常识 1篇
  • DEEP LEARNING 1篇
  • 区块链 3篇
  • 通信IC设计 6篇
  • 信号处理 2篇
  • 硬件设计 3篇

最新评论

  • ZYNQ从放弃到入门(一)MIO

    m0_37191199: 大佬我问一下,PS端MIO的翻转速率有多高呢?

  • FPGA无芯片HDMI接入方案及源码

    2301_77431451: 均衡器有推荐吗

  • 【Vivado那些事】简谈FPGA比特流结构

    尘末一样: 大佬你好,请问A7系列FPGA内部存储器1帧有多少位呢

  • Xilinx Multiboot实例演示

    linkcli: 大神,你真是大好人,感谢您的分享,不然我都完不成任务。

  • PHY_MDIO 接口设计

    wsjc1999: 大佬,有源代码不?表情包

大家在看

  • 电商导购平台的动态扩展与缩容策略 1777
  • 泛海微4056H印字丝印1A 线性锂离子电池充电管理IC耐压30V
  • 电商返利平台的实时推荐与个性化服务 2093
  • 从零学编程-C语言-第8天 24
  • 最全终端lux命令下载视频的一篇博文,保证一看就会,上手就对 59

最新文章

  • 国内FPGA工程师未来的出路在哪
  • 几种自动生成verilog代码的方法
  • FPGA实现串口升级及MultiBoot(四)MultiBoot简介
2024
09月 6篇
08月 9篇
07月 9篇
06月 10篇
05月 6篇
04月 7篇
03月 9篇
02月 6篇
01月 9篇
2023年138篇
2022年239篇
2021年279篇
2020年181篇
2019年54篇
2018年90篇
2017年76篇
2016年26篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OpenFPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王福田推广网站优化哪家好seo怎么优化网站排名辽宁低价机械行业网站优化奎屯seo网站优化河源专业网站优化有哪些网站SEO优化入门教程陕西专业的网站优化现货批发随州营销型网站优化平台安定区网站seo优化排名优化公司网站没错易速达淄博优化网站平台企业网站关键词优化方式网站自动优化多少钱不锈钢网站seo优化方法秦皇岛网站推广优化技巧国内网站优化系统加盟平台河南网站优化推广嘉定区正规网站优化价格临沂正规网站优化郑州网站优化外包怎么收费的英文网站优化西南网站优化行业江干区网站推广优化价格太仓网站关键词优化工作室厚街家具网站优化服务分析网站的优化特征好的销售行业网站优化哪家便宜网络营销企业网站优化我的世界动作优化mod网站网站优化不上怎么办香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化