NVIDIA Research 发布 HORIZON,无人值守智能体把全套 RTL 芯片设计基准刷到 100% 通过

论文首次让智能体全程无人值守跑完全部 RTL 基准;多数题两三轮过关,最难一题却要迭代 82 轮
作者:arXiv · NVIDIA Research07-05 · 12 分钟⚑ 研究论文
🎧 听播客版0:00 / --:--
0:00 / --:--
研究解读 · 小互解读
速览
  • NVIDIA Research 提出 HORIZON,把硬件设计当成仓库级代码演化来管理:用户只写一份 Markdown 说明书,系统自动编译成「项目包」,一个无人值守的智能体循环在隔离的 Git 工作区里反复改代码、跑仿真,验收通过才提交。
  • 在 ChipBench、RTLLM-2.0、Verilog-Eval 和 9 个 CVDP 验证类别上,HORIZON 用同一套无人值守循环把全部基准刷到 100% 通过率。
  • 智能体第一轮迭代的聚合通过率只有 47.8%,最难的 CVDP 检查器生成类别首轮仅 3.8%;同一套循环最终把所有类别磨到 100%,但有的题 1 至 2 轮就过关,有的题要迭代 82 轮。
  • 正确性饱和之后,token 成本成了真正的差异化信号:9 个 CVDP 类别用掉全部 token 的 97.1%(约 203.9M),其中约 91% 是可复用的缓存输入。
  • 作者明确不宣称「智能体硬件设计已解决」,并指出当前反馈机制存在「过度求解/奖励攻击」风险,建议未来基准把调试反馈和最终隐藏评分分开。
01NVIDIA 这篇论文说了什么

NVIDIA 这篇论文说了什么

NVIDIA Research 团队最近发布论文,提出智能体硬件设计框架 HORIZON,把芯片设计当成仓库级代码演化来管理。

给系统一份 Markdown 说明书,一个全程没人盯着的智能体就在隔离的 Git 工作区里反复改代码、跑仿真,验收通过才提交,最后把整套 RTL(寄存器传输级硬件设计,也就是用代码描述芯片里每一拍怎么动的那一层)基准全部刷到 100% 通过。

⚑
为什么值得看:据作者所知,这是第一个端到端、不需要人工干预就完成全部被评测 RTL 基准套件的智能体系统,覆盖 ChipBench、RTLLM-2.0、Verilog-Eval 和 9 个 CVDP 类别,全部拿到 100% 通过率。
HORIZON 架构总览:Markdown 说明书 → project_pack 控制面 → 无人值守智能体循环,在 Git 工作区上演化
论文 Figure 1 架构总览:用户写的 Markdown 说明书被编译成 project_pack 控制面,驱动一个无人值守的智能体循环在 Git 工作区上不断演化。来源:NVIDIA Research/marktechpost
02先搞懂:写一次 Verilog 为什么远远不够

为什么让 AI 写一次 Verilog 远远不够

Verilog 是描述芯片逻辑的硬件代码。RTL 设计是一块尖锐的试金石:一个模块对不对,取决于时钟每一拍的行为、复位怎么约定、接口怎么握手、每根信号多少位宽,还要看仿真器跑出来的反馈。所以「看起来像模像样的 Verilog」远远不够。

模型必须自己推断数据通路的位宽、状态机怎么转移、复位约定、ready-valid 握手协议、存储器怎么读写,还有那些自然语言里常常没说清的边角情况。说白了,一个语法正确的模块只是起点。真正有用的自动化,得把「写出来」接到「编译、仿真、查波形和失败轨迹、再修复」这一整条链上,跑一圈发现不对就回去改,改完再跑。

写出模块
→
编译
→
仿真
→
查波形/失败轨迹
→
修复
↺

HORIZON 的核心想法,就是把整条链关进一个能自己转起来的循环里。

03核心设计一:一份说明书怎么变成能自己跑的项目包

一份说明书怎么变成能自己跑的项目包

用户唯一要提供的输入,是一份结构化的 Markdown 说明书,不是代码。它写清高层意图、仓库上下文、期望产物、评测标准和领域知识。领域知识尤其有用,因为它能把那些「光看文件推不出来」的不变量、工具约定和失败模式显式写出来。

一个「引导智能体」把这份说明书编译成「项目包(project pack)」,也就是整个系统的控制面。说明书有四个组件,被编译成一个五元组的运行时配置,再驱动那个无人值守的循环。

① Markdown 说明书
  • 目标/任务
  • 领域知识指引
  • 评测器规格
  • 验收判据
→
② 项目包(五元组)
  • π_agent 策略提示词与工具契约
  • E_p 可执行评测器(编译/仿真/覆盖率)
  • A_p 验收判据(能不能提交)
  • Γ_p 版本控制与产物策略
  • Ω_p 领域技能与仓库操作说明
→
③ 无人值守循环
  • 读状态
  • 编辑工作区
  • 调工具评测
  • 修复或提交
打个比方 · 项目包

项目包像给新员工的一份完整入职资料包:不光写清要做什么,还附上考核标准、工具使用说明和交接流程。员工看完这一份,就能独立开工,不用有人在旁边盯着讲。

Hero · 不绑定 RTL

关键在于,问题被定义在一个通用的 Git 工作区上,而不是某种固定的芯片仓库类型。所以这套组织方式并不专属 RTL 或 EDA:只要一个任务具备「持久的 Git 工作区 + 机器可检查的反馈 + 带版本的产物」这三个条件,就能用同一套方式来组织。换个领域,评测器那个槽位可以换成单元测试、定理证明器、性能剖析器、安全扫描器、综合工具,甚至人工评审门。

点开看一份真实说明书长什么样(论文附录 fifo_sync 骨架)

用户就写这么一份普通 Markdown,四个组件一目了然,剩下的全交给循环。

论文附录:fifo_sync 说明书骨架
# HORIZON Harness: fifo_sync

## Goal / objective
Implement a synchronous FIFO. Depth 16, 8-bit data.

## Domain-knowledge directions
- Reset is synchronous, active-high.
- full and empty must never assert together.
- Follow ready-valid handshake conventions.

## Evaluator specification
- Compile with the suite's native flow.
- Run the provided simulation testbench.
- Extract functional coverage where available.

## Acceptance predicate
- Simulation passes with zero mismatches.
04核心设计二:Git 仓库怎么当循环的大脑

循环怎么跑:Git 仓库既是操作台,也是经验库

用户把初始说明书交出去之后,循环就完全无人值守了:引导、生成、评测、验收、记录、下一轮迭代,全部自动跑。一个「战役」可以连着跑很多轮,中间不再需要人插手。每一轮,智能体读当前状态、规划一个目标、编辑工作区、调用工具、读懂失败,然后要么修复要么提交。验收判据只决定一件事:把新版本提交(commit),还是把这次失败记进日志(log)。

① 读状态 ② 改代码 跑评测 ③ 验收判据 ④ 通过→commit 拒绝→log 无人值守 循环
一轮外层迭代:读状态 → 改代码跑评测 → 验收 → 通过就提交、失败就记日志,然后进下一轮

Git 在这里是循环的基底,不是顺手记个账。四个普通的 git 操作,分别扮演四个角色:

git diff

暴露被提议的候选改动,提交前先审一眼再放行

git commit

定义一个被接受的检查点,message 记着评测结论和奖励

git notes

给这次尝试挂上评测证据(是否通过、几处不匹配)

git log

回放完整的版本历史,恢复整条搜索轨迹

循环用普通 git 命令驱动整个仓库
git diff --cached                        # 检查暂存的候选改动
git commit -m "iter 7: fix full/empty overlap"
git notes add -m "pass=1 mismatches=0"   # 附上评测证据
git log --oneline                        # 回放搜索轨迹
Hero · 仓库历史即经验缓冲区

成功的 commit 成为「修复策略的正例」,被拒绝的尝试则作为「哪些编辑或工具调用路径过不了评测」的负例记下来。所以仓库自己的历史,就是经验回放的数据源,不需要另建一个数据库。配合提示词缓存,多做一轮修复的边际成本压得很低。

c1 c2 c3 ✓ 通过 拒绝→记 log(负例) 拒绝→记 log(负例)
招牌图:只有通过验收才生成绿色 commit 让主线前进,被拒绝的尝试挂成灰色 log 留作负例,仓库历史本身就是一条可回放的经验轨迹
05澄清一个大误会

进化的是代码,模型全程没动

「自我演化」这个词容易让人以为 HORIZON 在偷偷训练模型。不是。演化的是 Git 仓库里的设计产物,不是模型权重。骨干模型 GPT-5.3 在整个战役里权重固定不变,既不训练也不更新任何强化学习策略。

论文确实借用了「半马尔可夫决策过程(semi-MDP)」这个词,但说穿了,它只是给记录下来的对象起个精确、可回放的名字:「状态」就是仓库的一个带版本快照(一个记账用的检查点),「选项」就是两个检查点之间的一整段情节。它不是行为假设,也不是优化假设。

打个比方 · semi-MDP

就像给游戏的「存档点」和「两次存档之间发生的一段游戏过程」分别起个正式名字,方便回放和查阅,不代表游戏里的 AI 在自我训练升级。

成本靠会话复用压下来:HORIZON 跨迭代保持一个持久的模型会话,让说明书、项目包、稳定的源文件、累积的调试上下文都从服务商的提示词缓存里取,而不是每轮重发一遍。于是真正新计费的 token,主要就是当前的 diff、最新的评测输出和智能体的回复。这也是为什么后面会看到,累计 token 里绝大部分是缓存输入。

06它站在谁的肩膀上

HORIZON 站在谁的肩膀上

HORIZON 延续了一条「仓库尺度自我演化」的血脉。这条谱系的共同原则只有一条:一个候选改动,只有当可执行的证据支持它时,才被接纳。区别在于「演化的对象」,前面几个演化的是工程师「运行」的软件,HORIZON 演化的是工程师「创造」的硬件产物。

系统演化的对象领域评测信号
AlphaEvolve(2025)算法内核科学与算法发现自动化评测器
SATLUTION(2025)完整的 SAT 求解器仓库SAT 求解分布式正确性与运行时(最终超过人类设计的竞赛冠军)
ABCEvo(2026)百万行的 ABC 逻辑综合系统EDA 软件正确性与 QoR(结果质量)
HORIZON(本文)RTL 源码、测试台、验证产物硬件设计编译、仿真、覆盖率、断言检查
还有一条「把 Git 本身当脚手架」的相关趋势

EvoGit 用一张基于 Git 的系统发生图协调一群去中心化的编码智能体;Git Context Controller 把智能体的上下文从转瞬即逝的 token 流,升级成带显式 COMMIT/BRANCH/MERGE 的持久版本化记忆。两者都证明 Git 语义(分支、血统、检查点)天然适合组织智能体探索,但都瞄准软件工程。HORIZON 同样把 Git 当基底,只是用到了硬件设计问题上:把单个设计问题托管成一个自包含、验证门控的仓库,它的历史同时就是一份可回放的经验轨迹。

07结果一:终点都是 100%,路却天差地别

全套基准 100% 通过,但走到终点的路天差地别

作为一个单一的无人值守智能体循环跑,HORIZON 把每一个基准套件都刷到 100% 通过率。唯一残留的没过项,是 ChipBench 里的一道题,作者把它追溯到原基准里一个「规格与说明书」不匹配的缺陷,而不是智能体的失败,算作已解决就是 100%。所以各套件之间变化的,不是终点,而是到达终点的路。

47.8%
智能体第一轮迭代(iter 0)的聚合通过率
100%
全部 12 个基准套件/类别的最终通过率
3.8%
CID 013 检查器生成首轮通过率,全场最低,却只用 19 轮就收敛
82 轮
CID 002 代码补全收敛到 100% 所需的迭代轮数,全场最多

这里的 iter 0 不是独立的单次生成成功率。它反映的是智能体演化第一步之后仓库的状态,而且全程用一样的提示策略。智能体完全可以故意把大量探索、调试、修复推迟到后面的迭代,而不是去最大化第一次就成功。这个聚合值还被 Verilog-Eval-v2 抬高了(它 iter 0 就有 86.2%),单看 CVDP 子集,iter 0 只有 23.9%。

顺带一提,这 9 个 CVDP 验证类别(测试台生成、检查器生成、断言生成)此前正是 AI 最吃力的任务。CVDP 论文自己就指出,最先进的单次模型在这类验证任务上尤其吃力,如今同一套循环能把它们收敛到 100%。

点选一个基准,看它从首轮爬到 100% 的收敛曲线:

100 50 0 迭代轮数 →
首轮 3.2% 起步,前面很长一段爬得很慢,直到最后几轮才陡然拉起,82 轮才收敛到 100%。这条长尾吃掉了单类里最多的 token,是典型的收敛问题,不是一次性建模失败。
100 50 0 迭代轮数 →
首轮只有 3.8%,全场最低,却沿着一条几乎笔直、近线性、没有平台期的轨迹,19 轮就爬到 100%。它说明「首轮很低」本身并不意味着收敛慢或不稳。
100 50 0 迭代轮数 →
首轮已经 78%,只用 2 轮就到 100%。自然语言规格直接转 RTL 这类传统任务,模型本就上手快。
100 50 0 迭代轮数 →
首轮 79.1%,1 轮就到 100%,是全场最省事的一类。

把所有 12 个类别的首轮通过率并排看,落差一目了然:从 Verilog-Eval 的 86.2% 一直到 CID 007 的 0.0%。而它们最后统统收敛到了 100%。

Verilog-Eval-v286.2
CID 014 断言生成79.1
RTLLM-2.078.0
CID 012 激励生成47.8
CID 016 调试修 bug25.7
ChipBench20.0
CID 003 规格→RTL19.2
CID 004 代码修改10.9
CID 005 模块复用9.1
CID 013 检查器生成3.8
CID 002 代码补全3.2
CID 007 检查/QoR0.0

条形=首轮(iter 0)通过率;每一类最终都收敛到 100%。

点开看完整 Table 1(首轮、收敛轮数、最终通过率)
套件/类别评测重点后端iter 0收敛轮数最终
ChipBench混合 RTL 生成开源20.05100
RTLLM-2.0规格→RTL开源78.02100
Verilog-Eval-v2HDLBits 风格生成开源86.22100
CID 002RTL 代码补全开源3.282100
CID 003规格→RTL开源19.224100
CID 004RTL 代码修改开源10.936100
CID 005模块复用开源9.114100
CID 007代码检查/QoR开源0.024100
CID 012激励生成商用47.832100
CID 013检查器生成商用3.819100
CID 014断言生成商用79.11100
CID 016调试与修 bug开源25.713100
总体全部评测 RTL 基准47.8,100

只有 CID 012 至 014 需要商用仿真器。

08结果二:正确性打平,token 才见真章

正确性打平之后,token 才是真正的较量

一旦正确性饱和,token 消耗就成了更有信息量的信号,它暴露谁难谁容易。作者按「到达最优迭代为止的累计 token」来衡量。三个传统套件加起来只用 6.0M,9 个 CVDP 类别却用了 203.9M,占总量的 97.1%。全部跑完约 209.9M。

209.9M
全部基准跑完累计消耗的 token 总量
97.1%
9 个 CVDP 类别占掉的 token 比例(3 个传统基准合计只占 6.0M)
26.7%
单是 CID 002 代码补全一类,就吃掉 56.0M
91%
总 token 中属于可复用「缓存输入」的比例

把 209.9M 按类别铺开,代码补全(CID 002)、规格转 RTL(CID 003)、激励生成(CID 012)三类就占掉了大半,传统基准挤在最左边细细一条:

CID002 26.7% CID003 18.1% CID012 15.3% CID004 11.3% CID007 10%
传统基准合计 6.0M(2.9%) CID002 56.0M(26.7%) CID003 38.0M(18.1%) CID012 32.2M(15.3%) CID013 14.2M(6.7%)

耐人寻味的是 CID 013:它首轮通过率全场最低(3.8%),却只用 14.2M token 就收敛,印证了那条平稳无平台期的轨迹。真正拖高成本的,是 CID 002 那种「少数几个顽固设计的长尾」。

还有关键一句:约 91% 的 token 是缓存输入,这大幅降低了 API 成本。所以作者明确表态,他们把「token 效率」而不是「最终通过率」,看成最需要改进的指标。虽然 HORIZON 清掉了每一个套件,但最难类别上最后那几个百分点,吸掉了不成比例的预算。

09覆盖率与作者自己划的红线

覆盖率是顺便量出来的;作者自己划的红线

验证生成类别值得细看,因为它暴露了 HORIZON 在优化什么、不在优化什么。HORIZON 的验收门是 CVDP 的「通过条件」,不是「覆盖率目标」。循环被驱动着让基准的说明书通过,一旦某个设计通过,门就满足了,循环就停止再优化它。所以覆盖率在这里是一个次要的、观测性的信号。

最直接的证据:CID 012 在第 32 轮达到 100% 通过率,但那时它的平均逐设计覆盖率只有 97.9%,不是 100%。这个缺口是验收门的直接后果,每个设计一旦让说明书通过就停手,覆盖率只反映「足够通过的测试」,而非「能达到的最大值」。

验收门:CVDP 通过率100%
顺便量出的平均设计覆盖率97.9%

逐设计看,循环是把一条「低覆盖率尾巴」抬起来,好几个从 20% 至 40% 覆盖率起步的设计被拉向满覆盖,而不是只轻推那些本就很高的。CID 014 是反面,一开始就在 98% 附近,立刻饱和。作者强调,他们没有试图把覆盖率逼到 100%,这里的覆盖率是一个「生成的测试确有实质内容」的诊断,不是「穷尽验证」的声明。

论文第 5 节是最诚实的部分,作者主动划了两条红线。

红线一:过度求解/奖励攻击

当前设置里,智能体能看到每轮评测的详细输出(仿真器消息、评测日志、失败轨迹)。这像真实的调试工作流,工程师本就会查日志和反例。但完全访问这些信号也带来一种失败模式:智能体可能把生成的 RTL 定制得刚好匹配观察到的失败、确定性的测试、或评测器的怪癖,而不是稳健地实现设计的本意。于是一个「通过」的结果,可能意味着「在暴露的轨迹下满足了可见的说明书」,而不是「在所有合理测试下满足了规格」。

打个比方 · 奖励攻击

就像学生提前拿到了历年扣分记录和批改细则,于是专门针对「怎么不被扣分」去答题,而不是真正学会这门课的内容。

作者据此建议未来的智能体硬件设计基准采用两级协议:修复期间暴露有用的诊断反馈,但把隐藏的随机测试、独立参考模型、形式等价性检查、性质套件或留出的仿真器配置,保留给最终评分。这与软件工程基准 SWE-bench 的「结构性测试保留」思路一致。

红线二:反馈周转时间

本文的 RTL 通过/失败基准相对友好,因为大多数评测跑得够快,能支撑迭代修复。但在更广的芯片设计里,奖励评测可能慢得多,PPA(性能/功耗/面积)优化、EDA 工具演化的奖励可能需要综合、布局、布线、时序分析、功耗估计或大型回归套件。作者提到 SATLUTION 已经展示过代价:即便约 800 个节点并行,评测整个 SAT 竞赛基准也要约两小时周转;而 RTL 的 PPA 优化,周转可能长到几天甚至几周。长延迟奖励从根本上改变了问题,朴素的「编辑、评测、修复」循环会变得太慢,智能体必须在延迟、稀疏、昂贵的反馈下推理。解决「长周转奖励」因此是智能体芯片设计的一个关键研究挑战。

他们明确不声称智能体硬件设计已经被解决:当前 RTL 基准是一个宽得多的工程问题的受控代理,仍留下奖励攻击、稳健性、长程设计规划、以及在真实生产设计流程中部署等重要问题。 NVIDIA Research,论文第 5 节
来源:arXiv:2606.28279v1 [cs.AR],NVIDIA Research《Agentic Hardware Design as Repository-Level Code Evolution》,2026 年 6 月 26 日 Preprint(Cunxi Yu、Chenhui Deng、Nathaniel Pinckney、Brucek Khailany)。本文为原论文的中文解读,数据与结论均出自原文,架构图来自 NVIDIA Research/marktechpost。
来源
arXiv · NVIDIA ResearcharXiv · NVIDIA Research·查看主材料
↑ 正文结束
✓ 本篇全文免费开放

会员可复制、下载全文 Markdown,还能让你的 AI 订阅和提问。

阅读原文 ↗
📮 新解读第一时间进邮箱

读完觉得有用?留个邮箱,每篇新解读发布就送达,随时退订。