1、$finish

        系统任务$finish的作用是退出仿真器,结束仿真过程。格式:

  • $finish
  • $finish(n)

当$finish带参数时,如(2),根据不同的参数值,系统输出的特征信息:

  • 0:不输出任何信息;
  • 1:输出当前仿真时刻和位置;
  • 2:输出当前仿真时刻、位置和仿真过程中所用的memory及CPU时间的统计。

当$finish后面不带参数时,则默认参数为1。

2、$stop

        $stop任务得作用是把EDA工具(例如仿真器)置为暂停模式,在仿真环境下给出一个交互式的命令提示符,将控制权交给用户。格式与$finish类似

  • $stop
  • $stop(n)

用法同样与$finish类似:当$stop带参数时,如(2),根据不同的参数值,系统输出的特征信息:

  • 0:不输出任何信息;
  • 1:输出当前仿真时刻和位置;
  • 2:输出当前仿真时刻、位置和仿真过程中所用的memory及CPU时间的统计。

当$stop后面不带参数时,则默认参数为1。

3、实际应用

这两个系统任务在不同的编译器下使用可能有细微的区别,接下来分别在vivado仿真器和modelsim仿真器中进行验证。

3.1、$stop在vivado环境

使用如下testbenchn进行验证:信号a每20ns产生0或1,在200ns处使用$stop暂停。

`timescale 1ns / 1nsmodule tb_test_sf();reg a;initial begin a = 0;#200 $stop(0);
endalways #10 a = {$random} % 2;endmodule

点击RUN ALL按钮,波形仿真停留在200ns处:

TCL窗口打印的信息:

此时可以继续仿真。

将$stop(0)内参数改为1:

仿真结束后自动跳转到testbench的$stop语句处,波形依旧停留在200ns处。

TCL窗口打印的信息变多了一些:

将$stop(0)内参数改为2:

仿真结束后自动跳转到testbench的$stop语句处,波形依旧停留在200ns处。

TCL窗口打印的信息多了memory和CPU的使用情况:

3.2、$stop在modelsim环境

依然使用上面的TB进行验证,将$stop(0)内参数设置为2。

点击仿真300ns,仿真结束后自动跳转到testbench的$stop语句处,波形则停留在200ns处。

窗口打印的信息:

此时,若点击继续仿真按钮,则会在仿真到300ns处暂停,接下来也可以继续进行仿真。

接下来将$stop(2)内参数改为1,其他与参数为2的情况一致,只是窗口打印没有了memory和CPU的使用情况:

将$stop(1)内参数改为0,仿真暂停后并没有自动跳转到testbench的对应界面,且打印信息更少:

3.3、$finish在vivado环境

使用如下testbenchn进行验证:信号a每20ns产生0或1,在200ns处使用$finish终止仿真。

`timescale 1ns / 1nsmodule tb_test_sf();reg a;initial begin a = 0;#200 $finish(0);
endalways #10 a = {$random} % 2;endmodule

点击RUN ALL按钮,波形仿真停留在200ns处:

TCL打印信息:

仿真并不会停止,此后仍可以继续仿真。

将$finish(0)内参数改为1:

仿真结束后自动跳转到testbench的$finish语句处,波形依旧停留在200ns处(后续也仍可仿真)。

TCL窗口打印的信息变多了一些:

$finish(2)的情况基本一致,只不过打印信息多了memory和CPU的使用情况:

3.4、$finish在modelsim环境

依然使用上面的TB进行验证,首先将$finish()内参数设置为0:

弹出提示框:

若选择是则会退出仿真并关闭modelsim软件;选否则会将将波形在200ns处暂停,后续可以继续仿真,窗口自动跳转到testbench的$finish语句处:

窗口打印信息:

$finish(1)的情况基本与$finish(0)一致,只是打印信息的差别:

$finish(2)页是打印信息的差别:

4、总结

  • $finish可以终止仿真,一般用在仿真的结尾处。例如完成某些特定激励的仿真后将仿真终止,防止仿真不停地运行
  • $stop可以暂停仿真,一般用来在某个特定的时间暂定仿真
  • $stop和$finish常用在测试模块的initial模块中,配合时间延迟用来控制仿真的持续时间

Verilog中$finish、$stop的使用与区别相关推荐

  1. (137)FPGA面试题-Verilog HDL中function和task的区别(一)

    1.1 FPGA面试题-Verilog HDL中function和task的区别(一) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog H ...

  2. (138)FPGA面试题-Verilog HDL中function和task的区别(二)

    1.1 FPGA面试题-Verilog HDL中function和task的区别(二) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog H ...

  3. (12)Verilog HDL可综合与不可综合区别(第3天)

    (12)Verilog HDL可综合与不可综合区别(第3天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Verilog HDL可综合与不可综合区别(第3天) ...

  4. 萌新食用:Verilog中wire和reg数据类型的区别

    萌新食用:Verilog中wire和reg数据类型的区别 最近恰好在学习数电相关知识扯到Verilog中的wire与reg类型数据的区别: 总的来说,其实就一句话:wire相当于物理连线,而reg相当 ...

  5. verilog中wire和reg的用法区别

    verilog中wire和reg的用法区别 wire(组合逻辑) reg(组合和时序逻辑) 可以相互替代的情况 看到一个文档,很详细的讲了wire和reg的区别,随便记录一下 wire(组合逻辑) w ...

  6. Verilog中`define和parameter有什么区别

    Verilog中使用`define和parameter有什么区别? `define和parameter都可以在设计中用来指定常量. 例如: 以下是使用`define和parameter的一些区别: 什 ...

  7. Verilog中wire与reg类型的区别

    这是事转载的一篇文章,觉得不错,虽然中间有点小错误. wire与reg类型的区别: wire型数据常用来表示以assign关键字指定的组合逻辑信号.模块的输入输出端口类型都默认为wire型.默认初始值 ...

  8. Verilog中wire与reg类型的区别(转载自http://www.cnblogs.com/farbeyond/p/5204586.html)

    wire与reg类型的区别: wire型数据常用来表示以assign关键字指定的组合逻辑信号.模块的输入输出端口类型都默认为wire型.默认初始值是z. reg型表示的寄存器类型.always模块内被 ...

  9. verilog一二三段式状态机的标准区别和示例

    状态机标准 状态机描述时关键是要描述清楚前面提到的几个状态机的要素,即如何进行状态转移:每个状态的输出是什么:状态转移是否和输入条件相关等. 具体描述时方法各种各样,有的设计者习惯将整个状态机写到1 ...

  10. verilog中a+:b是什么意思

    reg m [2+:3]应该就类似于reg m [4:2]; 3代表片选3bit. 片选(partselect),从a开始选a到(a+b)-1的位,一共b  bit Verilog 中 定义modul ...

最新文章

  1. C++ 向量(vector) 的使用
  2. python 路径双斜杠问题
  3. php 接口继承,PHP面向对象之旅:接口的继承
  4. Visual Studio 2010中添加App_Code文件夹注意事项
  5. python生成矩阵_如何在Python中生成矩阵?
  6. 有哪些是你成为一名开发之后才知道的事情
  7. Java Lambda表达
  8. knn算法(分类)-机器学习
  9. 【高德LBS开源组件大赛】iOS版地图选中Overlay功能组件
  10. 机器学习课程笔记【十】- 混合高斯与期望最大化算法
  11. Ajax文件上传(formdata)
  12. 基于Canvas和HTML+CSS3构建JavaScript弹幕库
  13. 计算机丢失dll文件怎么弄,电脑缺少dll文件怎么办
  14. 微信小程序---点餐小程序左侧滑动菜单实现
  15. 怎么批量查询银行卡号是哪个银行?
  16. 怎么压缩PNG图片的大小?如何对PNG图片进行压缩
  17. vsftpd匿名登陆连接报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()(未解决)
  18. html中背景条纹效果,css3 条纹背景滚动效果
  19. 微信公众号的开发和使用注意事项有哪些?
  20. Linux系统代理上网

热门文章

  1. 小米的新logo与戴森的吹风机
  2. 网络语言C位意思,网络流行语“C位出道”探究
  3. html中如何使用正方形符号,正方形符号如何用MathType编辑
  4. Web前端大作业——城旅游景点介绍(HTML+CSS+JavaScript) html旅游网站设计与实现
  5. gwt - inherit module问题
  6. python接口自动化3-自动发帖(session)
  7. 新版标准日本语初级_第三十九课
  8. 使用Axure实现原型设计(一)
  9. win2003 Enterprise Edition sp2 企业版序列号
  10. 概率分布介绍:泊松分布