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位小数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

日晨难再

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

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

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

打赏作者

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

抵扣说明:

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

余额充值