Processing math: 100%

在Verilog HDL中有两类型的时间系统函数,timerealtime。用这两个系统用函数可以的大当前的仿真时间。
time64仿仿realtime返回的时间数字是一个实型数。该数也是以时间尺度为基准的。

`timescale 10ns/1ns
module test;
  reg set;
  parameter p=1.6;
  initial
    begin
     $monitor($time,,"set=",set);
     #p  set=0;
     #p  set=1;
    end
endmodule

输出结果为:

0 set=x
2 set=0
3 set=3

在这个例子中,模块test想在时间为16ns是设置寄存器set的值为0,在32ns时设置寄存器的set为1。但是由$time疾苦的set变化时刻却和预想的不一样,这是由下面两个原因引起的。

  1. $time显示时刻受时间尺度的影响。这里时间尺度为10ns,故16ns和32ns是对应输出的数字为1.6和3.2。
  2. $time总是输出整数,所以在将经过尺度比例变换的数字输出时,要先进行取整,1.6和3.2分别取整为1和3.2。
  3. 如果将上述例子中的timerealtime,那么输出的数字将变为1.6和3.2。