Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть I
Все статьи цикла:
- Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть I
- Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть II
- Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть III
- Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть IV
- *Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть V
Введение
Для начала остановимся немного на теории проектирования проектирования системы в целом. У когото возникнет вопрос: а при чем здесь система в целом, если речь идет о проекте для ПЛИС? И это главная ошибка при разработке! Применение программируемой логики наиболее эффективно при системном подходе и позволяет значительно сократить время разработки, габариты и стоимость системы в целом, а в случае ошибки перепрограммировать ее значительно проще и быстрее, чем переделать печатную плату. ПЛИС это не микросхема в привычном понимании. Это, по сути, часть печатной платы, часть схемы, которую раньше реализовывали на отдельных контроллерах, процессорах и логике. А теперь все это можно разместить в одной микросхеме. Поэтому разработку проекта ПЛИС нужно начинать не после проработки структуры системы, а одновременно с ней.
В качестве средства разработки для своих микросхем Actel предлагает Actel Libero IDE полный интегрированный пакет, который включает в себя все необходимые программы и библиотеки для разработки, отладки и верификации проектов для микросхем программируемой логики и их программирования. Бóльшая часть из них входит в инсталляционный пакет. Остальные, как, например, внутрисхемный отладчик прошивки ПЛИС Identify, можно скачать с англоязычного сайта Actel. Кроме того, пакет включает в себя большое число IPмодулей, многие из которых предоставляются бесплатно в виде списка соединений.
Уже достаточно много написано книг и статей по работе с программируемой логикой, поэтому здесь мы не будем рассматривать основы программирования на языках Verilog или VHDL или работы в симуляторе ModelSim. Основная цель данной статьи помочь разработчикам быстро освоить весь процесс разработки проекта, то есть разработку поведенческой модели (RTLмодели), синтез, трассировку и генерацию файла «прошивки», симуляцию и аппаратную верификацию проекта на разных этапах, а также будут рассмотрены вопросы оптимизации и стратегии трассировки. Более подробно мы остановимся на особенностях работы в Libero IDE версии 8.4 и разработки проектов применительно к ПЛИС Actel.
Процесс проектирования
Одной из основных проблем при разработке проекта ПЛИС является правильная структура. От этого зависит, насколько быстро и легко можно будет отладить и верифицировать проект, а при необходимости внести изменения в структуру проекта и дизайн отдельных модулей, а также будет ли возможность использования готовых модулей в последующих проектах. Поэтому в проекте должно быть, как минимум, два модуля разных уровней: модуль поведенческой модели (RTL), которая не привязана к какомулибо конкретному семейству, и верхний уровень, включающий модуль RTLмодели и модули окружения для конкретного семейства и микросхемы, такие как блоки интегрированного ОЗУ, умножители частоты, порты ввода/вывода и т. д. Начинать лучше с проработки структуры RTLмодели с последующим ее заполнением. Для этого в Actel Libero IDE можно создавать иерархические проекты с предварительной прорисовкой структуры проекта без заполнения: создавать и вставлять в проект пустые блоки, в которых определены только основные порты ввода/вывода с последующей проработкой и корректировкой.
Actel Libero IDE первое знакомство
После того как проработана детальная структура системы, определены структура, которая будет располагаться в ПЛИС, и элементная база, можно приступать непосредственно к разработке дизайна программируемой логики. Разработка проекта для ПЛИС Actel осуществляется в пакете Actel Libero IDE (рис. 1). Это интегрированная среда, которая поддерживает разработку проектов под все микросхемы всех семейств ПЛИС Actel и включает в себя весь набор инструментов для разработки, отладки и верификации, а также средства для прошивки ПЛИС. На данный момент последняя версия LIbero IDE 8.4. Пакет предлагается разработчикам в трех вариантах: полный платный пакет, бесплатный полный пакет на 45 дней и бесплатная версия пакета с рядом ограничений. Бесплатная версия поддерживает разработку проектов под микросхемы объемом до 1 500 000 системных вентилей включительно и имеет ряд ограничений по анализу результатов синтеза и симуляции.
По умолчанию в основном окне пакета присутствуют окна «Менеджер проекта» (Design Explorer), «Процесс разработки» (Project Flow), библиотеки с макрофункциями и IPмодулями и ядрами (Catalog), окно лога работы и свойств объектов проекта.
По сравнению с предыдущими версиями пакета сразу видно одно отличие отсутствует CoreConsole среди инструментов разработки проекта в окне процесса разработки (предполагается, что он был установлен и интегрирован в Libero IDE). Это связано с тем, что в версии 8.4 все функции CoreConsole теперь доступны в SmartDesign, а все IPмодули, включая процессорные ядра, присутствуют в библиотеке (окно «Catalog»). Запустить CoreConsole из основного окна можно через меню «Инструменты» («Tools»).
Создание проекта
При создании нового проекта запускается «Мастер». Необходимо задать название проекта, язык описания (Verilog или VHDL) и выбрать семейство, под которое будет создаваться проект. Можно также выбрать микросхему и корпус и добавить, если имеются, готовые файлы в проект или сделать это позже в процессе работы. Бесплатная версия позволяет использовать модули только на одном языке, выбранном при создании проекта, а платная поддерживает смешанный способ разработки.
Пакет Libero IDE позволяет создавать иерархические проекты. В окне менеджера проекта («Design Explorer») на закладке «Иерархии» («Hierarchy») показаны только модули и их зависимость друг от друга. На закладке «Файлы» («Files») представлены все файлы проекта, включая модули тестбенча, результаты синтеза и трассировки, файлы «прошивки» и т. д.
Для создания модулей проекта имеется текстовый и два графических редактора. Текстовый HDLредактор позволяет создавать модули проекта компоненты или тестбенч на языках Verilog или VHDL. В бесплатной версии можно создавать и использовать модули, написанные на языке, который выбран для проекта при его создании. Платная версия поддерживает смешанный режим проектирования. HDLредактор достаточно простой, и мы на нем не будем останавливаться. Можно лишь заметить, что если создается модуль более высокого уровня иерархии в виде текста, то для облегчения добавления модулей в окне менеджера проекта на закладке с файлами («Files») для графического модуля можно открыть сгенерированный HDLкод (рис. 2) и скопировать в новый файл необходимые текстовые блоки (определения модулей и портов ввода/вывода).
SmartDesign это графический редактор схем. Первоначально он предназначался для создания макросов и простых блоков, но начиная с версии 8.4 он стал полноценным схемным редактором. Хотя и несколько необычным, что вызывает поначалу некоторые трудности у специалистов, ранее работавших с пакетами для ПЛИС Altera или Xilinx. Поэтому уделим ему особое внимание.
Создадим новый модуль SmartDesign процессорный модуль с ядром CortexM1 и несколькими контроллерами. После завершения работы «Мастера» создания нового проекта модуля откроется основное окно для разработки «Canvas» (рис. 3). На поле можно добавлять примитивы, макросы и IPмодули из библиотеки (окно «Catalog»), а также компоненты, созданные в HDLредакторе, SmartDesign или ViewDraw. Для добавления нового библиотечного элемента в окне «Catalog» выберите требуемый компонент и кликните по нему дважды левой клавишей мыши или кликните один раз правой и в выпадающем меню выберите «Instantiate in 〈имя_SmartDesign_модуля〉». Если выбранный компонент конфигурируемый, то откроется соответствующее диалоговое окно конфигурации. Необходимо отметить, что набор макросов и IPмодулей изменяется в зависимости от выбранного семейства. Для добавления ранее созданных HDL или графического модулей в окне «Менеджер проекта» нужно кликнуть один раз правой клавишей мыши на соответствующем компоненте и в выпадающем меню выберите «Instantiate in 〈имя_SmartDesign_модуля〉».
Добавим все необходимые компоненты на поле. Теперь их надо соединить между собой и определить интерфейс верхнего уровня. Основная часть соединений задается с использованием таблиц (рис. 4). Для этого кликните один раз правой клавишей мыши на компоненте и в выпадающем меню выберите «Edit Connection» или нажмите соответствующую кнопку на панели инструментов. Некоторые связи, например, связи верхнего уровня модуля или связи подключения к шине AMBA (AHBAPB), можно определять непосредственно в основном окне. Для этого кликните один раз правой кнопкой мыши по выводу компонента на схеме и в выпадающем меню выберите «Promote to Top Level» или «Fine Compatible Bus Interface» для шины AMBA. Слева и справа располагаются поля внешнего интерфейса (верхнего уровня), закрашенные серым цветом. Если соединение с верхним уровнем подключено, то на поле появляется порт и связь между этим портом и выбранным портом компонента. Если это схема верхнего уровня, то порты являются выводами ПЛИС. Тип порта ввода/вывода (CMOS, TTL, PCI и т. д., 1,2; 1,5; 2,5 и 3,3 В) можно задать непосредственно в схеме, добавив соответствующий примитив или блок из библиотеки, или сделать это позже в синтезаторе Synplify либо в пакете трассировщика Designer через файлы констрейнов.
Для удобства разработки связи между элементами схемы можно сделать невидимыми.
При работе можно группировать порты и связи, добавлять и удалять порты интерфейса, переконфигурировать модули и многое другое. В частности, в SmartDesign можно создавать пустые компоненты, содержащие только порты ввода/вывода. Это позволяет сначала прорисовать иерархическую структуру будущего проекта, а затем ее заполнить. Это удобно и при работе над проектом в команде. Для создания и проверки работоспособности отдельных частей в составе проекта не требуется, чтобы все компоненты проекта были закончены. Пустые модули при компиляции игнорируются.
Для добавления порта в модуле (необязательно пустом) кликните один раз правой клавишей мыши на поле внешнего интерфейса слева и справа на поле серого цвета и в выпадающем меню выберите «Добавить порт» («Add port»). На открывшейся панели введите имя порта и тип ввод, вывод или двунаправленный. Порт может быть как одиночным, так и шиной с разрядностью, которая задается непосредственно в имени.
В окне «Schematic» можно проконтролировать правильность созданной схемы.
ViewDraw это схемотехнический редактор компании View Logic. К сожалению, он имеет большое количество ограничений, а также возникают определенные трудности в процессе работы над проектом, когда нужно внести коррективы. Это связано с тем, что для добавления во ViewDraw внешних модулей и наоборот требуется конвертация. Поэтому компания Actel не рекомендует использовать его при разработке новых проектов, а работать в SmartDesign.