Записки CPU designer'a
3.5K subscribers
224 photos
3 videos
5 files
326 links
Всем привет. Меня зовут Николай.
Работаю RTL design инженером, амбассадором в RISC-V International.
В свободное время пишу о магии процессоростроения и цифровом дизайне.
Download Telegram
NVIDIA опубликовала 45-страничный whitepaper, подробно раскрывающий архитектуру Vera CPU

https://nvdam.widen.net/s/nmw5vblpqd/nvidia_vera_cpu_architecture_whitepaper
18👍12🔥5
Forwarded from Verification Haven
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥8
Forwarded from позитивслэк
wavepeek 3.0

С момента моего доклада прошло некоторое время и случился переход от v0.5.0 к v3.0.0.

Краткий рекап или в предыдущих сериях:

▫️1.0 - добавлена поддержка FSDB, организованы бинарные релизы, сильный прирост по покрытию тестами и куча измений по усилению автоматизации проекта
▫️2.0 - появился потоковый вывод JSONL, внедрение pre-edge сэмплирования (мимикрия под семантику RTL и лечение off-by-1-tick ошибок)
▫️2.1 - добавлено extract семейство с первой подкомандой generic для извлечения произвольных синхронных событий (любые хэндшейки, трансферы под валидностью и пр.)
▫️2.2 - добавлены экстракторы событий AMBA протоколов (AXI, AXI-Stream, AHB, APB и ATB).
▫️3.0 - добавлены битовые диапазоны в указание любых сигналов, унификация машинного вывода, переработка и удаление некоторых команд и десяток других QoL изменений, включая рефакторинг документации

Последний мажорный релиз был больше работой над ошибками и обработкой той обратной связи что накопилась: я сам использовал, получал репосты и трассы от других юзеров, и на основе кусочка CVDP сделал небольшой бенч, чтобы пособирать "синтетические" трассы с разных моделей по задачам агентного дебага RTL.

Сейчас тул находится в той точке, которая я рассчитываю будет стабильной и долговременной, но в любом случае возможны доработки и фиксы. Обратная связь всё ещё приветствуется и жадно собирается🔍

И да, just for fun заюзал свойство rust без проблем компилиться в wasm, и теперь есть полноценная веб версия wavepeek для демонстрации и работы без установки:
https://kleverhq.github.io/wavepeek/
Да, всё работает прямо в браузере, вейвы не покидают вашу машину.

Остался незакрытым гештальт с организацией полноценных бенчмарков, но возможно ещё к этому вернусь.
Уже например писал авторам WaveformQA из tenstorrent. Сказали что код бенча из статьи проходит их внутренних ИБшников и появится через пару недель на гитхабе (пару недель уже прошло конечно же).

Такие вот дела в вайб-eda-королевстве⌨️

#tools
@positiveslack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
За последний месяц только и пишу о новых крутых опенсорс-проектах, которые повышают QoL в ежедневной рабочей рутине.

Половина из них к тому же разработана инженерами, с которыми я знаком👀

Так что спасибо LLM-кам и инженерам, которые находят свободное время, чтобы контрибьютить в эти проекты и делать жизнь людей в индустрии немножечко лучше😺
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18👀6
В чате канала недавно начали обсуждать тему образования, и стало интересно собрать немного живого опыта.

Есть ли среди подписчиков выпускники школ или студенты, которые пошли учиться на направления, связанные с ASIC design, микроэлектроникой или цифровой схемотехникой?

Поделитесь опытом:

1) Куда и на какую программу вы поступили?
2) Как сейчас обстоят дела с конкурсом в вашей стране или регионе? Насколько сложно попасть на такие направления?
3) Если уже учитесь - какие впечатления от университетской программы? Чего в ней не хватает, что хотелось бы добавить или изменить?
4) Насколько много практики именно по RTL, цифровому дизайну, архитектуре, verification и работе с реальными инструментами?

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

Отдельно любопытна тема массовой доступности нейросетей и AI-ассистентов. Как они повлияли на обучение техническим специальностям? Стало ли проще разбираться в сложных темах и делать проекты или, наоборот, стало сложнее отделять реальное понимание предмета от возможности быстро получить готовый ответ и убедить себя в том что тема усвоена?

Будет интересно почитать опыт из разных стран и университетов😎
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18😁1
Новый инструмент для работы с Verilator-based регрессиями - wzv. record now, get waveforms later

Как обычно выглядит регрессионное тестирование RTL?

На условный IP есть большой набор тестов. Писать полный waveform dump для каждого из них - плохая идея: очень быстро закончится место на диске, а сама симуляция из-за tracing может замедлиться.

Поэтому regression обычно запускают без waves.
А дальше начинается классический debug workflow:

1) Запускаем regression без tracing.
2) Тест из regression коллекци падает, допустим, через 40 минут.
3) Видим error и время падения.
4)Пересобираем или перезапускаем тест с --trace-fst.
5) Ждём, ждём, ждём.
6) Получаем огромный FST файл, где информация нужна не вся, а в некотором окне от момента падения.

wzv решает именно эту проблему.
Вместо полного waveform dump симуляция запускается практически как обычно, но wzv записывает только информацию, которую Verilator не сможет потом восстановить самостоятельно:
- значения top-level inputs при каждом eval();
- simulation/tick time;
- периодические checkpoints состояния модели через VerilatedSave.

Такая запись получается очень маленькой и почти не влияет на скорость основной regression.
После падения теста workflow становится примерно таким:

1) Запускаем regression + wzv.
2) Тест падает. Получаем failure time.
3) Запускаем wzv replay только для небольшого окна, относительно failure time.
4) Получаем небольшой FST для интересующего участка.

То есть вместо того, чтобы заранее сохранять огромные дампы значений внутренних сигналов, мы сохраняем stimulus + checkpoints, а waveform восстанавливаем post-mortem только там, где он реально понадобился.
Причём можно восстановить как произвольное временное окно, так и весь run целиком.

Как же это работает?
This works because a Verilator model (2-state, --no-timing) is a deterministic function of its state and its inputs: the waveform carries no information beyond the input stream, so it doesn't have to be stored — only replayed. Checkpoints exist purely so replay can start near the window you ask for instead of at time 0.


Больше деталей - https://github.com/muzafferkal/wzv
14😁3👍2
И в дополнение к посту выше - практически исчерпывающий разбор доклада OpenAI о Jalapeño с конференции Hot Chips 2026.

Там довольно много сильных архитектурных инсайдов: memory locality, организация NoC, работа с KV cache, latency hiding и в целом подход к проектированию inference ASIC.

Всем, кому интересны современные AI-accelerator архитектуры - читать. Ближе к выходным разберём самые интересные моменты подробнее в чатике канала.

https://zartbot.github.io/blog/arch/jalapeno/en.html
👍106🔥2
Ещё один сайт с коллекцией die shots.

Можно выбрать несколько чипов и сравнить их на одном preview в одинаковом масштабе - удобно для визуального сравнения размеров die:

https://kurnal-insights.com/en/tools/die-composer/

Ещё есть интерактивный roadmap, где чипы можно смотреть с сортировкой по годам выпуска:

https://kurnal-insights.com/en/roadmap/
🔥24👍1👀11
--x-initial-edge в Verilator: зачем он нужен

В Verilator есть флаг --x-initial-edge. Он решает давнюю проблему разницы в поведении между Verilator и big3 симуляторами (VCS, Questa, Xcelium).

В чём суть проблемы?
В стандарте IEEE 1800 SystemVerilog (см. Table 6-7 default values) в момент времени T = 0 4-state переменные имеют значение 'X'. Согласно стандарту system verilog переход из 'X' в '0' расценивается как negedge, а из 'X' в '1' - как posedge (см. Table 9-2).
В Verilator по умолчанию начальное значение сигналов для такой edge-детекции считается равным 0. Из-за этого установка сигнала в 0 в момент T=0 выглядит как 0 -> 0 и не генерирует negedge.

Почему это критично?
Это казалось бы незначительное отличие особенно заметно при отладке схем с Clock Gate контроллерами. Если clock подмодуля во время reset загейчен (clock отсутсвует), асинхронный reset может быть единственным событием, которое переводит внутреннее состояние блока в reset state.
Но код на скриншоте в Verilator не срабатывал, поскольку Verilator по умолчанию не моделировал начальный переход X -> 0 как negedge.

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

1) 0 (T0) -> 1 -> 0 // создаём настоящий negedge
2) 0 -> 1 // снимаем reset

Теперь такие костыли городить не нужно, подробности:

https://veripool.org/guide/latest/exe_verilator.html#cmdoption-x-initial-edge
8👍7🔥1
Forwarded from Сиолошная
Astra появилась в Codex
👍14🎉6😁1👀1
Кстати, есть тут кто в канале, кто уже тестировал Astra на schematic/PCB-задачах?

В Twitter, конечно, каждый второй пост в духе «ONE SHOTTED/ЭТО КОНЕЦ/ONE PROMT RESULT». Но буквально под каждым таким постом приходит PCB-инженер и разносит результат работы Astra
это невероятно уморительно читать, особенно когда автору поста буквально нечего ответить

Интересно услышать опыт тех, кто реально пробовал: насколько оно уже применимо в работе и какие рутинные задачи уже хорошо автоматизируются?
😁2014👍1
А вот и разборы решений пазла от Jane Street подъехали🫪

https://mummanajagadeesh.github.io/blogs/janestreet-asic-puzzle/

Давайте в комментариях хвастаться кто сколько пасхалок нашел, а кто проглядел морязнку в KLayout, как я?😑
Please open Telegram to view this post
VIEW IN TELEGRAM
👀8👍1