“always”块的合成

时间:2012-04-02 16:40:05

标签: verilog

第12页的Verilog Golden Reference Guide警告不可合并的always块,并提供模板以减少无意中创建不可合并的always块的可能性。但是,该指南并未解释为什么以及always块无法合成的情况。

always阻止无法合成的最常见原因是什么?

2 个答案:

答案 0 :(得分:2)

基本上每个总是用块来描述一组触发器,一组锁存器或一组组合电路。

这三种编码格式不同,不应混用,否则可能无法合成。 (有时锁存和组合电路混合但应该避免)

任何无法映射到这三种电路的始终块都不可合成。

例如,混合敏感的信号和边缘列表是不可合成的,因为触发器不能同时被边缘触发和电平触发。

两个以上的时钟无法合成。

嵌入式始终块不可合成。

答案 1 :(得分:1)

添加时序延迟不可合成,但通常用于验证。如果你试图合成显示语句,一些工具也会抱怨。

always @* begin
 $display("%t", $realtime);
 #1 x = y;                  //Delayed by 1 time unit
 $display("%t", $realtime);
end