Test generation has been a critical and labor-intensive process in hardware design verification. Recently, the emergence of Large Language Model (LLM) with their advanced understanding and inference capabilities, has introduced a novel approach. In this work, we investigate the integration of LLM into the Coverage Directed Test Generation (CDG) process, where the LLM functions as a Verilog Reader. It accurately grasps the code logic, thereby generating stimuli that can reach unexplored code branches. We compare our framework with random testing, using our self-designed Verilog benchmark suite. Experiments demonstrate that our framework outperforms random testing on designs within the LLM's comprehension scope. Our work also proposes prompt engineering optimizations to augment LLM's understanding scope and accuracy.
- ID статьи: 2406.04373
- Название: VerilogReader: LLM-Aided Hardware Test Generation
- Авторы: Ruiyang Ma, Yuxin Yang, Ziqian Liu, Jiaxi Zhang, Min Li, Junhua Huang, Guojie Luo
- Классификация: cs.SE cs.AI
- Дата публикации: 3 июня 2024 г. (препринт arXiv)
- Ссылка на статью: https://arxiv.org/abs/2406.04373
- Открытый исходный код: https://github.com/magicYang1573/llm-hardware-test-generation
Генерация тестов всегда была критическим и трудоёмким процессом в верификации аппаратного обеспечения. В последние годы большие языковые модели (LLM) благодаря своим передовым способностям понимания и рассуждения внесли новые подходы в эту область. В данном исследовании рассматривается интеграция LLM в процесс генерации тестов, ориентированной на покрытие (CDG), где LLM действует в качестве читателя кода Verilog, точно понимая логику кода и генерируя стимулы, способные достичь неисследованных ветвей кода. Авторы сравнивают предложенный фреймворк со случайным тестированием, используя самостоятельно разработанный набор тестов Verilog. Экспериментальные результаты показывают, что фреймворк превосходит случайное тестирование на проектах в пределах диапазона понимания LLM, и предлагаются оптимизации инженерии подсказок для расширения диапазона понимания и точности LLM.
- Важность верификации оборудования: С ростом сложности оборудования верификация становится всё более критичной в процессе разработки. Необнаруженные ошибки в оборудовании могут привести к серьёзным последствиям и значительным финансовым потерям.
- Существующие методы верификации: Инженеры в основном используют два подхода:
- Формальная верификация: использование математических методов для доказательства корректности системы
- Динамическая верификация: генерация разнообразных тестовых случаев для моделирования проектируемого устройства (DUT)
- Вызовы генерации тестов: Достижение целей покрытия требует высококачественных входных данных тестов, что создаёт значительную нагрузку на инженеров верификации.
- Потребность в автоматизации: Для снижения ручного вмешательства генерация тестов, ориентированная на покрытие (CDG), стала ключевой технологией автоматизации генерации тестов оборудования.
- Возможности LLM: Мощные способности LLM в понимании и рассуждении предоставляют новые возможности для области генерации тестов оборудования.
- Дифференцированное позиционирование: В отличие от предыдущих исследований, сосредоточенных на функциональных точках покрытия, данная работа сосредоточена на покрытии кода как более фундаментальной цели тестирования, позиционируя LLM как "VerilogReader".
- Открытый фреймворк: Впервые опубликован открытый фреймворк интеграции LLM в процесс CDG, использующий LLM в качестве VerilogReader для понимания кода Verilog и покрытия, с целью генерации тестов для закрытия покрытия кода.
- Модуль оптимизации подсказок: Предложены модули Coverage Explainer и DUT Explainer для обогащения подсказок, повышения понимания LLM проекта и намерений тестирования, улучшения масштабируемости фреймворка.
- Набор тестов: Создан набор тестов, содержащий 24 проекта Verilog простого, среднего и сложного уровней. Эксперименты показывают, что фреймворк превосходит случайное тестирование на DUT простого и среднего уровней.
- Исследование границ возможностей: Чётко определены максимальные границы возможностей современных LLM в чтении Verilog.
Задача данной работы заключается в использовании LLM для понимания логики кода Verilog и текущего состояния покрытия, генерации многоцикловых входных стимулов, способных активировать непокрытые ветви кода, для повышения покрытия кода.
Весь фреймворк использует итеративный процесс CDG, включающий следующие основные компоненты:
- Ядро LLM: Генерирует входные данные в формате JSON в каждой итерации
- Декодер входных данных: Преобразует входные данные в формате JSON в аппаратные стимулы
- Монитор покрытия: Предоставляет информацию о текущем покрытии кода
- Модули объяснения: Включают Coverage Explainer и DUT Explainer
Использует двухраундовый механизм вопросов и ответов:
- Первый раунд: Информирует LLM о целях тестирования, предоставляет информацию о DUT и данные покрытия, LLM отвечает на естественном языке
- Второй раунд: Направляет LLM преобразовать ответ в стандартизированный формат JSON
Преобразует сложные отчёты о покрытии в формат, понятный LLM:
- Исходный формат: Отчёт о покрытии Verilator, содержащий уникальные идентификаторы и счётчики попаданий
- Аннотированный формат: Аннотированный отчёт, созданный инструментом verilator_coverage
- Формат, читаемый LLM: Специально разработанный формат с флагом 'TO BE COVERED' для непокрытых строк
Предоставляет две функции для улучшения понимания LLM о DUT:
- Описание проекта: Предоставляет описание функциональности DUT и внутренней логики на естественном языке
- Руководство по тестированию: Предоставляет дополнительную информацию и базовые правила логики тестирования для создания тестов конкретного DUT
- Фокус на покрытие кода: Впервые применено LLM к покрытию кода оборудования, а не к функциональным точкам покрытия
- Поэтапная обработка: Разложение задачи генерации тестов на два этапа: понимание DUT и вывод логики входных данных
- Разметка на естественном языке: Использование естественного языка для разметки непокрытых строк, упрощение процесса рассуждения LLM
- Двухраундовое взаимодействие: Содействие пошаговому мышлению LLM через двухраундовый диалог
Самостоятельно разработанный набор тестов содержит 24 проекта Verilog, разделённых на три уровня сложности:
- Простой уровень (s01-s10): 10 базовых комбинационных логических схем (мультиплексоры, АЛУ и т.д.)
- Средний уровень (m01-m08): 8 последовательностных логических схем (FSM, счётчики, арбитры и т.д.)
- Сложный уровень (c01-c06): 6 крупномасштабных FSM схем (16-128 состояний)
- Основная метрика: Общая длина входных стимулов, необходимых для достижения полного покрытия (в тактовых циклах)
- Покрытие: Процент покрытия строк
- Временная эффективность: Количество итераций для достижения целевого покрытия
- Случайное тестирование: Базовый метод сравнения
- Различные форматы отчётов о покрытии: Исходный формат, аннотированный формат, формат, читаемый LLM
- Языковые модели: OpenAI GPT-4 и GPT-4-Turbo-0125
- Симулятор: Verilator
- Анализ кода: Pyverilog
- Повторение экспериментов: Каждый эксперимент повторён 5 раз для учёта случайности LLM
Результаты экспериментов на DUT среднего уровня с использованием GPT-4 показывают:
- Отчёты о покрытии, читаемые LLM, значительно превосходят исходный и аннотированный форматы
- Исходные нечитаемые отчёты о покрытии представляют наибольшую сложность для LLM
- Флаг 'TO BE COVERED' с разметкой на естественном языке эффективно улучшает понимание
Результаты экспериментов на DUT простого и среднего уровней показывают:
- Фреймворк LLM использует значительно меньше входных данных для достижения 100% покрытия
- Случайное тестирование часто не достигает полного покрытия в течение одной минуты на последовательностных проектах с трудно достижимыми ветвями
- GPT-4 и GPT-4-Turbo показывают сходные результаты в задачах генерации тестов оборудования
- Описание проекта: Описания проектов, созданные LLM, улучшают понимание проекта во время генерации тестов
- Руководство по тестированию: Эффект непостоянен, в некоторых проектах (m05, m06) снижает разнообразие входных данных
Результаты экспериментов на FSM сложного уровня показывают:
- FSM с 16 состояниями: близко к 100% покрытию строк после 20 итераций
- FSM с 64 состояниями и более: покрытие не превышает 50%
- С увеличением размера DUT качество генерации тестов резко снижается
- LLM показывает отличные результаты на проектах простой и средней сложности
- Современные LLM имеют явные ограничения при работе с крупномасштабными проектами Verilog
- Надлежащая инженерия подсказок может значительно улучшить производительность LLM
- Формат отчёта о покрытии критически важен для понимания LLM
- Исследование пространства входных данных на основе эвристических методов
- Использование состояния покрытия в качестве основной обратной связи для генерации новых тестовых случаев
- Использование информации о структуре схемы (графы управления/потока данных, карты соединений модулей) для направления генерации тестов
- Написание RTL: Автоматическая генерация кода описания оборудования
- Генерация утверждений: Генерация утверждений верификации
- Исправление ошибок: Исправление ошибок в проектах оборудования
- Функциональная верификация: Работа Zhang и др. по верификации функциональных точек покрытия
В отличие от предыдущих работ, сосредоточенных на описаниях высокоуровневых функциональных планов тестирования, данная работа сосредоточена на более фундаментальной цели покрытия кода, требующей глубокого понимания LLM логики кода Verilog.
- LLM может эффективно понимать проекты Verilog простой и средней сложности и генерировать целевые входные данные тестов
- Надлежащая инженерия подсказок (особенно объяснение покрытия) критически важна для производительности LLM
- Современные LLM имеют явные ограничения при работе с крупномасштабными и сложными проектами оборудования
- Ограничение по масштабу: Для сложных проектов с более чем 100 строками кода производительность LLM значительно снижается
- Понимание структуры: LLM испытывает трудности с пониманием высокоструктурированной природы Verilog
- Сквозное применение: Прямое применение LLM в промышленных проектах оборудования остаётся сложной задачей
- Улучшение DUT Explainer: Предоставление более полных высокоуровневых абстракций проекта и намерений верификации
- Мультимодальное слияние: Объединение LLM и графических нейронных сетей (GNN), использование LLM для семантического объяснения и GNN для обработки структурной информации
- Иерархическая обработка: Направление LLM на решение задач генерации тестов с макроскопической перспективы
- Высокая инновационность: Впервые применено LLM к генерации тестов покрытия кода оборудования с чётким позиционированием
- Системный подход: Предложен полный фреймворк с несколькими модулями оптимизации
- Достаточные эксперименты: Построен многоуровневый набор тестов, обоснованный дизайн экспериментов
- Открытый вклад: Предоставлен открытый фреймворк, способствующий развитию области
- Исследование границ: Чётко определены границы возможностей современных LLM
- Ограничение по масштабу: Эффективен только на относительно простых проектах, далёк от практического промышленного применения
- Ограничение набора тестов: Самостоятельно разработанный набор может быть неполным, отсутствует сравнение с промышленными стандартными наборами
- Анализ затрат: Отсутствует подробное сравнение затрат на вызовы LLM с традиционными методами
- Теоретический анализ: Отсутствует глубокий теоретический анализ того, почему LLM эффективен в этой задаче
- Академическая ценность: Открывает новое направление применения LLM в области верификации оборудования
- Практический потенциал: Имеет практическую ценность в образовательной среде и верификации проектов среднего масштаба
- Вдохновляющее значение: Предоставляет ценные базовые линии и идеи для последующих исследований
- Образовательная среда: Подходит для автоматизированной генерации тестов в курсах проектирования оборудования
- Верификация прототипов: Применимо для быстрой верификации на ранних этапах проектирования
- Проекты малого и среднего масштаба: Имеет практическую ценность для модулей Verilog объёмом менее 100 строк
- Вспомогательный инструмент: Может служить вспомогательным инструментом для инженеров верификации, снижая часть рабочей нагрузки
Статья ссылается на 19 связанных работ, охватывающих формальную верификацию, динамическую верификацию, методы CDG, применение LLM в области оборудования и другие аспекты, обеспечивая прочную теоретическую базу для исследования.
Общая оценка: Это инновационная работа в области пересечения LLM и верификации оборудования. Хотя она имеет ограничения в масштабируемости, она предоставляет ценное исследование и основу для развития этой области. Методология работы систематична, эксперименты достаточны, открытый вклад ясен, обладает хорошей академической ценностью и вдохновляющим значением.