在verilog中绝大多数使用的都是边沿敏感事件,例如@(posedge event)和@(negedge event)。
在SystemVerilog中使用电平敏感事件控制的语法关键词是“wait”。
“wait”不是去检测一个边沿事件的发生,而是去等待一个条件的满足,否则会一直仿真进程阻塞。
module level; int a; initial begin # 10; wait (a == 1); $display($stime,,, "wait complete"); end initial begin a = 1; end endmodule
仿真log:
wait complete V C S S i m u l a t i o n R e p o r t
在这个例子中,我们使用“wait”等待a的值为1,只要在语句“wait (a == 1);” 后面时间满足条件才会仿真继续执行。
因为在时间0,a赋值为1,所有在时间10就打印了“wait complete”。
但是,如果我们使用的是@(posedge a),实际上在这个例子当中是永远等待不到的。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !