到目前为止,我读过的所有书籍中提到的一般经验法则是,您必须在由时钟的上升沿或下降沿驱动的 always 块中使用非阻塞分配。相反,阻塞赋值必须用于组合逻辑描述。这条规则对我来说很有意义,示例的作者会彻底遵循它。
但是,我在其中一个生产代码中发现了以下 Verilog:
always @* begin
in_ready <= out_ready || ~out_valid;
end
<=
请注意,正在使用非阻塞赋值。我认为在这种情况下没有任何区别,因为没有多重分配。但是,我似乎找不到任何解释。所以问题是——无论是在给定的始终块的范围内还是作为更大设计的一部分,它是否会产生任何影响?