|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
工作环境:VCS Version G-2012.09_Full64仿真代码:
program wait_event;
event a;
//initial begin
// ->a;
//end
initial begin
//#1;
//@a;
wait(a.triggered);
$display("@%0t:a triggered!",$time);
end
endprogram
说明:我想模拟两个线程并行运行的情况,其实主要是想理解“wait在给定时间段有效”这句话。
但是仿真过程中发现了例外:
上述程序,按照我本来的想法是,VCS会一直停留在wait(a.triggered);因为事件a一直没有触发。
但是仿真结果是VCS一执行wait(a.triggered);就退出了。实在0时刻退出。退出的时候不会执行后面的display
如果在wait之前加上#1就会在1时刻退出。退出的时候不会执行后面的display
如果在wait前使用@来等待事件a,发现仿真器会在执行@a的时刻退出。
另外,看一些sv的书籍中讲到tiggered是一个检查事件是否触发的一个函数,调用的时候是wait(a.triggered());
但是我在triggered后加上“()”后,工具会包包跨层次引用出错,不知为什么?
种种问题,希望能够得到高人指教。
谢谢 |
|