第12页的Verilog Golden Reference Guide警告不可合并的always
块,并提供模板以减少无意中创建不可合并的always
块的可能性。但是,该指南并未解释为什么以及always
块无法合成的情况。
always
阻止无法合成的最常见原因是什么?
答案 0 :(得分:2)
基本上每个总是用块来描述一组触发器,一组锁存器或一组组合电路。
这三种编码格式不同,不应混用,否则可能无法合成。 (有时锁存和组合电路混合但应该避免)
任何无法映射到这三种电路的始终块都不可合成。
例如,混合敏感的信号和边缘列表是不可合成的,因为触发器不能同时被边缘触发和电平触发。
两个以上的时钟无法合成。
嵌入式始终块不可合成。
答案 1 :(得分:1)
添加时序延迟不可合成,但通常用于验证。如果你试图合成显示语句,一些工具也会抱怨。
always @* begin
$display("%t", $realtime);
#1 x = y; //Delayed by 1 time unit
$display("%t", $realtime);
end