SystemVerilog поддержка icarus (компилятор iverilog)

Я использую iverilog на Mac, и у меня проблемы с компиляцией некоторых кодов, содержащих блоки always_ff и always_comb. ModelSim компилирует эти коды без каких-либо проблем. Можно ли настроить iverilog для поддержки блоков always_ff и always_comb, или они просто не поддерживаются компилятором?


person k.rallis    schedule 24.04.2017    source источник
comment
Есть ли другой способ скомпилировать SystemVerilog на Mac? Или мне нужно использовать виртуальную машину (или собственные окна?)   -  person k.rallis    schedule 24.04.2017


Ответы (2)


always_comb, always_latch и always_ff - это некоторые из ключевых слов, которые были введены в SystemVerilog IEEE Std 1800-2012. Они не являются частью Verilog IEEE Std 1364-2005, который поддерживает компилятор Icarus Verilog.

Мне неизвестны бесплатные симуляторы SystemVerilog. Однако вы всегда можете смоделировать и синтезировать свой проект SystemVerilog, используя EDA Playground.

person AndresM    schedule 24.04.2017
comment
Бесплатные симуляторы SystemVerilog поддерживаются только на платформе Windows, и они не поддерживают полный язык. - person dave_59; 25.04.2017
comment
@ dave_59: Я считаю, что Altera Modelsim Starter Edition поддерживается как в Windows, так и в Linux. Хотя насчет MacOS не уверен. - person AndresM; 25.04.2017
comment
Verilator - это симулятор с открытым исходным кодом, который поддерживает синтезируемое подмножество SystemVerilog: veripool.org/wiki/verilator - person JeffB; 03.01.2018

Ответ 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.

person MayeulC    schedule 17.04.2020