|
Как зафиксировать разводку ответственного модуля, применение ISE и PlanAhead |
|
|
|
Feb 6 2012, 06:11
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Есть ответственный высокочастотный модуль, который вставляется в большой проект в ISE. С этим модулем постоянно происходят Timing Errors при малейшем изменениии остальной части проекта. Чтобы при каждом изменении проекта не заниматься борьбой с Timing Errors хочу раз и навсегда зафиксировать положение этого модуля ка кристалле. Что сделано: в PlanAhead для этого модуля создан Pblock, а также этот модуль отмечен как Partition. PlanAhead скомпилировал и разложил этот модуль без ошибок. Теперь главный вопрос - как импортировать этот модуль и его разводку обратно в ISE проект?
|
|
|
|
|
 |
Ответов
(1 - 11)
|
Feb 9 2012, 05:12
|

Участник

Группа: Участник
Сообщений: 27
Регистрация: 26-01-08
Из: Гусь-Хрустальный - Владимир
Пользователь №: 34 452

|
Цитата(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 когда будет свои констрейнты дописывать вам его подпортит :-)
--------------------
За беспокойство не беспокойтесь.
|
|
|
|
|
Oct 29 2013, 13:54
|
Частый гость
 
Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368

|
Цитата(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.
|
|
|
|
|
Nov 26 2013, 12:56
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Только увидел сообщение. Если проблема ещё не решена, могу помочь, я на этом собак ел недавно )) Предлагаю начать всё с нуля в следующей последовательности. 1. Провести синтез, где этот блок никак не законстрейнен. 2. Запустить PlanAhead -> Post-Synthesis 3. В нём задать нужный Вам констрейн, т.е. сздать Pblock. 4. Сохранить результаты работы PlanAhead. Открыть *.ucf, убедиться в наличии нужных изменений. 5. Продолжить последующие процедуры после синтеза (имплемент, транслэйт, мап, пар и т.д.).
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Nov 29 2013, 12:01
|
Частый гость
 
Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368

|
Цитата(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 с сохранением разводки пока не получается. но этот вопрос пока заброшен по ненадобности.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|