Лекция 16. Процесс компиляции в системе MAX-PLUS II
Лекция 16. Процесс компиляции в системе MAX PLUS II
Общие положения. Сначала компилятор извлекает информацию об иерархических связях между файлами проекта и проверяет проект на простые ошибки ввода дизайнов. Он создаёт организационную карту проекта и затем, комбинируя все файлы проекта, превращает их в базу данных без иерархии, которую может эффективно обрабатывать.
Компилятор применяет разнообразные способы увеличения эффективности проекта и минимизации использования ресурсов устройства. Если проект слишком большой, чтобы быть реализованным в одной ПЛИС, компилятор может автоматически разбить его на части для реализации в нескольких устройствах того же самого семейства ПЛИС, при этом минимизируется число соединений между устройствами. В файле отчёта (.rpt) будет отражено, как проект будет реализован в одном или нескольких устройствах.
Компилятор создаёт файлы программирования или загрузки, которые программатор системы MAX PLUS II или другой будет использовать для программирования одной или нескольких ПЛИС фирмы Altera.
Несмотря на то, что компилятор может автоматически компилировать проект, существует возможность задать обработку проекта в соответствии с точными указаниями разработчика. Например, возможно задать стиль логического синтеза проекта по умолчанию и другие параметры логического синтеза в рамках всего проекта. Кроме того, удобно задать временные требования в рамках всего проекта, точно указать разбиение большого проекта на части для реализации в нескольких устройствах и выбрать варианты параметров устройств, которые будут применены для всего проекта в целом. Можете также выбрать, сколько выводов и логических элементов должно быть оставлено неиспользованными во время текущей компиляции, чтобы зарезервировать их для последующих модификаций проекта.
Компиляцию можно запустить из любого приложения MAX PLUS II или из окна компилятора. Компилятор автоматически обрабатывает все входные файлы текущего проекта. Процесс компиляции можно наблюдать в окне компилятора в следующем виде (см. рисунок 16.1):
· опустошаются и переворачиваются песочные часы, что указывает на активность компилятора;
· высвечиваются прямоугольники модулей компилятора по очереди, по мере того как компилятор завершает каждый этап обработки;
· под прямоугольником модуля компилятора появляется пиктограмма выходного файла, сгенерированного данным модулем. Для открытия соответствующего файла следует дважды щёлкнуть левой кнопкой «мыши» на пиктограмме;
Рекомендуемые материалы
· процент завершения компиляции постепенно увеличивается (до 100%), что отражается также растущим прямоугольником «градусник»;
· во время разбиения и монтажа кнопка компилятора Stop (Стоп) превращается в кнопку Stop/Show Status (Стоп/Показать состояние), которую можно выбрать для открытия диалогового окна, в котором отражается текущее состояние разбиения и монтажа проекта;
· при обнаружении в процессе компиляции каких-либо ошибок или возможных проблем автоматически открывается окно обработчика сообщений, в котором отображается список сообщений об ошибке, предупреждающих и информационных сообщений, а также сразу даётся справка по исправлению ошибки. Кроме того, можно определить источники сообщений в файлах проекта или в его поуровневом плане назначений.
Модули и утилиты компилятора. Компилятор системы MAX PLUS II обрабатывает проект, используя следующие модули и утилиты (см. рисунок 16.1):
Рисунок 16.1 – Процесс компиляции
· экстрактор списка цепей (Compiler Netlist Extractor), включающий встроенные программы чтения форматов EDIF, VHDL, Verilog и XNP;
· построитель базы данных (Database Builder);
· логический синтезатор (Logic Synthesizer);
· разделитель (Partitioner);
· трассировщик (Fitter);
· экстрактор для функционального тестирования (Functional SNF Extractor);
· экстрактор для тестирования временных параметров (Timing SNF Extractor);
· модуль ассемблера (Assembler);
· утилита диагностики проекта (Design Doctor Utility).
Модуль экстрактора форматов (Compiler Netlist Extractor) преобразует каждый файл проекта в один или несколько двоичных файлов с расширением .cnf (compliler netlist file). Поскольку компилятор представляет значения всех параметров, используемых в параметризованных функциях, содержимое файла CNF может меняться при последовательной компиляции, если значения параметров меняются. Данный модуль создаёт также файл иерархических взаимосвязей (.hif) (hierarchy interconnect file), в котором документируются иерархические связи между файлами проекта, а также содержится информация, необходимая для показа иерархического дерева проекта в окне Hierarchy Display. Кроме того, данный модуль создаёт файл базы данных узлов (.ndb) (node database), в котором содержатся имена узлов проекта для базы данных назначений ресурсов. Встроенные программы чтения форматов EDIF, VHDL, Verilog и XNF автоматически транслируют информацию проекта в файлы соответствующих форматов .edf, .vhd, .v, .xnf в формат, совместимый с системой MAX PLUS II. Программа чтения формата EDIF обрабатывает входные файлы EDIF с помощью библиотечных файлов .imf, (library mapping file) которые устанавливают соответствие между логическими функциями, разработанными в других САПР, и функциями, системы MAX PLUS II. Программа чтения формата XNF может создавать файл для экспорта текстового дизайна (.tdx) (text design export file), который содержит информацию на языке AHDL, которая эквивалентна той, что содержится в файле формата XNF (.xnf); это делается для того, чтобы редактировать проект на языке AHDL.
Модуль построителя базы данных (Database Builder) использует файл иерархических связей HIF для компоновки созданных компилятором файлов CNF, в которых содержится описание проекта. На основании данных об иерархической структуре проекта данный модуль копирует каждый файл CNF в одну базу данных без иерархической структуры. Таким образом, эта база данных сохраняет электрическую связность проекта.
При создании базы данных модуль исследует логическую полноту и согласованность проекта, а также проверяет пограничную связность и наличие синтаксических ошибок (например, узел без источника или места назначения). На этой стадии компиляции обнаруживается большинство ошибок, которые могут быть тут же легко исправлены. Каждый модуль компилятора последовательно обрабатывает и обновляет эту базу данных.
Первый раз, когда компилятор обрабатывает проект, все файлы проекта компилируются. Можно использовать возможность «быстрой повторной компиляции» (smart recompile) для создания расширенной базы данных проекта, которая помогает ускорить последующие компиляции. Эта база данных позволяет изменить назначения ресурсов физического устройства, такие, как назначения выводов и логических элементов, а также повторно компилировать проект без повторного построения базы данных и повторного синтеза логики проекта. Используя возможность «полной повторной компиляции» (total recompile), возможно сделать выбор между повторной компиляцией только тех файлов, которые редактировались после последней компиляции, и полной повторной компиляцией всего проекта.
Модуль логического синтезатора (Logic Synthesizer) применяет ряд алгоритмов, которые уменьшают использование ресурсов и убирают дублированную логику, обеспечивая тем самым максимально эффективное использование структуры логического элемента для архитектуры целевого семейства устройств. Данный модуль компилятора применяет такие способы логического синтеза для требований пользователя по временным параметрам и др. Кроме того, логический синтезатор ищет логику для несоединённых узлов. Если он находит не присоединенный узел, он убирает примитивы, относящиеся к этому узлу.
Для управления логическим синтезом имеются три заранее описанных стиля и большое число логических опций. В любом приложении MAX PLUS II можно ввести значения временных параметров проекта и выбрать логические опции, а также определить стили логического синтеза. Можно задать глобальный логический синтез по умолчанию и временные параметры проекта для всего проекта в целом, а также все дополнительные назначения логических опций и временных параметров проекта и для отдельных логических функций.
Модуль разделителя. Если проект не помещается при монтаже в одно устройство, модуль разделитель (Partitioner) разделяет базу данных на несколько ПЛИС одного и того же семейства, стараясь при этом разделить проект на минимально возможное число устройств. Разбиение проекта происходит по границам логических элементов, а число выводов, используемое для сообщения между устройствами, минимизируется. Разбиение может быть проведено полностью автоматически либо под частичным или полным управлением со стороны пользователя. Назначения устройств и установки для автоматического выбора устройств позволяют применить тот уровень управления, который наиболее подходит для конкретного проекта.
Когда работают модули Partitioner и Fitter, можно приостановить компиляцию. Компилятор отобразит информацию о текущем состоянии процессов разбиения и трассировки кристалла, в том числе сравнение требуемых и имеющихся ресурсов. Это нужно для того, чтобы принять решение, продолжать ли компиляцию, или вносить кардинальные изменения в проект.
Модуль трассировки. Используя базу данных, обновлённую модулем разбиения, модуль трассировки (Fitter) приводит в соответствие требования проекта с известными ресурсами одного или нескольких устройств. Он назначает каждой логической функции расположение реализующего её логического элемента и выбирает соответствующие пути взаимных соединений и назначения выводов. Данный модуль пытается согласовать назначения ресурсов, т.е. выводов, логических элементов, элементов ввода/вывода, ячеек памяти, чипов, клик, устройств, местной трассировки, временных параметров и назначения соединённых выводов из файла назначений и конфигурации (.acf) (Assignment & Configuration file), с имеющимися ресурсами. Модуль имеет параметры, позволяющие определить способы трассировки, Например, автоматическое введение логических элементов или ограничение коэффициента объединения по входу. Если трассировка не может быть выполнена, модуль выдаёт сообщение и предлагает вам выбор: проигнорировать некоторые или все назначения либо прекратить компиляцию.
Независимо от того, завершена ли полная трассировка проекта, данный модуль генерирует файл отчёта (.rpt) (report file), в котором документируется информация о разбиении проекта, именах входных и выходных контактов, временных параметрах проекта и неиспользованных ресурсах для каждого устройства в проекте. Можно включить в файл отчёта разделы, показывающие назначения пользователя, файловую иерархию, взаимные соединения логических элементов и управления, реализованные в ЛЭ.
Компилятор также автоматически создаёт файл трассировки (.fit), в котором документируются назначения ресурсов и устройств для всего проекта, а также информация о трассировке. Независимо от того, успешно ли прошла трассировка, пользователь может просмотреть информацию о согласовании, разбиении и трассировки из файла согласования в окне поуровневого планировщика. Возможно, также переписать назначения из файла согласования в файл назначений и конфигурации ACF для последующего редактирования.
Экстрактор функционального тестирования (Functional SNF Extractor) создаёт файл для функционального тестирования (.snf). Компилятор генерирует этот файл перед синтезом проекта, поэтому он содержит все узлы, присутствующие в первоначальных файлах проекта. Этот функциональный файл SNF не содержит информации о временных параметрах. Его генерация возможна только в случае, если компиляция проекта прошла без ошибок.
Экстрактор для тестирования временных параметров (Timing SNF Extractor) создаёт (если компиляция проекта прошла без ошибок) файл для тестирования временных параметров (.snf), который содержит данные о временных параметрах проекта. Кроме того, эти файлы SNF используют также модули компилятора, содержащие программы записи в форматы EDIF, Verilog и VHDL, генерирующие выходные файлы формата стандартных задержек (.sdo) (standart delay format output file).
Модуль ассемблера (Assembler). Модуль ассемблера преобразует назначения логических элементов, выводов и устройств, сделанные модулем трассировки Fitter, в программный образ для устройства (устройств) в виде одного или нескольких двоичных объектных файлов для программатора (.pof) или объектных файлов SPAM (.sof).
После завершения компиляции компилятор и программатор системы MAX PLUS II позволяют сгенерировать дополнительные файлы для программирования устройства, которые можно использовать в других условиях программирования. Например, можно создать файлы с последовательным потоком битов (.bbs) и необработанные двоичные файлы (.rbt) для конфигурирования устройств FLEX6000, FLEX8000 и FLEX10K. Можно создать последовательные файлы тестовых векторов (.svf) или файлы на языке JAM (.jam) для программирования устройств автоматизированной испытательной аппаратуры типа ATE.
Рисунок 16.2 – Окно команды Design Doctor Settings | Утилита диагностики проекта (Design Doctor Utility). Необязательная утилита диагностики проекта проверяет логику каждого файла проекта для выявления элементов, которые могут вызвать проблемы надёжности на системном уровне. Эти проблемы обычно обнаруживаются только после запуска устройства «в железе». Существует возможность выбора одного из трёх предварительно определённых наборов правил разработки проекта с разными уровнями. Кроме того, можно разработать свой собственный свод правил разработки дизайна. Правила разработки дизайна основываются на принципах надёжности, которые охватывают |
логику, содержащую асинхронные входы, залповые тактовые сигналы (Clock), многоуровневую логику на конфигурациях с сигналами Clock, Preset и Clear, а также в условиях состязаний. Установка правил проверки производится с помощью команды Design Doctor Settings (см. рисунок 16.2).
Вопросы для проверки усвоения материала
1. Модуль трассировки компилятора системы MAX PLUS II.
2. Экстракторы тестирования компилятора системы MAX PLUS II.
3. Модуль ассемблера компилятора системы MAX PLUS II.
4. Утилита диагностики проекта системы MAX PLUS II.
5. Функции компилятора системы MAX PLUS II.
6. Система отображения работы компилятора системы MAX PLUS II.
7. Модули, используемые при обработке проекта компилятором системы MAX PLUS II.
Вам также может быть полезна лекция "5 - Вакуолярная система клетки".
8. Модуль экстрактора форматов компилятора системы MAX PLUS II.
9. Модуль построителя базы данных компилятора системы MAX PLUS II.
10. Модуль логического синтезатора компилятора системы MAX PLUS II.
11. Модуль разделителя компилятора системы MAX PLUS II
Литература
1. Стешенко Б.В. ПЛИС фирмы АLTERA: проектирование устройств обработки сигналов. –М.: ДОДЭКА, 2000. –128 с. (57-60 с.)