系统Verilog对应于Specman e的“同步”

时间:2013-03-27 09:40:01

标签: sync wait system-verilog specman

我想问一下系统Verilog语言中Specman e sync的对应部分。

我知道@ event_indentifier相当于Specman e的wait @ event。 但sync @ event怎么样?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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 也是基于事件的模拟器。它在每个时间步骤中都有delta周期。 您可以在http://standards.ieee.org/getieee/1800/download/1800-2012.pdf下载IEEE 1800-2012 SystemVerilog LRM,并查看4.5其调度参考算法。 但是在硬件建模中,它在当前模拟时间步骤中没有明确的wait synx用于零周期延迟,因为模拟器将自动调度具有要运行的灵敏度列表的过程。如果必须将 Specman SystemVerilog 进行比较,则应该具体为 SystemVerilog Assertion 语法。 SVA中有##0语法,导致断言进程在下一个断言表达式之前具有零周期延迟。