I would like to ask what is the counterpart of sync
of Specman e in the System Verilog Language.
I understand that @ event_indentifier
is equivalent to wait @ event
of Specman e.
But how about sync @ event
?
I would like to ask what is the counterpart of sync
of Specman e in the System Verilog Language.
I understand that @ event_indentifier
is equivalent to wait @ event
of Specman e.
But how about sync @ event
?
IEEE 1647 13.1.1 的一部分说
同步动作与等待动作类似,不同之处在于等待动作总是需要至少一个 TCM 的采样事件周期才能继续执行。使用同步操作,可以在同一时间步继续执行。
1647-2008 年草案的一部分
为了sync
当一个 TCM 达到同步动作时,它的执行将被暂停,以便其他一些 TCM 或暂停的 TCM 本身可以被调度执行。
为了wait
当一个 TCM 达到等待动作时,它的执行将被暂停,以便其他一些 TCM 可以被调度执行。暂停的 TCM 本身应保持空闲状态,直到下一次采样事件发生时才进行调度。
我认为您正在比较不同的事物。SystemVerilog是模拟引擎和内核,而Specman就像内核上的附加组件或插件,用于监视和检查您用e语言编写的内容。在SystemVerilog中,事件用于其模拟事件,Specman还为其 TCM 流程创建自己的事件。所以在Specman中,它有自己的 TCM 进程调度。如果你使用sync
,它可以在没有额外循环的情况下进行同步;使用wait
并导致至少一个周期为采样周期。当然,如果sync
和wait
没有时间表达式,它们都使用 TCM 默认采样事件,并且可能有一个或多个周期。
SystemVerilog也是基于事件的模拟器。它确实在每个时间步中都有增量周期。您可以在http://standards.ieee.org/getieee/1800/download/1800-2012.pdf下载 IEEE 1800-2012 SystemVerilog LRM,其调度参考算法见 4.5。但在硬件建模中,在当前仿真时间步长中没有明确wait
的零周期延迟同步,因为仿真器会自动安排运行敏感列表的过程。如果必须将Specman与SystemVerilog进行比较,则应该是专门的SystemVerilog Assertion语法。SVA中的##0
语法使断言过程在下一个断言表达式之前具有零周期延迟。
对于命名事件,您可以使用该triggered
属性。
event ev;
...
wait (ev.triggered);
有关完整说明,请参阅 2012 SystemVerilog LRM 的第 15.5.3 章。