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

ASIC-WORLD Verilog(14)系统任务

写在前面

        在自己准备写一些简单的verilog教程之前,参考了许多资料----Asic-World网站的这套verilog教程即是其一。这套教程写得极好,奈何没有中文,在下只好斗胆翻译过来(加点自己的理解)分享给大家。

        这是网站原文:Verilog Tutorial

        这是系列导航:Verilog教程系列文章导航


介绍

        有些系统任务可以用在仿真期间生成输入和输出。这些系统任务以美元符号 ($) 开头。综合工具(在综合时)会解析并忽略系统功能,因此这些系统函数甚至可以包含在可综合模型中。

$display, $strobe, $monitor

        这三个命令具有相同的语法,他们都可以在仿真时在后台屏幕上打印文本。

        $display 和 $strobe 每次执行时都会打印一次,而 $monitor 则在其任意一个参数更改时就会打印一次。$display 和 $strobe 之间的区别在于 $strobe 显示当前仿真时间单位最末尾的参数,而不是确切执行时的参数。格式字符串与C/C++中的格式字符串类似,并且可以包含格式字符。格式字符包括%d(十进制)、%h(十六进制)、%b(二进制)、%c(字符)、%s(字符串)和%t(时间)、%m(层次结构级别)。%5d、%5b 等将为数字提供正好 5 个空格,而不是所需的空间。

语法

  • $display("format_string", par_1, par_2, ... );
  • $displayb (如上所述,但默认为二进制..);

  • $strobe("format_string", par_1, par_2, ... );
  • $strobeh(如上所述,但默认为十六进制..);

  • $monitor("format_string", par_1, par_2, ... );
  • $monitoro (如上所述,但默认为八进制..);

$time, $stime, $realtime

        它们分别以 64 位整数格式、32 位整数格式和实数格式返回当前所处的仿真时间。

$reset, $stop, $finish

        $reset 将仿真重置回时间 0;$stop 停止仿真工具并将其置于交互模式,用户可以在其中输入命令;$finish 退出模拟工具回到操作系统。

$scope, $showscope

        $scope(hierarchy_name) 将当前分层范围设置到hierarchy_name。$showscopes(n) 列出当前范围内(及以下,如果 n 设置为 1)的所有模块、任务和块名称。

$random

        $random 每次被调用时都会生成一个随机整数。如果序列是可重复的,则第一次调用 random 并给它一个数字参数(种子)。否则,种子来自计算机时钟。

$dumpfile、$dumpvar、$dumpon、$dumpoff、$dumpall

        这些任务可以将变量变化转储到像Debussy这样的模拟查看器。转储文件(dump files)能够转储仿真中的所有变量。这对于调试来说很方便,但可能会很慢。

语法

  • $dumpfile("ilename.vcd")
  • $dumpvar 转储设计中的所有变量。
  • $dumpvar(1, top) 转储顶部和下面模块中的所有变量,但不转储顶部实例化的模块。
  • $dumpvar(2, top) 转储模块顶部和下面 1 层中的所有变量。
  • $dumpvar(n, top) 转储模块顶部和下面 n-1 层中的所有变量。
  • $dumpvar(0, top) 转储模块顶部和下面所有级别的所有变量。
  • $dumpon 启动转储。
  • $dumpoff 停止转储。

          

$fopen、$fdisplay、$fstrobe、$fmonitor 和 $fwrite

        这些任务可以更有选择性地写入文件。

        $fopen 打开一个输出文件并为打开的文件提供一个句柄以供其他命令使用。
        $fclose 关闭文件并允许其他程序访问它。
        $fdisplay 和 $fwrite 每当执行时都会将格式化数据写入文件。它们是相同的,只是 $fdisplay 在每次执行后插入一个新行,而 $write 则不会。
        $strobe 在执行时也会写入文件,但它会等到时间步中的所有其他操作完成后才写入。因此初始#1 a=1;b = 0; $fstrobe(hand1, a,b); b=1;将为a和b写1 1。
        只要 $monitor 的任何参数发生更改,就会写入文件。

语法

  • handle1=$fopen("filenam1.suffix")
  • handle2=$fopen("filenam2.suffix")
  • $fstrobe(handle1, format, variable list)     //选通数据到filenam1.suffix
  • $fdisplay(handle2, format, variable list)    //将数据写入filenam2.suffix
  • $fwrite(handle2, format, variable list)        //将数据写入 filenam2.suffix 中,全部写在一行中。在需要换行的地方输入格式字符串。

  • 📣您有任何问题,都可以在评论区和我交流📃!
  • 📣本文由 孤独的单刀 原创,首发于CSDN平台🐵,博客主页:wuzhikai.blog.csdn.net
  • 📣您的支持是我持续创作的最大动力!如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!

http://www.lryc.cn/news/148401.html

相关文章:

  • 两台电脑共享文件设置
  • 《C和指针》笔记17:sizeof
  • 说说大表关联小表
  • Unity 之 方括号[ ] 的用法以及作用
  • 微服务nacos或者yml配置内容部分加密jasypt
  • Vue:插槽,与自定义事件
  • Window11-Ubuntu双系统安装
  • 【React】React学习:从初级到高级(一)
  • Flutter 安装教程 + 运行教程
  • 正中优配:A股早盘三大股指微涨 华为概念表现活跃
  • SAP MM学习笔记26- SAP中 振替转记(转移过账)和 在库转送(库存转储)4- Plant间在库转送 之 在库转送Order(有出荷)
  • suricata规则字段解析
  • 韶音骨传导耳机好不好,韶音骨传导耳机值得入手吗
  • 【LeetCode】208.实现Trie(前缀树)
  • 多线程笔记: volatile、synchronized、Monitor等
  • shell语法--数组相关
  • AI:05 - 基于深度学习的道路交通信号灯的检测与识别
  • The Sandbox 即将参加韩国区块链周,并带来一系列独家周边活动!
  • Mysql高阶语句 (一)
  • win10 ping不通 Docker ip(解决截图)
  • 讲讲几道关于 TCP/UDP 通信的面试题
  • golang 连接 oracle 数据库 增删改查
  • Unity——音频管理器(附例子)
  • TCP协议基础
  • C# NetTopologySuite+ProjNet 任意图形类型坐标转换
  • Windows笔记本电脑开机黑屏
  • Samb共享用户的设置和修改Linux用户的id号,修改Linux组的id号,加入组,删除组成员等
  • VBA:对Excel单元格进行合并操作
  • HTML5离线储存
  • cmd: Union[List[str], str], ^ SyntaxError: invalid syntax