当前位置: 首页 > article >正文

体系结构论文(110):MAGE: A Multi-Agent Engine for Automated RTLCode Generation

MAGE: A Multi-Agent Engine for Automated RTL Code Generation 【DAC25】文章想解决什么问题现有 LLM 自动写 RTL 的主要问题不是“能不能生成”而是生成结果往往语法能过但功能不一定对。尤其 RTL 设计涉及 Verilog 本体、testbench、仿真、波形分析、debug 反复迭代单个 agent 很难同时处理这么多不同类型的任务和上下文切换。文章指出哪怕是很强的单模型方法在功能正确率上也仍有明显短板。它的核心思路是什么作者提出MAGEMulti-Agent Engine for Automated RTL Code Generation把 RTL 自动设计流程拆成四类 agentRTL Generation Agent生成 RTL 代码Testbench Generation Agent生成/优化 testbenchJudge Agent仿真、打分、判断该继续调试代码还是重生 testbenchDebug Agent根据仿真反馈去修 RTL。这篇文章的本质思想很像“把人类 RTL 团队的分工流程搬到 LLM 系统里”而不是让一个模型包办全部工作。这个整体流程在第 3 页图 1 里画得很清楚。它的两个关键创新高温采样 排序机制一般会觉得高 temperature 会让 RTL 生成更不稳定但作者发现如果不是只采一个结果而是高温多采样多个候选再通过仿真分数筛掉差的反而更容易找到更接近正确答案的 RTL。他们定义了基于 mismatch 数量的分数对多个候选排序选 Top-K 再进入后续 debug。第 4 页给了公式和统计图说明高温下“最好那个样本”往往更强。基于 Verilog 状态检查点state checkpoint的调试机制传统方法往往只能告诉模型“最终输出错了”但这类反馈太粗。MAGE 会在每个时钟边沿比较 DUT 输出和期望输出找到最早出错的时间点再提取对应输入、输出、期望值形成一种文本化波形窗口反馈给 debug agent。这样模型不是只知道“错了”而是知道“在第几个 cycle、什么输入条件下、哪个信号开始不对”所以修复更有针对性。第 5 页给了形式化定义第 6 页图 3 给了一个很直观的例子。一、高温本质上是什么1. 它属于“解码策略”不是训练方法LLM 生成代码时本质上是在每一步从很多候选 token 里选一个。训练阶段模型学会“下一个 token 的概率分布”推理/生成阶段你要决定“到底从这个分布里怎么选”高温就是发生在第二步也就是生成阶段的采样控制方法。文章里明确说LLM 对输入需求会依赖某种 decoding strategy 来自回归生成代码而temperature sampling就是其中一种。2. 它控制的是“随机性”作者原文说temperature coefficient T 用来控制采样随机性提高 temperature 会避免过于保守的结果并提升代码生成的多样性从而增加探索到正确答案的机会。高温 让模型更敢尝试不同写法而不是只走最稳的那条路。二、数学上它在干什么假设模型对下一个 token 给出的原始概率大概是这样always0.70assign0.20wire0.08其他0.02如果你直接选最大概率那每次几乎都会选always。这就是很“低温”、很保守的行为。而 temperature 会对 logits / 概率分布做缩放。直觉上1. 温度低高概率 token 更占优势分布更尖锐输出更稳定、更一致但也更容易反复生成“同一种错误答案”2. 温度高概率分布被拉平原来不是第一名的 token 也更有机会被选中输出更多样但也更容易引入噪声和错误所以高温不是“更聪明”而是“更发散、更探索”。三、为什么叫“高温”这是概率采样里沿用的术语。工程上就记低温保守、确定、收敛高温发散、多样、探索在代码生成里它经常用于“多采几个不一样的候选看看”。一. Introduction1 RTL 设计本身为什么费时费力文章先从传统数字硬件设计说起工程师需要写 HDL如 Verilog/VHDL随着 VLSI 设计复杂度上升这个过程越来越耗时、容易出错往往要经历很多轮“写代码—仿真—调试—再改代码”的循环。这段话的潜台词是RTL 设计不是一次性写完的而是一个强迭代流程。2 LLM 进入这个领域后已有工作做了什么作者总结已有研究主要做了三类事第一类模型层面增强比如fine-tuning域适配训练RTL 专用模型训练。也就是试图让模型本身更懂硬件设计。第二类单 agent 外部反馈比如把compiler 的报错simulator 的输出自检结果反馈给 LLM让它自己继续修。第三类增加生成阶段例如 planning、verification、refinement 等阶段但本质上很多仍然是由一个 agent 统一完成。3 作者为何认为单 agent 不适合 RTL这里是 Introduction 的核心论证之一。作者认为RTL 自动生成流程本身存在严重的上下文切换问题有的阶段要写可综合 RTL有的阶段要写不可综合 testbench有的阶段要读仿真日志有的阶段要做错误分析和修复这些任务不是一个维度的事情。把它们全部塞进同一个 conversation history会带来几个问题问题 1上下文过于复杂一个 agent 需要同时记住不同类型的目标和约束负担太重。问题 2知识结构冲突testbench 和 synthesizable RTL 的写法、目的、评价标准都不同。文章后面反复强调这一点。问题 3对话历史污染同一个 agent 在长历史里同时处理生成、验证、修复容易让上下文混乱导致后续表现变差。这其实是一个很典型的多智能体论文论证方式不是说“多智能体天然更高级”而是说这个任务天然具有模块化子职责因此多智能体更合适。4 为什么 HDL 的特殊性会加剧问题文中专门强调 HDL 不是一般编程语言。它描述的是硬件行为因此特别依赖时序信号关系硬件结构语义数据在寄存器间的流动。这意味着普通代码生成里“逻辑差不多”有时还能容忍但在 RTL 里一个条件项少了、一个时序边沿错了、一个寄存器更新时机不对功能就可能完全错所以 RTL 场景对“功能正确性反馈”的要求远高于普通代码生成。文章提出的三个 design principlesIntroduction 末尾把 MAGE 的核心设计思想概括成三条。这个地方你最好记住因为这是全文的主轴。1 第一条模拟人类 RTL 团队的协作方式作者说他们模仿现实中 RTL 设计团队的工作流不同专家负责不同阶段通过专门设计的上下文通信协议协作。这就是 MAGE 的多智能体结构动机。2 第二条高温采样 仿真评分作者认为高 temperature 的价值不在于直接生成最优答案而在于让候选更多样提高“采到真正高质量候选”的概率。但高温会引入噪声所以它必须配合simulation-based scoring候选筛选下一阶段优化这一点很关键。因为作者不是盲目说“温度高就更好”而是说高温的探索性只有放进一套带评分和筛选的机制里才真正有价值。3 第三条状态检查点验证区别于传统只看最终输出 mismatch 的方法MAGE 会在每个 clock edge 比较状态尽早定位第一个出错时刻给 debug agent 提供更细粒度的错误上下文。这个想法对 RTL 非常自然因为 RTL 本来就是时钟驱动的序列行为系统。所以它的 debug 反馈如果能对齐到 cycle 级别会比单纯 pass/fail 有用得多。二、背景与动机Section II-A LLM 做 RTL 为啥难1. 传统 RTL 设计流程的本质是什么作者先回到传统数字硬件设计流程指出 RTL 设计不是“写一段 Verilog 就结束”而是一个反复迭代的过程。工程师通常要循环做三件事写 Verilog描述硬件结构和行为写 testbench对设计进行严格验证在 Verilog 仿真、波形分析、代码修改之间来回迭代直到输出和预期一致。这里有两个很重要的隐含点。1RTL 设计不是单步生成问题而是闭环问题也就是说RTL 设计的本质不是输入规格 → 一次性吐出正确代码而更像输入规格 → 初始 RTL → 验证 → 发现错误 → 修复 → 再验证所以如果一个自动化方法只关注“生成”不关注“验证和修复”那它天然就不完整。2RTL 设计天然适合任务分解因为传统流程本来就包含多个阶段且每个阶段的目标不同RTL 编写关注可综合性与功能行为testbench 编写关注覆盖性与验证能力波形分析关注时序和状态变化代码 refinement 关注错误修复作者由此得出一个动机既然人类工程师在现实里都要分阶段、分角色做这些事那么自动化系统也应该顺着这种结构拆分而不是让一个统一 agent 把所有事揉在一起。2. Related Work 批评什么这一段不是简单做文献综述而是在把已有方法归类并指出它们的问题。作者提到两类主流方法1训练/微调类方法这类工作通过引入 RTL 领域知识fine-tuning域适配训练来增强模型对 RTL 的理解从而提高生成正确率。这类方法的优点是让模型“更懂 RTL”但问题是它们主要还是在模型能力层面做增强没有改变整个任务流程结构。2单 agent 反馈增强类方法这类方法会把仿真结果编译器报错规划步骤修复建议反馈给同一个 agent让它继续生成或修改代码。作者认为这种方法虽然比“单次直接生成”更先进但仍有一个根本瓶颈同一个 agent 需要在多轮迭代中处理太多不同性质的子任务。3. 作者认为“单 agent 不适合 RTL”的根本原因作者强调RTL 自动生成流程存在context switching也就是上下文切换问题。这个切换不是普通的“换个 prompt”而是跨越了不同任务类型、不同代码类型、不同知识域。具体包括既要生成synthesizable RTL又要生成non-synthesizable verification code还要理解simulation feedback还要做debug/refinement这些任务之间差异很大。为什么这会导致单 agent 表现变差1任务目标不同RTL 代码要可综合强调硬件行为testbench 不要求可综合强调验证激励和检查逻辑这两个目标并不一致。2知识结构不同RTL 生成需要理解寄存器传输、组合/时序逻辑testbench 更像验证脚本与激励设计debug 又需要从日志或波形中做因果推断一个 agent 同时做这些很容易出现知识混用和推理负担过重。3长对话历史会污染上下文文章专门说一个 agent 要在统一的长 conversation history 中维持一致性这本身就会让结果变得 sub-optimal。这句话可以理解为不是 LLM 不够强而是任务组织方式不合理。4. multi-agent作者随后用一段对比说明为什么 multi-agent 看起来更合理。他们的表述是multi-agent 系统让不同 agent 拥有独立的对话历史因而可以专门处理某一类任务这样模块化更强也更利于 specialized task handling。这里的关键不是“agent 多了”而是不同 agent 的上下文被隔离了。5. 作者为什么仍然不满意已有 multi-agent 工作作者不是简单站队“multi-agent 一定好”而是进一步批评现有多智能体方法也做得不够彻底。1对 Aivril 的批评作者说 Aivril 只是做了一个基本的两智能体拆分代码生成和 review。但问题在于它仍然让一个 agent 同时处理synthesizable RTLnon-synthesizable verification code所以最根本的 context-switching 还是没解决。也就是说在作者看来拆分粒度还不够细。2对 VerilogCoder 的批评作者说 VerilogCoder 受限于闭源实现依赖专有组件例如 AST、Waveform Tracing Tool。这个批评其实有两层一层是工程可用性闭源、专有工具会限制系统可扩展性和适配性。另一层是 LLM 友好性如果大量依赖并非直接面向 LLM 的外部工具那么系统虽然也许有效但不够透明也不够容易复用。所以作者后面特别强调 MAGE 是 open-source 且工具链尽量对 LLM 直接友好。6. Temperature Sampling这一段是这部分里最容易被忽略、但其实很重要的理论转折。作者先解释了 temperature sampling 的基本概念LLM 按某种 decoding strategy 自回归生成代码temperature TTT 用来控制采样随机性温度高结果更不保守、更多样这有助于探索正确答案但也会引入更多噪声和错误。这本来是一般性的采样结论但作者接着指出一个“矛盾”在软件代码生成里高温多采样有时能提升正确率但在 RTL 设计里已有研究却发现高温往往更差。作者没有停在这个现象上而是给出自己的解释不是高温本身不适合 RTL而是单-agent 机制限制了独立且高效的采样与反馈设计从而抑制了高温采样的优化潜力。这句话是整篇文章后续“高温采样 排序 debug”的理论基础。你可以把它理解成高温的价值在于扩大搜索空间但如果你没有一个机制去评估候选筛掉差的把好的继续修那高温只会显得“更乱”所以作者不是说“高温好”而是说高温必须被放进一个有效的搜索-验证框架里才能真正发挥作用。Section II-B这一节的标题是Opportunity on Effective Code Generation。意思是既然前面已经说明现有系统的问题那么在代码生成环节到底有哪些明确的优化机会1. 第一层机会把 testbench 和 RTL 更合理地拆开作者提出现有工作常常让同一个 agent 同时生成非综合 testbench可综合 RTL 代码。他们认为这是不合理的原因有两个。1增加任务复杂度同一个 agent 要同时服务于两个性质不同的输出目标推理负担会明显变重。2导致验证失去独立性作者引用工作指出如果 testbench 和代码在同一会话里一起生成test case 可能会受生成代码影响进而变得有偏、缺乏客观性和多样性。这一点很值得注意。它实际上在强调一个验证理论里的直觉验证不应该太依附于被验证对象。如果 testbench 是“顺着代码思路”生成的那么即使代码有问题testbench 也可能没把问题测出来。所以作者主张让 testbench 生成成为一个更独立的子任务通过任务分发和工作流设计把 RTL 和 testbench 的相互污染降低这其实是 MAGE 中 Testbench Agent 存在的重要动机之一。2. 第二层机会需要一个真正开源且可扩展的 multi-agent 系统作者回顾现有 multi-agent 系统后说它们大多闭源依赖第三方专有工具不直接适配 LLM。这会带来两个问题1扩展性差很难把系统迁移到别的模型、别的工具链、别的验证接口上。2透明性差研究者很难看清楚系统到底为什么有效也难以复现或替换其中的关键部件。所以作者在这一节提出的不是一个具体算法而是一个明确的系统需求需要一个 open-source 的 multi-agent framework。这个需求后来被 MAGE 满足。3. 第三层机会高温采样不该直接用而该结合“早筛选”这一段在逻辑上是承接 Section II-A 最后那段 temperature 讨论的。作者说为了解决高温采样在 RTL 中容易引入随机噪声的问题关键在于要高效地采样 RTL 候选同时缓解随机性带来的负面影响利用高温探索带来的正面效果。为什么 RTL 特别适合这么做作者给了两个理由1RTL 是可仿真的这意味着候选代码能被快速拿去执行测试。2存在实用的 mismatch scoring method也就是可以根据 mismatch 数量对候选打分。于是作者提出一个非常关键的系统设计思想在早期就优先识别 top-scoring candidates尽早过滤掉差候选从而降低探索成本。这个想法很像 beam search / candidate pruning但这里不是用语言模型概率筛而是用功能仿真结果筛。所以本节真正表达的不是一句“高温采样很好”而是先高温生成多个 RTL 候选再用仿真 mismatch 做筛选把生成问题变成“采样 验证 保留优者”的搜索问题这是 MAGE 生成端最关键的系统思想之一。Section II-C如果说 Section II-B 解决的是“怎么更好地产生候选”那么 Section II-C 解决的就是候选错了之后怎么更有效地改。1. 现有 RTL 调试反馈为什么不够用作者首先批评现有不少方法直接把原始 golden testbench 拿来跑然后把反馈交给 LLM。问题在于这种反馈通常只能给出pass rates。也就是说模型看到的往往只是通过了多少或者没通过作者认为这种信息太粗了不足以支撑高质量 debug因为它缺乏timing analysissignal interactionsvariable valuesmismatch information。这些信息对 RTL 来说都很关键。为什么这些信息在 RTL 中尤其重要因为 RTL 是时序驱动的系统。一个错误可能不是“最终输出错了”这么简单而是第几个时钟周期开始出错哪个输入组合触发错误哪个内部条件漏写了哪个寄存器更新时机不对如果反馈没有这些细节LLM 就只能“瞎猜式修复”。2. 作者为什么反对依赖 AST 分析和图形波形工具作者点名说 VerilogCoder 使用了闭源 AST analysis这限制了灵活性和透明性。接着又说图形化输出工具虽然对人类直观但对 LLM 不友好因为LLM 无法直接高效利用图形形式输出还会增加任务复杂度。这里作者的立场很明确调试信息的组织形式必须适合 LLM 使用。这不是一个小问题。你可以把它理解为作者不是只在做“debug signal extraction”而是在做一种LLM-oriented debug protocol design。3. 作者提出的解决方案优化 testbench让它输出文本化“波形日志”于是作者提出他们需要一种优化过的 testbench它不再只输出 pass/fail而是输出一种类似模拟波形的文本日志。这件事的本质是把原本面向人类工程师的图形波形信息转成面向 LLM 的文本序列信息。这样做有什么好处1直接适配 LLMLLM 最擅长处理文本而不是波形图。2保留关键信息这个日志可以保留输入变化输出变化预期与实际的差异错误发生时间窗口3能支持更精细的 debug模型不再只知道“错了”而能知道在哪一拍错在什么输入下错错误表现是什么4减少对闭源工具的依赖整个框架就更开放、透明、可扩展。三、MAGE文章一开始说MAGE 是一个专门为 RTL 设计的多智能体引擎。它不是一般意义上的多 agent 套壳而是把两类东西结合起来RTL-specific context communication protocol高效、适合 LLM 的 RTL 调优工具。这句话的含义是1. 它不是单纯“让多个 agent 聊天”而是设计了一套面向 RTL 场景的信息传递方式。也就是说每个 agent 拿到的输入不是自然语言随便拼一段而是经过任务定制的、结构化的上下文。2. 它把“工具调用”视为系统一部分MAGE 不是只靠 LLM 文本推理而是把语法检查仿真候选打分mismatch 分析这些工具和 agent 工作流紧密耦合在一起。所以这节的起点就是MAGE 是一个 orchestration system不只是一个 prompt framework。Section III-A1. 四类 agent 分别负责什么文章定义了四种 agent每一种都只做一类明确职责。1Testbench Generation Agent职责是根据自然语言规格以及可能已有的 golden testbench生成一个优化后的 testbench这个 testbench 的输出形式是textual-waveform-output format。它不是普通意义上的“写个 testbench 就行”它要完成两件更高级的事情第一补足自然语言规格的不完备性因为自然语言可能有歧义所以如果有已有 golden testbench就会结合使用。第二把 testbench 改造成“适合后续 debug”的形式即不仅能测 pass/fail还能输出 checkpoint/log 这种文本化波形信息。所以它其实是整个系统里验证接口设计者。2RTL Generation Agent职责是将自然语言规格 优化后的 testbench转成 Verilog RTL 代码并结合 syntax checking 确保代码有效。这个 agent 的重点是什么它做的不是“裸生成”而是带 testbench 约束的生成。这意味着它生成的 RTL 从一开始就不是孤立代码而是带着“将来怎么被验证”的语境来的。这比单纯根据 spec 直接写代码更合理因为spec 有时太抽象testbench 给出了更具体的行为约束3Judge Agent职责是仿真和评估生成的 RTL根据优化后的 testbench 去测给候选 RTL 打分决定下一步是继续 debug RTL还是重新生成 testbench。为什么 Judge Agent 很关键它在系统里扮演的是控制器/仲裁者角色。它不只是“测一下对不对”而是负责决定当前错是 RTL 的问题还是 testbench 本身不够好或者有问题哪些候选值得保留哪些可以丢掉所以 Judge Agent 本质上是在做verification-driven workflow control。4Debug Agent职责是对没通过测试的代码做迭代修复利用 textual waveform-like simulation outputs 作为反馈持续改 RTL直到更接近正确。这个 agent 的特点是什么它不是从头重写而是基于已有 RTL 做局部修补与 refinement。这和人类工程师 debug RTL 的习惯很像先定位问题再改局部逻辑而不是每次推倒重来。2. 这四个 agent 组合起来意味着什么文章明确说这种分工是受人类 RTL 团队协作模式启发的。这背后的核心思想是让不同 agent 各自维护独立上下文避免一个 agent 同时承载所有任务类型通过 workflow 把各 agent 结果组织起来。你可以把它理解成一个小型 RTL 设计团队Testbench Agent 像验证工程师RTL Agent 像设计工程师Judge Agent 像评审/验证协调者Debug Agent 像修 bug 的实现工程师Step 1Generate initial textual-waveform-output testbenches这一步干什么先根据自然语言规格生成一个能输出文本波形信息的 testbench。如果已有 golden testbench也会和自然语言规格结合起来一起用。为什么要这样做作者前面已经批评过传统 golden testbench 的反馈太粗只给 pass rate。所以这里他们直接在第一步把 testbench“升级”为能产生 checkpoint能为 Step 5 的 debug 提供细粒度信息这一步的本质这不是简单“生成 testbench”而是生成一套面向 LLM 调试的验证接口。Step 2Generate initial RTL code这一步干什么根据自然语言规格优化后的 testbench生成一个初始 RTL 版本。为什么 testbench 也要参与 RTL 生成因为 testbench 除了测代码也相当于把规格进一步“操作化”了。它给出了输入输出关系检查方式行为预期所以它既是验证工具也是对 spec 的补充约束。Step 3Simulate and evaluate testbench这一步干什么如果初始 RTL 没通过 testbenchJudge Agent 会去判断是 RTL 错了还是 testbench 本身不可靠如果 testbench 有问题就重新生成一个优化版本。这一点非常有意思很多系统默认 testbench 一定正确但 MAGE 并不做这个假设。作者认为自然语言规格本身可能有歧义自动生成的 testbench 也可能不理想因此testbench 也是可迭代优化对象。这意味着什么MAGE 不是只“debug RTL”它其实也在某种程度上debug verification environment。Step 4RTL High-Temperature Sampling and Ranking这一步干什么如果 RTL 被认为可以继续推进系统就会做高温采样生成多个 RTL 候选仿真这些候选根据 mismatch 情况打分选出 Top-K 候选。这一步为什么重要这是 MAGE 生成端的核心创新之一。它把“生成一个 RTL”转化成生成一批候选 → 用功能评测筛选最优候选图 1(c) 想说明什么图 1(c) 画得很清楚高温采样生成多个 candidatecandidate 进 simulatorjudge 对它们 score and rank选 Top-K 进入 debug step。也就是说高温不是单独使用而是嵌在一个完整的candidate search pipeline里。Step 5RTL Debugging with Verilog-State Checkpoint这一步干什么对于还存在功能错误的候选 RTL系统会利用 Step 1 里 testbench 产生的 checkpoint找到最早 mismatch提取文本波形窗口让 Debug Agent 做局部修复再仿真决定接受修改还是回滚。为什么要“回滚”图 1(d) 里你能看到有 rollback。这说明 Debug Agent 的修复不是默认全都收下而是经过验证后才决定保留。这点很重要因为 LLM 的修改可能修了一个 bug又引入另一个 bug所以 MAGE 把 debug 做成了一个带验证的 trial-and-select 过程。Section III-B这一部分是生成端最核心的技术机制。1. 这部分首先想回答什么问题文章先承认一个事实高温采样更容易探索正确代码但高温也会显著增加随机性过去 RTL 场景下常觉得高温会导致正确率下降。所以作者这里要回答的问题是能不能既保留高温的探索优势又控制它的噪声问题他们的答案是可以但必须做多候选采样 仿真打分 排序筛选。Figure 2 画的是低温 T0,n1高温 T0.85,n20在两个 benchmark 上各个问题的 normalized mismatch count 分布。图的核心结论作者观察到虽然高温整体更随机但高温生成出来的“最好那个候选”在大多数问题上 mismatch 更低。这非常关键因为它支撑了作者的整个方法论高温并不是让平均样本更好而是让“最优样本”更有机会出现。所以高温适合作为探索机制而不是直接作为最终输出机制。3. 数学形式怎么理解作者把这个过程写成三步。第一步采样 c 个候选 RTL公式 (1)含义是对于第 i 个问题在给定system prompt psysp_{sys}psys​natural language specification SPiSP_iSPi​testbench TBiTB_iTBi​temperature TTT的条件下从模型分布里采样出 c 个 RTL 候选。这一步的本质不是追求一次命中而是构建候选池 Ri。第二步按 mismatch 分数选 Top-K作者定义分数其中m(r)是 mismatch counttc(r) 是 total checks 数量。这个分数怎么理解它本质上是一个“归一化正确率”如果完全没有 mismatchm(r)0则 s(r)1mismatch 越多分数越低也就是说分数越接近 1说明候选越接近正确。然后作者选取含义是从所有候选里挑出分数最高的 Top-K 个组成新的候选集合。第三步对 Top-K 候选做 debug trial 并更新作者定义对每个选中的候选 r∗debug agent 会生成一个修复版然后在原候选和修复版之间选得分更高的一个更新到下一轮集合中。更新公式 (4) 表达的就是每个候选都有一次 debug trial系统保留原版和修复版中更好的那个这一步的意义这其实是一个局部 hill-climbing / iterative refinement过程候选先靠高温探索拿到然后靠 debug 往更优方向迭代终止条件作者说这个过程会一直重复直到或者达到迭代上限。意思就是只要某个候选已经完全通过就停止否则就一直修到预算耗尽4. 这一机制的本质是什么这一整套高温采样机制本质上不是“temperature trick”而是一种功能驱动的候选搜索框架它包含三层逻辑第一层高温负责探索扩大搜索空间增加采到优质候选的机会。第二层仿真负责评估用功能正确性而不是语言概率来评判候选。第三层debug 负责局部优化把有潜力但还不完全对的候选继续往正确方向推。所以 MAGE 其实把 RTL 生成从“单步生成问题”改造成了一个搜索 评估 修复问题。Section III-C文章开头就讲得很明确目标是设计一个机制要求同时满足三点完全 LLM-based不依赖第三方闭源工具有效提高 RTL debugging efficiency。这三点说明作者不是只追求效果还在乎工具链开放性对 LLM 的适配性工程可扩展性2. 第一步找到最早 mismatch 时刻作者说利用 Step 1 和 Step 2 里得到的 testbench、DUT 和输出先找最早不匹配时间点为什么要找“最早” mismatch因为最早出错点往往最接近 bug 的根因。后面更晚出现的错误很可能只是早期 bug 传播后的连锁反应。这和调试里的一个经典原则一致先找 first failing point而不是被后续错误淹没。3. 第二步构造文本波形窗口 W含义是以最早 mismatch 时刻 tmt_mtm​ 为终点往前取一个长度为 LW​ 的窗口收集这段时间内每个时钟边沿的输入向量DUT 输出期望输出这个窗口有什么作用它把调试问题局部化了。Debug agent 看到的不再是完整长波形一大堆全局仿真信息而是bug 发生前后最关键的一小段上下文为什么这样设计很聪明因为 LLM 最怕输入太长、太杂。如果把整个仿真轨迹都给它它反而抓不住重点。而这个 sliding window 设计实际上是做了fault-localized context compression。4. 第三步让 Debug Agent 基于 W 做修复作者说Debug agent 拿到文本波形窗口 W原始 testbench然后生成一个新的 debugged RTL trial并执行 replacement actions 去修正故障。之后重新仿真检查 mismatch 是否被解决。这里的“replacement actions”怎么理解它不是说 agent 必须整段重写 RTL而更像是定位出有问题的逻辑片段做替换式修补这更符合真实 debug 过程也降低了 LLM 每轮改动过大的风险。图 1(d) 画了一个很直观的调试过程第一次迭代在某个 checkpoint 处发现 mismatch把 mismatch 信息转进 sliding window logDebug agent 修改代码再仿真如果新的 checkpoint 通过就继续往后推进否则回滚或继续下一轮。四、实验作者用了两个很常见的 RTL 生成 benchmarkVerilogEval-v1-HumanVerilogEval-v2。文章实验统一采用Claude 3.5 Sonnet (2024-10-22)。作者把基线分成两大类1Vanilla models也就是单次直接生成 RTL 的模型包括GPT-4oClaude 3.5 Sonnet一些 RTL-specific 模型例如 ITERTL、CodeV。2LLM agent systems也就是用 agent 或 workflow 增强 RTL 生成的方法包括OriGenVeriAssistAutoVCoderVerilogCoderAIVRIL。作者说 MAGE 集成了Icarus Verilog作为开源 Verilog 编译器和仿真器LlamaIndex作为 LLM-agnostic API interface。温度配置作者在 benchmark 上测了两种设置Low TemperatureT0, top_p0.01, n1High TemperatureT0.85, top_p0.95, n20。其中T控制采样随机性top_p控制候选 token 池的累计概率截断n是 evaluation runs 的次数。这组设置想验证什么就是要验证前面理论部分的主张在 RTL 场景里只要高温采样和后续筛选机制结合好高温配置就可能优于低温。为什么用 Pass1因为它比“多次里总有一次成功”更严格。Pass1 反映的是系统在单次实际部署场景下的可用性。所以如果一个方法 Pass1 高说明它不是靠“大量重试碰运气”而是单次成功率就高。Table I高温和低温到底差多少Table I 给出的结果是High TempVerilogEval-Human Pass1 94.8VerilogEval-V2 Pass1 95.7Low TempVerilogEval-Human Pass1 89.1VerilogEval-V2 Pass1 93.6。高温配置优于低温配置。所以作者后面所有实验都采用高温设置。因为这张表直接验证了作者前面在方法部分的一个核心观点高温采样在 RTL 中不是天然无效只要和 MAGE 这种多候选筛选 debug 机制结合高温反而更强。这意味着文章不仅提出了理论解释还用实验把解释落地了。Key Results作者在表 II 中报告了不同方法在 benchmark 上的最好 Pass1。MAGE 的结果是VerilogEval-Human94.8%VerilogEval-V295.7%。而它超过了所有比较对象包括通用模型RTL 专用模型开源 agent 系统闭源 agent 系统。和 Claude 3.5 Sonnet 直接比提升有多大文章特别强调MAGE 相对于同一个底模 Claude 3.5 Sonnet 的直接使用提升是Human 上 19.8%V2 上 23.3%。这说明什么这说明提升不是因为“换了个更强模型”而是因为同一个模型换成 MAGE 的系统工作流效果显著提高所以论文最有价值的地方就在系统设计而不是底层模型 selection。对通用大模型比如 GPT-4o、Claude 直接生成 RTL表现明显不如 MAGE。说明仅靠大模型本身的 coding 能力不够RTL 这种任务还需要更强的验证和修复机制。对 RTL-specific 模型例如 ITERTL、CodeV也不如 MAGE。说明只做 RTL 领域适配并不足以解决问题系统级 orchestration 可能比单纯“让模型更懂 RTL”更重要。对 agent systems例如 OriGen、VeriAssist、AutoVCoder、VerilogCoder、AIVRILMAGE 仍然更强。说明不是所有 agent 化都有效关键在于 agent 如何拆分、如何沟通、反馈如何组织。Ablation Study作者主要做了三类验证multi-agent 分工消融state checkpoint 机制案例分析sampling debugging 效果分析1. Multi-Agent System 消融为什么说明分工有效作者比较了三种设置Vanilla LLM单次直接生成 RTLSingle-Agent把 MAGE 里的不同角色并到一个 agent 里共享统一历史Multi-AgentMAGE 的正式做法角色分开。表 III 的结果是Vanilla72.4%Single-Agent83.9%Multi-Agent93.6%。从 Vanilla 到 Single-Agent11.5说明即使只是把流程做复杂一点、加入更多阶段也会有提升。也就是说“verification/refinement in the loop”本身就有价值。从 Single-Agent 到 Multi-Agent再 9.7说明进一步把职责分开、隔离上下文还能继续显著提升。这就直接支持了前面 Section II 的核心论点图 3 是一个 case study对比没有 checkpoint 的 debug有 checkpoint 的 debug。没有 checkpoint 时发生了什么LLM Debug Agent 只看到output 有多少 mismatches第一次 mismatch 的时间点但它无法准确知道哪个具体逻辑条件缺了具体错在什么输出位上因此它做出的修复动作是错的最终 simulation failed。有 checkpoint 时发生了什么日志会明确给出first mismatch at time 50输入是 c1,d1c1, d1c1,d1当前 mux_in 输出是 1000期望输出是 1001于是 LLM 能推理出问题在 mux_in[0]对于 cd11 时这一位应该为 1当前逻辑漏掉了 (cd)(c \ d)(cd) 这个条件项。然后它就能做对修复simulation passed。这个 case study 说明了什么它说明 checkpoint 的价值不是“提供更多信息”而是提供了更接近 bug 根因的局部、结构化、可推理信息。这使得 debug 从“模糊猜测”变成“有依据的逻辑补全”。3. Sampling and Debugging Mechanisms图 4(a)sampling 的效果图中比较了没有 sampling 的 RTL score 分布采样并选出 best RTL candidate 之后的 score 分布。文章说没有 sampling 时RTL score 基本在 [0,1][0,1][0,1] 范围里比较分散而用了 sampling 后score 更集中在 1 附近。这说明什么高温多采样 筛选确实把候选质量整体往上抬了。不是只少数例子有效而是整体分布发生了改善。图 4(b)debug 的效果图中展示了多轮 debug 后 mean score 的变化初始 score 大约0.669然后逐轮上升最后到0.890。这说明什么debug 不是无效的局部折腾而是每一轮 refinement 都在平均意义上让 RTL 更接近正确多轮迭代具有累积增益。4. 这一部分整体在证明什么图 4 实际上证明了两个子机制分别都有效sampling把初始候选变得更好debugging把候选进一步推向正确解。所以 MAGE 的提升不是来自一个单点而是一个前端搜索 后端修复的双阶段收益。

相关文章:

体系结构论文(110):MAGE: A Multi-Agent Engine for Automated RTLCode Generation

MAGE: A Multi-Agent Engine for Automated RTL Code Generation 【DAC25】 文章想解决什么问题 现有 LLM 自动写 RTL 的主要问题,不是“能不能生成”,而是生成结果往往语法能过,但功能不一定对。尤其 RTL 设计涉及 Verilog 本体、testbench、…...

三伍微Wi-Fi射频前端芯片全解析:从GaAs/SOI开关到IoT FEM的国产替代方案

1. 三伍微Wi-Fi射频前端芯片的技术突围 在智能家居和物联网设备爆发的今天,Wi-Fi射频前端芯片就像无线信号的"交通警察",负责指挥数据流的收发和功率调节。三伍微的国产化方案用GaAs(砷化镓)和SOI(绝缘体上硅…...

数据库高可用与灾备方案:从设计到实现

数据库高可用与灾备方案:从设计到实现 一、数据库高可用的核心概念 1.1 高可用的定义与重要性 数据库高可用性是指数据库系统在面对各种故障和挑战时,能够持续提供服务的能力。高可用对于企业级应用至关重要: 业务连续性:确保核心…...

AI工具爱毕业(aibiye)帮助用户高效复现数学建模论文,并优化排版效果

还在为论文写作头痛?特别是数学建模的优秀论文复现与排版,时间紧、任务重,AI工具能帮上大忙吗?今天,我们评测10款热门AI论文写作工具,帮你精准筛选最适合的助手。 aibiye:专注于语法润色与结构…...

爱毕业(aibiye)提供AI驱动的数学建模论文复现和智能排版解决方案

还在为论文写作头痛?特别是数学建模的优秀论文复现与排版,时间紧、任务重,AI工具能帮上大忙吗?今天,我们评测10款热门AI论文写作工具,帮你精准筛选最适合的助手。 aibiye:专注于语法润色与结构…...

使用爱毕业(aibiye)的AI功能,轻松实现数学建模论文的复现与自动化排版

还在为论文写作头痛?特别是数学建模的优秀论文复现与排版,时间紧、任务重,AI工具能帮上大忙吗?今天,我们评测10款热门AI论文写作工具,帮你精准筛选最适合的助手。 aibiye:专注于语法润色与结构…...

借助爱毕业(aibiye)的AI工具,可高效完成数学建模论文的复现与智能排版

还在为论文写作头痛?特别是数学建模的优秀论文复现与排版,时间紧、任务重,AI工具能帮上大忙吗?今天,我们评测10款热门AI论文写作工具,帮你精准筛选最适合的助手。 aibiye:专注于语法润色与结构…...

爱毕业(aibiye)结合AI技术,助力数学建模论文的复现与精准排版

还在为论文写作头痛?特别是数学建模的优秀论文复现与排版,时间紧、任务重,AI工具能帮上大忙吗?今天,我们评测10款热门AI论文写作工具,帮你精准筛选最适合的助手。 aibiye:专注于语法润色与结构…...

MRU Cache Policy

MRU Cache Policy https://damodev.csdn.net/68a6f07d4e4959284dac0774.html https://www.geeksforgeeks.org/computer-organization-architecture/cache-replacement-policies/...

永不掉线的CRM架构揭秘:拆解高可用网站容灾设计与云原生实践

引言:为什么“永不掉线”是业务底线,而非技术奢望?在数字化转型的深水区,CRM(客户关系管理系统)早已不再是简单的“客户信息记录本”。它是销售漏斗的引擎、客服响应的神经中枢、甚至是生产系统的一部分。当…...

基于改进YOLO11算法的芯片微缺陷检测系统(UI界面+数据集+分析界面+处置建议+训练代码)

摘要:芯片制造过程中的微小缺陷(5-7像素)检测是质量控制的关键环节,但现有目标检测算法在处理此类微小目标时存在特征信息丢失、检测精度低和漏检率高等问题。针对上述问题,本文提出了一种基于YOLO11的改进检测方法YOL…...

为什么92%的AIAgent在复杂场景下“视而不见”?2026奇点大会揭幕多模态感知鲁棒性黄金标准

第一章:2026奇点大会核心洞察:AIAgent多模态感知失效的系统性归因 2026奇点智能技术大会(https://ml-summit.org) 在2026奇点大会上,来自全球17个前沿AI实验室的联合压力测试表明:当AIAgent同时处理跨模态时序信号(如…...

告别重复造轮子:Codex写脚本——运维/DevOps场景下的自动化脚本批量生成实战

前言:运维之痛与破局之道重复造轮子的真实成本在运维和DevOps的日常工作中,脚本编写占据了大量时间。据调查,一个熟练的运维工程师编写一个简单的环境配置脚本可能需要30分钟到1小时,而这类脚本在项目迭代、环境迁移过程中需要反复…...

RK3566调试手记:当IMX586摄像头遇上EDP屏,我是如何排查‘有图无显’问题的

RK3566调试手记:IMX586摄像头与EDP屏的"有图无显"问题全解析 当你在RK3566平台上成功驱动了IMX586摄像头,通过v4l2工具能抓取到YUV数据,却发现EDP屏幕一片漆黑时,这种"有图无显"的困境确实令人抓狂。作为一名…...

学习CRUISE M热管理的视频教程及文档解说,无需模型,轻松入门

录的CRUISE M热管理视频,有文档解说,没有模型,可用来学习了解。最近在研究CRUISE M的热管理系统,手头只有官方视频和文档,模型文件倒是没给。不过这样也好,反而能逼着自己动手撸代码理解底层逻辑。就拿他们…...

技术小白看过来:手把手教你用Dify的Agent,把Kimi和通义千问变成你的24小时公众号AI助理

零代码打造智能创作引擎:用Dify Agent为公众号注入AI生产力 清晨的阳光透过窗帘缝隙洒在桌面上,你端起咖啡杯,在手机里输入"夏日防晒指南",五分钟后,一篇配图精美的公众号文章草稿已经静静躺在后台等待发布。…...

做了多年精益改善却没效果?精益改善不是工具,是机制

有个问题经常被反复讨论:为什么很多企业做了这么多年精益改善,现场还是乱、问题还是反复?因为大多数企业并不是不做精益改善,反而是——做了很多:每周都有改善会每个月都有改善提案指标有的还请过咨询公司、上过培训但…...

高性能计算中的Apptainer_Singularity容器技术解析

1. 高性能计算为什么需要专属容器技术 第一次接触高性能计算集群时,我被复杂的软件依赖搞到崩溃。生物信息学的同事需要运行一个基因测序工具,但系统缺少某个特定版本的库文件;隔壁物理系的同学编译流体仿真程序时,又和现有环境冲…...

2026 年最被高估的技术?不,Harness Engineering 是 AI 工程的下一个十年

模型不是瓶颈,你搭的"壳"才是。 一、一个让所有 AI 从业者沉默的数据 2026 年初,研究者 Nate B Jones 发表了一项看似平淡无奇的研究: 同一个 AI 模型,同样的提示词,只更换它运行的"环境"&#…...

AI Agent Harness Engineering 的架构演进之路

AI Agent Harness Engineering 的架构演进之路 1. 标题 (Title) AI Agent Harness Engineering 的5代架构演进:从“单Agent试错”到“百万级Agent联邦协同” 从LangChain到自建百万级集群:AI Agent工程化(Harness)的全景架构史与未来 AI Agent的“操作系统”之路:Harness …...

AI时代工程师的Superpowers进化论技术

核心主题:探讨AI技术如何重塑工程师的能力边界,分析工程师在AI时代需要掌握的新技能与思维模式。技术驱动的能力进化传统工程师能力模型核心技能:编程、算法、系统设计、调试局限性:依赖人工分析,效率天花板明显AI赋能…...

【例题2】图书管理(信息学奥赛一本通- P1456)

【题目描述】图书管理是一件十分繁杂的工作,在一个图书馆中每天都会有许多新书加入。为了更方便的管理图书(以便于帮助想要借书的客人快速查找他们是否有他们所需要的书),我们需要设计一个图书查找系统。该系统需要支持 2 种操作&…...

视频合并工具多合一版使用说明:批量合并视频/自定义命名/片头片尾/转场/硬件加速与并行转码

【视频合并工具多合一版】基于 FFmpeg 实现视频合并与转码,支持拖拽导入、排序、批量合并(按文件夹分组)、片头片尾、转场效果(含“保持原始时长”模式)、GPU 硬件加速(NVENC/QSV/AMF)、并行转码…...

告别语言障碍!Translumo:你的专属游戏外语翻译官

告别语言障碍!Translumo:你的专属游戏外语翻译官 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 还…...

Scroll Reverser:解决macOS多输入设备滚动冲突的终极方案

Scroll Reverser:解决macOS多输入设备滚动冲突的终极方案 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 在macOS生态系统中,触控板与外接鼠标之间的滚动…...

鸿蒙Next实战:5分钟搞定跨应用拖拽图片功能(附完整代码)

鸿蒙Next实战:5分钟搞定跨应用拖拽图片功能(附完整代码) 在移动应用开发中,跨应用数据交互一直是提升用户体验的关键技术点。想象一下,用户无需繁琐的保存-导入流程,只需简单拖拽就能将图片从相册应用转移到…...

从新建工程到编译成功:一个完整Quartus II 18.0项目实战(含Verilog文件添加与管脚分配)

从零构建LED闪烁模块:Quartus II 18.0全流程开发指南 当你第一次打开Quartus II 18.0时,面对复杂的界面和众多选项可能会感到无从下手。本文将带你完成一个完整的LED闪烁模块开发流程——从创建工程到成功编译,通过这个具体项目理解每个操作的…...

Grafana仪表板安全嵌入实践:解决iframe跨域与登录验证难题

1. 为什么需要安全嵌入Grafana仪表板 在企业监控系统开发中,我们经常需要将Grafana仪表板集成到自有系统中。直接使用iframe嵌入看似简单,但实际操作时会遇到两个棘手问题:首先是浏览器控制台频繁报错"Refused to display in a frame&qu…...

张量与向量基础:AI 计算的数学本质

文章目录前言一、先搞懂:AI里天天说的向量,到底是个啥?1.1 别被数学定义吓住,向量就是"有序数字列表"1.2 用生活例子秒懂:向量就是"事物的数字化画像"1.3 向量的核心作用:让计算机能&q…...

软件测试认证2026:ROI最高的5个证书

在数字化转型加速的2026年,软件测试行业正经历深刻变革。随着AI自动化测试覆盖率突破60%、DevSecOps成为行业标配,企业对测试人才的需求已从单一技能转向体系化能力认证。认证不仅是职业跃迁的杠杆,更是投资回报率(ROI&#xff09…...