SystemC中的增量周期和增量通知是什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SystemC中的增量周期和增量通知是什么?相关的知识,希望对你有一定的参考价值。
在SystemC中,有一种称为增量通知的通知,可以通过以下两种方法来调用。
event.notify(SC_ZERO_TIME);
或
event.notify(0, SC_NS);
它定义在增量通知调用中,对事件敏感的进程将在下一个增量周期的评估阶段运行。
所以,所谓的“增量周期”是什么?它是像时钟周期或特定时间段一样定义的吗?
答案
增量周期不是时钟周期,也没有时间提前。增量周期用于模拟新的更新和事件触发的流程,以从当前时间的当前执行阶段进行模拟。
简单的模拟步骤如下,
- 评估阶段:在当前运行队列中执行所有计划流程
- 更新阶段:更新值并将新的触发的可运行进程添加到等待队列或t + N的队列中。
- 如果队列(t + 0)不为空,则移动队列(t + 0)以运行队列并转到步骤1
- 如果等待队列(t + 0)为空,则将时间提前到最近的时间步长,并移动队列(t + X)以运行队列并转到步骤1
- 如果队列为空,则意味着不需要模拟任何事件,则模拟结束。
因此,如果您正在使用增量通知,则该事件及其触发的过程将安排在当前执行和更新阶段之后立即运行。因此,当此执行阶段的时间结束时,但它仍在当前时间运行其他计划流程时,它将再次进入评估阶段以运行这些流程,并且由于仿真仍处于同一时间戳中,因此没有时间提前。
还有另一种称为立即通知的术语,它不带任何参数地调用notify()。然后,该过程将立即安排到当前的执行队列,而无需等待下一个增量周期。
另一答案
event.notify(SC_ZERO_TIME); or event.notify(0, SC_NS);
称为延迟通知。等待延迟通知(即等待事件)的进程将仅在所有等待进程都已执行后执行,或者换句话说,在下一个增量周期(在更新阶段之后)执行。
以上是关于SystemC中的增量周期和增量通知是什么?的主要内容,如果未能解决你的问题,请参考以下文章