我在Mac上使用iverilog,编译包含always_ff和always_comb块的代码时遇到问题。 ModelSim编译这些代码没有任何问题。是否可以配置iverilog以支持always_ff和always_comb块,或者编译器不支持它们
提前致谢!
答案 0 :(得分:7)
AndresM的答案并不完全准确。 Icarus verilog的默认值为IEEE Std 1364-2005,它是受更好支持的标准,但可以使用-g
开关进行更改。来自man iverilog
:
-g1995 | -g2001 | -g2001-noconfig | -g2005 | -g2005-sv | -g2009 | -g2012
选择在编译器中支持的Verilog语言生成。这可以在IEEE1364-1995,IEEE1364-2001,IEEE1364-2005,IEEE1800-2005,IEEE1800-2009或IEEE1800-2012之间进行选择。 Icarus Verilog当前默认为该语言的IEEE1364-2005代。该标志用于将语言限制为一组关键字/功能,从而可以模拟可能使用较新关键字的较旧Verilog代码,并与其他工具兼容。当前不支持许多IEEE1800代功能。 IEEE1800代确实解析了所有关键字,因此它们可用于验证符合IEEE1364的Verilog代码没有使用任何新的IEEE1800关键字。
实际上,它告诉您在端口中使用解压缩数组时的提示:
错误:端口不能解压缩数组。尝试启用SystemVerilog支持。
答案 1 :(得分:2)
always_comb
,always_latch
和always_ff
是SystemVerilog IEEE Std 1800-2012中引入的一些关键字。它们不是Verilog IEEE Std 1364-2005的一部分,这是Icarus Verilog编译器所支持的。
我不知道任何免费的SystemVerilog模拟器。但是,您始终可以使用EDA Playground来模拟和合成SystemVerilog设计。