Systemverilog: $realtime display for different timescale precision
Systemverilog: $realtime display for different timescale precision
我正在尝试为以下时间刻度设置打印 $realtime:
`timescale 1ns/10ps
initial begin
#10;
$display(" %0t",$realtime);
$display($realtime);
end
得到打印的结果是:
1000
10
我很好奇在实时打印中使用格式说明符有什么不同?如果我错了,请纠正我。由于时间精度,我相信它正在打印 1000 (10 *10ps = 1000 ns)。但是造成差异的原因是什么?
$timeformat
系统任务用于在使用%t
格式说明符时设置输出格式。它应该只被调用一次(如果被调用多次,最后一次调用将覆盖之前的调用)。它有 4 个参数:它们是:
$timeformat(<units>, <precision>, <suffix>, minimum field width>);
units : log base 10 of the unit (eg -9 is ns)
precision : the number of decimal places
suffix : a string (eg "ns")
minimum field width : the minimum field width
$display(" %0t",$realtime);
正在根据$timeformat
系统任务设置的时间格式打印时间。由于您尚未调用 $timeformat
系统任务,因此使用默认值。他们是:
units : the simulation precision (10ps in your case)
precision : 0
suffix : null string
minimum field width : 20
$display($realtime);
将 $realtime
系统函数返回的值显示为十进制整数 - 10
在您的例子中。
我正在尝试为以下时间刻度设置打印 $realtime:
`timescale 1ns/10ps
initial begin
#10;
$display(" %0t",$realtime);
$display($realtime);
end
得到打印的结果是:
1000
10
我很好奇在实时打印中使用格式说明符有什么不同?如果我错了,请纠正我。由于时间精度,我相信它正在打印 1000 (10 *10ps = 1000 ns)。但是造成差异的原因是什么?
$timeformat
系统任务用于在使用%t
格式说明符时设置输出格式。它应该只被调用一次(如果被调用多次,最后一次调用将覆盖之前的调用)。它有 4 个参数:它们是:
$timeformat(<units>, <precision>, <suffix>, minimum field width>);
units : log base 10 of the unit (eg -9 is ns)
precision : the number of decimal places
suffix : a string (eg "ns")
minimum field width : the minimum field width
$display(" %0t",$realtime);
正在根据$timeformat
系统任务设置的时间格式打印时间。由于您尚未调用 $timeformat
系统任务,因此使用默认值。他们是:
units : the simulation precision (10ps in your case)
precision : 0
suffix : null string
minimum field width : 20
$display($realtime);
将 $realtime
系统函数返回的值显示为十进制整数 - 10
在您的例子中。