System verilog 如何在系统verilog中为模拟时间赋值

System verilog 如何在系统verilog中为模拟时间赋值,system-verilog,System Verilog,我有一个包含事务的文件,每个事务都有它发生的时间。 我想运行SystemVerilog模拟,并按时间“播放”每个事务 但是,我不想实际等待事务之间的时钟周期。 相反,我希望将事务时间(从文件)分配给SystemVerilog模拟时间(分配应在0时间内发生) 这样可以提前系统Verilog模拟时间吗? 如果是的话-如何 文件的简化版本: TIME (ns) | TRANSACTION DATA 1 | 0x1, 0x2, 0x3 5

我有一个包含事务的文件,每个事务都有它发生的时间。 我想运行SystemVerilog模拟,并按时间“播放”每个事务

但是,我不想实际等待事务之间的时钟周期。 相反,我希望将事务时间(从文件)分配给SystemVerilog模拟时间(分配应在0时间内发生)

这样可以提前系统Verilog模拟时间吗? 如果是的话-如何

文件的简化版本:

TIME (ns)    |   TRANSACTION DATA   
    1        |     0x1, 0x2, 0x3
    5        |     0x4, 0x5, 0x6
   200       |     0xa, 0xb, 0xc
  10000      |     0xd, 0xe, 0xf
谢谢。
Roi。

采用事件驱动模拟语言。如SystemVerilog,时间是所有进程共享的全局值。您不能设置它,只能观察它的当前值

按照事件驱动模拟的工作方式,它在循环中工作,在当前时间处理事件队列,直到队列为空。只有这样,它才能将时间提前到未来某个时间的下一个预定事件。因此,您可以做的是让一个进程块在将来等待一段时间

SystemVerilog不提供一种为特定时间安排某件事情的方法,但是如果您观察当前时间,您可以从您想要的未来时间中减去该时间,即该时间量的块


由于事务不重叠,因此可以一次读取一行文件并等待指定的时间。您在时间0读取第一行并等待1-$realtime。然后执行事务。完成后,阅读第二行并等待5-$realtime。这可以在循环中完成,直到到达文件末尾。

这将非常有助于显示文件的简化版本,以及您希望如何将事务作为刺激应用。需要解释的一些事情:事务是否在文件中及时排序?每个事务需要多少时间,事务之间是否有重叠。这些因素会影响您如何设置流程来执行每个事务。1。是-文件中的交易按时间排序。2。为简单起见-每个事务需要1个时钟周期,并且事务之间没有重叠。另外需要注意的是-第一个事务可能在1ns的时间发生,第二个事务可能在10000ns之后发生。所以我想将模拟时间从1ns改为10001ns,而不实际等待那些时钟周期。