Verilog中$timeformat的用法
Verilog中$timeformat的用法
更新历史 20200807: 首次发布
语法
$timeformat的语法如下:
$timeformat(units_number, precision_number, suffix_string, minimum_field_wdith);
其中:
-
units_number 是 0 到-15 之间的整数值,表示打印的时间值的单位:0 表示秒,-3 表示毫秒,-6 表示微秒,-9 表示纳秒, -12 表示皮秒, -15 表示飞秒;中间值也可以使用:例如-10表示以100ps为单位。其默认值为`timescalse所设置的仿真时间单位。 precision_number 是在打印时间值时,小数点后保留的位数。其默认值为0。 suffix_string 是在时间值后面打印的一个后缀字符串。其默认值为空字符串。 MinFieldWidth 是时间值字符串与后缀字符串合起来的这部分字符串的最小长度,若这部分字符串不足这个长度,则在这部分字符串之前补空格。其默认值为20。
需要注意的是:
-
$timeformat不会更改`timescale设置的的时间单位与精度,它只是更改了$write、$display、$strobe、$monitor、$fwrite、$fdisplay、$fstrobe、$fmonitor等任务在%t格式下显示时间的方式。 在一个initial块中,它会持续生效,直到执行了另一个$timeformat。
示例
Verilog代码:
`timescale 10ns / 1ps module tb_timeformat(); initial $timeformat(-9, 2, " ns", 14); #1.2345; $display("%t: simulation started.",$realtime); end endmodule
仿真执行后,控制台将会输出如下的信息:
12.34 ns: simulation started.
解释:
-
$timeformat执行后,在$display任务中以%t格式显示时间时,时间值的单位是 10^(-9)秒,时间值保留到小数点后第2位,时间值字符串的后面加上一个" ns"字符串,时间值和" ns"合起来的字符串长度如果不足14个字符的话,就在这部分字符串的前面补空格,使得这部分字符串总长度为14个字符;如果这部分字符串长度超过了14个字符,那就不补空格了。
参考: :