为什么在 35ns 时 a = 1 而 y = 0?
always begin #delay
块和always #delay begin
块有什么区别?
module tb;
reg y;
reg a;
//$monitor("time = %t, a = %d", $time, a);
always begin
#5 a = ~a;
end
initial begin
a = 0;
#50; $finish;
end
always #7 begin
y = a;
end
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, tb);
end
endmodule
我已经使用
Icarus Verilog 10.3
两个文件进行了测试,它们在块中有所不同:
always #7 begin
y = a;
end
和
always begin
#7 y = a;
end
两个文件的
iverilog vvp
输出仅内部 ID 不同。因此得到的波形没有不同。
35ns 处的
y
值是前一个 a
值(在上一个刻度处)。这是预期的行为。