2

SystemC中有一种通知叫做delta通知,可以通过以下两种方式调用。

event.notify(SC_ZERO_TIME);

或者

event.notify(0, SC_NS);

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

那么,什么是所谓的“三角洲周期”?它是像时钟周期还是某个时间段一样定义?

4

2 回答 2

7

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

简要模拟步骤如下,

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

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

还有另一个术语叫做立即通知,它是在没有任何参数的情况下调用 notify()。然后该进程将立即调度到当前执行队列,而不是等待下一个增量周期。

于 2013-09-17T13:59:56.833 回答
0
event.notify(SC_ZERO_TIME); or event.notify(0, SC_NS);

称为延迟通知。等待延迟通知(即等待事件)的进程将仅在所有等待进程都已执行后执行,或者换句话说,在下一个增量周期(更新阶段之后)执行。

于 2020-02-13T00:55:14.987 回答