System verilog 是否有systemverilog方法来检查时间粒度?
我很难使用systemverilog数据类型time 假设有两个来自第三方的包System verilog 是否有systemverilog方法来检查时间粒度?,system-verilog,System Verilog,我很难使用systemverilog数据类型time 假设有两个来自第三方的包 package p1; import p2:*; class d; time c; function print(); $display("t1 is %t, t2 is %t\n", c.t1, c.t2); c = t2 - t1; $display("c is %t\n", c); endfunction endpackage : p1
package p1;
import p2:*;
class d;
time c;
function print();
$display("t1 is %t, t2 is %t\n", c.t1, c.t2);
c = t2 - t1;
$display("c is %t\n", c);
endfunction
endpackage : p1
package p2;
class c;
time t1;
time t2;
endclass : c
endpackage : p2
如果t2为100ns,t1为10ns,c打印出900000。有人能告诉我上面的代码可能发生了什么吗?有没有办法检查两个包中的时间粒度?首先,时间数据类型没有什么特别之处,它只是一个64位无符号整数。重要的是使用$time为t1和t2分配任务的时间刻度/单位 不幸的是,除非您建立一个双方同意的时间单位,否则无法从另一个设计单位知道时间刻度是多少。你可以通过将所有时间除以共同单位来实现
realtime t1;
t1 = $realtime/1ns;
最好使用$realtime获取任何分数时间步长