nice_vladi 2 4 августа, 2021 Опубликовано 4 августа, 2021 · Жалоба Апну тему. Пытаюсь изменить привычки и начать работать со скриптами, вместо складывания в гит кучи файлов вивады. Столкнулся с несколькими непонятностями: 1. Как правильно добавлять и описывать block design в проекте? С учетом того, что всё хочется делать в скриптах, раз уж взялся. Кстати, ни один внешний фреймворк или мануал не учитывает bd файлы, насколько я вижу. 2. Что с автоматизацией? Имею в виду, нет никакого желания перед коммитом делать write_*_tcl, потом разбираться, куда сложились эти файлы и т.д. В общем, как минимизировать ручной труд при использовании вивады со скриптами? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 4 августа, 2021 Опубликовано 4 августа, 2021 · Жалоба А bd разве не представляет собой ординарный tcl скрипт (простите мою серость, как-то до сих пор удавалось обходиться без bd, но есть желание и эту технологию подтянуть)? У нас и IP тоже хранятся под гитом как tcl, который и является исходником. Ну, это как вариант. Сейчас перешли на более продвинутый путь, когда и tcl для корки генерируется из параметров для оной, хранимых в более удобном (YAML) формате (вот этот файл и идёт под контроль, а тот же tcl для корки - это продукт генерации). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 2 4 августа, 2021 Опубликовано 4 августа, 2021 · Жалоба 34 minutes ago, dxp said: А bd разве не представляет собой ординарный tcl скрипт (простите мою серость, как-то до сих пор удавалось обходиться без bd, но есть желание и эту технологию подтянуть)? У нас и IP тоже хранятся под гитом как tcl, который и является исходником. Ну, это как вариант. Сейчас перешли на более продвинутый путь, когда и tcl для корки генерируется из параметров для оной, хранимых в более удобном (YAML) формате (вот этот файл и идёт под контроль, а тот же tcl для корки - это продукт генерации). БД можно сохранить в .tcl. Но потом это нужно как-то развернуть и добавить в проект сам .bd и еще кучу файлов, которые будут сгенерированы после его синтеза. Я пока на этом месте застрял) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 4 августа, 2021 Опубликовано 4 августа, 2021 · Жалоба А IP ядра вы как храните? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 4 августа, 2021 Опубликовано 4 августа, 2021 · Жалоба 3 часа назад, nice_vladi сказал: Как правильно добавлять и описывать block design в проекте? С учетом того, что всё хочется делать в скриптах, раз уж взялся. Поковыряйте https://github.com/analogdevicesinc/hdl Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 2 4 августа, 2021 Опубликовано 4 августа, 2021 · Жалоба 7 minutes ago, dxp said: А IP ядра вы как храните? Складываем в гит .gen и .ip_user_files. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 4 августа, 2021 Опубликовано 4 августа, 2021 · Жалоба Приветствую! 7 hours ago, nice_vladi said: 1. Как правильно добавлять и описывать block design в проекте? С учетом того, что всё хочется делать в скриптах, раз уж взялся. Кстати, ни один внешний фреймворк или мануал не учитывает bd файлы, насколько я вижу. По правильному (как рекомендует Xilinx) надо делать экспорт BD в tcl (как и всего проекта) и затем класть скрипт в репозиторий. Соответственно при клонировании нужно делать импорт (source) такой BD. При этом могут быть неприятности. У меня например постоянно глючит экспорт/импорт BD в которой контроллер DDR имел кастомные настройки памяти из внешнего .csv файла добавленного в проект. Первый раз экспорт/импорт проходил нормально, но при этом терялись связи с .csv файлом, Соответственно второй и последующие разы экспорт/импорт уже не работал. Ест еще один вариант сохранят только файл BD. И затем, при клонировании, восстанавливать полную BD "read_bd ... generate_target all ...". Во всяком случае в Vv 2020.2 такое работает, но не факт что это будет работать для всех BD и для более старых версий Vv. При этом само BD можно держать внешне (как и обычные rtl файлы и файлы IP корок) по отношению к папке проекта *.srcs . При этом заметил что при такой регенерации файл BD может немного меняется То есть схематика остается прежней но может изменится расположение блоков строк или название цепей в xml описывающих BD. Так что бардак с BD у Xilinx все еще присутствует. 7 hours ago, nice_vladi said: 2. Что с автоматизацией? Имею в виду, нет никакого желания перед коммитом делать write_*_tcl, потом разбираться, куда сложились эти файлы и т.д. В общем, как минимизировать ручной труд при использовании вивады со скриптами? IMHO c автоматизацией дела проще. При желании можно встроить свои хуки в стандартные команды Vv и в них контролировать состояние BD и других сорцов и необходимость обновления их экспорта или коммита. Например в стандартные для всех этапов хуки pre_*. У меня например похоже делается в скрипте pre_synth. Или через Vivado_init.tcl повесить свои хуки в open_project, close_project, .... Но тут проблема может быть в том что это не может гарантировать целостность проекта и результат сильно зависит от стиля и организации в работе с проектом. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fguy 5 4 августа, 2021 Опубликовано 4 августа, 2021 (изменено) · Жалоба Начиная с вивады 2020.2 она хранит весь проект в папке <имя проекта>.srcs без мусора, образующегося при синтезе и далее (он вынесен наконец то в отдельную папку). Так что хранить можно ее в гит полностью + сам файл проекта. Такой вариант позволяет сразу открыть проект в первозданном виде без затрат времени на восстановлении из скриптов - у него только один недостаток - это новые версии вивады с кучей других косяков. Хранение бд в скрипте как уже писали выше ведет к переразмещению блоков "по понятиям" вивады, что не всегда удобно. При использовании внешнего репозитория с ядрами хлс, требуется их компиляции перед запуском скрипта, а это отдельный "геморой" сам по себе. Опять же скрипт для бд довольно сурово привязан к версии вивады, что то же может быть существенным. Изменено 4 августа, 2021 пользователем fguy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 2 4 августа, 2021 Опубликовано 4 августа, 2021 · Жалоба 21 minutes ago, fguy said: Начиная с вивады 2020.2 она хранит весь проект в папке <имя проекта>.srcs без мусора, образующегося при синтезе и далее (он вынесен наконец то в отдельную папку). Так что хранить можно ее в гит полностью + сам файл проекта. Такой вариант позволяет сразу открыть проект в первозданном виде без затрат времени на восстановлении из скриптов - у него только один недостаток - это новые версии вивады с кучей других косяков Как в 2020.2 пробовал. Без папок .gen и .ip_user_file проект не разворачивается - сыпет ошибки. Возможно, я где-то ошибся... Не подскажете полный алгоритм, даже если звучит очень просто? 43 minutes ago, RobFPGA said: Но тут проблема может быть в том что это не может гарантировать целостность проекта и результат сильно зависит от стиля и организации в работе с проектом. Да, проблема. Хочется однозначно и железно всегда складывать в гит определенный набор файлов, который обеспечит развертывание проекта "с чистого листа". Пока, как писал выше, приходится складывать огромное количество файлов. Особенно при наличии нескольких крупных IP cores. Лирика: в Quartus я точно знал, что сложу .qsys, .qsf, .sdc файлы, и при разворачивании проектов получу полностью готовое окружение. В vivado могу только мечтать и придумывать костыли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 4 августа, 2021 Опубликовано 4 августа, 2021 · Жалоба Приветствую! 21 minutes ago, nice_vladi said: Лирика: в Quartus я точно знал, что сложу .qsys, .qsf, .sdc файлы, и при разворачивании проектов получу полностью готовое окружение. В vivado могу только мечтать и придумывать костыли. В Vv я тоже знаю что и как сложить но только ручками, в скрипте, а не автоматом из GUI. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fguy 5 4 августа, 2021 Опубликовано 4 августа, 2021 (изменено) · Жалоба 1 час назад, nice_vladi сказал: Как в 2020.2 пробовал. Без папок .gen и .ip_user_file проект не разворачивается - сыпет ошибки. Возможно, я где-то ошибся... Не подскажете полный алгоритм, даже если звучит очень просто? 2020.2 была первой реализацией и возможно глючной - проверить увы уже не смогу - снес. В 2021.1 оставил папку srcs, файл с проектом xpr и сое файл от фира - проект открылся без ошибок. Если бы не косяки в хлс, то на 2021.1 можно было бы и перейти - среда рабочая и экспорт в сдк адекватный. В 2021.1 в отличии от 2020.2 в новый формат проект можно перевести при конвертации из предыдущих версий вивад. Изменено 4 августа, 2021 пользователем fguy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 2 4 августа, 2021 Опубликовано 4 августа, 2021 · Жалоба 12 minutes ago, fguy said: В 2021.1 оставил папку srcs, файл с проектом xpr и сое файл от фира - проект открылся без ошибок ... В 2021.1 в отличии от 2020.2 в новый формат проект можно перевести при конвертации из предыдущих версий вивад Что за праздник такой?) Поставлю качаться! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 5 августа, 2021 Опубликовано 5 августа, 2021 · Жалоба 19 часов назад, RobFPGA сказал: Ест еще один вариант сохранят только файл BD. И затем, при клонировании, восстанавливать полную BD "read_bd ... generate_target all ...". Во всяком случае в Vv 2020.2 такое работает, но не факт что это будет работать для всех BD и для более старых версий Vv. При этом само BD можно держать внешне (как и обычные rtl файлы и файлы IP корок) по отношению к папке проекта *.srcs . При этом заметил что при такой регенерации файл BD может немного меняется То есть схематика остается прежней но может изменится расположение блоков строк или название цепей в xml описывающих BD. Так что бардак с BD у Xilinx все еще присутствует. Повозился вчера в качестве эксперимента с BD: создал в одном проекте, перекидывал в другой сам .bd файл. Вполне корректно подхватывало, на Vivado 2018.2. Для того, чтобы схематика не слетала, там надо ещё директорию ui (в ней файлик с кодированными именем и расширением .ui) тащить вместе с файлом .bd. Ну, и все объекты зафиксировать (сделать pinned), хотя, может, и без этого не перемещает, не проверял. Вроде бы выглядит рабочим вариантом складывать в реп .bd и ui. Ну, а при импорте - да, генерить всё, что положено скриптом. Это (для нас) не проблема. Пока не нравится то, что если, скажем, эти файлы bd, ui хранить вместе с исходниками, то при импорте в проект оно там рожает synth, sim и прочие директории прямо тут же рядом, т.е. мусорит. В новых версиях, как сказали выше, такого уже нет, я пока не проверял. Надо посмотреть ключи этих тиклевых команд, которые используются для импорта bd в проект, может там можно указать путь, где продукты генерации складывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 5 августа, 2021 Опубликовано 5 августа, 2021 · Жалоба Приветствую! 2 hours ago, dxp said: Пока не нравится то, что если, скажем, эти файлы bd, ui хранить вместе с исходниками, то при импорте в проект оно там рожает synth, sim и прочие директории прямо тут же рядом, т.е. мусорит. Ненужный "мусор" убирается настройкой .gitignore. Например для общей папки где у меня все BD сохраняются: /*/*/ /*/*.* !/*/*.bd Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 5 августа, 2021 Опубликовано 5 августа, 2021 · Жалоба 34 минуты назад, RobFPGA сказал: Ненужный "мусор" убирается настройкой .gitignore. Например для общей папки где у меня все BD сохраняются: В контексте git да, решение. Но мне не нравится вот что. Структура проекта у нас выглядит так: /build /sim /syn /<out-of-context IPs> ... /<project>.runs <project>.xpr ... /src /bd /cfg /sim /syn src под git, build в ignore. И вот в src/bd находятся файлы .bd. Было бы замечательно, если бы только они там и оставались. Но Vivado там же (т.е. в директории src) генерит этот "мусор" (synth, sim). Вот ка бы это уносилось куда-нить в build, которая является целиком и полностью продуктом генерации, и там этому "мусору" (как также являющимся продуктом генерации) самое место. А src содержала бы только исходники, которые правятся руками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться