Опишите поведение по тактам
Перед генерацией счётчика или FIFO задайте разрядности, полярность сброса, задержку и поведение на границах. Для FIFO отдельно опишите одновременные чтение и запись, пустое и полное состояние. Попросите ИИ предложить RTL и таблицу тестов по этому контракту. Внимательно проверьте арифметику указателей, знаковость и условия обновления состояния.
Начните с lint
Для примера ниже предполагаются файл top.v и модуль top. Передайте реальные исходники и пути включений вашего проекта. Разберите предупреждения о ширине, недрайвленных сигналах и неполных присваиваниях. Просите ИИ объяснить конкретную диагностику и предложить минимальное исправление. Повторяйте проверку после патча; массовое отключение предупреждений скрывает полезные сигналы.
verilator --lint-only -Wall --top-module top top.vСопоставьте симуляцию и синтез
Запустите самопроверяющийся тест, затем синтез Yosys для целевого устройства. Изучите сообщения об иерархии, памяти, защёлках и статистику ресурсов. Verilator и Yosys решают разные задачи; прохождение одного инструмента не заменяет другой. Проверьте поддержку используемого подмножества HDL и не считайте успешный синтез подтверждением временных ограничений после размещения и трассировки.
Сохраните основания для принятия
Сохраните версии инструментов, список файлов, параметры, seed теста и отчёты. Проверьте сброс во время работы и каждую граничную ситуацию из контракта. При исправлении ошибки добавьте тест, который ранее падал. Для выпуска на FPGA дополните этот комплект ограничениями выводов и отчётом временного анализа целевого потока реализации.
Что проверить перед принятием результата
Lint, тесты и синтез дополняют друг друга; ни один из них сам по себе не доказывает правильность проекта.