SystemVerilog 对 icarus 的支持(iverilog 编译器)

k.r*_*lis 1 hardware verilog system-verilog icarus iverilog

iverilog在 Mac 上使用,我在编译一些包含always_ffalways_comb块的代码时遇到问题。ModelSim 编译这些代码没有任何问题。是否可以进行配置iverilog以支持always_ffalways_comb阻止,或者编译器不支持它们?

May*_*ulC 6

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 支持。