在verilog中绝大多数使用的都是边沿敏感事件,例如@(posedge event)和@(negedgeevent)。
在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),实际上在这个例子当中是永远等待不到的。
审核编辑:汤梓红
-
Verilog
+关注
关注
30文章
1370浏览量
114107 -
System
+关注
关注
0文章
166浏览量
38447
原文标题:SystemVerilog中的电平敏感事件控制
文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
SystemVerilog中的“const”类属性
组合逻辑中的always后面的敏感事件表是高电平触发还是电平发生翻转的时候触发?
SystemVerilog的断言手册
SystemVerilog中对于process的多种控制方式
SystemVerilog中$cast的应用
SystemVerilog中的package
SystemVerilog中的Semaphores
Systemverilog中的Driving Strength讲解

SystemVerilog中的电平敏感事件控制
评论