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个字符,那就不补空格了。
参考:
CSDN:$timeformat $time