Jump to content

    

OparinVD

Участник
  • Content Count

    50
  • Joined

  • Last visited

Community Reputation

0 Обычный

About OparinVD

  • Rank
    Участник
  • Birthday 09/30/1981

Информация

  • Город
    Array

Recent Profile Visitors

636 profile views
  1. Нашел, прошерстил... Честно говоря, такой скрипт я уже видел, когда осваивал кунг-фу с размещением в git. Я сейчас так и делаю: сохраняю дизайн через write_tcl, сохраняю bd через "export block design" и потом корректирую скрипт дизайна, чтобы из него запускалась сборка bd. Еще недавно я и не слышал про хуки. Теперь знаю, где они живут, и даже как переименовывать tcl-функции. Очень жаль, что нельзя в пару кликов скачать ваш опыт себе в голову :)) А если серьезно, то непонятно, что делать с перехваченной функцией. Т.е. понятно, как добавить новые действия. А как с помощью этого посмотреть, что и когда запускается? А еще я понял, что совершенно не понимаю концепцию параметров в вивадо. Не приставляется палец к носу. Когда-то на первом курсе, когда я щупал Delphi, я делал свои property. Это была структурка (ну или record): одно поле - собственно значение, второе - указатель на процедуру, которая запускается, чтобы изменить значение и сделать что угодно сопутствующее. Здесь я ищу, но не нахожу нечто похожее. Наверно должна быть возможность повесить tcl на изменение параметра по аналогии с tcl.pre и tcl.post. Или конфигурационные параметры IP это просто обертка вокруг моих HDL-ных generic-ов, а вся магия творится внутри HDL с помощью for...generate? Как тогда быть, если у меня топ-левел - это wrapper для bd? Там на топе нет generic-ов. Попробовал при упаковке IP добавить параметр, но не нашел как распространить влияние этого параметра на нижестоящие части. К тому же такой параметр испаряется при следующем запуске IP packager-а
  2. У меня пока всё хуже... Я не могу понять, куда прикручивается тикль и как его запустить на исполнение. Ткните, пожалуйста, носом
  3. Добрый день! С прошлого раза я несколько улучшил свою "фамильярность" с TCL, пролистал UG1118. Думал, сейчас буду подглядывать в US835 и полечу высоко, но взлететь что-то так и не смог... Не могу найти, через какой механизм идет взаимодействие между топовым BD и моим кастомным IPcore. По этой же причине не могу подсмотреть, как это сделано у других. Например, при валидации я вижу предупреждения, что BD cell не принял параметр от присоединенного ядра. А как его принять, откуда мне Vivado говорит об этом? Где реализовать поведение по переконфигурации своего core? Для определенности первым шагом хочу сделать так, чтобы мой IPcore принимал значение частоты такое как у присоединенного клока в топ-левеле вместо того, которое было вбито при упаковке, а то надоело перепаковывать :)
  4. Под стандартной схемой я как раз имею в виду набор из PCIe Endpoint, DMA и MAC статически прошитый в ПЛИС, программную прослойку из XRT и OpenCL и схему работы, когда прикладное ПО скидывает крупные блоки данных в пространство Alveo и запускает кернел на исполнение. И да, нам надо обработать данные из Ethernet, не преодолевая PCIe-барьер. По этой причине SmartNIC, (если я правильно понимаю, о чем речь) не подоходят. По крайней мере тот же SolarFlare ускоряет процесс именно за счет снижения цены преодолевания этого "барьера". А Альвео приглянулась ценой и готовым хостовым ПО. Напрямую в Xilinx не писали, мы пока через Макрогрупп пытаемся разобраться. Параллельно хочу поискать людей, у кого получились успешные пуски по нашему варианту.
  5. Мы используем кабель QSFP -> 4xSFP+ каждый отдельный хвост это 10G В качестве тестов запускали прилагаемый бинарник, его не получится взять за основу. Но он дает понять, что вся связка U50 - кабель - 10G сетевуха работает. Схема работы через глобальную память и связку из OpenCL, XRT и т.д. понятна... но нам она нужна только как готовый "тунель" от прикладного ПО на хосте к ПЛИС. Стандартная схема предполагает, что подсистема Ethernet включена в шелл. Тогда ресурсы, относящиейся к Ethernet становятся не доступны в пользовательском RTL. Но Xilinx как раз предоставляет пример, когда и работа с XRT остается, и QSFP остается доступным. И вот этот пример у нас не работает. Прошу прощения, что сразу неточно описал
  6. Добрый день! Уже довольно давно не можем поднять линк ethernet на Альвео U50. Соединить пытаемся Альвео и штатную сетевуху 10G. Сначала была проблема с тем, что шелл резервирует под себя ресурсы физического уровня и их нельзя использовать в пользовательском RTL. С этим, вроде, разобрались с помощью примера, выложенного в секретной части сайта Xilinx. Теперь проект собирается, но линк не встаёт. При этом при запуске example project всё едет, лампочки весело мигают, значит в железной части всё хорошо. За это время перепробовали много вариантов, катались туда обратно по версиям Vitis и операционок. Пробовали MAC с training блоком и без него, всё безрезультатно, линк не встаёт, акула данные не ловит... Складывается впечатление, что дураки не мы, а инженеры Xilinx. Но это было бы странно, за столько времени, наверно, должны бы были допилить... Кто-нибудь освоил это "оружие победы" от Xilinx? Есть успешные результаты в применении?
  7. Проблему с "object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded" решил с помощью одного из вариантов, предложенного тут. Признаться, пользователь линукс из меня так себе, я перепробовал многие из предложенных там вариантов, но проблема решилась после перезагрузки, поэтому какой именно метод выстрелил, я не знаю. Я вообще не очень понимаю, что это было, и что я исправил. Не знаю, связано ли это с локалью, но теперь работает :) На грабли с десятичной точкой я уже тоже наступал :) Сначала думал, что проблема вызвана переездом с Windows на Убунту, но оказалось, что не компилируется даже голый example project, созданный с нуля. Решение нашел тут
  8. Пардон, похоже, что разгадка никак не связана с дма и изернетом. Собрал новый тестовый проект с "корректным" подключением изернета, витис для него также не может построить bsp... Похоже, проблема в сообщениях, котроые я проигнорировал, т.к. не разбираясь, посчитал их следствием основной проблемы. Судя по всему, я неправильно приготовил витис под убунту... Тем не менее, мнения о подключении изернет-коре с удовольствием выслушаю :)
  9. Всех с наступившими праздниками! Картина такая: в vivado на основе примера создан bd-проект c axi_ethernet и microblaze'ом. Из стандартной цепочки был выкинут блок dma, т.к. совершенно не нужен, данные надо пережевывать своим ртл-блоком, не дожидаясь, пока пакет доедет целиком. Витис на это ругается. Говорит, что целевая переферия подключена неправильно, что к изернету надо обязательно подключать дма или mm-fifo. 2019.2 тоже ругался на это, но, поворчав, платформу создавал, и всё работало, а тут увы... Попробовал всунуть stream broadcaster, чтобы раздвоить поток от изернета: один оставить себе, другой пустить на mm-fifo... не помогло. Обработка данных вся основана именно на стриме, поэтому городить какой-то конвертер из mm в стрим не хотелось бы. В настройках ethernet core нигде не нашел настроек, которые отвечали бы за то, какой блок должен висеть на выходе приемника изернета, но в tcl-скриптах эта проверка идет... Есть ли какое-то отворотное зелье, чтобы витис забыл про дма и mm-fifo? Вот полное ругательство Витиса:
  10. Ух! Это ж еще одно поле не паханное! Боюсь, что в ближайшее время для моей психики будет проще считать, что "доктор сказал, ты умрешь..." :) Спасибо за науку, дальше тогда сам копать буду
  11. А.. понял. Значит мой следующий шаг - прикрутить Моделсим как основной симулятор в Виваде и научиться его готовить. Тогда последний вопрос из области симуляторов. В свое время я его отбросил, как нечто из области фантастики, но вдруг я ошибался... Вопрос такой: могут ли современные симуляторы взаимодействовать с внешним миром кроме как через файловую систему? А именно, можно ли организовать такой стенд, где тестер накидывает пакеты через изернет и получает интерактивно ответы, но обработка идет не железе, а в модели? Или оно не стоит потраченных сил?
  12. Ни в коем случае :) Если сравнивать с поделками из прошлой жизни, то мой текущий проект уже выглядит огромным :) И да, я уже столкнулся с болью от того, что мой Альдек не может моделировать криптованные корки новых Vivado. Пришлось вести две версии проекта: одну можно моделировать в Альдеке, вторую можно синтезировать и моделировать в Vivado, но это вызвано несовместимостью версий, как уже обсуждали весной, а не принципиальными ограничениями Альдека... Из планов на обозримое будущее - довести текущий проект до полнофункционального состояния, не задерживаясь на оптимизации. Основная цель - найти все грабли на прикладном уровне, и понять, где нужны чугунные мосты, а где ими никто пользоваться не будет. А потом займусь причесыванием, и вот там уже, надеюсь, подключу в свой арсенал все фишки SV. Можете на свой вкус порекомендовать, в сторону какого тулза смотреть? Хотелок у меня не так уж много: хочется, чтобы весь маршрут оставался в рамках одного пакета, чтобы Виваде отдать готовый проверенный кубик и запустить синтез; очень хочется FSM-рисовалку, без них прямо жизни нет :) желательна версия под Линукс
  13. А ООП это что? Объектно-ориентированное проектирование? Я почему в сторону Ривьеры смотрю, она вроде как под Линукс должна работать. Мне сейчас пришлось ActiveHDL на виртуальной машине запускать и через папку синхронизации давать исходники Виваде. Вроде не сказать, что сильное извращение, но если получится без него, то будет лучше :)
  14. Спасибо, принял к сведению. Займусь, как только прожую тот кусок информации, который уже пришлось отхватить за последнее время :) На сегодня миксед-сигнал мне не нужен, на потребляемых ваттах мы не экономим. Бэк-аннотейтед для себя пока тоже не вижу. Я гоняю модель на чисто функциональном уровне, потом скармливаю проект Виваде, и, если тайм-анализ сказал Ок, то я этим удовлетворен. Code-coverage в ActiveHDL видел, но не пользовался, надо будет уделить ему время. SV модули у меня написаны на средне-колхозном уровне, Альдек их спокойно переваривает и без проблем разрешает напрямую кидать на диаграмму... Значит ли это, что на данном этапе своего развития мне нет смысла пересаживаться на что-то новое? И еще вопрос: чем всё-таки отличаются ActiveHDL и Rivera? Одно является логическим развитием другого или они всё-таки для разных задач?
  15. Соседняя тема про редакторы HDL подтолкнула меня к созданию подобной ветки про симуляторы. Я хочу выбрать для себя средство отладки так, чтобы сразу всё стало качественно и по-взрослому :) Поставить всё, что есть на рынке, опробовать и выбрать физически не возможно, хотелось бы выбрать одно направление и развивать его. Из рекламных описаний ничего не поймешь, все без сомнения лидеры индустрии, и уж с ними процесс оладки точно сократится на 90%. С сайта Альдека, например, я так и не понял, чем классический ActiveHDL отличается от Rivera'ы. Собственно, вопрос можно распространить на все тулзы: что для чего предназначено? есть только вкус и цвет или есть некая узкая (или не очень узкая) специализация каждого инструмента? По второму вопросу сначала повторюсь. Я с первого дня знакомства с ПЛИС работал с ActiveHDL. Мне функционала хватало, но я регулярно встречаю мнение, что он слабоват для верификации, и это наводит на мысли, что я что-то упускаю... Как я делаю: совсем простенькие низкоуровневые куски гоняю в интерактиве, для остального пишу тестбенч на SV. Где-то визуально анализирую результат, где-то пишу автоматическое сравнение с эталоном. Моделирует быстро, по крайней мере по сравнению с Vivado :) Отсюда вопрос: какими хотелками в области верификации полезно обзавестись разработчику? Какие фишки предлагают серьезные пакеты?