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

И снова кастомизация IPcore в Vivado

При включении XIL_IFX_TRACE едет куча информации, а при включении XIL_IFX_DEBUG на "всё" интерконнект сломался, при изменении количества интерфейсов стал вываливаться с руганью на другие параметры - неожиданно :) В любом случае, для меня это большой шаг вперед, буду развлекаться, поклон вам!

Еще напоследок вопрос: namespace для IPI - ipx? или каждая корка в своем namespace живет?

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


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

2 minutes ago, OparinVD said:

Еще напоследок вопрос: namespace для IPI - ipx? или каждая корка в своем namespace живет?

Увы  не скажу,  я давно уже с этим разбирался, да так и не доразбирался :cray: Да и необходимости особой не было, для интереса просто возился.   

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


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

20 часов назад, OparinVD сказал:

Вовсе нет... Как раз наоборот, результат идентичный. Я хочу сказать, что вроде как не параметризуемый снаружи cell вполне себе меняет внутреннюю структуру и подтягивает разные исходники в зависимости от параметров... Чего-то подобного я и хочу добиться от своей корки

Всё же не понятен такой момент. Вот если вы нарисуете руками и отредактируете всё, что нужно, то если теперь сохранить этот BD в Tcl скрипт (через экспорт), потом удалить BD из проекта, и, наконец, запустить сохранённый скрипт из консоли, оно родит корректно всё то же самое, что вы руками сделали?

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


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

Для хранения в git я отдельно сохраняю проект в tcl и отдельно сохраняю BD в tcl. Потом в скрипт восстановления проекта добавляю source BD.tcl. Да, после этого рождается тот же самый BD, что я руками рисовал (с поправкой, конечно, на взаимной расположение BD_cell'ов)

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


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

Т.е. если скрипт рожает то, что надо, следовательно он подтаскивает внутри всё, что требуется. Посмотрите, какие команды он там применяет.

 

Чтобы восстановить вид, надо кроме этого тикля ещё ui файлик сохранять, в нём layout и хранится, насколько помню.

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


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

31 minutes ago, dxp said:

кроме этого тикля ещё ui файлик сохранять, в нём layout и хранится

Да, нашел такой файлик, спасибо, буду иметь в виду.

36 minutes ago, dxp said:

Посмотрите, какие команды он там применяет

Команды там понятные. HDL исходники подтягиваются из внешней папки при восстановлении проекта, а при восстановлении BD - в основном create_bd_cell и connect_net.

 

Я сейчас пробую разобраться с тиклем, который лежит в папке /ipcore/xgui/. В нем расписан собственно сам интерфейс кастомизации (страницы, группы, поля) и прописаны функции update и validate для параметров. Только вот пока не докопался до того, как эта вся механика работает, кто кого вызывает? То ли сюда и напихать все эти create_bd_cell и connect_net, то ли наоборот подключать его как библиотеку в скрипте восстановления BD и рисовать этот BD с учетом параметров из GUI... 

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


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

On 1/21/2022 at 11:42 AM, dxp said:

Всё же не понятен такой момент. Вот если вы нарисуете руками и отредактируете всё, что нужно, то если теперь сохранить этот BD в Tcl скрипт (через экспорт), потом удалить BD из проекта, и, наконец, запустить сохранённый скрипт из консоли, оно родит корректно всё то же самое, что вы руками сделали?

Только что столкнулся с такой ситуацией:
На выходе стоит axis_switch, который коммутирует несколько потоков в один. В гуи задал ему параметр ARB_ON_TLAST=1, в таком виде ipcore на основе BD без проблем упаковывался, всё работало. Сделал экспорт BD в tcl, и после восстановления этот параметр оказался равен 0. Скопировал из консоли строчку с принудительной установкой в 1, он мне заявил, что нельзя установить disabled параметр. Обошел проблему заменой switch на axis_interconnect...
Не стал заводить новую тему, просто вспомнился старый разговор :)

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


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

Спустя полгода, я снова добрался до этой темы, и в этой войне я снова проигрываю :dash2:

Обновлю хотелки, и что имеется у меня на сегодняшнем этапе развития:

Топ-левел в моем проекте собран в BD из моих hdl-ных модулей, связанных стандартными axi интерконнектами и другими стандартными корками. Далее этот BD я упаковываю как ipcore и отправляю на дальнейшую сборку. Но в таком ipcore всё намертво прибито гвоздями, ничего не настроить. К тому же появляются новые варианты конфигурации, и приходится поддерживать несколько независимых схем, хоть и имеющих между собой много общего.

Хочу научиться собирать bd динамически на основе галочек в настроечном gui (ну или по значениям property в xci). Плюс хочу генерировать свои дополнительные output products, например yaml-описание для программистов, файл connectivity.ini и *.xo (для сборки под Alveo). И я не перестаю верить в то, что в понятие "генерация" входит возможность именно генерировать нечто кастомное, а не только экспорт hdl с места на место.

Как это реализовать непосредственно в коде, вроде, проблем нет. По крайней мере, я знаю, где всё это посмотреть в примерах. А вот как привязать запуск моих функций к соответствующим функциям vivado - хоть убей, не могу найти. Вряд ли каждый ipcore вешает свой хук, например, на generate_target :mda:... Я игрался с XIL_IFX_TRACE, можно проследить всю цепочку вызова функций внутри, но нет первичного запуска. Например, при добавлении на канвас  axis_interconnect trace-цепочка начинается с запуска update_boundary из его bd.tcl, а для axis_switch запускается init из его bd.tcl... Как vivado понимает, кому какую функцию запустить надо? Облазил с grep всё что доступно в текстовом виде tcl/xml - не нашел, где бы ipcore регистрировал свои функции в функциях vivado. Аналогичная ситуация и для generate_target. Я даже пробовал что-то типа info body ::generate_target - не показал ничего :)

Прошу стартового пинка в направлении, как создавать динамические корки, а дальше я уж сам :)

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


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

9 hours ago, OparinVD said:

Топ-левел в моем проекте собран в BD из моих hdl-ных модулей, связанных стандартными axi интерконнектами и другими стандартными корками. Далее этот BD я упаковываю как ipcore и отправляю на дальнейшую сборку. Но в таком ipcore всё намертво прибито гвоздями, ничего не настроить. К тому же появляются новые варианты конфигурации, и приходится поддерживать несколько независимых схем, хоть и имеющих между собой много общего.

Прошу стартового пинка в направлении, как создавать динамические корки, а дальше я уж сам :)

пробовал раскидать простейшую корку UART в бд, чтобы вытаскивала сама частоту, без задания настроек, как сделать зависимые крутиляторы. Перечитал доки с вивадо, по разработке IP, сама корка доступна в сорцах RTL/TCL, но так и не понял как это все реализовать и упаковать. В итоге бросил. Для меня там какие то высшие материи, но может быть у вас получится)

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


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

И на том спасибо, а то я уж начал думать, что со мной что-то не так :)

Связывался с ребятами из plis2, они сходятся на том, что для обычных смертных доступна упаковка ipcore только в виде полностью статичной единицы, а вся кастомизация доступна только на основе hdl параметров, прокинутых наверх.

Помнится в похожей теме 

уважаемый RobFPGA говорил, модули на BD это скрипты на TCL... Вот именно это мне сейчас и нужно. Есть ли у Вас чем поделиться по этой теме?

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


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

37 minutes ago, OparinVD said:

Есть ли у Вас чем поделиться по этой теме?

не, я пас. мои потуги закончились вот на этом 

 

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


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

пока на подъеме энтузиазма мне кажется, что я готов терпеть боль и неудобства дебага :) лишь бы начать

upd: для начала в качестве эксперимента запустил упаковку не обычной корки, а axi periferal... Обнаружил, что в Advanced группе файлов появился раздел Block Diagram, в котором собственно лежит bd.tcl:image.png.781d8a55dbe019cce6a0454125ae18eb.png

поредактировал его, всё сохраняется и обратно не затирается... эта боль вроде как не побеспокоит. Напихал в каждую proc свой puts {Hellow world} и получил его в ответ и от init, и от pre_propagate, и от popogate, значит они как-то зарегистрировались в системе и запускаются. А может достаточно просто придерживаться предопределенных имен :scratch_one-s_head: Еще гадство заключается в том, что раздел Block Diagram отсутствует для простых смертных. Как мастер упаковки его впихнул остается неясным... но это всё вроде не мешает продолжать тыкать палкой в этот черный ящик, работает и ладно :)

Еще в разделе drivers нашел скрипт с функцией generate. По идее она должна генерировать xparameters.h для микроба, и мне бы она подошла. Второе гадство в том, что я не получил от нее Hellow world при генерации BD, видимо она запускается в другом месте, а счастье было так возможно :)

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


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

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


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

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

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

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

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

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

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

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

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

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