总是#delay begin 与always begin #delay

问题描述 投票:0回答:1

波形图

为什么在 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

verilog
1个回答
0
投票

我已经使用

Icarus Verilog 10.3
两个文件进行了测试,它们在块中有所不同:

always #7 begin
  y = a;
end

always begin
  #7 y = a;
end

两个文件的

iverilog vvp
输出仅内部 ID 不同。因此得到的波形没有不同。

35ns 处的

y
值是前一个
a
值(在上一个刻度处)。这是预期的行为。

© www.soinside.com 2019 - 2024. All rights reserved.