我找到了两种不同的来源,用两种不同的方式解释了Verilog HDL的惯性延迟。
1)第一个表示任何短于指定延迟的输入信号都将被忽略。
2)第二个说,如果其中一个输入发生变化,输出信号将在预定时间使用 时间的输入信号值进行评估。
例如:考虑延迟缓冲区
assign #4 out = in;
initial
begin
in = 0;
#5 in = 1;
#1 in = 0;
#1 in = 1;
end
如果我们监控信号,这将导致
0 5 6 7 8 9 10 11
| | | | | | | |
__ _________________
in _________| |__|
_____
out1) XXXXXXX____________________|
___________
out2) XXXXXXX______________|
out1)忽略“up”中的输入(5,6)脉冲和处于“down”状态的(6,7)脉冲,因为时间太短,只有1个时间单位。但随后“在”中保持了足够长的时间(7,11),因此在11处变了。
out2)在时间步骤9安排评估,因为输入在时间5改变。类似地,在时间10和11,“in”分别在时间6和7改变。因此,在第9,10和11时,“out”在这些时间取“in”的当前值,在这种情况下总是“up”。
哪种评估是正确的?