← 返回 PaperDaily 视觉与图像

台大&哈佛最新STG:LLM写Verilog测试平台,比迭代法快720倍,还除掉了经典benchmark

LLM生成的Verilog代码质量再高,最后还得靠验证来把关。往小了说是洗数据,往大了说是测试时搜索的命门。今天这篇台大和哈佛的STG,直接把测试平台生成从“玄学”变成了确定性程序,不仅快得离谱,还顺手揪出了经典benchmark里藏了多年的bug。

台大&哈佛最新STG:LLM写Verilog测试平台,比迭代法快720倍,还除掉了经典benchmark
🐉 龙哥读论文知识星球来了!
公众号每日8篇拆解不够看?星球无上限更AI领域论文、资讯、招聘、招博、开源代码,一站式干货,每日2分钟刷完即赚! 👇扫码加入「龙哥读论文」知识星球,前沿干货、实用资源一站式拿捏~ xingqiu_header

龙哥推荐理由:
LLM生成的Verilog代码质量再高,最后还得靠验证来把关。往小了说是洗数据,往大了说是测试时搜索的命门。今天这篇台大和哈佛的STG,直接把测试平台生成从“玄学”变成了确定性程序,不仅快得离谱,还顺手揪出了经典benchmark里藏了多年的bug。


原论文信息如下:
论文标题:
Structured Testbench Generation for LLM-Driven HDL Design and Verification-Oriented Data Curation
发表日期:
2026年06月
发表单位:
National Taiwan University, Academia Sinica, Harvard University
原文链接:
https://arxiv.org/pdf/2606.12983v1.pdf
开源代码链接:
https://huggingface.co/collections/AS-SiliconMind/siliconmind-v12

引言:当LLM遇上硬件验证,成本与噪音的博弈

随着LLM在HDL代码生成上大放异彩,验证成为关键瓶颈。传统做法让LLM写测试平台,如同考生自己出题判卷,随机性大、成本高、易漏判。当验证嵌入搜索循环或数据清洗管道时,任何不可靠信号都可能导致系统跑偏。
本文提出的STG框架,通过解析硬件设计结构,用确定性模板化渲染生成测试平台,不依赖LLM“随机发挥”。结果:生成速度快720倍,覆盖率和可靠性更高,甚至在经典benchmark中揪出了隐藏多年的竞争条件bug。
插图

方法概述:STG如何将测试平台生成从“玄学”变成“程序”

STG核心理念:把测试平台生成看作有结构的过程。输入为DUT和黄金参考,通过三步产出结果:分析HDL结构、根据设计类型生成测试平台、编译执行。
图1:STG的整体工作流
图1:STG的整体工作流。红色线为主流程;蓝色线为银参考扩展;黑色线为共有步骤。

模块解析与设计类型分类

STG首先解析模块实例化关系,构建有向无环图并识别顶层模块。通过检查端口是否有时钟区分组合/时序逻辑;对时序逻辑,通过模式匹配或轻量LLM查询判断是否为FSM主导型。每种设计类型使用完全不同的激励生成策略。
*表格超出部分左右可以滑动
设计类型 检测标准 生成策略
组合逻辑 端口列表中无时钟 穷举/随机
通用时序逻辑 有时钟,无FSM 分阶段随机
FSM主导型 有时钟,检测到FSM 转换引导
表1:设计类型分类及对应策略。

核心设计:三大策略应对不同设计类型

STG根据设计类型,为组合逻辑、通用时序逻辑和FSM主导型分别定制了不同的激励生成策略。

组合逻辑:穷举控制信号 + 随机数据信号

对于无时钟的组合逻辑,STG先分类信号(时钟、复位、控制、数据),穷举所有控制信号组合(共2的b_ctrl次方种),再对每种组合随机采样数个数据值。确保每个控制路径都被测试,数据路径通过随机采样保证覆盖。总输入宽度很小时,相当于穷举验证。

通用时序逻辑:两阶段、复位感知、多比较点

时序逻辑验证更复杂,尤其是Mealy型与Moore型输出的混合行为。STG设计了两阶段、复位感知的激励策略,在时钟周期内部和时钟沿处都设置比较点。先随机注入数据让设计积累状态,然后穷举控制信号,最后在每种控制下再随机采样数据。复位信号根据同步/异步类型在不同阶段以特定方式施加。
图2:通用时序策略的时序结构
图2:通用时序策略的时序结构。标记为"mealy"的信号对应周期内响应,"moore"信号对应寄存器响应。STG在周期内输入变化后及负沿、正沿处都插入比较点,两种行为都能被观察到。

FSM主导型:状态转换图遍历

对于深层次状态机,随机激励无法触及所有状态。STG通过FSM检测获取状态转换图,生成C++测试平台,用DFS遍历所有可到达的转换边。将守卫条件分解为“输入条件”和“等待条件”,分别进行确定性驱动和自然等待。若某转换无法实现,则复位并回溯,保证100%转换覆盖率。
图3:FSM引导遍历示例
图3:FSM引导遍历示例。STG将可直接驱动的输入信号与内部等待条件分离开来。

三大应用场景的惊艳表现

STG被设计为LLM驱动HDL工作流的通用验证后端,覆盖三个紧密相关的场景:直接RTL验证、验证导向的数据清洗、测试时缩放。

直接RTL验证:快速、靠谱的“判官”

STG生成的测试平台用于检验DUT是否正确。它能揪出那些通过LLM测试平台但实际有bug的“漏网之鱼”。更重要的是,STG在VerilogEval基准测试中发现了一种系统性竞争条件:激励和检查代码在同一个时钟沿触发,导致检查器可能读到不稳定的输出值。STG通过手动插入延迟修复了此问题。
下面是STG作为验证引擎的效率和准确性数据。
图7:VerilogEval测试平台中的竞争条件及其修复
图7:VerilogEval测试平台中的竞争条件及其修复。本文在时钟沿后手动插入#1(高亮部分)。

验证导向的数据清洗:低成本、大批量、高精确度

在模型蒸馏场景中,LLM生成海量候选设计,需用验证信号筛选。STG作为验证引擎,可快速处理数十万个候选设计,筛选高质量训练样本。实验表明,经STG清洗数据后训练的模型,在VerilogEval、RTLLM和CVDP等多个benchmark上,性能超越了使用复杂多阶段SFT甚至强化学习方案训练的模型。
下面的表格展示了STG在数据清洗阶段相比纯LLM方案带来的巨大成本优势。
图5:验证导向的数据清洗与训练流程
图5:验证导向的数据清洗与训练流程。(1)过滤源数据集,只保留困难问题;(2)使用教师模型生成候选DUT并用STG验证;(3)在清洗后的数据上训练学生模型。

测试时缩放:更高效的搜索循环

许多RTL生成系统使用MCTS等算法在推理时搜索优化。验证信号的质量直接决定搜索效率。STG作为验证后端,提供了更丰富可靠的反馈信号(通过率+覆盖率),使搜索能更早排除错误分支。

Verilog验证瓶颈与LLM局限性

LLM写出Verilog代码后,最大难题是验证。传统写测试平台耗时费力,在LLM驱动流水线中问题被放大:LLM可能生成成千上万个候选设计,如何快速、低成本、可靠地筛选?
目前主流做法是让LLM写测试平台(如AutoBench、CorrectBench、ConfiBench),本质上是无约束的代码合成,充满随机性。为提高可靠性需重复prompt,消耗大量token。更致命的是,测试平台的“裁判”和“选手”都来自同一随机过程,当两者不一致时,无法区分是DUT有bug还是参考代码写错。
即使有绝对可靠的黄金参考,问题依然存在。验证信号需嵌入迭代优化循环,若验证器太慢或给出错误信号,整个搜索就乱套。在模型蒸馏流水线中,用LLM逐个判断数十万条数据的正确性,成本高且引入标签噪声。
现状是验证成了LLM HDL流水线的卡脖子环节。STG的目标是同时做到快、准、省。

STG:确定性、结构感知的测试平台生成

STG全称Structured Testbench Generation,核心思想:把测试平台生成从“黑箱代码合成”变成“结构化模板渲染”。直接解析DUT的端口结构、时钟复位、状态机等信息,用预定义模板生成测试平台的实例化、激励驱动、输出比对等代码,LLM只在产生高质量激励信号时才发挥作用。
STG输入为两个Verilog文件(DUT和Golden Reference),输出为可直接编译执行的仿真测试平台。整个过程确定性,同样输入每次生成完全一样,消除LLM随机性,结果可复现、可审计。
STG保留扩展性:无Golden Reference时,可用银参考(LLM生成的参考模型),但模板和接口由STG固定,LLM只需填充行为逻辑。
图4:银参考模板的简化结构。STG生成一个与DUT端口对齐的C++接口,由LLM填充行为逻辑。
图4:银参考模板的简化结构。STG生成与DUT端口对齐的C++接口,由LLM填充行为逻辑。

模块解析与信号分类——地基打牢

STG用Icarus Verilog解析所有模块,构建实例化有向无环图,自动识别顶层模块。然后分类设计类型:看端口有无时钟,无则归为组合逻辑;有时钟则进一步判断是否为FSM主导型。FSM检测用确定性模式匹配(找always_ff中含case/casez且寄存器名匹配state等模式),不确定时用一次轻量LLM查询提取FSM结构。两项都没检测到则归为通用时序逻辑。
信号分类方面,STG将输入端口分为时钟、复位、控制、数据四类。用最长公共子序列(LCS)做模糊匹配,辅助位宽判断:窄信号倾向控制,宽信号倾向数据。自动模式下完全靠启发式和少量LLM查询,无需人工干预。
表2:信号分类启发式规则。所有角色均使用基于LCS的模糊匹配(不区分大小写)。
表2:信号分类启发式规则。所有角色均使用基于LCS的模糊匹配(不区分大小写)。

从解析到生成:三大策略详解

针对三种设计类型,STG分别定了一套激励生成策略。所有策略共享模板引擎架构:用Jinja模板填充模块名、端口列表、信号角色和策略参数,生成可综合的Verilog测试平台。生成的测试平台同时实例化DUT和Golden Reference,共用激励,比对输出,统计每个输出端口的错误数和通过率。

组合逻辑策略:穷举+随机

对于组合逻辑设计,STG按信号分类,穷举控制信号全部2^b_c种组合,对每种组合随机采样N_s个数据向量。总测试向量数为2^b_c × N_s,受可配置上限2^b_max约束,超过时自动降低N_s。保证每个控制路径都被测到,数据路径覆盖率高。总输入位宽很小时,把所有输入当控制信号就等于穷举验证。

通用时序逻辑策略:两阶段、复位感知、多比较点

时序逻辑验证中,Mealy型输出(周期内响应输入变化)和Moore型输出(仅在时钟边沿更新)行为不同。传统LLM测试平台只检测时钟边沿输出,易漏掉Mealy型错误。STG设计了两阶段、复位感知的激励策略:第一阶段不注入复位,让设计自由积累状态;第二阶段随机插入复位(根据复位类型正确处理同步/异步)。激励生成采用二层结构:外循环先随机注入数据让设计“热身”,然后穷举所有控制信号组合;内循环在每种控制组合下再随机采样数据。
STG在时钟周期内插入比较点(输入变化后立即检查),同时在时钟负沿和正沿也插入比较点。这样无论是周期内的Mealy型输出变化,还是边沿触发的Moore型输出,都不会被漏掉。

FSM主导型策略:状态转换图遍历

对于深度超过10个状态的FSM,纯随机激励几乎不可能覆盖所有状态跳转。STG使用提取的FSM结构,用C++生成遍历程序。将每个转换的守卫条件分解为“输入条件”(可直接驱动的信号)和“等待条件”(需内部逻辑自然满足的约束)。遍历算法采用DFS,从初始状态出发探索每一条可到达的转换边。遇到无法满足的转换时,复位并回溯。通过扩展Verilator的覆盖率API,报告每条HDL语句的实际执行次数,确认转换是否真的被触发。
图8:在15状态Mealy序列检测器上,STG-Sequential(随机激励)与STG-FSM(引导遍历)的状态访问次数的对比。随机激励的访问次数呈指数衰减,未能到达状态S11–S14。
图8:在15状态Mealy序列检测器上,随机激励(左侧)访问次数随状态深度指数下降,S11到S14一次都到不了;FSM引导策略(右侧)每个状态都被均匀覆盖。

三大应用场景的惊艳表现

STG不只是测试平台生成工具,而是为LLM驱动HDL工作流量身打造的通用验证后端。论文重点展示了三个场景。

场景一:直接RTL验证——快720倍,覆盖率更高

在VerilogEval基准测试上,STG与ConfiBench风格的纯LLM迭代生成流水线对比。STG生成测试平台仅需0.13秒,纯LLM方案平均92.4秒,速度快720倍。STG的行覆盖率和信号翻转覆盖率分别达到95.88%和95.77%,LLM方案只有93.97%和85.40%。
表3:VerilogEval上的测试平台生成对比。
表3:VerilogEval上的测试平台生成对比。
在DUT分类准确率上,STG优于LLM方案,特别是在减少“误判通过”方面表现突出。
表4:DUT分类准确率。
表4:DUT分类准确率。STG在所有类别上都有更低的误判率。
更厉害的是,STG在分析VerilogEval官方测试平台时,发现了一个系统性缺陷:这些测试平台在同一个时钟边沿同时施加激励和检查输出,导致检查器可能读到不稳定的输出值——典型的竞争条件。STG通过确定性机制暴露了此问题,人工介入插入#1延迟后修复。

场景二:验证导向的数据清洗——效率提升10.6倍,能耗降低127倍

在模型蒸馏场景中,STG充当高效过滤器。论文从PyraNet数据集中选出约115k个候选问题,先用STG过滤掉小模型已能解对的简单问题,然后让教师模型生成答案,再用STG验证正确性。最终保留43k个高质量样本用于学生模型微调。
在资源消耗上,STG单CPU核心处理115k个问题的时间,远少于LLM在GB200上所需的时间:
表6:在115k个问题上测试平台生成的资源对比:纯LLM(GB200)vs STG(单CPU核心)。
表6:在115k个问题上测试平台生成的资源对比:纯LLM(GB200)vs STG(单CPU核心)。
STG比LLM快10.6倍,能耗仅为其1/127。原来需要高端GPU跑一整天的工作量,现在用一颗普通CPU几小时就能搞定。
基于清洗数据微调的学生模型在VerilogEval、RTLLM、CVDP等多个基准上达到或超越了现有专门模型的成绩。
表5:训练前后的Pass@k(%),按基础模型分组。报告n=20样本下的Pass@k。
表5:训练前后的Pass@k(%),按基础模型分组。报告n=20样本下的Pass@k。
经过STG过滤数据微调后的Qwen3-8B、Qwen2.5-Coder-7B、Qwen3-4B-Thinking在Pass@1上分别提升了9.8%、15.4%和6.7%,部分指标超过了使用多阶段SFT+RL等复杂方案的专有模型。

场景三:测试时缩放——搜索效率提升14%-47%

在MCTS搜索循环中,STG作为验证后端替代了benchmark自带的测试平台。对比了四种骨干模型:SiliconMind-V1-7B、GPT-OSS-120B、DeepSeek-R1-FP4-685B以及STG蒸馏过的小模型。结果一致:使用STG验证后,搜索效率(所需搜索节点数)减少了14%-47%,解题成功率更高。
图6:以STG为验证后端的改进MCTS搜索流程。
图6:以STG为验证后端的改进MCTS搜索流程。
图9:四种骨干模型正确解题百分比与搜索节点预算的关系。
图9:四种骨干模型正确解题百分比与搜索节点预算的关系。蓝色(STG验证)曲线始终位于黄色(原始测试平台验证)曲线之上,同样节点预算下STG能解出更多问题。

实验结果:速度、覆盖率和可靠性均全面领先

综合来看,STG在三个维度上碾压了传统LLM方案:

速度:单个测试平台生成从92.4秒降到0.13秒(720倍加速);大规模数据清洗快10.6倍,能耗低127倍。

覆盖率:行覆盖率95.88% vs 93.97%,翻转覆盖率95.77% vs 85.40%。对于FSM,随机策略甚至无法触及全部状态,而FSM引导策略可以达到100%转换覆盖。

可靠性:确定性输出、可复现、无随机波动。DUT分类的误判通过率大幅降低。还顺手揪出了VerilogEval测试平台中的竞争条件bug。

此外,论文公开了经过STG清洗数据蒸馏的模型系列SiliconMind-V1.2,已在Hugging Face上发布,总下载量超过83.7万次。作者团队将STG蒸馏模型与近年使用复杂SFT+RL训练方案的模型对比,发现简单SFT+STG数据清洗就取得了可媲美甚至更优的效果。
(无额外标题,原文展示STG作为测试时缩放后端的节点分布对比图)
图10:非平凡问题和已解决问题的节点数分布。超出1.5倍IQR的离群点被省略以提高可读性。

总结与展望

STG放弃了让LLM端到端生成测试平台的路线,回归到用确定性程序处理结构化验证任务。这一选择带来了数量级的速度提升、更高的覆盖率和更可靠的结果。STG证明了验证质量对数据蒸馏和搜索循环的巨大影响。
目前STG主要针对已知参考场景设计,对于无参考的开放式验证还需银参考扩展。FSM检测中对LLM的依赖(当模式匹配不确定时)仍是唯一的随机点。未来可探索更精确的全自动FSM提取方法。
从更宏观的角度看,STG给AI for EDA领域提供了一个重要启示:在追求“全AI化”的同时,不要忘记传统EDA工具的确定性优势。两者结合,才能发挥最大效能。

龙迷三问

下面是龙哥对于大家可能的一些问题的解答:

Q1:STG中的“黄金参考”和“银参考”具体指什么?黄金参考是经人工验证的绝对正确的HDL实现,用作判决标准。银参考是由LLM自动生成的参考实现,可靠性不如黄金参考,但在没有黄金参考时可作为替代。STG的银参考扩展让LLM只填充行为逻辑,其他结构和验证流程由STG固定模板生成,降低银参考引入错误的概率。

Q2:STG生成的测试平台能否直接用于FPGA/ASIC流片前的功能验证?STG生成的测试平台是标准Verilog仿真测试平台,可直接在Icarus Verilog、Verilator、ModelSim等仿真器上运行。适用于前期功能验证和快速迭代,但不能完全替代专业的验证流程(如UVM)。不过STG的设计思路可以嵌入到更复杂的验证框架中,作为

转发文章 微博 X LinkedIn Facebook
龙哥读论文 · PaperDaily

本文基于龙哥读论文 PaperDaily 数据库整理,结合论文原文与工程视角进行解读。