OparinVD 0 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба Доброго дня! Вопрос, как я понял, довольно частый, но ответа я так и не нашел. Суть простая: в блок-дизайне я создаю компонент, который будет вставлен на топ-левел в виде нескольких копий, у каждой копии будет свой порядковый номер. Этот номер должен распространиться на нижестоящие компоненты в блок-дизайне, чтобы они знали, в канале с каким номером они работают. Вивадо вроде как при упаковке ip-core находит все топ-левел генерики и отображает их как настраиваемые параметры. Всё было бы хорошо, если бы у меня был текстовый топ-левел, а вот в блок-дизайне я нигде не найду как поместить такой генерик. Пока вижу единственный выход - это взять vhd-файл который отображает структуру блок-дизайна и вручную добавить в него топ-левел генерик и спортмапить его на все нижестоящие компоненты. Но это же дикий головняк! При любом телодвижении этот файл перезапишется - и начинай сначала... Как этим правильно пользоваться? Может философия Xilinx шагнула уже далеко вперед, и по их концепции это уже не требуется, а я не так всё понимаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба Приветствую! 1 hour ago, OparinVD said: Суть простая: в блок-дизайне я создаю компонент, который будет вставлен на топ-левел в виде нескольких копий, у каждой копии будет свой порядковый номер. Этот номер должен распространиться на нижестоящие компоненты в блок-дизайне, чтобы они знали, в канале с каким номером они работают. Вивадо вроде как при упаковке ip-core находит все топ-левел генерики и отображает их как настраиваемые параметры. Всё было бы хорошо, если бы у меня был текстовый топ-левел, а вот в блок-дизайне я нигде не найду как поместить такой генерик. Пока вижу единственный выход - это взять vhd-файл который отображает структуру блок-дизайна и вручную добавить в него топ-левел генерик и спортмапить его на все нижестоящие компоненты. Но это же дикий головняк! При любом телодвижении этот файл перезапишется - и начинай сначала... Как этим правильно пользоваться? Может философия Xilinx шагнула уже далеко вперед, и по их концепции это уже не требуется, а я не так всё понимаю? Концепция BD в Vivado не предусматривает пока возможность задавать parameter/generic для BD. Это статически компилируемая единица. Вручную модифицировать обертку от BD смысла нет, проще уж сразу собрать аналог BD в RTL из IP корок. Для некоторых случаев можно "просовывать" внутрь BD параметры-константы через обычные порты. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
warrior-2001 0 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба А блоки-идентификаторы добавить нельзя? И из их параметров брать нужные настраиваемые параметры. Может ревизия какая-то существует при генерации верхнего уровня в BD? Вопрос волнует и меня, у Интела я изголялся, а тут тоже пока не знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OparinVD 0 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба Спасибо! Очень жаль, что вариантов нет... Вручную портмапить тоже удовольствие сомнительное. Всё-таки у блок-дизайна есть несомненно вкусные плюшки, типа соединения сразу целыми интерфейсами, автоматической настройки параметров стандартных корок и т.д. Но какая религия запретила им сделать генерики для блок-дизайна - не пойму :) 8 minutes ago, warrior-2001 said: А блоки-идентификаторы добавить нельзя? И из их параметров брать нужные настраиваемые параметры. Может что-то можно из этого получить... но наверх через блок-дизайн не выкинуть... Придется действительно сигналами заводить, это, конечно, не так изящно как, например (for i... generate), но сработает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба Приветствую! 9 minutes ago, OparinVD said: ... Но какая религия запретила им сделать генерики для блок-дизайна - не пойму :) IMHO основная концепция - пере-использование скомпилированных модулей в виде нетлистов из кэша. Ну и не забывайте что модули на BD это скрипты на TCL которые выполняется в моменты добавления/конфигурации/валидации BD. И привязать изменение RTL параметров при синтезе к перезапуску TCL скриптов наверно не просто. Поэтому в Xilinx и не стали заморачиватся. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OparinVD 0 11 сентября, 2020 Опубликовано 11 сентября, 2020 (изменено) · Жалоба Да, но... Скомпилированные модули должны иметь настраиваемые параметры, а BD это один из возможных вариантов при упаковке user-IP. Но получается, что я не могу создать свой настраиваемый IP на основе BD, мне остается только текстовый портмап, только хардкор! Ну или сторонние инструменты, но я пользовался только ActiveHDL, а там возникают другие проблемы... upd : опять же работу в Xilinx проделали действительно серьезную. Несмотря на то, что BD это TCL, он вполне себе умеет рыться в генериках накиданных в него компонентов и автоматически дает им нужные значения, если, например, ширина данных в цепочке конвейера разнится от компонента к компоненту... На фоне всего, что BD умеет отсутствие возможности выкинуть параметр наверх выглядит как умышленное решение, а не как увиливание от заморочек (imho :) ) Изменено 11 сентября, 2020 пользователем OparinVD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба Приветствую! 22 minutes ago, OparinVD said: а BD это один из возможных вариантов при упаковке user-IP. Но получается, что я не могу создать свой настраиваемый IP на основе BD Почему же не можете? - Можете! НО конфигурируйте ваши BD через TCL скрипт при создании/модификации вашего IP. Либо создаете BD внутри IP динамически, скриптом с заданием нужных параметров для блоков на BD. В Vivado многие модули для BD так именно и создаются - тот же AXI interconnect например. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OparinVD 0 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба Честно говоря, я TCL не особо-то умею применять... Я всегда брал generic и на его основе в тексте, где надо вставлял конструкции, которые влияют на варианты синтеза, типа if ... generate и т.д. Наверно, поэтому мне сложно мозг переключить на философию xilinx. А где почитать про "конфигурируйте ваши BD через TCL скрипт "? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба Приветствую! 33 minutes ago, OparinVD said: Честно говоря, я TCL не особо-то умею применять... Я всегда брал generic и на его основе в тексте, где надо вставлял конструкции, которые влияют на варианты синтеза, типа if ... generate и т.д. Наверно, поэтому мне сложно мозг переключить на философию xilinx. А где почитать про "конфигурируйте ваши BD через TCL скрипт "? Увы - чтобы продуктивно с Vivado работать TCL придется подучить и применять его иногда даже чаще чем RTL писать А читать для начала как минимум "Tcl Command Reference Guide (UG835)" и "Creating and Packaging Custom IP (UG1118)". Только тут к сожалению только базовые вещи дают. Навряд ли найдете готовый рецепт "как добавить перчика параметр в ваш BD" Все остальное надо пробовать готовить самому. Как пример смотря как это сделано в готовых корках. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OparinVD 0 9 марта, 2021 Опубликовано 9 марта, 2021 · Жалоба Добрый день! С прошлого раза я несколько улучшил свою "фамильярность" с TCL, пролистал UG1118. Думал, сейчас буду подглядывать в US835 и полечу высоко, но взлететь что-то так и не смог... Не могу найти, через какой механизм идет взаимодействие между топовым BD и моим кастомным IPcore. По этой же причине не могу подсмотреть, как это сделано у других. Например, при валидации я вижу предупреждения, что BD cell не принял параметр от присоединенного ядра. А как его принять, откуда мне Vivado говорит об этом? Где реализовать поведение по переконфигурации своего core? Для определенности первым шагом хочу сделать так, чтобы мой IPcore принимал значение частоты такое как у присоединенного клока в топ-левеле вместо того, которое было вбито при упаковке, а то надоело перепаковывать :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 9 марта, 2021 Опубликовано 9 марта, 2021 · Жалоба 1 hour ago, OparinVD said: Для определенности первым шагом хочу сделать так, чтобы мой IPcore принимал значение частоты такое как у присоединенного клока в топ-левеле вместо того, которое было вбито при упаковке, а то надоело перепаковывать :) как знакомо...когда с этим разбирался взял за основу BD, в котором AXI Subsystem + 2 AXI UART Lite, эти корки открыты, можно посмотреть сорцы и тикл, но, у меня так и не получилось сделать чтобы мое IP само извлекало значение частоты и назначало параметр. Вроде и RTL написан был одинаково и команды TCL, но не вышел каменный цветок, в итоге плюнул и сделал параметр конфигурации IP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OparinVD 0 10 марта, 2021 Опубликовано 10 марта, 2021 · Жалоба У меня пока всё хуже... Я не могу понять, куда прикручивается тикль и как его запустить на исполнение. Ткните, пожалуйста, носом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 10 марта, 2021 Опубликовано 10 марта, 2021 · Жалоба Я понимаю, что это совсем не ответ на вопрос, но так ли уж нужны собственные ip-core в виваде? Этот ip packager сделан настолько не по людски, что как-то... После того, как появился режим Add RTL module, я забыл о них как о страшном сне. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 10 марта, 2021 Опубликовано 10 марта, 2021 · Жалоба Приветствую! 6 minutes ago, alexadmin said: Я понимаю, что это совсем не ответ на вопрос, но так ли уж нужны собственные ip-core в виваде? Этот ip packager сделан настолько не по людски, что как-то... После того, как появился режим Add RTL module, я забыл о них как о страшном сне. Если не знать как использовать то и молоток покажется инструментом чужих Add RTL не покрывает все сценарии использования IP. А свои IP корки это очень удобная концепция пере использования кода особенно в крупных компаниях. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 10 марта, 2021 Опубликовано 10 марта, 2021 · Жалоба Приветствую! 2 hours ago, OparinVD said: У меня пока всё хуже... Я не могу понять, куда прикручивается тикль и как его запустить на исполнение. Ткните, пожалуйста, носом Чтобы проще разбираться в работе TCL в корках можно вставить хуки на tcl функции и посмотреть что и когда запускается при работает с корками. Недавно вроде уже обсуждали похожую тему и я там приводил пример такого хука. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться