Я использую iverilog
на Mac, и у меня проблемы с компиляцией некоторых кодов, содержащих блоки always_ff
и always_comb
. ModelSim компилирует эти коды без каких-либо проблем. Можно ли настроить iverilog
для поддержки блоков always_ff
и always_comb
, или они просто не поддерживаются компилятором?
SystemVerilog поддержка icarus (компилятор iverilog)
Ответы (2)
always_comb
, always_latch
и always_ff
- это некоторые из ключевых слов, которые были введены в SystemVerilog IEEE Std 1800-2012. Они не являются частью Verilog IEEE Std 1364-2005, который поддерживает компилятор Icarus Verilog.
Мне неизвестны бесплатные симуляторы SystemVerilog. Однако вы всегда можете смоделировать и синтезировать свой проект SystemVerilog, используя EDA Playground.
Ответ 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.