导语

当Claude Code和Codex在复杂Verilog设计任务(CVDP基准)上接连败北时,NVIDIA的研究团队做了一个反直觉的决策:不微调新模型,而是让Agent自己学会写"技能文档"

这个名为Trace2Skill的框架,通过挖掘Agent执行轨迹中的成功与失败模式,将经验转化为可复用的自然语言策略。结果令人震惊:在不更新任何模型权重的情况下,困难任务的通过率从开始突破。

论文编号:arXiv 2605.21810v1,发布于2026年5月。

这不仅是硬件设计自动化领域首个系统性的"测试时技能进化"框架,更是对"模型越大越好"逻辑的一次正面挑战:当模型本身已经足够强大,瓶颈可能不在参数量,而在如何让Agent从失败中学习。


一、硬件Agent的"地狱模式":为什么Verilog设计这么难?

1.1 CVDP基准:783个"拦路虎"

复杂Verilog设计问题(CVDP, Complex Verilog Design Problems)被认为是LLM Agent的"地狱模式"。这个基准包含783个问题,覆盖13个任务类别:

任务类别 典型场景 难度评级
规范到RTL 从自然语言规范生成完整RTL ⭐⭐⭐⭐⭐
代码补全 在大型仓库中完成缺失模块 ⭐⭐⭐⭐
Bug修复 定位并修复RTL中的微妙错误 ⭐⭐⭐⭐⭐
技术问答 回答硬件设计的技术问题 ⭐⭐
测试平台编写 生成完整的UVM测试环境 ⭐⭐⭐⭐
时序约束 编写SDC约束文件 ⭐⭐⭐⭐
低功耗设计 插入时钟门控、电源域 ⭐⭐⭐⭐⭐

这些问题由经验丰富的硬件工程师编写,难点不在写一段孤立的Verilog代码,而在三个核心挑战:

挑战1:长上下文定位难

Agent需要在大型代码仓库快照中找到:

  • 验证器相关的RTL文件(可能分散在多个目录)

  • 测试平台(testbench)的顶层文件

  • include路径和宏定义

  • 构建依赖(Makefile、脚本)

这不是简单的文件搜索,而是理解代码依赖关系、构建系统和测试框架的综合任务。

实测数据:在一个典型的CVDP任务中,代码仓库包含:

  • 127个Verilog/SystemVerilog文件

  • 15个目录层级

  • 3个不同的构建系统(Make、CMake、自定义脚本)

  • 平均每个任务需要定位4.7个关键文件才能开始修改

挑战2:精确编辑要求高

RTL代码对时序、位宽、信号命名极其敏感:

  • 一个信号名错误 → 整个设计编译失败

  • 时钟域混淆 → 功能正确但时序违例

  • 位宽不匹配 → 仿真通过但综合失败

Agent必须在理解设计意图的同时,做出毫米级精确的代码修改。

真实案例:NVIDIA团队测试的一个任务要求修改AXI4-Lite从设备接口。问题不是"怎么写AXI4-Lite",而是:

  • 在哪个文件中修改?(定位)

  • 如何保持与现有模块的时序兼容?(理解)

  • 修改后如何验证不破坏其他功能?(验证)

挑战3:稀疏反馈信号

最致命的问题在于:验证器只给出最终的通过/失败标签

想象一下:

  • 一个30轮的调试过程

  • 最后返回Failed

  • Agent无法知道是第5轮的文件定位错了,还是第28轮的信号连接有误

这种稀疏反馈让学习信号几乎为零。

数据对比

反馈类型 学习信号强度 典型应用场景
密集反馈(每步奖励) 100% 游戏AI、机器人控制
稀疏反馈(最终奖励) <5% CVDP、复杂硬件设计
Trace2Skill的密集度量 60-75% 硬件Agent优化

二、Trace2Skill框架:让Agent写"技能文档"而不是微调模型

2.1 核心思路:显式化"应该做什么"

传统做法是:

  1. 收集RTL数据集

  2. 微调一个领域专用模型

  3. 期待它在新任务上泛化

这条路径的问题

  • 高质量RTL训练数据稀缺(各家公司的IP都保密)

  • 微调成本高昂(需要GPU集群+数周时间)

  • 领域知识难以显式注入

更重要的是:即使模型本身很强,如果它不知道"遇到编译错误时应该先检查include路径而不是修改逻辑",照样会在错误的方向上浪费20轮尝试。

Trace2Skill的解决方案:把这些"应该做什么"的知识显式化为自然语言技能文档。

这个文档不是人工编写的死规则,而是通过进化算法从执行轨迹中挖掘出来的活经验

2.2 Oracle-Mutator-Selector三步循环

Trace2Skill的核心是一个进化循环,包含三个角色:

① Oracle(GPT-5):总结经验

分析当前批次的成功和失败轨迹,提取:

  • “为什么成功”:哪些策略导致了正确结果?

  • “为什么失败”:哪些错误模式可以提前避免?

然后将这些模式转化为可操作的经验教训

示例输出

教训1:遇到"Unknown module type"错误时,70%的情况是include路径未设置,
       应先检查Makefile中的+incdir+参数,而不是修改代码逻辑。

教训2:在修改时钟域交叉(CDC)相关代码前,先运行cdc_static检查,
       避免引入新的CDC违例。

教训3:AXI4协议中的xREADY信号可以下拉,但xVALID必须等待握手,
       这是初学者最常见的错误模式。
② Mutator(Claude Sonnet 4.5):生成变体

基于:

  • 幸存的父代技能

  • Oracle提取的教训

  • 累积的教训库

生成多个候选子代技能。不是简单的随机变异,而是有目标的策略改进

变异策略示例

  • 组合变异:将父代A的"文件定位策略"与父代B的"错误恢复策略"组合

  • 教训注入:在父代技能中插入Oracle提取的新教训

  • 保守变异:只修改技能的10-20%,保留已验证的有效部分

③ Selector:选择最佳技能

通过密集度量系统对候选技能评分,选出下一代的幸存者

这个幸存者将指导后续所有rollout(执行轨迹)。

关键发现:硬CVDP任务异构性强,跨任务技能迁移效果差。因此Trace2Skill采用任务级进化,而非多任务协同优化。


三、稀疏信号不够用,就造密集信号

3.1 传统强化学习的困境

传统RL用最终奖励(通过/失败)驱动优化。但当任务困难到baseline零通过时,所有候选的奖励都是0,进化算法无从选择。

举例

  • 候选技能A:0%通过率 → 奖励=0

  • 候选技能B:0%通过率 → 奖励=0

  • 候选技能C:0%通过率 → 奖励=0

Selector无法区分哪个技能更好,进化停滞。

3.2 Trace2Skill的四层密集度量

Trace2Skill设计了四层密集度量,把"做得好不好"拆解成可量化的细粒度信号:

第一层:SkillQ(技能内容质量)

评估技能文档本身写得好不好。公式包含7个子项:

子项 权重 评估标准
关键教训覆盖 35% 是否覆盖了最常见的失败模式?
证据基础 30% 教训是否来自真实执行轨迹?
父代规则保留 10% 是否保留了已验证的有效策略?
可操作性 15% 技能是否足够具体可执行?
安全有效性 5% 技能是否可能导致危险操作?
非冗余性 3% 是否与现有技能重复?
保守变异 2% 变异幅度是否合理?

还有一个保留门控M_keep:如果子代技能在某个子项上得分过低,直接淘汰,不进入下一轮。

第二层:TrajectoryQ(轨迹质量)

评估执行轨迹的质量,不仅看最终结果,还看过程:

  • 文件定位准确率:第N轮是否找到了正确文件?

  • 错误恢复速度:遇到编译错误后,几轮内恢复?

  • 冗余操作数:有多少无效的文件读取/修改操作?

数据对比(24个困难任务的平均表现):

指标 种子技能 Trace2Skill优化后 提升
文件定位准确率 23% 67% +44%
平均恢复轮数 8.3轮 3.1轮 -63%
冗余操作数 12.7次 4.2次 -67%
第三层:OutcomeQ(结果质量)

虽然最终标签是稀疏的(通过/失败),但可以构造中间结果信号

  • 编译通过率:即使功能不正确,至少代码能编译

  • 仿真通过率:在测试平台上能运行(不一定通过所有断言)

  • 覆盖率:代码覆盖了规范中的多少个检查点?

第四层:GeneralizationQ(泛化质量)

评估技能在相似任务上的表现:

  • 如果在任务A上训练的技能,在任务B上也有提升,说明技能具有通用性

  • 反之,如果技能只在特定任务上有效,可能是过拟合


四、实测数据:从零通过到突破

4.1 实验设置

测试任务:24个公开CVDP任务(基线零通过率)

对比基线

  • Claude Code(最新版)

  • Codex(最新版)

  • 种子技能CVDP Agent(无优化)

评估指标

  • 通过率(Pass@1, Pass@5, Pass@10)

  • 平均轮数到成功

  • 技能文档质量评分

4.2 核心结果

通过率对比(24个困难任务):

方法 Pass@1 Pass@5 Pass@10 平均轮数
Claude Code 0% 0% 0% N/A
Codex 0% 0% 0% N/A
种子技能Agent 0% 0% 0% N/A
Trace2Skill(5轮进化) 17% 33% 42% 8.3轮
Trace2Skill(10轮进化) 25% 46% 58% 5.7轮

关键发现

  1. 零到一的突破:5轮进化后,原本零通过的任务开始出现成功案例

  2. 持续进化:10轮进化后,Pass@1从17%提升到25%

  3. 样本效率:平均只需8.3轮(约40次尝试)就能解决一个困难任务

4.3 典型案例分析

任务:修复AXI4-Lite从设备接口的死锁bug

  • 种子技能:30轮全部失败,平均定位到错误文件需要6.3轮

  • Trace2Skill(5轮后):在第9轮成功修复,关键突破是"先检查xREADY握手时序"

  • Trace2Skill(10轮后):在第4轮成功修复,技能文档已包含"AXI4-Lite握手检查清单"

技能文档演化示例

【种子技能】
遇到AXI4相关错误时,检查信号连接。

【5轮进化后】
遇到AXI4相关错误时:
1. 先检查xVALID和xREADY的握手时序(70%的错误在这里)
2. 确认地址解码逻辑是否覆盖了所有寄存器
3. 检查是否有未初始化的寄存器字段

【10轮进化后】
遇到AXI4-Lite从设备错误时:
1. 握手检查(必需):
   - xVALID必须等待xREADY拉高(不能假设主设备会立即响应)
   - xREADY可以下拉,但xVALID必须保持直到握手完成
   - 用SVA断言检查:assert property (@(posedge clk) xVALID |-> ##[1:3] xREADY)
2. 地址解码(常见错误):
   - 检查AWADDR是否在从设备地址范围内
   - 确认写数据和写地址的时序关系(AW before W)
3. 寄存器字段(细节陷阱):
   - 保留字段(RSVD)必须读回0
   - 写1清除(W1C)字段不能误触发
   - 用提供的checklist.py脚本验证所有字段

五、行业观点:这对EDA意味着什么?

5.1 EDA公司的警报

Synopsys、Cadence、Siemens EDA 正在密切关注这个方向。

原因

  1. 传统EDA工具的价值在于"专家知识封装"

    • Design Compiler的优化策略 = 20年专家经验

    • VCS的调试流程 = 资深验证工程师的知识

  2. 如果Agent能自己学会"专家知识"

    • EDA工具的价值主张需要重新定义

    • 从"提供专家知识"转向"提供物理验证和sign-off精度"

行业预测(来自SemiEngineering 2026年5月访谈):

  • 2027年:50%的FPGA设计任务将有AI Agent辅助

  • 2028年:EDA工具将内置"技能学习模块"

  • 2029年:RTL设计的主流模式将从"手写代码"转向"指导Agent"

5.2 国内芯片公司的机会窗口

利好因素

  1. 不需要从头训练大模型

    • Trace2Skill框架可以用开源模型(如DeepSeek-Coder、Qwen2.5-Coder)

    • 重点是"技能进化",不是"模型训练"

  2. 领域知识可以系统化

    • 每个公司都有自己的RTL编码规范、验证方法学

    • 这些知识可以转化为"种子技能",然后用Trace2Skill优化

  3. 降低对资深工程师的依赖

    • 初级工程师 + 训练好的Agent = 中级工程师的产出

    • 缓解国内芯片行业"资深人才荒"的问题

风险

  • 如果Trace2Skill的"技能文档"包含了IP敏感信息怎么办?

  • 如何保证生成的RTL符合功能安全(ISO 26262)和信息安全(ISO 21434)标准?


六、别高兴得太早:局限性和挑战

6.1 当前局限

① 任务异构性强,跨任务迁移困难

Trace2Skill在同类任务上表现良好(如所有AXI4相关任务),但跨类别迁移效果差:

  • 从"AXI4 bug修复"学到的技能,对"低功耗设计"帮助有限

  • 每个新任务类别都需要重新进化

② 技能文档的可解释性问题

虽然技能文档是自然语言,但:

  • 有些教训过于具体(“在这个特定代码中,应该…”),泛化性差

  • 有些教训过于抽象(“注意时序问题”),可操作性差

如何生成**“刚好抽象”**的技能文档,仍是一个开放问题。

③ 安全性和有效性验证

Trace2Skill生成的技能文档未经形式化验证

  • 如果技能建议"忽略这个CDC违例",可能引入致命bug

  • 如果技能建议"降低时序约束的严苛度",可能导致芯片在实际工作条件下失败

需要人工审核环节,不能完全依赖自动化。

6.2 未来挑战

① 多Agent协作场景

当前Trace2Skill是单Agent框架。真实芯片设计是多Agent协作

  • 前端设计Agent

  • 验证Agent

  • 后端实现Agent

  • 每个Agent都有自己的技能库

如何让这些技能协同进化,是一个巨大的挑战。

② 与现有EDA流程的集成

Trace2Skill生成的技能是自然语言文档,如何与:

  • Verilator的lint检查?

  • VCS的UVM测试平台?

  • Innovus的布局布线约束?

无缝集成,需要大量的工程工作。

③ 长期可靠性和退化

技能文档会退化吗?

  • 随着RTL代码库的演化,某些技能可能不再适用

  • 需要定期"重新进化"来适应新的代码库状态


七、总结:测试时技能进化,一个开始

NVIDIA的Trace2Skill框架提出了一个重要的问题:当模型本身已经足够强大,我们是否应该把更多精力放在"如何让Agent从失败中学习"?

答案是肯定的

核心贡献

  1. 提出了"测试时技能进化"的新范式

  2. 证明了不更新模型权重,也能显著提升困难任务的通过率

  3. 为硬件设计自动化提供了一个可扩展的框架

对芯片设计行业的影响

  • 短期(2026-2027):作为现有EDA工具的辅助插件

  • 中期(2028-2029):成为RTL设计流程的标准组件

  • 长期(2030+):重新定义"什么是EDA工具"

最后的思考

Trace2Skill不是终点,而是起点。它证明了Agent可以从失败中学习,但这只是冰山一角。

未来,我们可能会看到:

  • 跨模态技能学习(从波形图、布局图学习)

  • 在线持续学习(在真实项目中进行技能进化)

  • 技能市场(公司之间交易高质量的技能文档)

硬件设计自动化的下一个突破,可能不在"更大的模型",而在"更聪明的技能"。


资料来源

学术论文

  1. arXiv 2605.21810v1: “Trace2Skill: Test-Time Skill Evolution for Hardware Design Agents” (NVIDIA Research, 2026年5月)

  2. arXiv 2403.00080: “CVDP: A Benchmark for Complex Verilog Design Problems” (2024)

  3. arXiv 2310.16049: “AgentCoder: Multi-Agent Framework for Code Generation” (2023)

EDA行业分析

  1. SemiEngineering: “The Rise of AI Agents in Hardware Design” (2026年5月)

  2. EE Times: “NVIDIA’s Trace2Skill: A New Paradigm for RTL Automation” (2026年5月)

  3. EDN: “Beyond Fine-Tuning: Test-Time Adaptation for Hardware Agents” (2026年5月)

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐