Продолжение. Начало в КиТ№ 10'2008 Процесс разработки проекта
для ПЛИС в пакете Actel Libero IDE
В этой части статьи рассказано о процессе синтеза РИ-модели в программе Бупр^у АЕ.
Synplify 9.4А1 (D:/Woik/Hül PRJ/аЗр edii ІлМ/iynlltcMi/edu lop lyn.pij]
Г* Гіг Гdt Ww Protect Import IP Rin tvvtrOï KX-Arust/ît Options Wndow Tech-Siÿport
ОіЇйОГЬУЧ Ü4PMV.
© G3 --о P» Hl Hl Pi А Л ft
Synplify
I ** I I <*■"» -I
r^~l
О I«Ju_top_tyn] • D\Work\KX _РЯ J\a3p_*du_Ubl \cyr*t»«Y* 0 0 vm
0 C<xr>t*rl6vM[**»V]
в F\1548to 1 .vtid [wotfc]
0 SCI out.vtid [wgrK]
0 CcniiteH.ntidlwcrkJ
n muH.vhd (worM
0 «dujtLtM (»»ork]
0 «lu _top vbd [work]
Çy Comtrant
|!§ edu Koojyn. l.tdc
Q »ynthes«
-1 <l>
»yrr№«e
Name jsee 1 Type *
• 0 bartup »•«tory
3 23 coreo Orectory
ffl Й ryntoe Orectory
0 »3p tJu lab: l.tdc І Ш idc Tie
0 edj tU edn 29« edi Ne
0 edj.rtl.tdf sie tdГ Me
edj_rtí trm 159 Ю MM ('ial
0 edu_rti.ar 19 k* er Ne
edj_rü.wí 11 № ГМкЯ(РТ -
0 edu_rtl .bg 2M ttg Fie
*1 «1»
B®®
Synplicily
Slmpty Better RMulti
Freqjency (NW)
І* И
Symbolic F5M Compüer 69 Rwouxe Sharng v
( Chance ,
Result Pile
&Л*огЦгС1_рвЛ«)р_еОи_ЦЬі\іулО«яйе4и_Іор.с*і
Target
AítHProASlO : МІАУІООО : F0GA4d4 : Sid
Vtewlog
Ready
’’ •du_hsp_»l4i.f»i
Рис. 1. Синтезатор Synplify
Рис. 2. Окно таблицы файла ограничений синтеза
Сергей КАРПОВ
karpov@actel.ru
После того, как проект создан, проси-мулирован и отлажен, запускаем синтез. Для этого нужно нажать кнопку 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 вводим значение частоты.
Имена цепей, которые будут определены как тактовые, можно взять с панели окна HDL-Analyst или непосредственно из схемы. При добавлении имени цепи или блока необходимо к имени добавить префикс в соответствии с таблицей.
На закладке Clock to Clock можно задать задержку сигнала между фронтами двух тактовых частот.
Таблица. Префиксы
Префикс идентификации Значение
v: design_name Модуль
c: clock_name Тактовая цепь
i: instance_name Блок
p: port_name Порт ввода/вывода ПЛИС
t: pin_name Иерархический порт
b: name Бит шины или порта
n: net_name Внутренние цепи
На закладке Registers можно добавить задержку на входе и выходе регистра. Это может понадобиться для согласования задержки и, соответственно, временного разбега распространения двух сигналов.
На закладке Delay Paths можно указать максимальную задержку распространения сигнала в цепи между двумя точками, а также цепи, задержки в которых будут рассчитываться и контролироваться во время синтеза не каждый такт, а через определенное количество тактов, или которые не будут анализироваться синтезатором вовсе.
На закладке Attribute можно задать атрибуты синтеза, как для отдельных элементов, так и для всего проекта.
Следующая закладка—IO standards, здесь вы можете указать стандарт портов ввода/вывода, напряжение, задержку, наличие или отсутствие внутренних подтягивающих резисторов.
На закладке Compile Points можно задать дополнительные ограничения синтеза для отдельных модулей, например запрет оптимизации.
Добавляем необходимые ограничения, сохраняем файл и закрываем окно.
А теперь небольшое отступление, чтобы сделать ряд важных замечаний. В результате синтеза мы получаем RTL-модель, оптимизированную под конкретное семейство в соответствии его с архитектурой логических ячеек, связей и др. Однако это все еще логическая, а не физическая модель проекта. Поэтому, несмотря на то, что были заданы конкретная микросхема из семейства и тип корпуса, а также могли быть назначены и порты ввода/вывода, в дальнейшем при размещении и трассировке эти параметры можно будет изменить.
В окне Frequency(MHz) (рис. 3) задаем внутреннюю системную частоту по умолчанию, ее нужно будет применять для регионов, для которых не задана частота через файл ограничений синтеза. Если в вашем проекте используются автоматы состояний, то изменить способ оптимизации можно, установив или сбросив флаг Symbolic FSM Compiler. FSM Compiler автоматически распознает автоматы состояний и производит улучшенную оптимизацию для увеличения их быстродействия. В противном случае автомат состояний оптимизируется как обычная логика.
iimply KMulM
Frequency
100 :
Symbolic FSM Compiler 0 Resource Sharrtg @
Рис. 3. Дополнительные опции оптимизации
Выбор опции Resource Sharing позволяет оптимизировать проект за счет изменения структуры и перераспределения ресурсов. В качестве примера рассмотрим схему, приведенную на рис. 4. При включенной опции операция суммирования будет перенесена на выход мультиплексора (рис. 5). Таким образом, вместо трех сумматоров имеем только один, что позволяет значительно сократить требуемое количество логических ячеек.
Чтобы открыть панель настройки, нажмите кнопку Change напротив строки с названием и типом ПЛИС (рис. 6).
В открывшемся окне настройки (рис. 7) можно изменить некоторые параметры синтеза, такие как максимальное значение разветвления цепи, запретить добавлять автоматически блоки ввода/вывода и ряд других. Большая часть настроек ограничений синтеза дублируется в основном окне программы
ЯшДНЬ
| Очпд» ] 0 \Wcrt^U5e^ie0e>4rU.<*><<,rol«(\£.enple_MIAT_UJT*G\»rT*hr»b«x1op Таг дм
Ожф j КПЫ ftoASIO : MIAJP1000: FKMM : -2
Рис. 6. Открытие панели настройки
или может быть задана через файл ограничений. Здесь также присутствуют настройки проекта: указание каталога для сохранения результата, подключение файла ограничений, выбор семейства, микросхемы и корпуса ПЛИС и ряд других.
Запускаем компиляцию и трассировку, нажав кнопку Run в главном окне программы. Если в проекте нет ошибок, то по завершению синтеза получим оптимизированный файл соединений.
Рис. 7. Панель настройки синтеза проекта
Рис. 8. Файл лога результата синтеза
Откроем файл лога для анализа (рис. 8). Проверим, больше ли результирующие частоты, чем заданные для данного региона. Проверяем количество используемых ресурсов (логических ячеек). Оно должно быть меньше, чем в выбранной ПЛИС. В файле приведены цепи с критическими параметрами и описанием полного пути, имеющие наибольшую задержку.
В конце файла приведены результирующие данные по количеству используемых ресурсов ПЛИС.
Необходимо заметить, что максимально возможные частоты регионов и количество используемых логических ячеек — это лишь прогнозируемые значения параметров. В процессе размещения и трассировки эти параметры могут измениться в большую или меньшую сторону. Однако это позволяет оценить их значение. Это особенно важно для сравнительно крупных проектов, особенно если они требуют более 80% ресурсов ПЛИС. Размещение и трассировка таких проектов может занимать несколько часов, в то время как синтез будет выполнен самое большее за 15-20 минут.
Закрываем синтезатор и возвращаемся в пакет Libero IDE. В окне Design Explorer на закладке Files видим, что в разделе Constraint Files появился созданный нами в синтезаторе файл ограничений. Для того чтобы он загружался в Synplify автоматически, вместе
Рис. 9. Добавление файла ограничений для автоматического подключения при запуске синтезатора
с проектом, кликните по стрелке в верхнем левом углу кнопки Synthesis и выберите пункт Organize ConsraintFiles.... В открывшемся окне добавьте в левую его часть созданный файл ограничений синтеза (рис. 9).
После успешного завершения синтеза производим симуляцию синтезированной модели. Для этого кликните по стрелке в левом верхнем углу кнопки Simulation и в выпадающем меню выберите пункт Run Postsynthesis Simulation (имя_файла.у) для запуска симулятора. В качестве симуляционной используется та же модель, что была создана для RTL-модели, только в качестве тестируемого модуля подставляется синтезированная модель. ■
Продолжение следует