DocsTech
/
ICARUS VERILOG
/

~ cd 14. расширения icarus verilog

Icarus Verilog поддерживает некоторые расширения базового стандарта IEEE 1364. Некоторые из них взяты из расширенных вариантов языка, таких как SystemVerilog, а некоторые являются выражением внутреннего поведения Icarus Verilog, доступного в качестве вспомогательного средства отладки.

14.1. Расширенные типы данных Verilog

Эта функция включается флагом генерации «-gxtypes» и выключается флагом генерации «-gno-xtypes». По умолчанию она включена.

В Icarus Verilog добавлена поддержка расширенных типов данных. Синтаксис расширенных типов основан на предложении компании Cadence Design Systems, первоначально как обновление стандарта IEEE 1364. В настоящее время Icarus Verilog принимает только новые примитивные типы из этого предложения.

SystemVerilog обеспечивает ту же функциональность, используя несколько иной синтаксис. Это расширение поддерживается для обратной совместимости.

Сетки с типом logic могут иметь несколько источников с силой, и значение разрешается обычным способом. В логические сети могут передаваться только логические значения, поэтому значения bool, передаваемые в логические сети, неявно преобразуются в логические.

Сетки любого другого типа не могут иметь несколько источников. Компилятор должен обнаружить множественные источники и сообщить об ошибке.

...
Копировать
wire <type> <wire-assignment-list>... ;
Если опущен, то считается, что это логика. “Wire” может быть любым из ключевых слов net. Провода могут быть logic, bool, real или векторами logic или bool. Некоторые допустимые примеры:
...
Копировать
wire real foo = 1.0;
tri logic bus[31:0];
wire bool addr[23:0];
... и так далее.

Объявление переменных происходит аналогично. Ключевое слово «reg» используется для указания, что это переменная. Переменные могут иметь те же типы данных, что и сети.

Тип bool поддерживает те же операторы, что и тип logic, с очевидными отличиями, обусловленными ограниченностью области.

Операторы сравнения (не case) возвращают логику, если любой из их операндов является логикой. Если оба являются bool или real (включая смесь bool и real), то результатом будет bool. Это связано с тем, что сравнение bool и real всегда возвращает в точности true или false.

Сравнение случаев возвращает bool. Это отличается от базового Verilog, который, строго говоря, возвращает логику, но только значения 0 или 1.

Арифметические операторы возвращают real, если один из их операндов является real, в противном случае они возвращают logic, если один из их операндов является logic. Если оба операнда являются bool, они возвращают bool.

Главная
Курсы
Вебинары
1. Руководство по установке Icarus Verilog
2. Начало работы с Icarus Verilog
3. Симуляция с помощью Icarus Verilog
4. Флаги командной строки iverilog
5. Формат командного файла
6. Атрибуты
7. IVLPP — препроцессор IVL
8. Флаги командной строки VVP
9. Интерактивный режим VVP
10. VVP как библиотека
11. Флаги командной строки vhdlpp
12. Icarus Verilog с GTKWave
13. Использование VPI
14. Расширения Icarus Verilog
Закрыть