А какой у вас опыт формальной верификации?
Anonymous Poll
24%
Formal Enjoyer. JasperGold, VC Formal - мои лучшие друзья
23%
В компании активно не используем, но пытаемся разобраться и интегрировать formal в цикл разработки
58%
И без формалки справляемся: на неё нет ресурсов и времени
👍2
Forwarded from Марков цепи пропил
Media is too big
VIEW IN TELEGRAM
Прикольное, Jane Street опубликовали пазл на реверс асика
https://blog.janestreet.com/can-you-reverse-engineer-an-asic/
https://blog.janestreet.com/can-you-reverse-engineer-an-asic/
🔥18👍3
NVIDIA опубликовала 45-страничный whitepaper, подробно раскрывающий архитектуру Vera CPU
https://nvdam.widen.net/s/nmw5vblpqd/nvidia_vera_cpu_architecture_whitepaper
https://nvdam.widen.net/s/nmw5vblpqd/nvidia_vera_cpu_architecture_whitepaper
✍18👍12🔥5
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
С момента моего доклада прошло некоторое время и случился переход от 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
GitHub
Release wavepeek 3.0.0 · kleverhq/wavepeek
Release Notes
Added
Added repeated-option syntax to value --at and documented the existing append semantics of value --signals, change --signals, and extract generic --payload, including mixed com...
Added
Added repeated-option syntax to value --at and documented the existing append semantics of value --signals, change --signals, and extract generic --payload, including mixed com...
👍13
За последний месяц только и пишу о новых крутых опенсорс-проектах, которые повышают QoL в ежедневной рабочей рутине.
Половина из них к тому же разработана инженерами, с которыми я знаком👀
Так что спасибо LLM-кам и инженерам, которые находят свободное время, чтобы контрибьютить в эти проекты и делать жизнь людей в индустрии немножечко лучше😺
Половина из них к тому же разработана инженерами, с которыми я знаком
Так что спасибо LLM-кам и инженерам, которые находят свободное время, чтобы контрибьютить в эти проекты и делать жизнь людей в индустрии немножечко лучше
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18👀6
В чате канала недавно начали обсуждать тему образования, и стало интересно собрать немного живого опыта.
Есть ли среди подписчиков выпускники школ или студенты, которые пошли учиться на направления, связанные с ASIC design, микроэлектроникой или цифровой схемотехникой?
Поделитесь опытом:
1) Куда и на какую программу вы поступили?
2) Как сейчас обстоят дела с конкурсом в вашей стране или регионе? Насколько сложно попасть на такие направления?
3) Если уже учитесь - какие впечатления от университетской программы? Чего в ней не хватает, что хотелось бы добавить или изменить?
4) Насколько много практики именно по RTL, цифровому дизайну, архитектуре, verification и работе с реальными инструментами?
Я сам уже довольно давно не слежу плотно за академической средой, поэтому особенно интересно, как за последние годы изменился процесс обучения.
Отдельно любопытна тема массовой доступности нейросетей и AI-ассистентов. Как они повлияли на обучение техническим специальностям? Стало ли проще разбираться в сложных темах и делать проекты или, наоборот, стало сложнее отделять реальное понимание предмета от возможности быстро получить готовый ответ и убедить себя в том что тема усвоена?
Будет интересно почитать опыт из разных стран и университетов😎
Есть ли среди подписчиков выпускники школ или студенты, которые пошли учиться на направления, связанные с ASIC design, микроэлектроникой или цифровой схемотехникой?
Поделитесь опытом:
1) Куда и на какую программу вы поступили?
2) Как сейчас обстоят дела с конкурсом в вашей стране или регионе? Насколько сложно попасть на такие направления?
3) Если уже учитесь - какие впечатления от университетской программы? Чего в ней не хватает, что хотелось бы добавить или изменить?
4) Насколько много практики именно по RTL, цифровому дизайну, архитектуре, verification и работе с реальными инструментами?
Я сам уже довольно давно не слежу плотно за академической средой, поэтому особенно интересно, как за последние годы изменился процесс обучения.
Отдельно любопытна тема массовой доступности нейросетей и AI-ассистентов. Как они повлияли на обучение техническим специальностям? Стало ли проще разбираться в сложных темах и делать проекты или, наоборот, стало сложнее отделять реальное понимание предмета от возможности быстро получить готовый ответ и убедить себя в том что тема усвоена?
Будет интересно почитать опыт из разных стран и университетов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18😁1
Про учёбу поговорили, про академическую среду тоже. Давайте теперь про карьеру😡
Anonymous Poll
51%
Корпорат. Большая компания, узкая специализация, понятная карьерная лестница, годовой бонус за KPI
18%
Стартап. Есть шанс, что вас купит NVDA, а руководство честно поделится стоками и никого не прокинет
10%
Стабильность. Госкомпания, НИИ или research lab. Тише едешь - дальше будешь
11%
Сам себе хозяин. Открыть компанию, работать на себя или уйти в консалтинг независимым подрядчиком
10%
Свой вариант - пишите в комментариях
👀5✍2
Новый инструмент для работы с 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 целиком.
Как же это работает?
Больше деталей - https://github.com/muzafferkal/wzv
Как обычно выглядит регрессионное тестирование 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
GitHub
GitHub - muzafferkal/wzv: wzv — record now, get waveforms later
wzv — record now, get waveforms later. Contribute to muzafferkal/wzv development by creating an account on GitHub.
✍14😁3👍2
Наконец-то EDA-компании разобрались, как нужно продавать свои тулы инженерам💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🧵 Thread • FixupX
Athreya Anand (@athreyaanand)
Today we’re making a crazy promise to chip companies: we’ll erase every waveform dump run on your farm, cut your storage 100x, and hand your engineers back days from unnecessary simulation.
Might sound impossible, but we’re serious.
🗜️Introducing WaveZip…
Might sound impossible, but we’re serious.
🗜️Introducing WaveZip…
😁21🔥4✍1👍1
Forwarded from fpga_news
Jalapeño chip:
• OpenAI: https://openai.com/index/jalapeno-first-results/
• Semianalysis: https://newsletter.semianalysis.com/p/openai-jalapeno-better-than-nvidia
• Ian Cutress: https://www.youtube.com/watch?v=Ic0kYWjffjI
• OpenAI: https://openai.com/index/jalapeno-first-results/
• Semianalysis: https://newsletter.semianalysis.com/p/openai-jalapeno-better-than-nvidia
• Ian Cutress: https://www.youtube.com/watch?v=Ic0kYWjffjI
👍4🔥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
Там довольно много сильных архитектурных инсайдов: memory locality, организация NoC, работа с KV cache, latency hiding и в целом подход к проектированию inference ASIC.
Всем, кому интересны современные AI-accelerator архитектуры - читать. Ближе к выходным разберём самые интересные моменты подробнее в чатике канала.
https://zartbot.github.io/blog/arch/jalapeno/en.html
zartbot.github.io
Redesigning the Inference Chip: From Nvidia GPU's Flaws to OpenAI Jalapeño
First principles · Core Slice architecture · Memory subsystem · On-chip network · Software stack & design loop
👍10✍6🔥2
Ещё один сайт с коллекцией die shots.
Можно выбрать несколько чипов и сравнить их на одном preview в одинаковом масштабе - удобно для визуального сравнения размеров die:
https://kurnal-insights.com/en/tools/die-composer/
Ещё есть интерактивный roadmap, где чипы можно смотреть с сортировкой по годам выпуска:
https://kurnal-insights.com/en/roadmap/
Можно выбрать несколько чипов и сравнить их на одном preview в одинаковом масштабе - удобно для визуального сравнения размеров die:
https://kurnal-insights.com/en/tools/die-composer/
Ещё есть интерактивный roadmap, где чипы можно смотреть с сортировкой по годам выпуска:
https://kurnal-insights.com/en/roadmap/
🔥24👍1👀1 1
--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
В 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
Используете ли вы в ежедневых задачах WavePeek для анализа waveform?
Anonymous Poll
9%
Да, намного меньше использую классические viewerы. Спасибо разработчику тула за заботу о моих глазах
19%
Нет, не нашел применения в рабочих задачах. Глазами смотреть времянки надёжнее и понятнее
72%
Что это? Я еще с Corsair не разобрался 😑
👀5👍3 1
Кстати, есть тут кто в канале, кто уже тестировал Astra на schematic/PCB-задачах?
В Twitter, конечно, каждый второй пост в духе «ONE SHOTTED/ЭТО КОНЕЦ/ONE PROMT RESULT». Но буквально под каждым таким постом приходит PCB-инженер и разносит результат работы Astra
это невероятно уморительно читать, особенно когда автору поста буквально нечего ответить
Интересно услышать опыт тех, кто реально пробовал: насколько оно уже применимо в работе и какие рутинные задачи уже хорошо автоматизируются?
В Twitter, конечно, каждый второй пост в духе «ONE SHOTTED/ЭТО КОНЕЦ/ONE PROMT RESULT». Но буквально под каждым таким постом приходит PCB-инженер и разносит результат работы Astra
Интересно услышать опыт тех, кто реально пробовал: насколько оно уже применимо в работе и какие рутинные задачи уже хорошо автоматизируются?
😁20 14👍1
А вот и разборы решений пазла от Jane Street подъехали
https://mummanajagadeesh.github.io/blogs/janestreet-asic-puzzle/
Давайте в комментариях хвастаться кто сколько пасхалок нашел, а кто проглядел морязнку в KLayout, как я?😑
https://mummanajagadeesh.github.io/blogs/janestreet-asic-puzzle/
Давайте в комментариях хвастаться кто сколько пасхалок нашел, а кто проглядел морязнку в KLayout, как я?
Please open Telegram to view this post
VIEW IN TELEGRAM
👀8👍1