什么是specman事件中的'周期'

时间:2014-04-02 14:34:49

标签: specman

我偶然发现了这样的代码:

事件a 周期 @b;

删除'循环'从这个事件来看,行为没有区别。

这里循环是什么意思?

由于

1 个答案:

答案 0 :(得分:4)

来自e LRM:

"表示事件的一个周期。没有明确的采样事件,这个 表示默认采样事件的一个周期。通过指定的采样事件, 循环相当于“@ sampling-event @any”。您可以使用循环表达式 覆盖从上下文中获取的默认采样事件。"

使用方法如下:

some_tcm() @clk is {
  message(LOW, "This is synced at clock");
  wait @rise_async;
  message(LOW, "This is synced at the first clk after rise_async");
  wait cycle @rise_async;
  message(LOW, "This is synced exactly at rise_async");
  stop_run();
};

some_tcm()指定@clk作为抽样事件。假设您有另一个异步事件@rise_async,它将在时钟边缘之间触发。如果你做一个简单的wait @rise_async,TCM将等到@clk之后@rise_async的第一次触发(实际上是@rise_async @clk)。如果你做wait cycle @rise_async,那么你已经覆盖了抽样事件,TCM将等到@rise_async发生。