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

https://t.iss.one/boost/positiveslack
Download Telegram
Автоматизация вокруг HDL

Ландшафт инструментов сборки, автоматизации и менеджмента HDL проектов очень неравномерный. Причем большая его часть скрыта "под землёй" во внутренних репозиториях компаний, где инструменты и скрипты разрабатываются с нуля внутри под конкретные нужды, боли и инфраструктуру компании.

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

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

▫️orbit: Package manager and build tool for HDLs [Rust]

▫️bender: A dependency management tool for hardware projects [Rust]

▫️FuseSoC: Package manager and build abstraction tool for FPGA/ASIC development [Python]

▫️Edalize: An abstraction library for interfacing EDA tools [Python]

▫️Hdlmake: Tool for generating multi-purpose makefiles for FPGA projects [Python]

▫️Hog: Hog (HDL-on-git) is a set of Tcl/Shell scripts plus a suitable methodology to handle HDL designs in a git repository [Tcl, Shell]

▫️SiliconCompiler: Modular hardware build system [Python]

▫️Blockwork: An opinionated build environment for EDA projects [Python]

▫️HBS: Build system for hardware description projects, which was created out of frustration with all existing build systems for hardware description [Tcl]

▫️DUH: Suite of tools for packaging reusable hardware components and designs [JavaScript]

▫️Xeda: Cross-platform, cross-EDA, cross-target simulation and synthesis automation platform [Python]

▫️EDA²: Conceptual model for characterising the abstraction layers in Electronic Design Automation projects based on Hardware Description Languages [Python]

▫️LiteX:The LiteX framework provides a convenient and efficient infrastructure to create FPGA Cores/SoCs, to explore various digital design architectures and create full FPGA based systems [Python]

▫️DVSim: An industry-grade EDA tool flow manager / build and run system that strives to achieve a bug-free Silicon [Python]

▫️Hammer: Hammer is a physical design framework that wraps around vendor specific technologies and tools to provide a single API to create ASICs [Python]

#tool
@positiveslack
🔥14🤯41
Забавное в UVM

Обнаружил что в UVM есть класс uvm_spell_chkr, который на самом деле то, что в названии. Начал смотреть зачем нужна проверка правописания? Может чтобы позволять работу с бд, даже при опечатках?

И почти угадал. Оказывается, что всё буквально ради сообщения при работе с resource pool, когда ты опечатался и ресурс не был найден:

"%s not located, did you mean %s"

Т.е. кто-то заморочился же с расстоянием Левенштейна и логикой вокруг на SV ради этого.

Не могу объяснить это чем-то кроме как: "Эй, Стасян, смотри чё могу. Круто же?"

#uvm
@positiveslack
😁16🔥11
Кокотбшное

Пожалуйста обратитесь за помощью, если у вас возникло желание так форматировать код

#meme
@positivelsack
😁21😭6🤯4
VCD Viewer из LLM

Не мог не поделиться этим. Просто прочитайте, посмотрите картинки и осознайте😰

Решил не пересказывать, а просто переслать как есть

o3-mini просто разносит.. очень быстро генерит.. за полчаса переписки нафигачил такой вот VCD viewer
<картинка 1 с сигналами>

При этом сначала он даже VCD формат не до конца понимал. Но скушал пару примеров и осилил... Фильтрацию сигналов, кусор добавляю отдельными запросами

0 правок

На python.. все runtime ошибки отправляю ему

В общем виджет для gtkwave можно теперь за пол дня сгенерить..
<картинки 2 и 3 с запросом и реализацией выделения сигналов>

Если научиться разбивать архитектуру сложного софта на компоненты по 10k строк кода, то по сути уметь писать код уже не нужно

думаю за пол дня можно полностью повторить gtkwave

С одной попытки
<картинки 4 и 5 с запросом и реализацией зума>

Питон файл и vcd файл прикладываю в коментах. Просто положите в одну папку и запустите.

P.s. да, к этому финальному файлу не прикасался человек, всё до последней буквы вышло из o3.

#vcd #llm
@positiveslack
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯156🔥4😁3🤔1
Compile-time проверки в SV

Часто расстраивает что в SV нет одного универсального способа организации чекеров в compile-time для проверки корректности параметров любого контейнера. Точнее как, для модулей/интерфейсов варианты есть, а для классов честного варианта совсем нет.
Или есть?

Вот, например, легаси compile-time чекер для модуля:
parameter FOO_W = 42;
generate
if (FOO_W > 32) begin
foo_w_parameter_must_be_less_or_equal_to_32();
end
endgenerate

Ага, текст ошибки здесь это имя неизвестной сущности.

Или вот его более современная версия с "implicit generate" и использованием "elaboration system tasks" :
parameter FOO_W = 42;
if (FOO_W > 32) begin
$error("FOO_W parameter must be less or equal to 32");
end


А что с классами? А они в пролёте 😔
Там нельзя использовать generate. Но можно получить близкий эффект в самой-самой ранней точке симуляции - во время присвоения статических переменных. Не compile-time, но мгновенно падающий runtime в нулевой момент времени уже неплохо. Это может выглядеть примерно так:
module tb;
class foo #(parameter int FOO_W);
static local bit checker = check();

static local function bit check();
if (FOO_W > 32) begin
$fatal("FOO_W parameter must be less or equal to 32");
end
endfunction
endclass

initial begin
#10 $display("haha, nope %s", $typename(foo#(42)));
end
endmodule


Суть в том, что мы здесь эксплуатируем процесс присвоения static переменных и заставляем симулятор вызвать наш метод-чекер. И теперь если хоть где либо происходит упоминание класса c неверными параметрами, то симуляция не начнется вообще 😏

Если двигаться дальше в сторону от compile-time, то следующей остановкой мог бы быть конструктор класса. Но такое не применить к абстрактным классам, ну и стрелять оно будет уже где-то в процессе симуляции, потенциально далеко от старта. И это уже в общем-то то же самое, что и просто в любом месте процедурного кода сделать проверку.

#system_verilog
@positiveslack
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥4🥱1
Чего-кого-куда в SV

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

P.S. А вы тоже только сегодня узнали что в SV есть некий config 😳?
P.P.S. 33. Configuring the contents of a design в стандарте.

#system_verilog
@positiveslack
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥65
Идеальный сетап для верификатора

Обратите внимание на зеркало заднего вида, чтобы видеть подкрадывающегося менеджера с вопросом "когда verification complete?"

#meme
@positiveslack
😁30🔥29
A 50 years old man's guide to debug

Советы по дебагу от 50-летнего верификатора: оригинал в LinkedIn, копия текста в комментах.

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

Мне до седых волос ещё далековато, и я мало что могу добавить, но попробую лишь обозначить три коротких пункта:

- всегда инвестировать в консистентные и подробные логи
- научиться свободно писать регулярки
- проверять одну проблему/гипотезу за раз и всегда идти мелкими шагами

Банально, да. Главное помнить что мемы про ультимативность printf-дебагинга, это не мемы на самом деле. А с LLM под рукой так вообще самый главный инструмент. Если конечно у вас не EDA окружение без интернета или корпоративные правила.

#debug #verification
@positiveslack
🔥97
Forwarded from Влада Зуева
👍 Отличные новости для FPGA-сообщества: регистрация на конференцию FPGA-Systems 2025 открыта!

Это редкая возможность всего за один день:
➡️ прокачать свои знания на глубоких технических докладах,
➡️ найти ответы на сложные вопросы у практикующих экспертов,
➡️ обменяться опытом с коллегами из других компаний.

Ждем вас!

🗓 29 ноября 2025 года
🗺 Москва, 2-й Кожуховский пр., д. 29, корп. 6 (МЦК «ЗИЛ»).

Участие бесплатно, но количество мест в офлайне не безлимитно. Так что советуем регистрироваться как можно скорее. Вступайте и в чат конференции. До встречи! 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
Lattice ECP3 FPGA Jamz-VCK9l9gmyDk.mp4
54.9 MB
Lattice ECP 3 FPGA Jamz

Ребята почему-то выпили этот видос из своего ютуба давным давно.
Но интернет должен помнить шедевры. Выложил, чтобы больше не потерять.

#meme
@positiveslack
🔥14😁5
RP2040 PIO vibecoded

Не, ну вы видели? В основу FS некто Jose выложил вайбкод имплементацию подсистемы PIO из RP2040 на AXI с тестами в кокотб. Ну и запилил презентацию. Это уже RTL задачки такого уровня щелкаются через LLM? 😱

Today I spent some money generating a verilog RP2040s PIO peripherial with AXI interface and cocotb testbench and iterate until the tests passed.
Later I used even more AI to create colorfull pretentations that Im not sure if really explain the code or simply hallucinate...

The code was generated using Claude Code with opus 4.5 model, iterating during about holf hour and for 15€.
The presentations was generated later, from the code, with NotebookLM, this is free with some daily usage

Это что, теперь на RTL можно даже MAS сразу же получать?
Хотя возможно читать его уже тоже будет некому вскоре 😂

@positiveslack
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🤯5😁2😭1
Simless cocotb

Тут недавно была новость что cocotb релизнул следующую мажорную версию.
Там очень много всего, а особенно радует что они очень сильно выравнялись по API со стандартным asyncio.
За это респект. Ну а тем кто будет делать миграцию своего кода - мои соболезнования🥳

Но хотел поднять тему того, что в мейнстриме до сих пор нету симулятора заглушки. stub-sim/mock-sim/virt-sim называйте как хотите.

Зачем? Ну чтобы писать VIP конечно! Любой сложный VIP требует довольно тщательного тестирования (тесты на тестовые компоненты, need_to_go_deeper.jpg) и при этом большая часть этого випа даже физические сигналы и клоки никогда в жизни не видит. А оперирует потоками транзакций и событиями. Поэтому было бы очень удобно подменить симулятор с настоящего на дешевую имитацию и гонять быстро тесты без RTL, не связываясь с настоящей медленной коммуникацией в симулятор и обратно.

Стоило подумать эту мысль, и сразу нашелся китаец, который всё сделал буквально 2 недели назад.😎
Вот его прототип такого stub-sim поверх последней второй версии кокотб
https://github.com/hongping/pytbv

#cocotb
@positiveslack
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥13😁3
Obsidian + Excalidraw

Btw, веду свои личные заметки в Obsidian по мере сил.

Часто текста не хватает и нужна графика - тут я привык использовать drawio (сейчас это diagrams.net). Хотя раньше были также попытки использования excalidraw, но чёт каждый раз не удавалось закрепить это почему-то.

Сейчас попалось видео от создателя плагина для excalidraw и это просто
🐸🐸🐸

https://youtu.be/P_Q6avJGoWI?si=uCBIT0Y7d25PizWU

Там за 17 минут показываются все основные фичи, и плотность фич, как и степень интеграции запредельная.

Даже если не пользуетесь просто посмотрите, по ощущениям это примерно как будто к двумерному миру добавляют ещё одну ось, делая его трехмерным☀️

#workflow
@positiveslack
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥106
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