我偶然发现了这样的代码:
事件a 周期 @b;
删除'循环'从这个事件来看,行为没有区别。
这里循环是什么意思?
由于
答案 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
发生。