DocsTech
/
ICARUS VERILOG
/

~ cd 7. ivlpp — препроцессор ivl

Команда ivlpp — это препроцессор Verilog, который обрабатывает включение файлов и подстановку макросов. Программа запускается отдельно от собственно компилятора, чтобы облегчить задачу компилятора, и предоставляет возможность препроцессирования файлов в автономном режиме.

ИСПОЛЬЗОВАНИЕ:
...
Копировать
ivlpp [options] <file>

Параметр — это имя файла, который будет прочитан и препроцессирован. Полученный результат отправляется на стандартный вывод. Возможные опции включают:

7.1. FLAGS-файл

Файл flags содержит флаги для использования ivlpp. Это удобный способ для программ передавать сложные наборы флагов программе ivlpp.

Пустые строки и строки, начинающиеся с «#», игнорируются. Последние могут быть использованы как строки комментариев. Все остальные строки являются строками флагов. Перед интерпретацией строк удаляются лидирующие и завершающие пробелы.

Остальные строки имеют простой формат:
...
Копировать
<key>:<value>

Символ двоеточия отделяет ключ от значения. Поддерживаются следующие ключи и соответствующие им значения:

7.2. Нахождение включаемых файлов

Препроцессор ivlpp реализует директивы `include, подставляя содержимое включаемого файла на место строки с директивой `include. Имя, которое указывает программист, является именем файла. Обычно препроцессор ищет именованный файл в текущем рабочем каталоге. Однако флаги -I могут быть использованы для указания пути к каталогам для поиска именованных включаемых файлов. Сначала будет искаться текущий каталог, а затем все включаемые каталоги в порядке появления флага -I.

Исключением из этого процесса являются включаемые файлы, имя которых начинается с символа ‘/’. Эти имена файлов являются корневыми именами и должны находиться в указанном корневом месте.

7.3. Генерируемые директивы line

Компиляторы обычно стараются выводить вместе с сообщениями об ошибках номер файла и строки, в которой произошла ошибка. Icarus Verilog не является исключением. Однако, если отдельный препроцессор фактически выбирает и открывает файлы, то номера строк, подсчитанные собственно компилятором, не будут отражать реальные номера строк в исходном файле.

Чтобы справиться с этой ситуацией, препроцессор может генерировать линейные директивы. Эти директивы представляют собой строки вида:
...
Копировать
`line <num> <name> <level>
где — это имя файла в двойных кавычках, а — номер строки в файле. Парсер изменяет счетчики имен файлов и номеров строк таким образом, что следующей строкой будет строка с номером в файле с именем . Например:
...
Копировать
`line 6 "foo.vl" 0
// I am on line 6 in file foo.vl.

Препроцессор генерирует директиву `line каждый раз, когда переключает файлы. Это включает запуск включаемого файла (line 1 «foo.vlh» 1) или возврат к включающему файлу.

Главная
Курсы
Вебинары
1. Руководство по установке Icarus Verilog
2. Начало работы с Icarus Verilog
3. Симуляция с помощью Icarus Verilog
4. Флаги командной строки iverilog
5. Формат командного файла
6. Атрибуты
7. IVLPP — препроцессор IVL
Закрыть