wait 电平触发
a从0变1
initial begin
a = 0;
#2;
a = 1;
end
initial begin
wait(a == 1); //wait
a = 0;
$display("1");
end
initial begin
wait(a == 1); //wait
$display("2");
end
// 打印只能打印出 1;
initial begin
a = 0;
#2;
a = 1;
end
initial begin
@(posedge a ); //@
a = 0;
$display("1");
end
initial begin
@(posedge a );//@
$display("2");
end
//打印出1和2
1、首先@是边沿触发,当检测到上升沿时就执行下面的
2、wait是电平触发,电平=1时,检测。
@的结果很容易理解,但是为什么wait,initial块应该是同时进行的,为什么好像是第一个initial块结束了才执行第二个。感觉是和仿真器有关,虽然sv仿真器将initial块之间并行运行,但是在是在cpu运行过程中每条指令都依旧是串行执行,所以对于不消耗时间的initial块,他是有先后执行顺序的。仿真器会将第一个执行完毕再执行下一个。