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

Как распространить Generic сверху вниз в Block Design в Vivado?

Доброго дня!

Вопрос, как я понял, довольно частый, но ответа я так и не нашел.

Суть простая: в блок-дизайне я создаю компонент, который будет вставлен на топ-левел в виде нескольких копий, у каждой копии будет свой порядковый номер. Этот номер должен распространиться на нижестоящие компоненты в блок-дизайне, чтобы они знали, в канале с каким номером они работают.

Вивадо вроде как при упаковке ip-core находит все топ-левел генерики и отображает их как настраиваемые параметры. Всё было бы хорошо, если бы у меня был текстовый топ-левел, а вот в блок-дизайне я нигде не найду как поместить такой генерик. 

Пока вижу единственный выход - это взять vhd-файл который отображает структуру блок-дизайна и вручную добавить в него топ-левел генерик и спортмапить его на все нижестоящие компоненты. Но это же дикий головняк! При любом телодвижении этот файл перезапишется - и начинай сначала...

Как этим правильно пользоваться? Может философия Xilinx шагнула уже далеко вперед, и по их концепции это уже не требуется, а я не так всё понимаю?

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


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

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

1 hour ago, OparinVD said:

Суть простая: в блок-дизайне я создаю компонент, который будет вставлен на топ-левел в виде нескольких копий, у каждой копии будет свой порядковый номер. Этот номер должен распространиться на нижестоящие компоненты в блок-дизайне, чтобы они знали, в канале с каким номером они работают.

Вивадо вроде как при упаковке ip-core находит все топ-левел генерики и отображает их как настраиваемые параметры. Всё было бы хорошо, если бы у меня был текстовый топ-левел, а вот в блок-дизайне я нигде не найду как поместить такой генерик. 

Пока вижу единственный выход - это взять vhd-файл который отображает структуру блок-дизайна и вручную добавить в него топ-левел генерик и спортмапить его на все нижестоящие компоненты. Но это же дикий головняк! При любом телодвижении этот файл перезапишется - и начинай сначала...

Как этим правильно пользоваться? Может философия Xilinx шагнула уже далеко вперед, и по их концепции это уже не требуется, а я не так всё понимаю?

Концепция  BD в  Vivado не предусматривает пока возможность задавать parameter/generic для BD. Это статически компилируемая единица. 

Вручную модифицировать   обертку от BD  смысла нет, проще уж сразу собрать аналог BD  в RTL из IP корок.  Для некоторых случаев  можно "просовывать" внутрь BD параметры-константы  через обычные порты.  

 

Удачи! Rob.  

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


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

А блоки-идентификаторы добавить нельзя? И из их параметров брать нужные настраиваемые параметры. Может ревизия какая-то существует при генерации верхнего уровня в BD?

Вопрос волнует и меня, у Интела я изголялся, а тут тоже пока не знаю.

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


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

Спасибо! 

Очень жаль, что вариантов нет... Вручную портмапить тоже удовольствие сомнительное. Всё-таки у блок-дизайна есть несомненно вкусные плюшки, типа соединения сразу целыми интерфейсами, автоматической настройки параметров стандартных корок и т.д. Но какая религия запретила им сделать генерики для блок-дизайна - не пойму :)

8 minutes ago, warrior-2001 said:

А блоки-идентификаторы добавить нельзя? И из их параметров брать нужные настраиваемые параметры.

Может что-то можно из этого получить... но наверх через блок-дизайн не выкинуть... 

Придется действительно сигналами заводить, это, конечно, не так изящно как, например (for i... generate), но сработает

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


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

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

9 minutes ago, OparinVD said:

... Но какая религия запретила им сделать генерики для блок-дизайна - не пойму :)

IMHO основная концепция - пере-использование скомпилированных модулей в виде нетлистов из кэша. 

 

Ну и  не забывайте что  модули на BD это скрипты на TCL  которые  выполняется в моменты добавления/конфигурации/валидации BD. И  привязать изменение RTL  параметров при синтезе к перезапуску TCL  скриптов наверно не просто. Поэтому в Xilinx и не стали заморачиватся. :unknw:

 

Удачи! Rob.

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


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

Да, но... Скомпилированные модули должны иметь настраиваемые параметры, а BD это один из возможных вариантов при упаковке user-IP. Но получается, что я не могу создать свой настраиваемый IP на основе BD, мне остается только текстовый портмап, только хардкор! Ну или сторонние инструменты, но я пользовался только ActiveHDL, а там возникают другие проблемы...

 

upd : опять же работу в Xilinx проделали действительно серьезную. Несмотря на то, что BD это TCL, он вполне себе умеет рыться в генериках накиданных в него компонентов и автоматически дает им нужные значения, если, например, ширина данных в цепочке конвейера разнится от компонента к компоненту... На фоне всего, что BD умеет отсутствие возможности выкинуть параметр наверх выглядит как умышленное решение, а не как увиливание от заморочек (imho :) )

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

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


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

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

22 minutes ago, OparinVD said:

а BD это один из возможных вариантов при упаковке user-IP. Но получается, что я не могу создать свой настраиваемый IP на основе BD

Почему же не можете? - Можете! НО конфигурируйте ваши BD  через  TCL скрипт  при  создании/модификации вашего IP.   Либо создаете BD внутри IP динамически,  скриптом  с заданием  нужных параметров для блоков на BD. 
В Vivado многие модули для BD так именно и создаются - тот же  AXI interconnect например.  

 

Удачи! Rob.

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


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

Честно говоря, я TCL не особо-то умею применять... Я всегда брал generic и на его основе в тексте, где надо вставлял конструкции, которые влияют на варианты синтеза, типа if ... generate и т.д. Наверно, поэтому мне сложно мозг переключить на философию xilinx. А где почитать про "конфигурируйте ваши BD  через  TCL скрипт "?

 

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


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

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

33 minutes ago, OparinVD said:

Честно говоря, я TCL не особо-то умею применять... Я всегда брал generic и на его основе в тексте, где надо вставлял конструкции, которые влияют на варианты синтеза, типа if ... generate и т.д. Наверно, поэтому мне сложно мозг переключить на философию xilinx. А где почитать про "конфигурируйте ваши BD  через  TCL скрипт "?

Увы  - чтобы  продуктивно с Vivado работать TCL придется подучить и применять его иногда даже чаще  чем RTL писать :yes3:

А читать для начала как минимум  "Tcl Command Reference Guide (UG835)" и  "Creating and Packaging Custom IP (UG1118)". Только тут к сожалению только базовые  вещи дают.  Навряд ли найдете  готовый рецепт "как добавить перчика параметр в ваш BD"  :wink2:  Все остальное надо пробовать готовить самому. Как пример смотря как это сделано в готовых корках.   

 

Удачи! Rob.

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


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

Добрый день!

С прошлого раза я несколько улучшил свою "фамильярность" с TCL, пролистал UG1118. Думал, сейчас буду подглядывать в US835 и полечу высоко, но взлететь что-то так и не смог... Не могу найти, через какой механизм идет взаимодействие между топовым BD и моим кастомным IPcore. По этой же причине не могу подсмотреть, как это сделано у других. Например, при валидации я вижу предупреждения, что BD cell не принял параметр от присоединенного ядра. А как его принять, откуда мне Vivado говорит об этом? Где реализовать поведение по переконфигурации своего core? Для определенности первым шагом хочу сделать так, чтобы мой IPcore принимал значение частоты такое как у присоединенного клока в топ-левеле вместо того, которое было вбито при упаковке, а то надоело перепаковывать :)

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


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

1 hour ago, OparinVD said:

Для определенности первым шагом хочу сделать так, чтобы мой IPcore принимал значение частоты такое как у присоединенного клока в топ-левеле вместо того, которое было вбито при упаковке, а то надоело перепаковывать :)

как знакомо...когда с этим разбирался взял за основу BD, в котором AXI Subsystem + 2 AXI UART Lite, эти корки открыты, можно посмотреть сорцы и тикл, но, у меня так и не получилось сделать чтобы мое IP само извлекало значение частоты и назначало параметр. Вроде и RTL написан был одинаково и команды TCL, но не вышел каменный цветок, в итоге плюнул и сделал параметр конфигурации IP. 

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


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

У меня пока всё хуже... Я не могу понять, куда прикручивается тикль и как его запустить на исполнение. Ткните, пожалуйста, носом

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


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

Я понимаю, что это совсем не ответ на вопрос, но так ли уж нужны собственные ip-core в виваде? Этот ip packager сделан настолько не по людски, что как-то... После того, как появился режим Add RTL module, я забыл о них как о страшном сне.

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


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

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

6 minutes ago, alexadmin said:

Я понимаю, что это совсем не ответ на вопрос, но так ли уж нужны собственные ip-core в виваде? Этот ip packager сделан настолько не по людски, что как-то... После того, как появился режим Add RTL module, я забыл о них как о страшном сне.

Если  не знать  как использовать то  и молоток  покажется инструментом чужих :wink2:

Add RTL не покрывает  все сценарии использования IP.  А свои IP корки  это очень удобная концепция пере использования кода  особенно в крупных  компаниях.  

 

Удачи! Rob.

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


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

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

2 hours ago, OparinVD said:

У меня пока всё хуже... Я не могу понять, куда прикручивается тикль и как его запустить на исполнение. Ткните, пожалуйста, носом

Чтобы  проще разбираться в работе TCL в корках  можно вставить хуки на tcl функции и  посмотреть что и когда запускается при работает с корками. Недавно вроде  уже обсуждали  похожую  тему и  я там приводил пример такого хука. 

 

Удачи! Rob.

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


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

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

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

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

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

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

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

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

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

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