5. Процедура компіляції створеного проекту в системі автоматизованого проектування MAX+PLUS II
Спочатку компілятор дістає інформацію про ієрархічні зв’язки між файлами проекту і перевіряє проект на звичайні помилки введення дизайнів. Він створює організаційну карту проекту і потім, комбінуючи всі файли проекту, перетворює їх в базу даних без ієрархії, яку він здатен ефективно обробляти.
Компілятор використовує різноманітні засоби збільшення ефективності проекту і мінімізації використання ресурсів пристрою. Якщо проект занадто великий, щоб бути реалізованим в одній програмувальній логічній інтегральній схемі – компілятор може автоматично розбити його на частини для реалізації в декількох пристроях того ж самого сімейства програмувальних логічних інтегральних схем, при цьому мінімізуються число з’єднань між пристроями. В файлі звітності (.rpt) буде відображено яким чином проект реалізуватиметься: в одному або декількох пристроях.
Компілятор може автоматично компілювати проект. Існують можливості задати обробку проекту у відповідності з точними вказівками розробника. Наприклад, можливо задати стиль логічного синтезу проекту та інші параметри логічного синтезу в рамках всього проекту. Крім того, зручно задавати часові вимоги в рамках всього проекту, точно вказати розбиття великого проекту на частини для реалізації в декількох пристроях і обрати варіанти параметрів пристроїв, що будуть використані для всього проекту в цілому. Користувач здатний обирати кількість виводів і логічних елементів, які залишатимуться не використаними під час плинної компіляції, щоб зарезервувати їх для наступних модифікацій проекту.
Компіляцію можна запустити з будь-якого додатку MAX+PLUS II з вікна компілятора. Компілятор автоматично обробляє всі вхідні файли плинного проекту.
Процес компіляції можна бачити у вікні компілятора (рис. 5.1) в наступному вигляді:
1) спустошується і перевертається пісковий годинник, що вказує на активність компілятора;
2) висвітлюються, за чергою, прямокутники модулів компілятора;
3) під прямокутником модуля компілятора з’являється піктограма вихідного файлу, що був генерований даним модулем;
4) відсоток завершення компіляції поступово збільшується (до 100%);
5) під час розбиття та монтажу кнопка компілятора Stop (Стоп) перетворюється в кнопку Stop/Show Status (Стоп/Показати стан), яку користувач може вибрати для відкриття діалогового вікна, в якому відображається плинний стан розбиття і монтажу проекту;
6) при виявленні в процесі компіляції будь-яких помилок або можливих проблем автоматично відкривається вікно обробника повідомлень, в якому відображається список повідомлень про помилку, що попереджують та інформаційних повідомлень, а також відразу дається довідка по виправленню помилки. Крім того, користувач може визначити джерела повідомлень в файлах проекту або в його порівневому плані призначень.
Рис. 5.1. Процес компіляції проекту
Компілятор системи автоматичного проектування MAX+PLUS II обробляє проект, використовуючи наступні модулі та утиліти:
1) екстрактор списку ланцюгів (Compiler Netlist Extractor), що включає програми для читання форматів EDIF, VHDL, Verilog, XNF;
2) будівник бази даних (Database Builder);
3) логічний синтезатор (Logic Synthesizer);
4) роздільник (Partitioner);
5) трасувальник (Fitter);
6) екстрактор для функціонального тестування (Functional SNF Extractor);
7) екстрактор для тестування часових параметрів (Timing SNF Extractor);
8) екстрактор для тестування компонування (Linked SNF Extractor);
9) програма для запису вихідного файла в формат EDIF (EDIF Netlist Writer);
10) програма для запису вихідного файла в формат Verilog (Verilog Netlist Writer);
11) програма для запису вихідного файла в формат VHDL (VHDL Netlist Writer);
12) модуль асемблера (Assembler);
13) утиліта діагностики проекту (Design Doctor Utility).
Модуль екстрактора форматів (Compiler Netllist Extractor) перетворює кожний файл проекту в один або декілька двійкових файлів з розширенням .cnf (compiler netlist file). Оскільки компілятор підставляє значення всіх параметрів, що використовуються в параметризованих функціях, вміст cnf-файлу може змінюватись при послідовній компіляції, якщо значення параметрів змінюється. Даний модуль також створює і файл ієрархічних взаємозв’язків, з розширенням .hif (hierarchy interconnect file). В цьому файлі документуються ієрархічні зв’язки між файлами проекту, а також інформація, необхідна для показу ієрархічного дерева у вікні “Hierarchy Display”. Крім того, даний модуль створює файл бази даних вузлів з розширенням .ndb (node database), в якому містяться імена вузлів проекту для бази даних призначень ресурсів.
Модуль будівника бази даних (Database Builder) використовує файл ієрархічних зв’язків для компонування створених компілятором cnf-файлів, в яких міститься описання проекту. На основі даних про ієрархічну структуру проекту даний модуль копіює кожний cnf-файл в одну базу даних без ієрархічної структури. Таким чином, ця база даних зберігає електричні зв’язки проекту.
При створенні бази даних модуль досліджує логічну повноту та узгодженість проекту, а також перевіряє прикордонні зв’язки і наявність синтаксичних помилок. На цій стадії компіляції виявляється більшість помилок, які можуть бути тут же легко виправлені. Кожний модуль компілятора послідовно обробляє і поновлює цю базу даних.
Перший раз, коли компілятор обробляє проект, всі файли проекту компілюються. Користувач має можливість обрати “швидку повторну компіляцію” (smart recompile) для створення розширеної бази даних проекту, що дозволяє прискорити наступні компіляції. Використовуючи можливість повної повторної компіляції (total recompile), є можливість зробити вибір між повторною компіляцією лише тих файлів, які редагувались після останньої компіляції, і повною повторною компіляцією.
Модуль логічного синтезу (Logic Synthesizer) використовує ряд алгоритмів, що зменшує використання ресурсів і прибирають дубльовану логіку, забезпечуючи тим самим ефективне використання структури логічного елемента для архітектури цілої родини пристроїв. Крім того логічний синтезатор шукає логіку для не поєднаних вузлів. Якщо він знаходить такий вузол, він прибирає примітиви, що відносяться до такого вузла.
Якщо проект не вміщується при монтажі в одному пристрої, модуль роздільника (Partitioner) розділяє базу даних на декілька ПЛІС однією і тіє ж самої родини, намагаючись при цьому розділити проект на мінімальну кількість пристроїв.
Використовуючи базу даних, поновлену модулем розбиття, модуль трасування (Fitter) приводить у відповідність вимоги проекту з відомими ресурсами одного або декількох пристроїв. Він призначає кожній логічний функції положення логічного елемента, що її реалізує та обирає відповідні шляхи взаємозв’язків і призначень виводів.
Екстрактор для функціонального тестування (Functional SNF Extractor) створює файл для функціонального тестування з розширенням .snf. Компілятор генерує цей файл перед синтезом проекту, він містить всі вузли, що присутні в початкових файлах проекту.
Екстрактор для тестування часових параметрів (Timing SNF Extractor) створює, якщо компіляція проекту пройшла без помилок, файл для тестування часових параметрів, що містить дані про часові параметри проекту. Розширення файлу також - .snf.
Екстрактор для тестування компонування (Linked SNF Extractor) створює файл (.snf) для тестування компонування декількох проектів (на рівні плати). Такий файл комбінує інформацію з snf-файлів двох типів: для тестування часових параметрів і функціонального тестування, що були синтезовані для цих декількох проектів окремо.
Програма для запису вихідного файла в формат EDIF (EDIF Netlist Writer). Компілятор MAX+PLUS II може взаємодіяти з більшістю стандартних програмних засобів системи автоматичного проектування, що можуть читати файли стандартного формату EDIF 200 або EDIF 300. Даний модуль компілятора, що містить програму запису в формат EDIF, створює один або декілька файлів в форматі EDIF, з розширенням .edo.
Програма для запису вихідного файла в формат Verilog (Verilog Netlist Writer). Необов’язковий модуль програми запису в формат Verilog генерує вихідні файли з розширенням .vo, що містять інформацію про функції та їх часові параметри, отримані після проведення синтезу.
Програма для запису вихідного файла в формат VHDL (VHDL Netlist Writer). Необов’язковий модуль компілятора з програмою запису в формат VHDL генерує один або декілька вихідних файлів (.vho) на мові VHDL з синтаксисом 1987 або 1993.
Модуль асемблера (Assembler) перетворює призначення логічних елементів, виводів і пристроїв, зроблених модулем трасування, в програмний образ для пристрою у вигляді одного або декількох двійкових об’єктних файлів для програматора (.pof) і об’єктних файлів SRAM (.sof).
Утіліта діагностики проекту (Design Doctor Utility) перевіряє логіку кожного файлу проекту з метою виявлення елементів, які можуть викликати проблеми надійності на системному рівні. Ці проблеми виявляються лише після запуску пристрою “в залізі”. Існує можливість обирати одне з трьох попередніх правил обробки проекту з різними рівнями.
6. Загальні відомості про мову описання апаратури AHDL
Мова описання апаратури AHDL (Altera Hardware Description Language) розроблена фірмою Altera і призначена для описання комбінаційних і послідовних логічних пристроїв, групових операцій, цифрових автоматів з урахуванням особливостей ПЛІС фірми Altera. Він повністю інтегрується з системою автоматичного проектування MAX+PLUS II. Файли описання апаратури, написані на мові AHDL, мають розширення .tdf (Text design file). Для створення tdf-файлу можна використовувати як текстовий редактор системи MAX+PLUS II, так і будь-який інший. Проект, виконаний у вигляді tdf-файлу, компілюється і використовується для формування файлу програмування або завантаження ПЛІС фірми Altera.
Оператори та елементи мови AHDL є достатньо потужними та універсальними засобами описання алгоритмів функціонування цифрових пристроїв. Мова описання апаратури AHDL дає можливість створювати ієрархічні проекти в рамках однєї цієї мови або ж в ієрархічному проекті використовувати як tdf-файли, написані на мові AHDL, так і інші типи текстового описання апаратури. Для створення проектів на AHDL можна, звичайно, користуватись будь-яким текстовим редактором, але текстовий редактор системи MAX+PLUS II надає ряд додаткових можливостей для введення, компіляції і верифікації проекту.