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

Verilog基础:$timeformat系统任务的使用

相关阅读

Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482


        $timeformat系统任务用于指定$write$display$strobe$monitor$fwrite$fdisplay$fstrobe$fmonitor系统任务中的格式字符串中,转换说明%t如何对时间数据进行转换。在阅读本文之前,建议先学习编译指令`timescale和系统函数$time的使用,如下面两篇博客所示。Verilog基础:编译指令`timescalehttps://blog.csdn.net/weixin_45791458/article/details/134804982?sharetype=blogdetail&sharerId=134804982&sharerefer=PC&sharesource=weixin_45791458&spm=1011.2480.3001.8118

Verilog基础:$time、$stime和$realtime系统函数的使用https://blog.csdn.net/weixin_45791458/article/details/134815889?sharetype=blogdetail&sharerId=134815889&sharerefer=PC&sharesource=weixin_45791458&spm=1011.2480.3001.8118

        首先给出$timeformat系统任务语法的BNF范式,有关BNF范式的内容可以在之前的文章中找到:

        units_number参数代表了一个指定的单位,是一个范围从-15到0的整数,具体含义如下表所示。

数字代表单位数字代表单位
01s-810ns
-1100ms-91ns
-210ms-10100ps
-31ms-1110ps
-4100us-121ps
-510us-13100fs
-61us-1410fs
-7100ns-151fs

        precision_number参数代表了小数点后的四舍五入的位数。

        suffix_string参数代表了添加的后缀字符串。

        minimum_field_width参数代表了输出最少占用的宽度。

        从调用$timeformat系统任务的仿真时间开始,后续所有使用转换说明%t输出的时间,都会按照设置的单位、精度、后缀字符串和最小字段宽度进行转换。

        默认情况下转换说明%t使用仿真时间精度作为单位(仿真时间精度是一个层次设计的所有模块中最小的时间精度),保留整数,不添加后缀,最小字段宽度为20。

        首先以简单的例1进行说明,该例不涉及$time系统函数。

// 例1
`timescale 1 ns / 1 ps
module top;initial $timeformat(-10, 5, "", 10);initial #1 $display("%t", 5);
endmodule输出:
50.00000

         由于转换说明%t对应了常数5,而top模块的时间单位为1ns,而$timeformat系统任务指定了单位是100ps,转换后原结果需要乘10,即50并保留5位小数。

        再来看一下涉及到$time系统函数的例2。

// 例2
`timescale 10 ns / 1 ns
module top;initial $timeformat(-10, 2, "", 10);initial #1.55 $display("%t", $time);
endmodule输出:
200.00

        正如编译指令`timescale一文中所说,$display系统任务在仿真时间为16ns的时候执行,此时$time系统函数尝试以10ns为单位返回时间值,即1.6,但$time系统函数只能返回整数值,因此四舍五入为2,top模块的时间单位为10ns,而$timeformat系统任务指定了单位是100ps,转换后原结果需要乘100,即200并保留5位小数。

http://www.xdnf.cn/news/13749.html

相关文章:

  • Linux服务器部署n8n实战教程
  • AWS-EFS
  • 智能安全带:建筑行业安全防护的新利器
  • 黑群晖NAS部署DeepSeek模型与内网穿透实现本地AI服务
  • Linux中升级或者切换python版本
  • 网络上搜集的IFC资源共享(含下载链接)
  • LLM基础7_用于文本分类的微调
  • Cesium1.95中加载模型过多导致内存溢出的解决方案
  • 用户态与内核态是什么?有什么作用?两者在什么时候切换?为什么要切换?
  • 知识变现新趋势:创客匠人解析创始人 IP 打造与行业破局之道
  • SmartGit(图形化GitGUI客户端) v24.1.3
  • Python实现web请求与访问
  • 选品融电商:全域代运营赋能,抖音小红书销量倍增的头部引擎
  • SGDvsAdamW 优化策略详细解释
  • mybatis foreach里用bind、foreach中使用bind的坑、foreach中动态生成表名
  • 预压技术对滚珠螺杆寿命的影响是什么?
  • 预测性去匿名化攻击(PDAA):重塑数据安全攻防边界
  • 说一说Redis中如何使用一致性哈希算法
  • 强化学习:DQN学习总结
  • 野火板子上重装ubuntu20.04系统
  • gbcom线上共享瓦片
  • Kubernetes 从入门到精通-deployment控制器
  • 山东大学 2025 web数据管理期末复习总结
  • Python _Day52|神经网络调参指南
  • WLAN 技术指南:从入门到原理
  • git约定示提交
  • 005__C++类的基本语法
  • Ntfs!NtfsVolumeCheckpointDpc函数分析到调用Ntfs!NtfsCheckpointAllVolumes函数
  • 【AI论文】利用自注意力机制实现大型语言模型(LLMs)中依赖于输入的软提示
  • 数据结构学习20250612