$timeformat (verilog)

$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个字符,那就不补空格了。

猜你喜欢

转载自blog.csdn.net/zilan23/article/details/113923075