ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

LLM与智能体重塑芯片设计:从RTL生成到验证自动化的工程落地

LLM与智能体重塑芯片设计:从RTL生成到验证自动化的工程落地 1. 芯片设计为什么突然和LLM、智能体扯上了关系如果你这两年一直在做芯片设计或者EDA工具链相关的工作应该能明显感觉到一个变化以前大家聊的是PPA怎么再压一点、时序怎么再收敛一点现在越来越多的讨论开始往“大模型能不能帮我们写RTL”“智能体能不能自动跑完一轮验证”这个方向偏。CNCC2026把“LLM与智能体重塑芯片设计”单独拎出来做议题本身就说明这不是小圈子的自嗨而是整个行业在认真思考的一件事。我自己是从数字前端一路做过来的写过RTL搭过UVM验证环境也做过一段时间的综合和时序收敛。说实话芯片设计这个行当有一个很反直觉的特点它极度依赖经验但又极度排斥“差不多就行”。一个模块的微架构怎么切、流水线级数怎么定、跨时钟域怎么处理这些决策背后是大量的隐性知识很难写成一本手册让新人照着抄。而LLM最擅长的事情恰恰是从海量文本里把这种隐性知识“压”成可调用的模式。这两者一碰撞就有了很多值得聊的东西。这篇文章我想聊的不是“AI会不会取代芯片工程师”这种标题党话题而是从实际工程角度出发拆解一下LLM和智能体在芯片设计流程里到底能落在哪些环节、用什么方式落地、有哪些坑是必须提前知道的。适合正在做芯片设计、想了解AI怎么切入的工程师也适合做AI应用、想看看垂直领域机会在哪里的朋友。我会尽量把每个环节的“为什么”讲清楚而不是只丢一堆工具名字。2. 先搞清楚LLM和智能体在芯片设计里各自扮演什么角色2.1 LLM是“知识压缩器”不是“设计决策者”很多人第一次接触LLM辅助芯片设计会有一个误解以为把需求丢给模型它就能吐出一个能综合的RTL。实际试过就知道直接让通用大模型写一个带完整握手协议的AXI从机出来的代码大概率是“看起来像那么回事但一跑就挂”。原因很简单LLM的本质是基于概率的文本生成它没有形式化验证的能力也没有对时序、面积、功耗的物理直觉。但这不代表LLM没用。它在芯片设计里最扎实的价值是作为一个知识压缩器和模式匹配器。比如你写了一段SystemVerilog的断言不确定语法对不对LLM可以快速给你一个参考写法你面对一个陌生的总线协议想让模型帮你总结关键握手规则你需要把一段C算法快速转成可综合的定点化RTL骨架LLM能帮你把结构搭出来。这些场景的共同点是输出是“候选方案”而不是“最终答案”。工程师的价值在于判断和修正而不是被替代。我自己的习惯是把LLM当成一个反应极快但经验尚浅的实习生它给的代码我一定会逐行审但审的过程比自己从零写要快不少。2.2 智能体是“流程编排器”解决的是多步骤自动化如果说LLM解决的是“单点知识调用”那智能体解决的就是“多步骤流程编排”。芯片设计流程天然是长链条的RTL写完要跑lintlint过了要跑仿真仿真过了要跑综合综合完了要看时序时序不收敛还要回头改RTL。这个链条里每一步都有明确的输入输出但步骤之间的衔接往往靠人手动操作。智能体的思路是把每个步骤封装成一个可调用的工具然后让一个具备规划能力的Agent来决定“下一步该调哪个工具、传什么参数、结果怎么判断”。举个具体的例子你可以搭一个验证智能体它的工作流是这样的读取RTL模块的接口定义自动生成对应的UVM sequence骨架调用仿真器跑一轮解析仿真日志判断是否有断言失败如果有失败提取失败波形附近的关键信号生成一份简短的失败摘要。这个流程里LLM负责的是第2步和第5步的文本生成与总结而智能体框架负责的是第1、3、4步的工具调用和状态管理。两者配合才能把“自动化”真正跑通。2.3 为什么是现在三个条件同时成熟了这件事放在五年前做不起来不是因为想法不够好而是因为三个前提条件没凑齐模型能力通用LLM在代码生成上的准确率尤其是Verilog/SystemVerilog这种相对小众的语言过去两年提升非常明显。虽然还达不到“一次写对”的程度但作为初稿生成已经够用了。工具接口标准化越来越多的EDA工具开始提供Python API或者命令行接口这让智能体有了“手”去操作工具而不是只能动嘴。算力成本下降跑一轮LLM推理的成本相比几年前已经降了一个数量级这让“每个工程师配一个AI助手”在经济上变得可行。这三个条件叠加才让“LLM智能体芯片设计”从一个概念变成了可以实际尝试的工程方案。3. 拆解几个真正能落地的应用场景3.1 RTL代码生成与审查从“写”到“改”的转变直接让LLM从零生成一个复杂模块目前还不现实。但让它做代码审查和局部修改效果比很多人想象的要好。我实测过一个场景拿一段手写的SPI Master RTL让模型检查是否存在跨时钟域问题。模型确实指出了几处信号在时钟域切换时没有做同步处理虽然它给的同步方案需要我手动调整但“发现问题”这一步已经省了不少时间。更实用的做法是“模板填充”。你可以把常见的模块结构比如FIFO、仲裁器、寄存器文件做成模板然后让LLM根据参数生成具体的位宽、深度、端口列表。这样生成的代码结构是可控的模型只需要负责填空和微调出错概率大幅降低。注意LLM生成的RTL绝对不能直接进综合流程。必须经过lint、仿真、形式验证三道关。我见过有人直接把模型生成的代码拿去跑综合结果综合器报了几百个warning排查了半天发现是模型把位宽写反了。3.2 验证用例生成智能体最擅长的重复劳动验证是芯片设计里最耗人力的环节之一。一个模块的覆盖率要冲到100%往往需要写几十甚至上百个测试用例。这些用例的结构高度相似只是激励数据和检查条件不同。这正是智能体可以发挥的地方。你可以搭一个验证智能体输入是模块的接口协议文档和覆盖率报告输出是一批新的测试用例。智能体的工作流可以这样设计解析覆盖率报告找出未覆盖的bin根据未覆盖的bin反推需要什么样的激励场景调用LLM生成对应的sequence代码自动跑仿真检查覆盖率是否提升如果没提升调整激励参数再试一轮。这个循环跑起来之后工程师只需要在最后审核生成的用例是否符合协议规范。我试过用这种方式补一个UART模块的覆盖率原本需要两天的手工工作压缩到了半天左右而且生成的用例里确实有几个是我自己没想到的边界场景。3.3 时序收敛辅助从“试参数”到“有依据地试”时序收敛是后端工程师的日常痛点。一个路径不满足时序可能的原因有很多逻辑级数太多、驱动能力不够、布局不合理、时钟树偏斜太大。传统做法是靠经验一个个试试错成本很高。LLM在这里能做的是把历史收敛案例变成可检索的知识库。你可以把过去项目里遇到的时序问题、采取的修复措施、最终效果整理成结构化数据然后让模型在遇到新问题时检索相似的案例并给出建议。这比让模型“凭空想”要靠谱得多因为建议是有历史数据支撑的。智能体则可以进一步自动化这个流程读取时序报告识别关键路径匹配历史案例生成修复建议甚至自动调用EDA工具尝试几种不同的修复策略然后对比结果。当然最后的决策还是得由工程师来做但智能体可以把“候选方案”的范围缩小很多。3.4 文档与知识管理被低估的高价值场景芯片项目里有一类工作特别烦人但又不得不做写文档。模块设计文档、验证计划、寄存器手册、接口说明这些东西技术含量不算最高但极其耗时。而且项目一多文档和代码很容易脱节。LLM在这个场景里几乎是“降维打击”。你可以把RTL代码和注释喂给模型让它生成初版设计文档可以把验证环境的sequence和覆盖率报告喂进去让它生成验证计划甚至可以把寄存器定义表格转成Markdown格式的手册。生成的内容肯定需要人工润色但从零到初稿的时间可以压缩70%以上。更进一步你可以搭一个知识管理智能体把项目里所有的文档、代码、邮件、会议纪要都索引起来工程师用自然语言提问智能体负责检索和总结。这个场景的技术难度不高但收益非常直接。4. 实操搭一个最小可用的RTL审查智能体4.1 整体架构与工具选型说了这么多场景不如直接动手搭一个。我以“RTL审查智能体”为例拆解一下从零搭建的完整过程。这个智能体的目标是输入一个Verilog文件输出一份审查报告指出潜在的编码风格问题、跨时钟域风险和综合隐患。整体架构分三层工具层封装lint工具如Verilator的lint模式、综合工具的命令行接口、以及一个简单的文本解析脚本。智能体层负责规划审查步骤、调用工具、汇总结果。可以用现成的智能体框架也可以用Python自己写一个简单的状态机。模型层负责生成审查意见和总结报告。建议用代码能力较强的模型如果涉及敏感代码可以考虑本地部署的开源模型。工具选型上我的建议是不要一上来就追求全自动。先做“半自动”让智能体负责收集信息和生成初稿工程师负责判断和修改。等流程跑顺了再逐步增加自动化的比例。4.2 关键步骤与参数配置第一步是环境准备。你需要一个能跑Python的环境安装好lint工具和模型调用库。如果用的是本地模型还要确保显存够用。我实测下来7B参数级别的代码模型在16G显存的机器上可以跑得比较流畅再大就需要量化或者多卡了。第二步是写工具封装。以Verilator为例你可以写一个Python函数接收RTL文件路径调用verilator --lint-only然后把输出解析成结构化数据。这个函数的关键是错误分类把lint输出按严重程度分成error、warning、info三档方便后续处理。第三步是设计智能体的提示词。这里有一个经验不要让模型一次性处理整个文件。大文件直接丢给模型它很容易漏掉细节。更好的做法是按模块或者按always块切分逐块审查最后再汇总。提示词里要明确告诉模型“你是一个资深RTL设计工程师请从跨时钟域、复位策略、位宽匹配、综合友好性四个维度审查以下代码每个问题给出具体行号和修改建议。”第四步是结果汇总。智能体把每个模块的审查结果收集起来生成一份Markdown格式的报告。报告里要区分“确定问题”和“疑似问题”前者是lint工具明确报错的后者是模型基于经验判断的。这样工程师可以优先处理确定问题再决定是否深入排查疑似问题。4.3 一次完整的审查流程记录我拿一个真实的SPI Master模块跑了一遍这个流程。模块大概300行包含时钟分频、移位寄存器、状态机三个部分。第一轮lint工具报了2个warning都是关于未使用信号的。这个直接采纳删掉冗余信号。第二轮模型审查发现状态机里有一个状态跳转条件在复位后没有明确初始化可能导致仿真和综合结果不一致。这个问题lint工具没报但确实是隐患。我手动加了一个默认跳转问题解决。第三轮模型指出移位寄存器的位宽在参数化时没有做边界检查如果参数配成0会导致异常。这个属于防御性编程的范畴我加了一个参数合法性断言。整个流程跑下来大概15分钟其中模型推理占了大部分时间。如果纯手工审查这个模块我大概需要30到40分钟。效率提升不是特别夸张但考虑到审查过程可以并行多个模块同时跑实际项目里的收益会更明显。提示智能体审查的结果一定要人工过一遍。我遇到过模型把正确的跨时钟域同步逻辑误判为“缺少同步”的情况原因是它没识别出那个双触发器结构。模型的判断是基于模式的不是基于形式化分析的误报不可避免。5. 踩过的坑和常见问题排查5.1 模型幻觉最危险也最常见的问题LLM在芯片设计场景里最要命的问题是幻觉。它可能会编造一个不存在的系统函数可能会把位宽算错可能会给出一个语法正确但语义完全错误的断言。这些错误如果没被及时发现轻则浪费调试时间重则流片失败。我的应对策略是三层过滤第一层所有生成的代码必须过lint和语法检查不过关的直接打回第二层关键模块的生成代码必须过形式验证用工具证明它和参考模型等价第三层人工审查重点看模型给出的“理由”是否合理如果理由本身就站不住脚代码大概率有问题。5.2 上下文长度限制大项目怎么处理芯片项目的RTL动辄几十万行远超任何模型的上下文窗口。你不能把整个项目丢给模型必须做分块和索引。我的做法是按模块切分每个模块单独审查建立模块间的依赖关系图审查一个模块时把它的接口定义和直接依赖的模块接口一起喂给模型对于跨模块的问题比如时钟域交叉单独建一个审查任务专门处理这类全局性问题。这样虽然不能做到“全局理解”但至少能保证每个局部审查是准确的。5.3 工具链集成EDA工具的“脾气”EDA工具的命令行接口往往设计得不太友好输出格式也不统一。有的工具输出XML有的输出纯文本有的输出一堆带颜色转义符的日志。智能体要调用这些工具必须先做一层“适配器”把输出统一成结构化数据。我踩过的一个坑是某个综合工具在遇到error时会返回非零退出码但warning时也返回非零。如果智能体不区分这两种情况就会把warning当成error处理导致流程中断。解决办法是在适配器里解析退出码和日志内容做一个更细粒度的状态判断。5.4 常见问题速查表问题现象可能原因排查思路解决建议模型生成的RTL综合报大量warning位宽不匹配、敏感列表不全逐条看warning定位到具体行让模型重新生成该模块提示词里强调位宽和敏感列表智能体调用工具超时工具本身运行时间长或参数配置错误先手动跑一遍工具确认命令正确增加超时时间或把长任务拆成异步执行模型审查结果误报率高提示词不够具体或模型对某些结构不熟悉检查提示词是否明确了审查维度补充示例告诉模型哪些结构是合法的覆盖率提升不明显生成的激励场景太单一看覆盖率报告确认哪些bin没覆盖让模型针对未覆盖bin生成定向激励本地模型推理速度慢模型太大或量化不够看显存占用和推理耗时换更小的模型或用量化版本6. 我对这个方向的一些真实判断6.1 短期看工具中期看流程长期看组织LLM和智能体在芯片设计里的落地不会是一蹴而就的。短期来看最现实的收益是单点工具的效率提升比如代码审查、文档生成、测试用例生成。这些场景技术难度不高但收益直接容易推广。中期来看价值会转移到流程重构上。当每个环节都有AI辅助之后环节之间的衔接方式也会发生变化。比如验证智能体发现一个bug之后能不能自动生成一个RTL修复建议然后触发一轮回归测试这种跨环节的自动化才是智能体真正的用武之地。长期来看影响的是团队组织方式。如果AI能承担大量重复性工作那工程师的角色会往“架构决策”和“结果审核”方向偏移。这不是坏事但要求工程师具备更强的判断力和更广的知识面。6.2 不要为了AI而AI我见过一些团队为了赶AI的时髦硬生生把一些本来就很成熟的流程改成“AI驱动”结果效率反而下降了。比如有的脚本本来用正则表达式就能稳定解析日志非要换成LLM结果引入了不确定性还得额外做校验。我的建议是先找到真正的痛点再看AI是不是合适的解法。如果一个问题用传统方法能稳定解决就不要引入AI。AI适合的是那些“规则难以穷举、需要经验判断”的场景而不是所有场景。6.3 数据安全是绕不开的坎芯片设计涉及大量敏感信息RTL代码、工艺参数、客户信息这些东西绝对不能随便传到外部API上。如果要用LLM要么用本地部署的开源模型要么用经过严格合规审查的私有化方案。这一点没有商量余地。本地部署的代价是模型能力可能不如云端大模型但通过微调和提示词优化在垂直场景里是可以做到可用的。我实测下来一个经过RTL代码微调的7B模型在代码审查场景里的表现已经能满足“初筛”的需求剩下的交给人工就行。6.4 给想入局的朋友几个实在建议如果你是对这个方向感兴趣的芯片工程师我的建议是先从自己最熟悉的环节入手。你平时花时间最多、最觉得枯燥的那个环节往往就是AI最能帮上忙的地方。不要一上来就搞大而全的智能体平台先写一个能解决具体问题的小工具跑通了再扩展。如果你是做AI的想切入芯片设计领域我的建议是花时间理解芯片设计流程的约束。芯片设计和写Web应用最大的区别是它的试错成本极高一次流片几百万甚至上千万。这意味着任何AI方案都必须把“可靠性”放在第一位宁可保守不可激进。理解这一点你设计的方案才会被芯片工程师接受。这个方向现在还在很早期的阶段工具链不成熟最佳实践也没形成。但正因为早期才有更多可以探索的空间。等一切都标准化了机会也就少了。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进