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

Генерация нескольких ядер Aurora

Необходимо собрать проект (Xilinx, Vivado), содержащий несколько одинаковых ядер Aurora, отличающихся друг от друга только расположением на кристалле.  В GUI я сгенерировал одно ядро с необходимыми мне параметрами. Далее проект собирается "специально обученным" скриптом, которому указывается *.xci ядра Aurora. В топовом модуле проекта с помощью generate инстанциируется n ядер Aurora. Соответственно скрипт генерирует n ядер на основании указанного *.xci. В общем такой подход работает, но в случае с Aurora возникает проблема. При генерации ядра в GUI нужно указывать его расположение, и в ядре появляются констрейны на квадрант кристалла. Причем эти констрейны иерархические, например:

set_property LOC GTHE3_CHANNEL_X1Y6 [get_cells -hier -filter {NAME =~ *gen_channel_container[25].gen_gthe3_channel_inst[2].GTHE3_CHANNEL_PRIM_INST}]

И эти констрейны только для чтения, то есть я не могу их просто взять и отредактировать.

Так как констрейны иерархические, все ядра, сгенерированные скриптом, будут располагаться в одной части кристалла, что неправильно.

Как вариант я думаю сделать нужные мне констрейны и приложить их после вышеуказанных. Но это выглядит как-то топорно, Вивадо наверняка будет ругаться. Генерировать n файлов *.xci тоже не хочется.

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

Изменено пользователем attaboy

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


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

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

 

Для Aurora корки как бы пишут что "The 'xilinx.com:ip:aurora_64b66b:12.0' core does not support module reference."   
То есть как бы нельзя  одну корку множить через generate. Могут быть сюрпризы  связанные с множеством инстансов на это не рассчитанных модулей (в частности MGT). 

IMHO поэтому правильнее будет  генерить скриптом нужную  корку/корки  с заданными  привязками. 

 

Ну или пытаться  исключить файл констрейнов корки из процесса P&R

или полностью set_property IS_ENABLED false [get_files "aurora_core_name_gt.xdc"]
или только  из процесса implementation  set_property USED_IN_IMPLEMENTATION false [get_files "aurora_core_name_gt.xdc"]      

И заменяя констрейны из этого файла на свои, с абсолютными путями в дизайне, или привязав свой новый файл констрейнов  так же как и оригинальный к нужному  CELL/REF 

 

Удачи! Rob.

 

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


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

12 hours ago, RobFPGA said:

IMHO поэтому правильнее будет  генерить скриптом нужную  корку/корки  с заданными  привязками.

А можно пример скрипта для генерации корки?

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


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

13 hours ago, RobFPGA said:

Для Aurora корки как бы пишут что "The 'xilinx.com:ip:aurora_64b66b:12.0' core does not support module reference."   

Здесь тоже есть несколько вопросов:

- Где об этом упоминается? В PG074 я такого утверждения не нашел.

- Не совсем понятно, что имеется в виду под "module reference". Одна корка все равно вставляется в дизайн как модуль, с помощью шаблона *.veo. В чем принципиальная разница между одним модулем и их набором, сгенерированным с помощью generate?

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


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

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

3 hours ago, attaboy said:

А можно пример скрипта для генерации корки?

Можно: write_ip_tcl -force -show_defaults  [get_ips "aurora_core_name.xci"] script_name.tcl  :yes3:

3 hours ago, attaboy said:

Где об этом упоминается? В PG074 я такого утверждения не нашел.

Попробуйте для корки в property  напрямую  изменить  свойство  CONFIG.C_GT_LOC_1 {1}  с 1 на X.  Увидите это сообщение от самой корки. 

   

Наверное имеется ввиду что множество инстансов ссылаются на один модуль.  Когда у вас внутри такого модуля/корки есть некий уникальный ресурс/констрейн/привязка к пинам,...  то  естественно что множить такой  модуль  через generate нельзя.      

Может быть  что это  просто перестраховка  разработчиков корки чтобы не страдать проверяя все возможные комбинации параметров (или чтобы было что сделать в след. версии :wink2:). 
Но это надо  проверять самому. 

 

Удачи! Rob.

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


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

Можно сбросить констрейн через вызов reset_property, вписав его в скрипт, который будет выполняться на стадии Implementation

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


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

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

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

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

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

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

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

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

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

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