第12页上的Verilog Golden Reference Guide对不可合成的always块发出警告,并提供了可遵循的模板,以减少无意中创建不可合成的always块的机会。但是,该指南没有解释为什么以及在哪些情况下,always块是不可合成的。
always块不可合成的最常见原因是什么?
发布于 2012-04-11 07:19:48
基本上,每个块总是描述一组触发器、一组锁存器或一组组合电路。
这三者具有不同的编码格式,不应混合,否则可能无法合成。(有时需要混合锁存和组合电路,但应避免)
任何不能映射到这三种类型的电路的always块都是不可合成的。
例如,信号和边沿的混合敏感列表是不可合成的,因为触发器不能同时进行边沿触发和电平触发。
两个以上的时钟是不可合成的。
嵌入的always块是不可合成的。
发布于 2012-04-04 07:31:37
添加定时延迟是不能综合的,但经常用于验证。此外,如果您试图合成display语句,一些工具也会报错。
always @* begin
$display("%t", $realtime);
#1 x = y; //Delayed by 1 time unit
$display("%t", $realtime);
end https://stackoverflow.com/questions/9980303
复制相似问题