1

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 ?

4

2 回答 2

1

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并导致至少一个周期为采样周期。当然,如果syncwait没有时间表达式,它们都使用 TCM 默认采样事件,并且可能有一个或多个周期。

SystemVerilog也是基于事件的模拟器。它确实在每个时间步中都有增量周期。您可以在http://standards.ieee.org/getieee/1800/download/1800-2012.pdf下载 IEEE 1800-2012 SystemVerilog LRM,其调度参考算法见 4.5。但在硬件建模中,在当前仿真时间步长中没有明确wait的零周期延迟同步,因为仿真器会自动安排运行敏感列表的过程。如果必须将SpecmanSystemVerilog进行比较,则应该是专门的SystemVerilog Assertion语法。SVA中的##0语法使断言过程在下一个断言表达式之前具有零周期延迟。

于 2013-03-29T03:30:36.857 回答
1

对于命名事件,您可以使用该triggered属性。

event ev;
...
wait (ev.triggered);

有关完整说明,请参阅 2012 SystemVerilog LRM 的第 15.5.3 章。

于 2013-03-27T13:39:50.760 回答