ПЛИС Altera. Часть 3: первая компиляция проекта

Это третья часть цикла, посвящённого программируемой логике и среде разработки Quartus компании Altera.

Ссылки на предыдущие части:

В первой части рассматривалась загрузка и установка Quartus, а также создание пустого проекта с помощью мастера. Во второй части обсуждалось проектирование цифровой схемы и определялась общая последовательность шагов для создания конфигурации ПЛИС.

Напомним, что весь процесс создания конфигурации состоит из следующих этапов:

  1. проектирование цифровой схемы;

  2. анализ созданной схемы на наличие ошибок;

  3. привязка входов и выходов схемы к конкретным выводам ПЛИС;

  4. компиляция проекта и создание двоичных файлов для конфигурирования ПЛИС;

  5. конфигурирование ПЛИС посредством USB Blaster.

Первый этап рассмотрен во второй части. В этой статье разбирается второй этап — анализ схемы.

Шаг 2. Анализ созданной схемы на наличие ошибок

Анализ схемы выполняется в момент компиляции проекта. Однако перед запуском компиляции необходимо указать главный модуль проекта — ключевой элемент его иерархии. Без указанного главного модуля проект не получится откомпилировать.

Главный модуль проекта

Главный модуль настраивается в окне Project Navigator среды Quartus. Это окно располагается в левой части основного окна и предназначено для управления файлами и иерархией проекта — через него можно просмотреть все модули и файлы, входящие в проект.

Окно Project Navigator в Quartus

Окно Project Navigator содержит несколько вкладок:

  • Hierarchy — отображает модули проекта в виде иерархического списка. Корнем списка является выбранный чип Altera, ниже располагается главный модуль.

  • Files — выводит список всех файлов, добавленных к проекту. Файлы можно открывать двойным кликом, а также удалять из проекта (при этом файл не стирается с диска, а лишь исключается из проекта). Здесь же назначается главный модуль.

Назначение Top-Level Entity в Quartus

Чтобы назначить файл главным модулем, переключитесь на вкладку Files, выберите нужный файл в списке и в его контекстном меню выберите пункт Set as Top-Level Entity — последовательность показана на рисунке выше.

Примечание

По умолчанию главным модулем считается файл, имя которого совпадает со значением Top-Level Entity, заданным при создании проекта.

Корректность настройки можно быстро проверить через Project Navigator: закройте все открытые файлы проекта, перейдите на вкладку Hierarchy и сделайте двойной клик на имени главного модуля. Если всё настроено правильно, откроется ваша схема. Если схема не открылась — главный модуль необходимо задать вручную.

После настройки главного модуля можно переходить к компиляции проекта.

Первая компиляция: анализ и синтез схемы

Процесс компиляции схемы в конфигурацию ПЛИС включает несколько ключевых этапов:

  • Analysis & Synthesis — анализ и синтез;

  • Fitter (Place & Route) — размещение и трассировка;

  • Assembler — формирование двоичных файлов;

  • TimeQuest Timing Analysis — временной анализ.

Все они выполняются при каждой компиляции, но независимо друг от друга. Иными словами, даже если на этапе Analysis & Synthesis обнаружатся критические ошибки, процесс не прервётся и продолжится до завершения остальных этапов. Для ускорения отладки каждый этап можно запускать отдельно через меню Processing → Start. Самые востребованные команды также вынесены на панель инструментов Standard среды Quartus.

Важно

Analysis & Synthesis — первый и самый важный этап компиляции. Здесь выявляются ошибки уровня проектирования, а сама схема транслируется в блоки, физически реализуемые в выбранной микросхеме Altera. При ошибках на этом этапе продолжать компиляцию не имеет смысла.

Запустить анализ и синтез можно с помощью кнопки Start Analysis & Synthesis на стандартной панели инструментов (выделена на рисунке ниже).

Кнопка Start Analysis & Synthesis на панели инструментов Quartus

При нажатии на эту кнопку запускается процесс анализа и синтеза. Прогресс выполнения в процентах отображается в строке Analysis & Synthesis окна Tasks, расположенного под окном Project Navigator.

По завершении компиляции в центральной части окна Quartus откроется новая вкладка Compilation Report – firstproject.

Окно Compilation Report в Quartus

Эта вкладка содержит подробный отчёт о результатах анализа и синтеза. В отчёте приводятся:

  • раздел Flow Summary — обобщённый результат компиляции;

  • параметры, с которыми выполнялась компиляция, и время её работы;

  • детальные результаты синтеза;

  • полный лог сообщений (Messages и Flow Messages).

Разница между Analysis & Synthesis → Messages и Flow Messages в том, что первый раздел содержит только сообщения этапа анализа и синтеза, тогда как Flow Messages охватывает сообщения всех выполненных этапов. На текущем шаге выполнялся только один этап, поэтому содержимое этих разделов совпадает.

Совет

В отчёте о компиляции в первую очередь стоит обратить внимание на разделы Flow Summary и Flow Messages.

В разделе Flow Summary в первой же строке Flow Status выводится итог компиляции:

  • Successful — успешно;

  • Flow Failed — выполнение завершилось ошибкой.

Поскольку первая схема очень проста, первая компиляция, скорее всего, окажется успешной. В противном случае нужно перейти к Flow Messages и изучить выведенные там сообщения.

Раздел Flow Messages оформлен в виде окна — его возможный вид при ошибке компиляции показан ниже.

Окно Flow Messages в Quartus

Все сообщения в окне Flow Messages делятся на четыре группы и окрашиваются в разные цвета.

Информационные сообщения

Зелёным цветом обозначаются информационные сообщения, выводимые при любой компиляции.

Предупреждения (Warnings)

Синим цветом обозначаются предупреждения Warnings — сообщения о проблемах, не препятствующих успешной компиляции, но способных повлиять на её производительность или на качество итоговой конфигурации.

Примечание

Бесплатная версия Quartus постоянно выводит сообщение о неработающей параллельной компиляции: Parallel compilation is not licensed and has been disabled. Параллельная компиляция доступна только в платных редакциях Quartus, поэтому это сообщение можно игнорировать.

Помимо предупреждения о параллельной компиляции, на рисунке выше присутствует предупреждение Pin "input2_or" not connected — на схеме есть вывод, не подключённый к остальной логике. Само по себе такое предупреждение не всегда серьёзное (это мог быть забытый, уже не нужный вывод), но в связке с ошибкой компиляции это первая подсказка, где её искать.

Ошибки (Errors)

Красным цветом выделяются сообщения об ошибках Errors — событиях, препятствующих успешной компиляции. В рассматриваемом примере присутствуют две ошибки:

  • Node "inst1" is missing source — у блока inst1 (на схеме это логический элемент OR2) один из входов ни к чему не подключён. С учётом предупреждения о выводе input2_or ясно, что нужно исправить связь между этим выводом схемы и соответствующим входом логического элемента.

  • Второе сообщение — это итог компиляции: статус unsuccessful и количество ошибок и предупреждений, выведенных в процессе.

Пример схемы с ошибкой подключения в Quartus

Критические предупреждения (Critical Warnings)

Предупреждение

Синим цветом также выделяются критические предупреждения (Critical Warnings). От обычных предупреждений они отличаются тем, что вызваны ошибками, способными серьёзно повлиять на работу итоговой схемы. Такие проблемы Quartus может устранить автоматически, но результат автоматического исправления нередко расходится с ожидаемым, поэтому критические предупреждения требуют внимательного разбора. В рассмотренном примере подобных сообщений нет.

Фильтрация сообщений

Каждый тип сообщений, помимо цвета, обозначается собственной пиктограммой. Эти же пиктограммы используются на кнопках фильтра в левом верхнем углу окна Flow Messages (выделены на изображении выше). Рядом с каждой кнопкой указано количество сообщений соответствующего типа. С помощью фильтра можно показывать сообщения только одного или нескольких типов одновременно.

Назначение кнопок по порядку:

  1. All — отключает все остальные кнопки;

  2. Error Messages — ошибки;

  3. Critical Warnings — критические предупреждения;

  4. Warnings — предупреждения;

  5. Flagged Messages — сообщения, помеченные пользователем через контекстное меню Flag → Flag Message.

Справа от кнопок расположено поле текстового фильтра — оно ограничивает вывод строками, частично совпадающими с введённым текстом.

Окно Messages

Сообщения из Flow Messages дублируются в окне Messages, по умолчанию расположенном в нижней части основного окна Quartus. Принципиальное отличие — это две вкладки в левой нижней части окна:

  • Processing — содержимое не отличается от одноимённой вкладки Flow Messages;

  • System — выводит сообщения, связанные с изменением настроек проекта в целом или с работой самой среды Quartus.

Окно Messages в Quartus

Что дальше

С успешным выполнением анализа и синтеза схемы завершается третья часть серии статей о ПЛИС Altera. В четвёртой части рассматривается работа над схемотехнической частью проекта: внутренняя, реализованная в ПЛИС часть схемы уже готова, и теперь нужно разработать схему, подключаемую к ПЛИС извне. Сделать это невозможно без знания устройства используемой в проекте платы CTRL-CPLD-EPM570.