позитивслэк
845 subscribers
129 photos
41 files
191 links
ASIC, FPGA, SystemVerilog, UVM. Цифровой дизайн, программирование, духота и мемы. С уклоном в верификаторство.

https://t.me/boost/positiveslack
Download Telegram
Corsair - генератор карты регистров

Хотел бы поделиться своим проектом, доросшим до первой мажорной версии. Конечно он ещё молодой, и толком необкатанный, но верю, что кому-то уже сможет помочь.

Благодарю всех участвовавших и просто сочувствовавших, без обратной связи и помощи было бы тяжело.

Что? Зачем? Почему?
esynr3z.github.io/2021-09-03-corsair

Репозиторий:
github.com/esynr3z/corsair

Документация:
corsair.readthedocs.io

#python #csr #fpga
playhdl

https://github.com/esynr3z/playhdl

Запилил тут свой локальный edaplayground на питоне. Небольшая cli утилита для быстрого поднятия симуляции маленьких кусочков HDL на локально доступных симуляторах.

Никаких зависимостей, должна работать на любом линуксе с python 3.8+.

Больше деталей в README.

#python #tool #eda #hdl
🔥13👍1
Make Verification Fun Again with Python and cocotb
Philipp Wagner

https://youtu.be/EK7yvowRngQ

Довольно неплохой и свежайший обзор cocotb. Презентация в коментах.

#verification #cocotb #python
@positiveslack
👌6👍31
Использование pip для менеджмента HDL компонентов

Внимание, сейчас пойдет пропаганда нетрадиционной разработки. Расслабьтесь и отбросьте все предрассудки.

Проблема
HDL языки предоставляют естественные переиспользуемые контейнеры для кода (пакеты, модули и т.д.), но в инфраструктуру не входит никакого стандартного пакетного менеджера как во взрослых языках, чтобы можно было легко оперировать многообразием компонентов и их версий при создании какого-нибудь очередного тестбенча или дизайна.

Концепт
Справедливости ради, уже есть довольно известные попытки решить эту проблему, построив свою систему с нуля, например, FuseSoc.
Но что если взять пакетный менеджер от любого популярного ЯП и приспособить его к HDL? Я выбрал питоний pip для эксперимента, потому что питон очень прочно и быстро закрепляется в HDL мире, pip есть примерно везде, пакеты очень легко создавать, публиковать и вкладывать в них что угодно, а еще потому что я так захотел.

Прототип
В принципе, ничего не нужно для того чтобы распространять HDL через pip. Просто запаковал и опубликовал любым удобным способом в локальное или глобальное хранилище. Однако, потом для компиляции захочется получить путь до исходников или путь до файллиста, или что-то ещё. Поэтому я подобный и иной бойлерплейт скрыл внутри пакета pip-hdl. В итоге, чтобы собрать пакет с HDL нужно всего два экстра файла на 5-10 строк. Да и те можно сгенерировать автоматически.
Вот мой proof-of-concept: гитхаб, детальный гайд и примеры.

Итог
В результате быстро и дёшево имеем всю мощь pip для какого-нибудь UVM агента или иного компонента с понятным контролем зависимостей, версионированием и способом доставки на машину. Разве это не прекрасно?

#python #automation
@positiveslack
❤‍🔥9🔥4👍2🥴1
Astral: Next-gen Python tooling

Давеча изучал современный ландшафт тулов для питона, и чёт впечатлился ребятами из astral.sh. Они с ноги влетели в питон-сообщество, сказали что это вы тут за говно зоопарк тулов развели, вот у нас в расте есть единый Cargo и всё из коробки, сейчас мы вам нормальный тулчейн на расте напишем, и всё летать будет.
Да-да, это гремучая смесь из XKCD#927 и "Rewrite it in Rust" мема.

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

В этом году они выкатили UV - инструмент для закрытия другой нужды: менеджмента проекта, зависимостей, окружений и самих питонов. Один тул, чтобы покрыть pip, pipx, poetry, virtualenv и дальше по списку. Они там поглотили в процессе популярный rye, который преследовал похожие цели, и теперь декларируют uv как наследника. Инструмент тоже хайпанул и проходит стадию принятия сейчас.

Ну им осталось сделать лишь blazingly fast (c) тайп-чекер. И всё, дефолтный тулчейн будет готов. Поживем-увидим, выстрелят ли эти ожидания.

P.S. Про КДПВ. Звёзды гитхаба конечно так себе метрика, но на самом деле сейчас они там уже ушли в отрыв - 32k звёзд для ruff, что похоже больше чем у любого другого инструмента для питона.

#python #tool
@positiveslack
5🔥11
constrainedrandom

Кажется, у этого питоньего пакета преступно мало звёзд на гитхабе. Или я чего-то не знаю?

Обычно для рандомизации с констрейнами в cocotb тестбенчах PyVSC является выбором по умолчанию. Однако, он довольно медленный.

Текущий пакет по сути обёртка над random и constraint. И он в десятки раз быстрее PyVSC. А на небольших наборах транзакций вполне себе соизмерим с солверами в коммерческих симуляторах. Ребята из Imagination в проде у себя его используют, но это правда не удивительно, т.к. пакет там и был рожден.

Картинки из недавнего доклада на ORConf: видео, слайды.

#cocotb #python
@positiveslack
🔥96
Кстати, интересная мысль прозвучала в докладе из поста выше.

Большие вендоры влили/вливают очень много ресурсов, чтобы их солверы для SV поддерживали всё многообразие констрейнов и были эффективными. Но результатами понятное дело не делятся.

А у опенсорс сообщества по сути одна дорога - консолидироваться вокруг доступных SAT солверов. Интересно, что автор не упоминает, но verilator уже идёт этой дорогой. И кажется успешно - количество поддерживаемых констрейнов увеличивается постепенно.

Т.е. для того что-то похожее на SV рандомизацию появилось для питоньих тестбенчей в максимально эффективном виде, нужно всего-то подсмотреть как это делают в вериляторе, написать подобное отдельной прослойкой на плюсах/расте, сделать биндинги в питон. И кажется будет красиво. Надеюсь когда-нибудь найдется герой для этого подвига 😭

#python
@positiveslack
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤔3