Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть III
Все статьи цикла:
- Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть I
- Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть II
- Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть III
- Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть IV
- *Процесс разработки проекта для ПЛИС в пакете Actel Libero IDE. Часть V
После того, как проект создан, просимулирован и отлажен, запускаем синтез. Для этого нужно нажать кнопку Synthesis в окне Projec Flow пакета Libero IDE. Запустится программа Synplify (рис. 1). Эта программа хорошо знакома разработчикам, и не только по ПЛИС Actel.
Запускаем компиляцию, выбрав в меню Run пункт Compile Only или нажав F7. После завершения компиляции переходим к настройке процесса синтеза.
Зададим параметры синтеза посредством файла ограничений (constraint). Для этого выберем в меню File пункт New. В открывшемся окне выбираем пункт Constaint File (Scope) и вводим название файла в окне File Name:. Для того чтобы файл автоматически добавился в проект, устанавливаем (если не установлена) опцию Add to Project. Нажимаем ОК. В следующем окне также нажимаем ОК.
Откроется окно с таблицей (рис. 2), в которую можно ввести требуемые ограничения. Внизу таблицы располагаются закладки для разных типов ограничений и настроек.
На закладке Clocks зададим цепи системных тактовых частот проекта. Имя цепи можно выбрать из выпадающего меню, предварительно дважды кликнув по пустой клетке в колонке Clock Object, либо ввести это имя вручную. В колонке Frequency вводим значение частоты.
Имена цепей, которые будут определены как тактовые, можно взять с панели окна HDLAnalyst или непосредственно из схемы. При добавлении имени цепи или блока необходимо к имени добавить префикс в соответствии с таблицей.
Префикс идентификации | Значение |
---|---|
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 автоматически распознает автоматы состояний и производит улучшенную оптимизацию для увеличения их быстродействия. В противном случае автомат состояний оптимизируется как обычная логика.
Выбор опции Resource Sharing позволяет оптимизировать проект за счет изменения структуры и перераспределения ресурсов. В качестве примера рассмотрим схему, приведенную на рис. 4. При включенной опции операция суммирования будет перенесена на выход мультиплексора (рис. 5). Таким образом, вместо трех сумматоров имеем только один, что позволяет значительно сократить требуемое количество логических ячеек.
Чтобы открыть панель настройки, нажмите кнопку Change напротив строки с названием и типом ПЛИС (рис. 6).
В открывшемся окне настройки (рис. 7) можно изменить некоторые параметры синтеза, такие как максимальное значение разветвления цепи, запретить добавлять автоматически блоки ввода/вывода и ряд других. Бóльшая часть настроек ограничений синтеза дублируется в основном окне программы или может быть задана через файл ограничений. Здесь также присутствуют настройки проекта: указание каталога для сохранения результата, подключение файла ограничений, выбор семейства, микросхемы и корпуса ПЛИС и ряд других.
Запускаем компиляцию и трассировку, нажав кнопку Run в главном окне программы. Если в проекте нет ошибок, то по завершению синтеза получим оптимизированный файл соединений.
Откроем файл лога для анализа (рис. 8). Проверим, больше ли результирующие частоты, чем заданные для данного региона. Проверяем количество используемых ресурсов (логических ячеек). Оно должно быть меньше, чем в выбранной ПЛИС. В файле приведены цепи с критическими параметрами и описанием полного пути, имеющие наибольшую задержку.
В конце файла приведены результирующие данные по количеству используемых ресурсов ПЛИС.
Необходимо заметить, что максимально возможные частоты регионов и количество используемых логических ячеек это лишь прогнозируемые значения параметров. В процессе размещения и трассировки эти параметры могут измениться в бóльшую или меньшую сторону. Однако это позволяет оценить их значение. Это особенно важно для сравнительно крупных проектов, особенно если они требуют более 80% ресурсов ПЛИС. Размещение и трассировка таких проектов может занимать несколько часов, в то время как синтез будет выполнен самое большее за 1520 минут.
Закрываем синтезатор и возвращаемся в пакет Libero IDE. В окне Design Explorer на закладке Files видим, что в разделе Constraint Files появился созданный нами в синтезаторе файл ограничений. Для того чтобы он загружался в Synplify автоматически, вместе с проектом, кликните по стрелке в верхнем левом углу кнопки Synthesis и выберите пункт Organize Consraint Files…. В открывшемся окне добавьте в левую его часть созданный файл ограничений синтеза (рис. 9).
для автоматического подключения
при запуске синтезатора
После успешного завершения синтеза производим симуляцию синтезированной модели. Для этого кликните по стрелке в левом верхнем углу кнопки Simulation и в выпадающем меню выберите пункт Run Postsynthesis Simulation (имя_файла.v) для запуска симулятора. В качестве симуляционной используется та же модель, что была создана для RTLмодели, только в качестве тестируемого модуля подставляется синтезированная модель.