SystemC中的增量周期和增量通知是什么?

Han*_*Han 2 systemc

在SystemC中,有一种称为增量通知的通知,可以通过以下两种方法调用.

event.notify(SC_ZERO_TIME);
Run Code Online (Sandbox Code Playgroud)

要么

event.notify(0, SC_NS);
Run Code Online (Sandbox Code Playgroud)

它定义了在delta通知调用中,对事件敏感的进程将在下一个delta周期的评估阶段运行.

那么,什么是所谓的"三角周期"?它的定义是时钟周期还是某段时间?

jcl*_*lin 7

增量周期不是时钟周期,没有时间提前.Delta周期用于模拟从当前时间的当前执行阶段模拟的新更新和事件触发过程.

简要的模拟步骤如下,

  1. 评估阶段:执行当前运行队列中的所有调度进程
  2. 更新阶段:更新值并将新触发的可运行进程添加到等待队列或t + N队列.
  3. 如果队列(t + 0)不为空,则移动队列(t + 0)以运行队列并转到步骤1
  4. 如果等待队列(t + 0)为空,则将时间提前到最接近的时间步,并将队列(t + X)移动到运行队列并转到步骤1
  5. 如果queue为空,则表示不需要模拟任何事件,然后模拟结束.

因此,如果您正在使用增量通知,则事件及其触发的进程将在当前执行和更新阶段之后立即运行.因此,当执行阶段已经完成,但仍然有其他计划进程在当前时间运行时,它再次进入评估阶段以运行这些进程,并且由于模拟仍处于相同时间戳,因此没有时间提前.

还有另一个称为立即通知的术语,它在没有任何参数的情况下调用notify().然后,该过程将立即安排到当前的执行队列,而不是等待下一个增量循环.