2025-11-16T06:52:11.231184

VerilogReader: LLM-Aided Hardware Test Generation

Ma, Yang, Liu et al.
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.
academic

VerilogReader: LLM-Aided Hardware Test Generation

基本信息

摘要

测试生成一直是硬件设计验证中的关键且劳动密集型过程。近年来,大语言模型(LLM)凭借其先进的理解和推理能力,为这一领域引入了新的方法。本研究探讨了将LLM集成到覆盖率导向测试生成(CDG)过程中,其中LLM作为Verilog代码阅读器,准确理解代码逻辑,生成能够到达未探索代码分支的激励。作者使用自设计的Verilog基准测试套件将该框架与随机测试进行比较,实验表明该框架在LLM理解范围内的设计上优于随机测试,并提出了提示工程优化来增强LLM的理解范围和准确性。

研究背景与动机

问题背景

  1. 硬件验证的重要性: 随着硬件复杂性的激增,硬件验证在开发过程中变得愈发重要。未检测到的硬件错误可能导致重大后果和巨大经济损失。
  2. 现有验证方法: 工程师主要采用两种验证方法:
    • 形式化验证:使用数学技术证明系统的正确性
    • 动态验证:生成多样化测试用例模拟待测设计(DUT)
  3. 测试生成挑战: 覆盖率目标的实现需要高质量的测试输入,这给验证工程师带来了巨大的人力负担。

研究动机

  1. 自动化需求: 为减少人工干预,覆盖率导向测试生成(CDG)成为自动化硬件测试生成的关键技术。
  2. LLM的机遇: LLM在理解和推理方面的强大能力为硬件测试生成领域提供了新的机遇。
  3. 差异化定位: 与之前专注于功能覆盖点的研究不同,本文专注于代码覆盖率这一更基础的测试目标,将LLM定位为"VerilogReader"。

核心贡献

  1. 开源框架: 首次开源了将LLM集成到CDG过程的框架,将LLM用作VerilogReader来理解Verilog代码和覆盖率,旨在生成代码覆盖率闭合的测试。
  2. 提示优化模块: 提出了Coverage Explainer和DUT Explainer模块来丰富提示,增强LLM对设计和测试意图的理解,提高框架的可扩展性。
  3. 基准测试套件: 创建了包含24个简单、中等和复杂级别Verilog设计的基准测试套件,实验表明框架在简单和中等级别DUT上优于随机测试。
  4. 能力边界探索: 明确了当前LLM在Verilog阅读方面的最大能力边界。

方法详解

任务定义

本文的任务是利用LLM理解Verilog代码逻辑和当前覆盖率状态,生成能够触发未覆盖代码分支的多周期输入激励,以实现代码覆盖率的提升。

模型架构

基础框架

整个框架采用迭代式的CDG过程,包含以下核心组件:

  1. LLM核心: 在每次迭代中生成JSON格式的多周期输入
  2. 输入解码器: 将JSON格式输入解码为硬件激励
  3. 覆盖率监控器: 提供当前代码覆盖率信息
  4. 解释器模块: 包括Coverage Explainer和DUT Explainer

Prompt Generator

采用两轮问答机制:

  • 第一轮: 告知LLM测试目标,提供DUT信息和覆盖率数据,LLM以自然语言回应
  • 第二轮: 指导LLM将回应转换为标准化JSON格式

Coverage Explainer

将复杂的覆盖率报告转换为LLM可理解的格式:

  1. 原始格式: Verilator覆盖率报告,包含唯一标识符和命中计数
  2. 注释格式: 使用verilator_coverage工具创建的带注释报告
  3. LLM可读格式: 专门设计的格式,为未覆盖行添加'TO BE COVERED'标志

DUT Explainer

提供两种功能来增强LLM对DUT的理解:

  1. 设计描述: 提供DUT功能和内部逻辑的自然语言解释
  2. 测试指导: 提供创建特定DUT测试的补充信息和基本测试逻辑规则

技术创新点

  1. 代码覆盖率聚焦: 首次将LLM应用于硬件代码覆盖率而非功能覆盖点
  2. 分阶段处理: 将测试生成任务分解为DUT理解和输入逻辑推理两个阶段
  3. 自然语言标记: 使用自然语言标记未覆盖行,简化LLM的推理过程
  4. 双轮交互: 通过两轮问答促进LLM的逐步思考过程

实验设置

数据集

自建基准测试套件包含24个Verilog设计,分为三个难度级别:

  1. 简单级别(s01-s10): 10个基础组合逻辑电路(多路复用器、ALU等)
  2. 中等级别(m01-m08): 8个时序逻辑电路(FSM、计数器、仲裁器等)
  3. 复杂级别(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在硬件测试生成任务上表现相似

DUT解释优化效果

  • 设计描述: LLM生成的设计描述改善了测试生成期间的设计理解
  • 测试指导: 效果不一致,在某些设计(m05、m06)中反而降低了输入多样性

LLM可扩展性分析

对复杂级别FSM的实验结果显示:

  • 16状态FSM: 20次迭代后接近100%线覆盖率
  • 64状态以上FSM: 覆盖率无法超过50%
  • 随着DUT规模增加,测试生成质量急剧下降

实验发现

  1. LLM在简单和中等复杂度设计上表现出色
  2. 当前LLM在处理大规模Verilog设计时存在明显局限性
  3. 适当的提示工程可以显著改善LLM性能
  4. 覆盖率报告格式对LLM理解至关重要

相关工作

传统CDG方法

  • 基于启发式方法探索输入空间
  • 使用覆盖率状态作为生成新测试用例的基本反馈
  • 利用电路结构信息(控制/数据流图、模块连接图)指导测试生成

LLM在硬件领域的应用

  • RTL编写: 自动生成硬件描述语言代码
  • 断言生成: 生成验证断言
  • 错误修复: 修复硬件设计中的错误
  • 功能验证: Zhang等人的功能覆盖点验证工作

本文的差异化定位

相比于专注于高级功能测试计划描述的先前工作,本文专注于更基础的代码覆盖率目标,要求LLM深入理解Verilog代码逻辑。

结论与讨论

主要结论

  1. LLM可以有效理解简单和中等复杂度的Verilog设计并生成有针对性的测试输入
  2. 适当的提示工程(特别是覆盖率解释)对LLM性能至关重要
  3. 当前LLM在处理大规模、复杂硬件设计时存在明显局限性

局限性

  1. 规模限制: 对于超过100行代码的复杂设计,LLM性能显著下降
  2. 结构理解: LLM难以理解Verilog的高度结构化特性
  3. 端到端应用: 在工业级硬件设计中直接应用LLM仍然具有挑战性

未来方向

  1. 增强DUT Explainer: 提供更全面的高级设计抽象和验证意图
  2. 多模态融合: 结合LLM和图神经网络(GNN),利用LLM进行语义解释,GNN处理结构信息
  3. 分层处理: 从宏观角度指导LLM处理测试生成任务

深度评价

优点

  1. 创新性强: 首次将LLM应用于硬件代码覆盖率测试生成,定位明确
  2. 系统性方法: 提出了完整的框架,包括多个优化模块
  3. 实验充分: 构建了多层次的基准测试套件,实验设计合理
  4. 开源贡献: 提供开源框架,促进领域发展
  5. 边界探索: 明确了当前LLM能力的边界

不足

  1. 规模局限: 仅在相对简单的设计上有效,距离实际工业应用还有差距
  2. 基准限制: 自建基准可能不够全面,缺乏与工业标准基准的对比
  3. 成本分析: 缺乏LLM调用成本与传统方法的详细对比
  4. 理论分析: 对为什么LLM在这个任务上有效缺乏深入的理论分析

影响力

  1. 学术价值: 开辟了LLM在硬件验证领域的新应用方向
  2. 实用潜力: 在教育和中小规模设计验证中具有实际应用价值
  3. 启发性: 为后续研究提供了有价值的基线和思路

适用场景

  1. 教育环境: 适合用于硬件设计课程的自动化测试生成
  2. 原型验证: 适用于早期设计阶段的快速验证
  3. 中小规模设计: 对于100行以内的Verilog模块具有实用价值
  4. 辅助工具: 可作为验证工程师的辅助工具,减轻部分工作负担

参考文献

论文引用了19篇相关文献,涵盖了形式化验证、动态验证、CDG方法、LLM在硬件领域的应用等多个方面,为研究提供了坚实的理论基础。


总体评价: 这是一篇在LLM与硬件验证交叉领域的创新性工作,虽然在规模化应用方面还有局限,但为该领域的发展提供了有价值的探索和基础。论文方法系统、实验充分、开源贡献明确,具有较好的学术价值和启发意义。