Перейти к содержанию
    

Использование связки Synplify(Verilog)-Xilinx.

Потихоньку переползаю на SV. Соответственно приходится прощаться с Xilinx ISE. В качестве рабочего инструмента пока остановился на Synplify'е.

Попытка импортировать проект из ISE 13 не удалась. Хрошо делаем сами.

Исходный проект содержит несколько core из Xilinx coregen'a. Читаем документацию на Synplify - написано - просто добавьте .ngc файл в проект. Добавляю - синтез не проходит - не видит Synplify корегеновских модулей. Если добавить в проект соответствующие .v файлы - синтез проходит, но возникает вопрос, а нафига в тогда в проект включать .ngc файлы ? Что интересно - судя по логу они явно обрабатываются.

Коллеги, у кого есть опыт работы с Synplify'ем подскажите пожалуйста как правильно создать прект с Xilinx IP-cores.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Asb

просто добавляйте файлы которые генерит Coregen, там директивами synopsys translate_off/synopsys translate_on тело вырезается, и получается BB.

Если же охота эти корки всё же просинтезить в Synplify, тогда нужно добавлять EDIF (можно с Coregen-а получить, но долго плясать нужно, да и в посл версиях кажись вообще отрубили это, а можно ngc2edif.exe подъюзать, но и тут есть нъюансы). NGC-файлы Synplify не хавает, 2009/2010 по крайней мере.

Если пошли по пути BB - то нужно обязательно в пути поиска добавить директории где эти самые NGC находятся(-sd/Translate).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To Kuzmi4 :

Спасибо, примерно так и пытаюсь делать.

 

To Koluchiy:

К сожалению парсер ISE'а валится на SV синтаксисе и иерархия проекта не строится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не синплифай, но прецижн. и тоже SV. одно но - корками не пользуюсь вообще. принципиально.

прецижн умеет выгонять из SV простейший Verilog-файл, где всё разжёвано. этот файл уже скармливается в xst.

проблема встала когда нужно было сделать систему с MicroBlaze`ом. опять же - из SV подсистемы выгоняем чистый верилог, который подключал как сопроцессор к микроблейзу.

коряво, конечно, но последовательность вполне работоспособная.

ещё можно прямо из прецижна вызывать PlanAhead, но там был лёгкий гемор с подключением ucf. это я оставил на потом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PaR Guide for Synplify & Xilinx.

 

Для версии Synplify 2010.09.

01. Положить xilinx_par.opt и xilinx_gp.opt в ...\Synplicity\fpga_xxx\lib\xilinx\

02. Создать проект в Synplify Premier with DP, к проекту должны быть подключены
    все файлы *.ndf от ip-cores.
    Если от какой-либо core нет файла *.ndf, то подключить файлы *.ngc или *.edn.
    Предполагается структура проекта <проект>\rev_1\par_1.

03. Поставить галку Physical Synthesis, остальные галки по потребностям.

04. Поставить галку Implementation Options - Device - Use Xilinx Xflow.

05. Скопировать файл ucf2sdc_old.exe из \Synplicity\fpga_xxx\bin\ в папку с проектом
    и выполнить в командной строке:
    ucf2sdc -osdc <имя_будущего_sdc-файла>.sdc -iucf <имя_текущего_ucf-файла>.ucf.
    Имена файлов назначить как у топ-модуля. Или выполнить подобный bat-файл.

06. Прицепить этот файл sdc к проекту,
    прописать в нём в нём временные и прочие констрейны если надо.

07. Создать Design Plan и сохранить, кнопка сверху New Design Plan.

08. Нажать сбоку кнопку Impl Options..., расставить много всяких галок.

09. Нажать сбоку кнопку New P&R, opt-файл оставить умолчальным. Или сделать и подключить к проекту свой opt.

10. В папку ...<проект>\rev_1\ скопировать *.ucf файл. 
    В папку ...<проект>\rev_1\par_1\ скопировать *.ucf файл.

11. Нажать большую кнопку Run.

12. bit-файл будет лежать в ...<проект>\rev_1\par_1\. 
    Файлы для post-PaR моделирования будут лежать в ...<проект>\rev_1\timesim.

 

Опт-файлы в прикреплённом архиве.

 

При таком подходе вы вообще никогда не увидите Xilinx ISE. Исешные файлы будет запускать Synplify в batch-mode.

PaR.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не синплифай, но прецижн. и тоже SV. одно но - корками не пользуюсь вообще. принципиально.

прецижн умеет выгонять из SV простейший Verilog-файл, где всё разжёвано. этот файл уже скармливается в xst.

проблема встала когда нужно было сделать систему с MicroBlaze`ом. опять же - из SV подсистемы выгоняем чистый верилог, который подключал как сопроцессор к микроблейзу.

коряво, конечно, но последовательность вполне работоспособная.

ещё можно прямо из прецижна вызывать PlanAhead, но там был лёгкий гемор с подключением ucf. это я оставил на потом.

 

в который раз сравниваю,

в этот раз

Synplify Pro E-2011.03-SP2 и Precision_Synthesis RTL Plus 2011a.61

 

синплифай делает это все лучше, и ресурсов меньше и времянка быстрее.

но нужно отметить, что пресижн 2011 все-таки сливает не так безнадежно, как предыдущие версии разница в 10% укладывается

 

видимо покупка симплифая (фирмы) синопсисом не пошла симплифаю (тулу) впрок

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

Да по времянке и размеру Synplify хорош.

Вот намедни понабилось утрамбовать проект на Microblaze - вместо Spartan6slx150-3 купили плату со 2 speedgrade :(

Как на зло проблемы возникли в блоке самого процессора -где то в кеше времнки не сходились больше чем на 1 ns при 10 ns цикле.

Пляски с бубнами вокруг опций мапера и PR привели только к потере 3 дней времени :(

Пришлось достать барабан - взял файл microblaze_0_wrapper_xst.prj который генерит EDK для синтеза. Скриптом затянул исходники из него в Synplify (ну по пути пришлось декодировать их, а-я-яй! но я потом все стер ;) ) Синтезировал и edif подставил вместо родного ngc. Результат - времянки сошлись с первого захода! И размер на 2% меньше чем результат от xst!!!! И это только блок Microblaze. Надо будет весь EDK проект перегнать так - посмотреть что получится.

 

Успехов! Rob.

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в который раз сравниваю,

в этот раз

Synplify Pro E-2011.03-SP2 и Precision_Synthesis RTL Plus 2011a.61

 

синплифай делает это все лучше, и ресурсов меньше и времянка быстрее.

но нужно отметить, что пресижн 2011 все-таки сливает не так безнадежно, как предыдущие версии разница в 10% укладывается

 

видимо покупка симплифая (фирмы) синопсисом не пошла симплифаю (тулу) впрок

 

по мне так банально поддержка SV в полный рост - и больше ничего не требуется. ну и он вроде как Precision меньше на винте места занимает )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по мне так банально поддержка SV в полный рост - и больше ничего не требуется. ну и он вроде как Precision меньше на винте места занимает )))

 

это да - пресижн побольше поддерживает из SV, собственно пару лет назад в порыве интузазизма написал что-то такое, что симплифай не взял (по-моему интерфейсы в синтез пытался засунуть), поэтому и обратил внимание на пресижн

 

но QoR все-таки важная часть, ради нее можно пожертвовать хитрыми SV конструкциями

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это да - пресижн побольше поддерживает из SV, собственно пару лет назад в порыве интузазизма написал что-то такое, что симплифай не взял (по-моему интерфейсы в синтез пытался засунуть), поэтому и обратил внимание на пресижн

 

но QoR все-таки важная часть, ради нее можно пожертвовать хитрыми SV конструкциями

гыгы. у меня пока что проекты простые и не сильно скоростные, мне 10% разницы не критичны. а вот интерфейсы в синтезе - почти в полный рост. потому прецижн.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

[cut]

 

Пришлось достать барабан - взял файл microblaze_0_wrapper_xst.prj который генерит EDK для синтеза. Скриптом затянул исходники из него в Synplify (ну по пути пришлось декодировать их, а-я-яй! но я потом все стер ;) ) Синтезировал и edif подставил вместо родного ngc. Результат - времянки сошлись с первого захода! И размер на 2% меньше чем результат от xst!!!! И это только блок Microblaze. Надо будет весь EDK проект перегнать так - посмотреть что получится.

 

Успехов! Rob.

 

Можно поподробнее про барабан? Как затягивать исходники в Synplify?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

В папке ..../hw/synthesis/ EDK создает файлы .prj для синтеза корок в XST.

В частности для каждого microblaze в системе - name_of_mcu_wrapper_xst.prj (например для одного проца и имя по умолчанию - microblaze_0_wrapper_xst.prj)

В этом файле список исходников для синтеза - типа :

 

vhdl microblaze_v8_20_b EDK_ROOT\hw\XilinxProcessorIPLib\pcores\microblaze_v8_20_b/hdl/vhdl/microblaze_types_pkg.vhd

....

vhdl microblaze_v8_20_b EDK_ROOT\hw\XilinxProcessorIPLib\pcores\microblaze_v8_20_b/hdl/vhdl/microblaze_core.vhd

vhdl microblaze_v8_20_b EDK_ROOT\hw\XilinxProcessorIPLib\pcores\microblaze_v8_20_b/hdl/vhdl/microblaze.vhd

vhdl work ../hdl/microblaze_0_wrapper.vhd

 

пишем скрипт который берет файлы из списка, декриптует их во временный каталог и добавляет в проект Synplify,

туда-же добавляем опции и constarints для синтеза, задаем имя выходного .edf такое же как и у исходного .prj, синтезируем,

- убиваем (бережно сохраняем на черный день) в папке ...../hw/implementation соответствующий .ngc и копируем туда полученный .edf.

Теперь можно делать tarnslate/map/pr

 

Этот вариант синтеза работает для многих корок кроме тех в которых используется корка блочной памяти. Потому как в коде этой корки при синтезе! XST вызывает внешнюю Cи процедуру для расчета оптимальной упаковки блочной памяти. Соответственно Synplify обламывается в этом месте. (Интересно а Syplify такое можно сделать ?)

 

При необходимости смотрим в ../hw/implementation/ файл .ncf для соответствующей корки и если нужно правим constraints для PR в соответствии с изменившимися именами внутренних цепей.

 

Так что это не барабан - это так себе - маленький бубен :)

 

Успехов! Rob.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

[cut]

 

Так что это не барабан - это так себе - маленький бубен :)

 

Успехов! Rob.

 

Спасибо большое! Все получилось. Моя ошибка была в том, что я пытался сразу всю систему синтезировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

Этот вариант синтеза работает для многих корок кроме тех в которых используется корка блочной памяти. Потому как в коде этой корки при синтезе! XST вызывает внешнюю Cи процедуру для расчета оптимальной упаковки блочной памяти. Соответственно Synplify обламывается в этом месте. (Интересно а Syplify такое можно сделать ?)

 

 

Давно мне не давала покоя мысль " Как бы сделать так чтобы ничего не надо было делать" - в результате за выходные набросал скрипт который парсит лог после синтеза в Synplify,

ищет black_box корки (пока только fifo_generator_8_x), выдергивает требуемые параметры корки и формирует скрипты для синтеза этих корок в XST. После чего эти корки прекрасно цепляются и в тот же Synplify для оценки времянки, и на этапе traslate в ISE.

 

Удачи! Rob.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...