芯片设计里一直有句老话:设计难,验证更难,量产测试难上加难。前阵子我在一次行业技术论坛上,听一位做芯片工具链的分享者完整回顾了一套“从RTL到测试”的AI闭环实施方案,题目就是“从RTL到测试,用AI构建芯片设计闭环”。这个概念本身不算新鲜,近几年各家EDA和AI辅助工具都在往这里靠,但难得的是他们把RTL静态分析、功能验证、DFT设计、测试向量生成和量产失效数据放进同一条数据链路,而且已经在真实SoC项目上迭代过好几轮。
会后我把分享要点和自己平时跑RTL、写约束、做DFT的实际经验做了一个交叉对照,发现这套方案真正值钱的地方不是某个模型多聪明,而在于它把过去“各自为战”的几个环节用数据回流串了起来。本文不打算复述PPT,而是想把背后的设计逻辑、落地参数、以及实操中真正会踩到的坑掰开揉碎讲清楚。适合的读者大概是做数字前端、验证、DFT或者芯片项目管理的朋友,哪怕你现在团队还没有AI工具,读完之后也至少知道从哪个切口先动起来。
1. 为什么“从RTL到测试”之间需要一套AI闭环
1.1 传统芯片设计流程里的信息断层
一个常规的芯片开发流程大概是这样的:前端写RTL,验证团队搭UVM平台跑仿真,DFT工程师在网表里插入扫描链和BIST,后端做综合布局布线,最后流片回来后到ATE上跑量产测试。这个流程运行了几十年,本身是成熟的,但你仔细看数据流转就会发现,每个环节之间其实都是断的。
RTL阶段修掉一个bug,验证环境要不要跟着改,通常靠会议和邮件口头同步;验证阶段发现覆盖率空洞,DFT那边从不过问;ATE上某个bin的良率掉了一截,远端团队导出一堆log,真正能定位到RTL哪一行代码出问题的概率非常低。这不完全是人的问题,更多是工具链格式不统一、数据口径不一致导致的。比如仿真覆盖率、DFT故障覆盖率和量产测试覆盖率这“三个覆盖率”看上去都叫覆盖率,意义完全不是一回事,放在一起比很容易得出错误结论。
那位分享者说了一句话让我印象很深:芯片团队其实不是缺数据,是数据都被锁在各自环节里。AI如果不改变数据流动方式,最多只是把单点工具做得更好用,解决不了根本问题。这基本就是整套方案的出发点。
1.2 单点AI替代解决不了根因
过去两年里,行业内其实已经有不少单点AI落地了。有人用大模型辅助写RTL,有人用机器学习做验证失败的聚类,有人用神经网络预测扫描链的故障类型,还有人用数据驱动的办法做良率分析。单看每个点,好像都跑得通,但实际用起来经常发现一个问题:你在RTL端做了一个看起来很智能的修复,验证那边跑了三天回归,发现测试用例挂了;你再去查,原来是修复改变了时序,把另一个模块的约束触发了。再往后,DFT重新插入扫描链,覆盖率又变了,测试向量集体失效。
这就是典型的缺少全局反馈。单点AI工具的结构化输出是给本环节看的,不会主动变成下一个环节的输入约束。所以很多团队试了一圈AI工具后得出结论:有用,但价值有限。这不是AI不行,是管线没打通。如果把AI作为粘合剂,让RTL的检测结果直接映射到验证场景,让验证的失败日志自动标记DFT寄存器,让测试的失效数据反向定位到RTL模块,闭环的价值才开始显现。
1.3 闭环真正解决的是“测完反哺”的问题
芯片流片之后,量产测试数据其实是全流程信息量最大的资产。ATE测试不只是检测好坏,它记录的fail pin、fail vector、扫描链位置、温度电压点,几乎能反推出设计的每一个薄弱环节。只是过去这些数据极少往前端回流,量产过上几个月,设计团队根本不知道自己的RTL在真实硅片上死在哪里。
AI闭环的核心迁移在于把测试当成信息源,而不是终点。任何一个fail pattern都不该只被当作“这一颗要报废”的信号,而应该被当作一次RTL缺陷的候选线索。通过AI把fail trace自动映射回模块、寄存器甚至代码行,再反馈给验证团队做定向回归,这才叫闭环。所以“从RTL到测试”的真正语义,反而不是单方向的链路,而是一个从测试再转回RTL的圆形路径。想明白这一点,后续的工具选型、数据格式和团队协作方式就都有了判断依据。
2. 一套可落地的AI芯片设计闭环长什么样
2.1 整体链路拆成五个环节
把从RTL到测试的全流程压缩成一张工作逻辑图,大致可以分成五层。第一层是RTL设计与代码质量分析,AI负责在代码提交阶段做静态检查、模块依赖分析、跨时钟域风险扫描;第二层是功能验证,AI介入约束求解、回归场景聚类、覆盖率预测和失败用例根因定向;第三层是DFT可测性设计,AI分析扫描链拓扑、预测测试点收益、优化压缩配置;第四层是测试向量生成,包括ATPG向量筛选、故障类型分类和测试时间缩短;第五层是量产测试数据回流,把ATE的fail log结构化之后送回前端。
这五层不一定要在同一套系统里,但数据格式必须是一个统一的标准。现场分享者强调了一个原则:每一层的输出不能只是“报告”,必须是机器可读的结构化数据,RTL分析产生的是风险标签树,验证回归产生的是失败场景JSON,DFT产生的是扫描链属性表,ATE产生的是晶圆bin映射表。这些数据落进同一个库,AI模型才可能做跨环节关联。
2.2 数据底座设计比模型更重要
很多团队一上来就奔着大模型去,结果发现第一步就卡死在数据上。RTL仓库的git记录和覆盖率数据库对不上,测试日志格式两周一变,ATE的log在另一个部门手里要绕三个流程才拿到。如果你没有先做数据底座,任何AI模型都只能在一个小数据集里自嗨。
那套分享里提到,他们花在数据标准化上的时间比模型训练多一倍。具体做法其实不复杂:给每个RTL对象定一个ID,核心是模块名加哈希版本,验证场景和DFT扫描链都引用这个ID,测试fail记录里必须携带对应的扫描链ID或者RTL模块ID。这样每一层的数据都能顺着ID链条上下游追溯。下面是一个简化示例,大概可以看出数据格式长什么样:
project: vpu_core revision: "2026.03.alpha" rtl_objects: - id: "vid_top_af@3f9a2c" module: "vid_top_af" hash_chain: "3f9a2c11" design_quality_alerts: - module: "vid_top_af" issue: "combinational_loop_risk" severity: 2 evidence: "CDC/MCP conflict" priority: "P1" verification_failures: - scenario_id: "uvm_disp_path_013" module_ref: "vid_top_af@3f9a2c" fail_type: "timeout" root_cause_guess: "fsm_state_missing" scan_chains: - chain_id: "chain_11" module_ref: "vid_top_af@3f9a2c" compression_ratio: 32 test_fails: - bin_id: "bin5" fail_pin: "PAD_AF_DATA[7]" scan_ref: "chain_11"这种结构本身不复杂,但一旦全流程都统一用这套ID,AI才有机会在RTL的“combinational_loop_risk”和ATE的“chain_11 fail”之间发现关联。说到底,闭环的粘合剂不是模型,而是数据引用的唯一性。
2.3 衡量闭环有效的关键指标
谈到评估指标的时候,分享者给了几组参考值,并反复强调每家团队情况不同,不要盲目套用。我整理成一张简表方便后续讨论:
| 环节 | 指标名称 | 可参考的目标值 | 说明 |
|---|---|---|---|
| RTL分析 | 误报率 | 低于5% | 否则工程师会直接无视工具告警 |
| 验证回归 | 平均回归周期 | 缩短40%以上 | 靠失败用例筛选,不是靠减少用例 |
| DFT插入 | 扫描链定位精度 | 80%以上 | 测试点建议被采纳的比例 |
| 向量生成 | 向量压缩率 | 降低30%~40% | 需要保持故障覆盖率不降 |
| 测试回流 | 问题反哺率 | 每轮至少10条有效线索回到RTL | 有实际修复或测试追加动作 |
这个表里最有争议的是“误报率低于5%”。因为理论上RTL静态分析误报率很难压这么低,但如果你在模型后面加一个“规则硬过滤层”,很多明显误报是可以提前杀掉的。AI在这里不是代替人来下结论,而是做第一轮筛选和排序,准确率自然就上来了。
3. 从RTL到测试各环节的核心实践与实测参数
3.1 RTL侧:AI做代码扫描和风险预判
RTL阶段最容易见效的,并不是让AI自动写一个完整模块,而是让它做基于设计语义的代码健康扫描。传统lint工具能给语法、位宽、跨时钟域违反之类的提示,但对“这个状态机是不是漏了一种组合”或者“这个跨模块握手信号可能存在缺失仲裁”这类问题无能为力。分享者的团队做了一个基于代码结构加设计意图摘要的轻量模型,输入不是完整RTL源码,而是每个模块的抽象语法树加端口级驱动关系。
在某视频处理芯片项目上,他们扫描了300多个模块,产出了1270条提示,经过规则过滤之后剩余212条,最终被前端确认需要处理的AI告警有34条,其中7条是能导致仿真挂死的真问题。换算下来误报控制到了能接受的范围。这里有个特别重要的工程细节:AI不再直接提交修改代码,而是输出一言以蔽之的“问题描述 + 定位坐标 + 可参考的修复方式”,由工程师人工判断。原因是芯片代码改动的影响面太大,让模型直接改代码的收益远小于风险。AI输出格式简化为“模块路径、行号、风险类型、关联信号、建议动作”,配合评审流直接生成工单。
3.2 验证侧:让失败用例自己“说”根因
功能验证环节的时间消耗大头有三个:搭环境、写约束、调失败用例。AI在搭环境和写约束上目前帮助有限,但在失败用例的聚类和根因初判上效果非常明显。常见的做法是把仿真日志中的时间戳、信号翻转序列、断言命中和覆盖率数据拼成向量,再聚类出若干类典型失败。某团队在一个PCIe控制器的回归池里,用AI把300多条失败日志聚成23类,其中12类指向同一个DUT软件向量并发问题,这要放人工分析至少两三天。
更值得借鉴的是回归场景筛选思路。芯片验证里有很多用例回归几百遍都不挂,每次全量回归都是重复劳动。AI根据历史日志学习“什么样的用例组合能覆盖新增修改的代码分支”,提前把无关回归用例过滤掉,只跑高相关子集,再加上每三小时做一次全量回归兜底。他们实测的结果是全量回归平均耗时从每天7小时降到了2.8小时。注意,这不是偷工减料,而是用覆盖率模型保证过滤后的场景子集与全量场景在目标分支覆盖度上等价。
3.3 DFT侧:扫描链不再是人工数链表的杂活
DFT工程师日常做的最多的事情,其实是看着扫描链报告发愁:这条链穿过太多逻辑层级,那条链负载不均衡,某个模块的测试点覆盖明显不足。AI在这里扮演的是“扫描链医师”的角色,把整条链的拓扑距离、触发器和组合逻辑比例、可观测性得分全部串成特征,然后预测每条链的测试失败风险和修复优先级。
分享者举了一个例子:某视频处理ASIC设计里有128条扫描链,量产测试阶段发现某几类fail pattern集中出现在特定四条链上。传统排查会把这四条链附近的电路全部排查一遍,耗时很久。他们用AI把失败pattern对应的扫描单元坐标做了聚类,发现四条链的异常其实全部汇聚到四个共同的保存单元。修掉之后,后续两批晶圆的该bin失效数下降了接近三成。这个结果说明,DFT阶段的AI重点不应该放在自动化插入扫描链上,而应该放在失效模式的跨链关联分析上。
3.4 测试向量生成与ATE数据回流
测试向量方面,AI能做两类有价值的事。第一类是向量压缩,在保持故障覆盖率不变的前提下,用聚类算法去掉冗余向量,把ATPG生成的12000条向量压到7500条,压缩率37.5%,覆盖率维持在97.2%。这直接省掉了大量ATE机台使用时间,机台成本是按小时算钱的,省下的时间都是实打实的成本优化。
第二类是fail数据反哺。量产测试数据回流一直是老大难,因为ATE日志格式是芯片测试厂商那边的,很多团队拿到手里就是一堆CSV加文本,根本没法机器解析。分享者的团队做了一个统一的解析转换层,把不同测试厂格式的fail log统一转成结构化的JSON,然后自动关联到DFT扫描链ID和RTL模块ID。这一步做完之后,测试发现的问题不再只停留在“哪颗芯片坏了”,而是能给出“这个故障大概率关联到某模块某寄存器的某扫描单元”,并且自动在项目系统里开出“测试反哺工单”。如果说前四层都是降本增效,这一层才是真正把闭环转完整。
4. AI闭环落地最容易踩的坑与排查实录
4.1 数据版本混乱让AI直接“智障”
再强的模型也害怕脏数据。实际项目中常见的是RTL文件名带各种后缀,比如“top_wrp_fix3_final_really.sv”,但里边的模块名和git版本对不上。AI一旦拿这种数据做关联分析,学到的规律就全是错的。这类问题的根源是数据入库没有走统一入口,很多历史文件直接从共享目录搬运过来。
解决办法是把数据入库做成强制流水线,RTL必须以git commit为单位进入,其他人不能手工上传文件。每一个模块用git hash做唯一标识,后续所有验证结果、DFT报告和测试日志都必须携带这个hash。哪怕前期流程重构需要几周时间,这个成本迟早要花的。
4.2 覆盖率“好看”但测试不真的有效
AI方案上线后,团队有时候会发现覆盖率数字上升了,但漏测的还是漏测。仔细排查后,发现是AI模型为了优化覆盖率指标,把某些覆盖组的定义放宽了。比如原来要求某个状态连续保持三个时钟周期才算覆盖,模型把条件改成保持一个周期就算;数字是好看了,真实场景中“卡死三周期”的bug照样跑掉。
这个坑的教训很直白:覆盖率模型只能用于分析缺口和排序优先级,绝对不能参与覆盖点本身的定义和阈值修改。覆盖指标一旦被模型“优化”,它就失去了验证的公正性。把指标体系和模型的目标函数彻底隔离,这是项目管理层面必须守住的底线。
4.3 AI给出的修复建议有时会产生新的bug
我在自己的项目里也遇到过类似情况:AI对一段FSM跳转逻辑给出了补一个状态转移的修复建议,看起来完全合理,但修完之后另一个原本正常的场景挂了。原因在于那个状态转移依赖于一个三级流水线里的时序约束,AI只看了逻辑功能,没有把物理实现阶段的时序收敛纳入考量。
因此,AI修复建议一律不准直接进代码主干,必须走单独的修复分支,接完整的回归和DFT适应性检查。当期许的修复合入主干之前,至少要保证三层过滤:RTL静态重查、全量回归、DFT扫描链覆盖率对比。宁可让修复流程变慢一点,也不能把不确定性释放进去。
4.4 错误地把风险告警当作业绩指标
还有一类组织层面上的误用:把“AI扫描发现的安全隐患数”当作团队生产力指标,导致前端刻意调高告警灵敏度,报告数量上去了,但里面塞满了低质量的重复提醒。最终工程师被迫每天看几百条无效告警,对工具彻底脱敏,真问题也被淹没。这个实际在业内的名字叫“告警疲劳”。
比较合理的做法是把指标定义成“每100条安全告警中实际产生修复动作的比例”,让告警数量变成手段而不是目标。AI闭环的核心价值是帮人少看无效信息,不是生产更多信息。定期清理低价值告警类型,比不停往上堆新规则重要得多。
4.5 常见问题速查表
| 异常现象 | 可能原因 | 排查方向 |
|---|---|---|
| AI关联结果突然失真 | RTL或DFT数据入库版本不一致 | 检查git hash与数据时间戳 |
| 覆盖率提升但实际漏测 | 覆盖点定义被模型或脚本改动 | 强制隔离指标定义权限 |
| 修复建议连续导出同类型错误 | 训练集里该场景样本不足 | 补充失败日志样本做定向增强 |
| 测试失败日志转换丢字段 | 测试厂格式变更未同步解析层 | 解析层加格式版本号和校验和 |
| 跨部门数据回流被卡住 | 工单需要手工审批导致积压 | 设置自动转办规则和人工抽检比例 |
5. 团队要适配这套闭环,应该从哪里先动手
5.1 先判断你自己数据底子到哪一步了
不是每个团队都适合立刻上完整的AI闭环。如果你现有流程里,RTL修改记录靠文件重命名、覆盖率数据只存在验证服务器某个目录、测试反馈靠邮件表格,那强行上AI只会把脏数据再放一遍大,得到的结果反而更差。这种情况第一优先级是把数据标准化和统一ID做起来,先把“RTL改动到验证场景到DFT报告到ATE fail”的四段链路用编号打通,哪怕全程不用AI规则引擎,这个基底也已经开始为后续模型起效。
5.2 验证和测试团队要最先参与共建
AI闭环不是平台团队单方面能搞出来的。参与度最高的应该是验证工程师,因为回归失败数据的分级打标直接影响模型学习质量;其次是DFT和测试合作方,因为ATE日志能不能被机器解析,取决于测试数据提供方是否愿意付出额外的整理功夫。实际推动过程中,分享者提到一个很现实的问题:验证团队本职工作已经很满,再让他们额外给失败日志做类型标注,抵触情绪非常大。
他们的解决办法是把打标动作做成工单系统的一部分:工程师每次处理一个失败用例都要选择失败类型,这个动作本来就需要做,只是以前写在自己的记录里,现在把它结构化。从这个角度说,AI闭环的搭建不是新增工作量,而是把原有工作量沉淀成资产。
5.3 别急着做“全自动闭环”,先走半自动
很多人想象中AI闭环是“RTL出bug→AI修复→自动跑回归→自动优化DFT→自动调测试向量”,全流程自动完成。坦率讲,以现在的可靠性,这属于过度想象。大多数成功实践都是半自动闭环:AI负责清洗、聚类、关联、初判和排序,工程师负责决定改不改、怎么改、要不要追case。所谓“最小闭环”,先用三块拼起来就够了:RTL风险扫描、验证失败聚类、测试数据回流。这三个点都跑顺了,再逐步把DFT和向量优化环节接进去。
从投入产出比看,值得优先做的是“测试失败日志到RTL模块定位”这条最短的反馈回路。它链路短、数据容易获取、业务价值又足够大,做完之后团队对AI闭环的信心会完全不一样。
6. 几个值得继续深挖的方向
这次分享在最后提了几个延伸方向,我自己觉得比较有意思,也补充了一些判断。
第一个是多源数据联合分析,把仿真波形时序、覆盖率热图、扫描链拓扑图和ATE失效bin图都转换成统一的向量表示,再输入到联合模型里,尝试在“覆盖率空洞”和“量产测试敏感点”之间建立更直接的映射。当前的瓶颈不是模型,而是波形数据量太大、压缩方法还不够好,但如果能跑通,芯片设计缺陷的发现时间会进一步提前。
第二个是设计知识图谱。把所有RTL模块、关键信号、验证场景、DFT扫描链、测试用例之间的关系用图谱维护起来,AI模型基于图谱做推理,而不是只基于文本向量。这样可以减少对超大数据集的依赖,对很多中小团队更现实。成本是知识图谱本身需要人工参与建模,初期工作量不小。
第三个方向是自适应测试调整,通过模型学习一个具体芯片工艺角的失效分布变化,动态调整量产测试里的向量集合和测试顺序。这个方向离RTL最远,但离生产成本最近。如果测试成本能通过AI下降一个数量级的幅度,对整个芯片行业的降本价值会非常可观。
我个人对前两个方向更看好,因为它们仍然服务于“让设计环节更快得到测试反馈”这个闭环核心,而不是把AI变成新的单点工具。
最后再讲一句实际体会。我自己在实际参与流程改造时,发现最容易出成果的并不是把某个环节的AI指标刷到99%,而是让数据先流动起来。哪怕你现有团队没有专门的AI工程师,先把RTL、验证、DFT和测试结果统一放在一个可回溯的数据库里,再挂上几个简单的规则和聚类算法,就已经能解决很多跨团队扯皮的问题。这套“从RTL到测试”的AI闭环方案给我最大的触动也就在这里:真正的闭环不是某一种模型的能力,而是设计流程里那些原本被丢弃的数据,重新开始产生了价值。