Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть III

№ 12’2008
PDF версия
В этой части статьи рассказано о процессе синтеза RTL-модели в программе Synplify AE при разработке проекта для ПЛИС в пакете Actel Libero IDE.

Все статьи цикла:

После того, как проект создан, просимулирован и отлажен, запускаем синтез. Для этого нужно нажать кнопку Synthesis в окне Projec Flow пакета Libero IDE. Запустится программа Synplify (рис. 1). Эта программа хорошо знакома разработчикам, и не только по ПЛИС Actel.

Рис. 1. Синтезатор Synplify
Рис. 1. Синтезатор Synplify

Запускаем компиляцию, выбрав в меню Run пункт Compile Only или нажав F7. После завершения компиляции переходим к настройке процесса синтеза.

Зададим параметры синтеза посредством файла ограничений (constraint). Для этого выберем в меню File пункт New. В открывшемся окне выбираем пункт Constaint File (Scope) и вводим название файла в окне File Name:. Для того чтобы файл автоматически добавился в проект, устанавливаем (если не установлена) опцию Add to Project. Нажимаем ОК. В следующем окне также нажимаем ОК.

Откроется окно с таблицей (рис. 2), в которую можно ввести требуемые ограничения. Внизу таблицы располагаются закладки для разных типов ограничений и настроек.

Рис. 2. Окно таблицы файла ограничений синтеза
Рис. 2. Окно таблицы файла ограничений синтеза

На закладке Clocks зададим цепи системных тактовых частот проекта. Имя цепи можно выбрать из выпадающего меню, предварительно дважды кликнув по пустой клетке в колонке Clock Object, либо ввести это имя вручную. В колонке Frequency вводим значение частоты.

Имена цепей, которые будут определены как тактовые, можно взять с панели окна HDL–Analyst или непосредственно из схемы. При добавлении имени цепи или блока необходимо к имени добавить префикс в соответствии с таблицей.

Таблица. Префиксы
Префикс идентификации Значение
v: design_name Модуль
c: clock_name Тактовая цепь
i: instance_name Блок
p: port_name Порт ввода/вывода ПЛИС
t: pin_name Иерархический порт
b: name Бит шины или порта
n: net_name Внутренние цепи

На закладке Clock to Clock можно задать задержку сигнала между фронтами двух тактовых частот.

На закладке Registers можно добавить задержку на входе и выходе регистра. Это может понадобиться для согласования задержки и, соответственно, временного разбега распространения двух сигналов.

На закладке Delay Paths можно указать максимальную задержку распространения сигнала в цепи между двумя точками, а также цепи, задержки в которых будут рассчитываться и контролироваться во время синтеза не каждый такт, а через определенное количество тактов, или которые не будут анализироваться синтезатором вовсе.

На закладке Attribute можно задать атрибуты синтеза, как для отдельных элементов, так и для всего проекта.

Следующая закладка — IO standards, здесь вы можете указать стандарт портов ввода/вывода, напряжение, задержку, наличие или отсутствие внутренних подтягивающих резисторов.

На закладке Compile Points можно задать дополнительные ограничения синтеза для отдельных модулей, например запрет оптимизации.

Добавляем необходимые ограничения, сохраняем файл и закрываем окно.

А теперь небольшое отступление, чтобы сделать ряд важных замечаний. В результате синтеза мы получаем RTL–модель, оптимизированную под конкретное семейство в соответствии его с архитектурой логических ячеек, связей и др. Однако это все еще логическая, а не физическая модель проекта. Поэтому, несмотря на то, что были заданы конкретная микросхема из семейства и тип корпуса, а также могли быть назначены и порты ввода/вывода, в дальнейшем при размещении и трассировке эти параметры можно будет изменить.

В окне Frequency(MHz) (рис. 3) задаем внутреннюю системную частоту по умолчанию, ее нужно будет применять для регионов, для которых не задана частота через файл ограничений синтеза. Если в вашем проекте используются автоматы состояний, то изменить способ оптимизации можно, установив или сбросив флаг Symbolic FSM Compiler. FSM Compiler автоматически распознает автоматы состояний и производит улучшенную оптимизацию для увеличения их быстродействия. В противном случае автомат состояний оптимизируется как обычная логика.

Рис. 3. Дополнительные опции оптимизации
Рис. 3. Дополнительные опции оптимизации

Выбор опции Resource Sharing позволяет оптимизировать проект за счет изменения структуры и перераспределения ресурсов. В качестве примера рассмотрим схему, приведенную на рис. 4. При включенной опции операция суммирования будет перенесена на выход мультиплексора (рис. 5). Таким образом, вместо трех сумматоров имеем только один, что позволяет значительно сократить требуемое количество логических ячеек.

Рис. 4. Исходная схема
Рис. 4. Исходная схема
Рис. 5. Схема после оптимизации
Рис. 5. Схема после оптимизации

Чтобы открыть панель настройки, нажмите кнопку Change напротив строки с названием и типом ПЛИС (рис. 6).

Рис. 6. Открытие панели настройки
Рис. 6. Открытие панели настройки

В открывшемся окне настройки (рис. 7) можно изменить некоторые параметры синтеза, такие как максимальное значение разветвления цепи, запретить добавлять автоматически блоки ввода/вывода и ряд других. Бóльшая часть настроек ограничений синтеза дублируется в основном окне программы или может быть задана через файл ограничений. Здесь также присутствуют настройки проекта: указание каталога для сохранения результата, подключение файла ограничений, выбор семейства, микросхемы и корпуса ПЛИС и ряд других.

Рис. 7. Панель настройки синтеза проекта
Рис. 7. Панель настройки синтеза проекта

Запускаем компиляцию и трассировку, нажав кнопку Run в главном окне программы. Если в проекте нет ошибок, то по завершению синтеза получим оптимизированный файл соединений.

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

Рис. 8. Файл лога результата синтеза
Рис. 8. Файл лога результата синтеза

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

Необходимо заметить, что максимально возможные частоты регионов и количество используемых логических ячеек — это лишь прогнозируемые значения параметров. В процессе размещения и трассировки эти параметры могут измениться в бóльшую или меньшую сторону. Однако это позволяет оценить их значение. Это особенно важно для сравнительно крупных проектов, особенно если они требуют более 80% ресурсов ПЛИС. Размещение и трассировка таких проектов может занимать несколько часов, в то время как синтез будет выполнен самое большее за 15–20 минут.

Закрываем синтезатор и возвращаемся в пакет Libero IDE. В окне Design Explorer на закладке Files видим, что в разделе Constraint Files появился созданный нами в синтезаторе файл ограничений. Для того чтобы он загружался в Synplify автоматически, вместе с проектом, кликните по стрелке в верхнем левом углу кнопки Synthesis и выберите пункт Organize Consraint Files…. В открывшемся окне добавьте в левую его часть созданный файл ограничений синтеза (рис. 9).

Рис. 9. Добавление файла ограничений для автоматического подключения при запуске синтезатора
Рис. 9. Добавление файла ограничений
для автоматического подключения
при запуске синтезатора

После успешного завершения синтеза производим симуляцию синтезированной модели. Для этого кликните по стрелке в левом верхнем углу кнопки Simulation и в выпадающем меню выберите пункт Run Postsynthesis Simulation (имя_файла.v) для запуска симулятора. В качестве симуляционной используется та же модель, что была создана для RTL–модели, только в качестве тестируемого модуля подставляется синтезированная модель.

Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть IV

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *