Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как зафиксировать разводку ответственного модуля
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
TABKP
Есть ответственный высокочастотный модуль, который вставляется в большой проект в ISE. С этим модулем постоянно происходят Timing Errors при малейшем изменениии остальной части проекта. Чтобы при каждом изменении проекта не заниматься борьбой с Timing Errors хочу раз и навсегда зафиксировать положение этого модуля ка кристалле. Что сделано: в PlanAhead для этого модуля создан Pblock, а также этот модуль отмечен как Partition. PlanAhead скомпилировал и разложил этот модуль без ошибок. Теперь главный вопрос - как импортировать этот модуль и его разводку обратно в ISE проект?
Костян
скорее всего нужно прописать правильно контрейны на клок, фиксировать разводку не совсем правильный путь.
per_aspera_ad_astra
Цитата(TABKP @ Feb 6 2012, 09:11) *
Есть ответственный высокочастотный модуль, который вставляется в большой проект в ISE. С этим модулем постоянно происходят Timing Errors при малейшем изменениии остальной части проекта. Чтобы при каждом изменении проекта не заниматься борьбой с Timing Errors хочу раз и навсегда зафиксировать положение этого модуля ка кристалле. Что сделано: в PlanAhead для этого модуля создан Pblock, а также этот модуль отмечен как Partition. PlanAhead скомпилировал и разложил этот модуль без ошибок. Теперь главный вопрос - как импортировать этот модуль и его разводку обратно в ISE проект?


Обратно в ISE проекте Pblock появляется в ucf-файле.

Вы отдельный проект для этого модуля в PlanAhead создавали? Можно добавить эту часть в общую ucf проекта, либо запустить PlanAhead из под ISE (User Constraints -> I/O Pin Planing (PlanAhead) - Post-Synthesis), тогда проекты будут связаны.

Не забудьте только в VHDL поставить атрибут на модуль, что-бы он иерархию сохранил.

Код
attribute KEEP_HIERARCHY : string;
attribute KEEP_HIERARCHY of wrapper_gtx_dru_inst  : label is "TRUE";

Да... и ucf скопируйте (особенно если он у вас красиво отформатирован) куда нибудь отдельно, а то PlanAhead когда будет свои констрейнты дописывать вам его подпортит :-)

dsmv
Разводку можно зафиксировать только с использованием Partial Reconfiguration.

Нужно его оформить в виде отдельного реконфигурируемого блока. Его можно будет отдельно разводить и отдельно загружать.


Krys
Цитата(dsmv @ Feb 11 2012, 00:29) *
Разводку можно зафиксировать только с использованием Partial Reconfiguration.
Я бы не был так категоричен. Не обязательно Partial Reconfiguration. Достаточно просто разбить на партиции, руководствуясь Hierarchical Design Methodology (UG748). Но можно ещё создать *.ngc-шку: http://electronix.ru/forum/index.php?showt...mp;#entry316405
serg_k1
Цитата(per_aspera_ad_astra @ Feb 9 2012, 09:12) *
Обратно в ISE проекте Pblock появляется в ucf-файле.

Вы отдельный проект для этого модуля в PlanAhead создавали? Можно добавить эту часть в общую ucf проекта, либо запустить PlanAhead из под ISE (User Constraints -> I/O Pin Planing (PlanAhead) - Post-Synthesis), тогда проекты будут связаны.

Не забудьте только в VHDL поставить атрибут на модуль, что-бы он иерархию сохранил.

Код
attribute KEEP_HIERARCHY : string;
attribute KEEP_HIERARCHY of wrapper_gtx_dru_inst  : label is "TRUE";

Да... и ucf скопируйте (особенно если он у вас красиво отформатирован) куда нибудь отдельно, а то PlanAhead когда будет свои констрейнты дописывать вам его подпортит :-)

у меня такая же проблема. в ISE для модуля создан Pblock и связан с ним с помощью assign в PlanAhead -> Pre-synthesis . но при implement связь пропадает . модуль разводится сам по себе, а блок пустой. и в Post-Synthesis уже связи нет и модуля в netlist тоже. а в PlanAhead все связь созраняется и все разводится там где нужно. обратно тоже не могу перейти. выдается ошибка
ERROR:ConstraintSystem:59 - Constraint <INST "data_in_out" AREA_GROUP =
"pblock_data_in_out";> [eth_1.ucf(306)]: INST "data_in_out" not found.
Please verify that:
1. The specified design element actually exists in the original design.
2. The specified object is spelled correctly in the constraint source file.
Krys
Только увидел сообщение. Если проблема ещё не решена, могу помочь, я на этом собак ел недавно ))
Предлагаю начать всё с нуля в следующей последовательности.
1. Провести синтез, где этот блок никак не законстрейнен.
2. Запустить PlanAhead -> Post-Synthesis
3. В нём задать нужный Вам констрейн, т.е. сздать Pblock.
4. Сохранить результаты работы PlanAhead. Открыть *.ucf, убедиться в наличии нужных изменений.
5. Продолжить последующие процедуры после синтеза (имплемент, транслэйт, мап, пар и т.д.).
serg_k1
Цитата(Krys @ Nov 26 2013, 16:56) *
Только увидел сообщение. Если проблема ещё не решена, могу помочь, я на этом собак ел недавно ))
Предлагаю начать всё с нуля в следующей последовательности.
1. Провести синтез, где этот блок никак не законстрейнен.
2. Запустить PlanAhead -> Post-Synthesis
3. В нём задать нужный Вам констрейн, т.е. сздать Pblock.
4. Сохранить результаты работы PlanAhead. Открыть *.ucf, убедиться в наличии нужных изменений.
5. Продолжить последующие процедуры после синтеза (имплемент, транслэйт, мап, пар и т.д.).

проблема сохранения связи с Pblock решена. для этого нужно в ISE установить приоритет разработчика в свойстве Synthesize-XST-> Synthesis Options-> Keep_hierarchy = yes. а вот обратный переход из самостоятельно запущенного PlanAhead в ISE с сохранением разводки пока не получается. но этот вопрос пока заброшен по ненадобности.
Krys
Нужно уже осуществлять переход в Виваду, при том насовсем )))

Keep Hierarchy - не всегда лучший способ, вы теряете возможность оптимизации между модулями, пусть даже самыми мелкими. Мы например умышленно держим эту опцию выключенной. Есть другие способы, как указать констрейн, когда модуль не выделен в отельную ветвь иерархии.
_Anatoliy
Цитата(Krys @ Nov 29 2013, 14:46) *
Нужно уже осуществлять переход в Виваду, при том насовсем )))

А вивадо синопсис поддерживает?
Bad0512
Цитата(_Anatoliy @ Nov 29 2013, 21:05) *
А вивадо синопсис поддерживает?

Вивадо нетлисты в формате EDF поддерживает, а уж где вы эти нетлисты сгенерили, в синопсисе или в менторе - неважно.
_Anatoliy
Цитата(Bad0512 @ Nov 29 2013, 16:22) *
Вивадо нетлисты в формате EDF поддерживает, а уж где вы эти нетлисты сгенерили, в синопсисе или в менторе - неважно.

Сорри! Я хотел спросить понимает ли он описание констрейнов как в Квартусе?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.