TGViewer
позитивслэк позитивслэк @positiveslack · 993 subscribers
Post #386 1.21K
Проверка верилятора на прочность

Всё началось с проверки того, а насколько реально verilator поддерживает конструкции функционального покрытия. Спойлер, хоть есть существенные ограничения, но уже довольно неплохо, кажется для cocotb уже можно отказаться от pyvsc в пользу нативных кавергруп в интерфейсе. Но любопытно больше то, что железный ещё мне и багов пачку еще принес, которые нашел в процессе.

Стало интересно, а что если поженить "публичную поверхность" верилятора (issue, pr, доки, зеленые клетки sv-tests) прямо с главами стадарта и проверить на прочность а насколько хорошо действительно поддержано заявленное.

Включил /goal в кодексе и sol-xhigh погнал. В итоге вся работа (в несколько этапов) заняла 42 часа машинного времени и довольно прилично токенов (38.9M used, 1.38B in, 5.27M out). Все главы (3-41) были проработаны одна за другой и получилась примерно такая воронка:

🔻~3.5к сниппетов кода
🔻~1.5к из них диагностировали проблемы
🔻~630 кандидатов багов, проверенных против публичной инфы, икаруса и vcs
🔻~500 багов, без известных issue/pr.

И конечно же, больше всего дефектов в sva, coverage, randomization и configurations (кто-то вообще в реальности применяет config ... endconfig конструкции?), как самых молодых областях поддержки. Тут конечно возникает вопрос об отделении "фича пока не сделана" и "фича сделана с багом", но там есть варианты буквально всех сортов:

- легальная конструкция не принимается
- нелегальная конструкция принимается
- принимается, но игнориуется
- реализовано, но работает неправильно
- краши, внутренние ошибки на компиляции
- ошибки в рантайме

Особенно опасненькими выглядят баги из 7 главы про массивы - там есть и классические off-by-1 ошибки с потерей данных, и неожиданная аллокация данных, и порча данных.

Многие знания - многие скорби💧 Что делать теперь с этим богатством? Можно конечно форкнуть верилятор и сделать slopelator через "fix all bugs, make no mistakes", но думаю нужно идти максимально скучным способом. Руками валидировать наиболее критичные проблемы, репортить и предлагать помощь по фиксу.

Да, многие критикуют вайбкоженные симуляторы (1, 2), мол, ерундой занимаются, лучше бы верилятор сделали лучше. Но проблема в том, что это кратно менее веселая исследовательская задача и уже сильно больше похожая на работу🤡 Ведь просто одним промптом зарепортить 500 багов и предложить PR тоже не выйдет - вызовут санитаров и уедешь в дурку бан навсегда.

P.S. Красивая нейропдфка с визуализацией результатов в коментах.

P.P.S. Интересная сторонняя находка в том, что оказывается sv-tests довольно слабый и поверхностный, и на самом деле слабо отражает реальную степень поддержки стандарта. Поэтому кажется логичным текущие наработки дополнить и перевести в полноценный публичный torture-suite для EDA тулов против стандарта. Но это уже в другой серии...

P.P.P.S. Еще очень раздражало что у openai постоянно тригерились cybersecurity checks в районе проверок глав 30+, и тормозили выполнение /goal (пауза, пока не прожимешь enter руками). Видно VPI/DPI это очень подозрительно и нормальные люди таким не должны заниматься🙂

#verilator #llm
@postiveslack
  • 🔥 11
  • 🤯 3
  • 🥱 1
More from @positiveslack
  1. Sep 18, 2026Чет я закопался в этой проблеме. Я что многого прошу? Я даже про единый формат баз данных…
  2. Aug 25, 2026Интеграция проприетарных форматов вейвформ Из предыдущего поста у меня родилось несколько…
  3. Aug 24, 2026wavepeek 3.0 С момента моего доклада прошло некоторое время и случился переход от v0.5.0 к…
  4. Aug 22, 2026Post #388
  5. Jul 31, 2026Поделюсь историей успеха на поприще ИИ-ассистированного баг-хантинга в RTL. А точнее, прор…
  6. Jul 12, 2026Yosys + SV 😎 Кстати SystemVerilog теперь в Yosys 0.67 (релиз пару дней назад): For System…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →