#学习记录#
1 语法
$timeformat的语法如下:
$timeformat(units_number,precision_number,suffix_string,minimum_field_width);
- units_number:是 0 到-15 之间的整数值,表示打印的时间值的单位。如图1所示。
- precision_number:是在打印时间值时,小数点后保留的位数。其默认值为0。
- suffix_string:是在时间值后面打印的一个后缀字符串。其默认值为空字符串。
- minimum_field_width:是时间值字符串与后缀字符串合起来的这部分字符串的最小长度,若这部分字符串不足这个长度,则在这部分字符串之前补空格。其默认值为20。
图1 $timeformat units_number argument
1.1 NOTE
- $timeformat不会更改`timescale设置的的时间单位与精度,它只是更改了$write、$display、$strobe、$monitor、$fwrite、$fdisplay、$fstrobe、$fmonitor等任务在%t格式下显示时间的方式。
- 在一个initial块中,它会持续生效,直到执行了另一个$timeformat。
2 示例
`timescale 10ns / 1ps
module tb_timeformat();
initial
$timeformat(-9, 2, " ns", 10);
#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个字符,那就不补空格了。
参考文献
[1] IEEE Standard for Verilog Hardware Description Language.