attaboy 0 19 июля, 2021 Опубликовано 19 июля, 2021 (изменено) · Жалоба Необходимо собрать проект (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 тоже не хочется. Кто-нибудь сталкивался с подобной проблемой? Какие могут быть варианты обхода/изменения автоматически созданных констрейнов? Изменено 19 июля, 2021 пользователем attaboy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 19 июля, 2021 Опубликовано 19 июля, 2021 · Жалоба Приветствую! Для 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба 12 hours ago, RobFPGA said: IMHO поэтому правильнее будет генерить скриптом нужную корку/корки с заданными привязками. А можно пример скрипта для генерации корки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба 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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба Приветствую! 3 hours ago, attaboy said: А можно пример скрипта для генерации корки? Можно: write_ip_tcl -force -show_defaults [get_ips "aurora_core_name.xci"] script_name.tcl 3 hours ago, attaboy said: Где об этом упоминается? В PG074 я такого утверждения не нашел. Попробуйте для корки в property напрямую изменить свойство CONFIG.C_GT_LOC_1 {1} с 1 на X. Увидите это сообщение от самой корки. Наверное имеется ввиду что множество инстансов ссылаются на один модуль. Когда у вас внутри такого модуля/корки есть некий уникальный ресурс/констрейн/привязка к пинам,... то естественно что множить такой модуль через generate нельзя. Может быть что это просто перестраховка разработчиков корки чтобы не страдать проверяя все возможные комбинации параметров (или чтобы было что сделать в след. версии ). Но это надо проверять самому. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 20 июля, 2021 Опубликовано 20 июля, 2021 · Жалоба Можно сбросить констрейн через вызов reset_property, вписав его в скрипт, который будет выполняться на стадии Implementation Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться