1

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

4

2 回答 2

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

于 2020-04-17T14:19:27.227 回答
3

always_combalways_latch并且是 SystemVerilog IEEE Std 1800-2012always_ff中引入的一些关键字。它们不是 Icarus Verilog 编译器支持的 Verilog IEEE Std 1364-2005 的一部分。

我不知道有任何免费的 SystemVerilog 模拟器。但是,您始终可以使用EDA Playground模拟和综合您的 SystemVerilog 设计。

于 2017-04-24T20:22:42.733 回答