资讯动态

LLM与智能体重塑芯片设计:从RTL生成到验证闭环的工程实践

发布时间:2026/10/27 8:30:55 来源:尧图企业网站定制
芯片设计这个行当过去四十年基本遵循一条铁律架构师画图纸验证工程师写测试后端工程师调布局布线一轮流片几千万美金砸下去能不能点亮还得看运气。但最近两年这条铁律正在被一群不速之客撬动——大语言模型和智能体开始渗透进RTL生成、验证用例构造、时序收敛、甚至物理设计的迭代循环里。CNCC2026把LLM与智能体重塑芯片设计拎出来做专题本身就说明这不是实验室里的自嗨而是工业界已经在真金白银地试水了。我过去一年多跟踪过几个把LLM接进芯片前端流程的团队也自己动手搭过基于智能体的验证用例生成原型。说实话早期那些用ChatGPT写Verilog的演示视频十个里有九个是玩具级别生成的代码连综合都过不了。但到了2025年下半年情况明显变了模型对硬件描述语言的理解精度上来了智能体的工具调用能力成熟了最关键的是大家终于想明白了该把AI放在流程的哪个位置、不该放在哪个位置。这篇就围绕这个主题把LLM和智能体在芯片设计里到底能干什么、怎么干、坑在哪掰开揉碎讲清楚。1. 芯片设计流程里哪些环节真的适合塞进LLM1.1 先搞清楚芯片设计的不可压缩复杂度在哪很多人一上来就问LLM能不能直接设计一颗芯片这个问题本身就问错了。芯片设计不是写一篇文章它是一个从行为级描述到物理版图的逐层细化过程每一层都有严格的正确性约束和代价极高的试错成本。你要让模型参与进来第一步不是选模型而是把流程拆开看清楚哪些环节是知识密集型的哪些是计算密集型的哪些是经验密集型的。知识密集型的环节比如协议理解、寄存器映射、测试用例构造、文档生成这些活儿的特点是规则明确但组合爆炸人类工程师要翻几百页手册才能写出一段正确的配置代码。LLM最擅长的恰恰是这个——它读过海量技术文档能在语义层面做映射。计算密集型的环节比如逻辑综合、布局布线、时序分析这些是EDA工具的强项LLM插进去只会添乱但智能体可以充当调度员根据工具返回的结果决定下一步调什么参数。经验密集型的环节最微妙比如微架构权衡、功耗与面积的折中、验证覆盖率的收敛策略。这些活儿老工程师凭直觉就能拍板但直觉很难写成规则。LLM在这里的价值不是替代判断而是把历史项目里的决策模式提取出来给年轻工程师一个参考起点。提示判断一个环节适不适合引入LLM有个简单的测试——如果这个环节的输入输出能用自然语言描述清楚且正确性判断不需要跑仿真那它就适合。反之如果必须跑工具才能知道对错那LLM只能做辅助不能做决策。1.2 RTL代码生成从能写到写得对之间隔着什么用LLM生成Verilog或SystemVerilog现在基本是入门级操作了。但生成一段能综合的代码和生成一段能通过验证、时序收敛、面积合理的代码中间隔着好几道坎。我实测下来最大的问题不是语法错误而是语义偏差——模型会写出语法完全正确、但和设计意图南辕北辙的代码。举个真实的例子。我让模型写一个AXI总线的从设备接口它生成的代码里握手信号的valid/ready逻辑看起来没问题但仔细一看它在写响应通道里把bresp信号硬编码成了OKAY完全忽略了实际可能出现的SLVERR。这种错误综合工具查不出来仿真如果不构造错误注入场景也测不出来等流片回来发现总线错误处理有问题那就晚了。所以RTL生成这条链路正确的用法不是让模型直接产出最终代码而是让模型产出候选代码再用智能体驱动验证流程去筛。具体来说我见过比较靠谱的做法是三步走第一步用结构化的提示词把设计规格拆成接口定义、状态机、数据通路三个部分分别生成第二步用智能体自动调用lint工具和综合工具做快速筛选把语法和可综合性问题挡在前面第三步针对通过筛选的候选自动生成定向测试用例跑仿真验证功能正确性。这套流程的关键在于提示词的结构化程度。你不能扔一句帮我写个AXI从设备就完事得把时钟频率、数据位宽、支持的burst类型、错误处理策略这些约束全部显式写进去。我自己的经验是提示词里每多一条明确的约束生成代码的返工率就下降一大截。1.3 验证环节智能体比LLM单打独斗有用得多验证是芯片设计里最耗人力的环节通常占到整个项目周期的60%以上。LLM在这里的切入点很多但真正产生实际价值的是智能体驱动的验证用例生成与覆盖率收敛。传统的验证流程是这样的验证工程师根据设计规格手写测试用例跑仿真看覆盖率报告发现哪块没覆盖到再补用例循环往复。这个循环里最耗时的不是写用例本身而是分析覆盖率缺口→定位未覆盖逻辑→构造激励这个思考过程。智能体可以把这个过程自动化它读取覆盖率报告识别出未覆盖的分支和条件结合设计代码的语义分析自动生成针对性的测试激励然后调用仿真工具跑一遍看覆盖率有没有提升。我搭过一个简化版的原型用智能体框架把覆盖率分析、激励生成、仿真执行串起来。实测下来对于控制逻辑比较规整的模块智能体能在几轮迭代内把行覆盖率推到95%以上。但要注意功能覆盖率的收敛不能完全交给智能体因为功能覆盖点的定义本身需要人类工程师根据设计意图来写智能体只能在你定义好的框架里做优化。还有一个容易被忽略的点智能体生成的测试用例必须经过去重和最小化处理。我遇到过智能体在同一个场景上反复生成变体的情况跑了几百个用例实际上测的是同一个逻辑路径。解决办法是在智能体流程里加一个用例相似度检查用简单的哈希或者语义嵌入做去重能省下大量仿真时间。2. 智能体在芯片设计里的三种落地形态2.1 工具调用型智能体把EDA工具串成流水线这是目前最成熟、最容易落地的形态。核心思路很简单把EDA工具的命令行接口封装成智能体可以调用的函数让智能体根据任务目标自动决定调用顺序和参数。比如一个典型的场景是给定一个RTL模块自动完成综合、时序分析、面积报告如果时序不满足就调整约束再试。这种智能体的技术难点不在模型本身而在工具接口的标准化。不同EDA工具的输出格式千差万别有的返回XML有的返回文本报告有的直接写日志文件。智能体要能解析这些输出才能做出下一步决策。我的做法是写一层适配器把每个工具的输出统一转成JSON格式字段包括状态码、关键指标、错误信息。这样智能体的决策逻辑就不用关心底层工具的具体实现。另一个坑是工具执行时间。综合和布局布线动辄跑几十分钟甚至几小时智能体如果同步等待整个流程就卡死了。实际部署时得用异步任务队列智能体提交任务后先去处理别的等任务完成再回来检查结果。这个架构上的细节很多Demo里不会讲但真正上生产环境必须解决。2.2 多智能体协作让架构师验证工程师后端工程师各司其职单个智能体能力再强也有上下文窗口的限制。芯片设计流程太长一个智能体从头跟到尾中间信息丢失严重。多智能体协作的思路是把不同环节拆给不同的智能体每个智能体有自己的角色设定、工具集和记忆空间通过消息传递来协同。我见过一个比较有意思的设计架构智能体负责把自然语言规格拆成模块划分和接口定义RTL智能体根据接口定义生成代码验证智能体根据同一份规格生成测试用例后端智能体负责跑综合和时序分析。四个智能体通过一个共享的设计数据库来交换信息而不是直接对话。这样做的好处是每个智能体的上下文都很干净不会被无关信息干扰。但多智能体协作有个致命问题错误传播。如果架构智能体把接口定义错了后面三个智能体全跟着错而且错误会在流程下游被放大。解决办法是在每个智能体的输出上加强校验特别是架构智能体的输出必须经过人类工程师确认才能往下走。完全无人值守的多智能体芯片设计流程目前还不现实。2.3 自主容错型智能体当流程出错时自己想办法这是最前沿也最难的方向。芯片设计流程里充满了意外综合报时序违例、仿真跑出未知态、形式验证发现反例。传统做法是工程师看到报错分析原因手动修复。自主容错型智能体的目标是让智能体自己完成报错→定位→修复→验证这个循环。我试过一个简化场景让智能体处理综合后的时序违例。智能体读取时序报告定位到关键路径分析路径上的逻辑层级然后尝试几种修复策略——插入流水线寄存器、调整综合策略、修改RTL里的组合逻辑。每试一种就跑一次综合看结果。实测下来对于结构比较规整的路径智能体能找到有效的修复方案但对于涉及复杂时钟域交叉的问题它基本束手无策。这个方向的瓶颈不在模型能力而在搜索空间太大。芯片设计里的修复选项是组合爆炸的智能体如果没有好的启发式策略就会在无效尝试上浪费大量时间。目前比较务实的做法是限制智能体的操作范围只让它在一个预定义的修复策略集合里选择而不是让它自由发挥。3. 把LLM接进芯片设计流程的工程细节3.1 模型选型通用大模型还是领域微调模型这是每个团队都会纠结的问题。通用大模型比如GPT系列、Claude系列的优势是开箱即用对SystemVerilog、Verilog、VHDL的语法理解都不错而且能处理跨领域的知识。劣势是成本高、延迟大而且对特定工艺库、特定EDA工具的支持不够深入。领域微调模型的做法是拿开源基座模型用自己团队的代码库、文档、历史项目数据做微调。好处是模型对内部规范的理解更准确推理成本也低。但微调需要大量高质量数据而且模型更新换代时微调成果可能作废。我的建议是分层使用对于通用的代码生成、文档理解任务用通用大模型对于涉及内部规范、特定工艺的任务用微调模型或者RAG检索增强生成的方式把内部文档作为上下文注入。RAG的好处是不用重新训练模型文档更新了直接换检索库就行灵活性更高。注意不管用哪种模型涉及芯片设计的输出都必须经过工具验证。LLM的幻觉在芯片领域是致命的一段看起来合理的代码可能隐藏着严重的功能缺陷。永远不要把LLM的输出直接送到流片流程里。3.2 提示词工程芯片设计场景下的特殊要求芯片设计的提示词和普通编程任务的提示词有本质区别。普通编程任务你描述清楚功能就行芯片设计任务你必须把时序约束、面积约束、功耗约束、接口协议、复位策略、时钟域这些全部显式写进去。少写一条模型就可能给你生成一个功能正确但无法综合或者时序不收敛的设计。我总结了一个芯片设计提示词的基本模板包含五个部分设计规格功能描述、接口定义信号列表和协议、约束条件时序、面积、功耗、参考示例类似的已有代码、输出格式代码风格、注释要求。这五个部分里约束条件和参考示例是最容易被忽略但最重要的。约束条件决定了生成代码的可用性参考示例决定了代码风格的一致性。还有一个技巧是分步生成。不要指望模型一次生成一个完整的模块而是让它先写接口定义确认无误后再写内部逻辑最后写测试用例。每一步的输出都作为下一步的输入这样出错时容易定位也方便人工介入。3.3 验证闭环怎么知道智能体干得对不对智能体在芯片设计流程里做的每一个决策都必须有验证机制。这个验证机制分两层第一层是工具验证比如生成的代码跑lint、跑综合、跑仿真第二层是人工抽检特别是对于智能体自主做出的架构决策必须有人工复核。工具验证的关键是自动化程度。如果每次验证都要人工点按钮那智能体的效率优势就没了。我的做法是把lint、综合、仿真都封装成命令行脚本智能体可以直接调用返回结构化的结果。这样智能体就能根据验证结果自动决定下一步。人工抽检的关键是抽样策略。不可能每个输出都人工看但也不能完全不看。我的经验是对于流程早期的输出比如架构定义、接口定义抽检比例要高因为这些错误会传播对于流程后期的输出比如具体的测试用例抽检比例可以低一些因为错误影响范围有限。4. 实际项目中的踩坑记录与应对4.1 模型对复位和时钟的理解偏差这是我踩过的最大的坑。LLM在生成RTL代码时经常对复位策略和时钟域处理得不够严谨。比如它可能生成一个异步复位、同步释放的电路但复位释放路径上没有做足够的同步处理导致亚稳态风险。或者它在跨时钟域信号上没有加同步器直接就把信号从快时钟域传到慢时钟域了。这类问题的根源是模型在训练时看到的代码示例很多是教学性质的没有严格处理这些工程细节。解决办法是在提示词里明确要求复位策略和时钟域处理方式并且在生成后的lint阶段加上专门的检查规则。我现在的做法是维护一个芯片设计检查清单每次生成代码后自动跑一遍把常见问题挡在前面。4.2 智能体陷入无效循环智能体在自主迭代时有时会陷入无效循环。比如它发现时序不满足尝试调整综合策略跑完发现还是不行又调回原来的策略再跑一遍还是不行如此反复。这种情况在搜索空间大、反馈信号弱的时候特别容易发生。应对办法是给智能体加迭代预算和状态记忆。迭代预算就是限制最大尝试次数超过就停下来报告人类。状态记忆就是让智能体记住已经尝试过的方案和结果避免重复尝试。这两个机制看起来简单但能显著提升智能体的实用性。4.3 生成代码的可综合性问题LLM生成的Verilog代码有时候会包含不可综合的构造比如延时语句、initial块里的复杂逻辑、对同一信号的多驱动。这些问题在仿真时可能看不出来但综合时会报错。更隐蔽的是有些代码能综合但综合出来的电路和设计意图不符比如把组合逻辑综合成了锁存器。我的应对策略是在流程里加一道综合预检用简单的综合工具快速跑一遍把可综合性问题挡在早期。同时在提示词里明确要求只使用可综合的Verilog子集并给出具体的禁止构造列表。这个列表包括延时语句、initial块中的非复位逻辑、对同一信号的多驱动、不完整的敏感列表等。4.4 数据安全与知识产权保护芯片设计涉及大量敏感信息包括工艺参数、架构细节、客户规格。把这些信息发给云端LLM存在数据泄露风险。我见过一些团队的做法是对于敏感信息用本地部署的开源模型处理对于非敏感信息才用云端模型。另一种做法是对输入做脱敏处理把具体的工艺参数替换成占位符模型输出后再映射回来。这个问题没有完美的解决方案只能根据团队的安全要求做权衡。但有一点是明确的不要把完整的芯片设计规格直接发给云端模型至少要做一定程度的抽象和脱敏。5. 这套东西现在能用到什么程度5.1 已经比较成熟的场景根据我自己的实践和跟同行交流的情况以下几个场景目前已经比较成熟可以放心用RTL代码生成与补全对于接口逻辑、状态机、数据通路这些结构规整的模块LLM生成的代码经过lint和仿真验证后基本可以直接用。返工率大概在20%到30%比手写快不少。验证用例生成智能体驱动的定向测试用例生成对于控制逻辑的覆盖率收敛效果明显。特别是那些需要大量组合场景的模块智能体生成的用例比人工写的覆盖更全。文档生成与维护寄存器手册、接口文档、设计规格的自动生成和更新这个场景LLM做得很好基本不需要人工修改。脚本生成TCL脚本、Python脚本、Makefile这些流程脚本的生成LLM的准确率很高因为这类脚本的模式比较固定。5.2 还在探索中的场景以下场景有潜力但目前还不够稳定建议谨慎使用微架构探索让LLM参与微架构权衡比如流水线级数、缓存大小、总线位宽的选择。模型能给出一些参考意见但缺乏对具体工艺和应用的深入理解决策质量不稳定。物理设计优化布局布线的参数调优智能体可以尝试但搜索空间太大收敛速度慢目前还不如经验丰富的后端工程师手动调。形式验证用LLM生成形式验证的属性断言这个方向有研究价值但生成的断言经常过于宽松或过于严格需要大量人工调整。5.3 短期内不太可能被替代的环节有些环节我认为短期内LLM和智能体很难替代人类工程师系统级架构决策芯片的整体架构、模块划分、接口定义这些需要深厚的领域知识和产品理解不是模型能拍板的。与工艺相关的优化特定工艺节点的特性、标准单元库的选择、电源网络的设计这些高度依赖具体工艺的经验模型缺乏这方面的训练数据。跨团队协调芯片设计涉及前端、后端、验证、软件、系统多个团队协调沟通、需求对齐、进度管理这些活儿模型做不了。6. 给想入局的工程师的几点实在建议如果你是一名芯片设计工程师想把这套东西用起来我的建议是从小处着手别一上来就搞大平台。先选一个你熟悉的、痛点明确的环节比如验证用例生成或者RTL代码补全用现成的LLM API搭一个简单的工作流跑上几周看看实际效果。效果好再扩展效果不好就换方向。如果你是一名AI工程师想切入芯片设计领域我的建议是先花时间搞懂芯片设计的基本流程和约束。芯片设计不是普通的软件开发它的试错成本极高对正确性的要求极严。你不理解这些约束就设计不出真正有用的智能体。还有一点很重要不要迷信全自动。芯片设计流程里人类的判断和决策仍然是核心LLM和智能体的价值是放大人类工程师的能力而不是替代他们。把AI放在合适的位置让它做它擅长的事人类做人类擅长的事这才是正确的姿势。最后分享一个我自己的体会这套东西的迭代速度非常快半年前还不好用的方案现在可能已经成熟了。保持关注保持动手比看一百篇综述都有用。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑