当前位置:首页 > 科研成果库

芯片流片回来测不了?你缺的不是调试,是测试性设计

2026-11-05 15:57:58小研科研成果库15

上周三凌晨两点,我盯着屏幕上那条死活上不去的覆盖率曲线,差点把咖啡泼在键盘上。团队花了三个月做的模块,流片回来一测,关键路径上的故障根本激活不了。老板在群里发语音:“当初设计的时候干嘛去了?”——你看,这就是测试性设计没做到位的下场。不是测试工程师不努力,是设计阶段就埋了雷。

说实话,我见过太多项目把DFT当成后端收尾的杂活。等到版图快tapeout了,才想起来找个工程师“随便插点扫描链”。结果呢?面积爆了、时序崩了、测试模式下的功耗直接把芯片烤熟。今天不聊教科书定义,就从一个具体切口说:数字芯片里扫描链的插入策略,到底怎么让芯片变得可测、又不会把自己搭进去。

你以为测试是后端的事?扫描链早就在前端埋了伏笔

先破个误解:测试性设计(Design for Testability)不是“多加点测试点”那么简单。它的核心逻辑是把芯片内部难以控制的节点,变成外部可操控、可观测的通道。打个不恰当的比方——你家装修时在承重墙上预留了检修口,平时用盖板遮住不影响美观,水管爆了能立刻伸手进去拧阀门。扫描链就是芯片的检修口。

怎么做的?把普通触发器替换成带多路选择器的扫描触发器,测试模式下首尾相连串成移位寄存器。这样你就能从外部管脚把任意测试向量“灌”进去,再从输出端“抽”出来。听起来简单对吧?但麻烦在于:串联顺序怎么排?时钟域怎么隔离?测试功耗怎么控制?

我见过一个团队,为了省面积,把扫描链串得又长又密。结果测试模式下同时翻转的触发器太多,瞬时电流把电源网络拉垮了,芯片直接复位。后来加了分段时钟控制才救回来。扫描链不是串得越长越好——就像堵车时你不可能让所有车同时变道。

芯片扫描链插入前后触发器连接对比示意图芯片扫描链插入前后触发器连接对比示意图

这里有个关键指标叫测试覆盖率。假设你设计了一个加法器,里面有个故障是某根线卡在0。如果你的测试向量能让这根线在正常工作时被驱动成1,然后观察输出差异,就算覆盖到了。扫描链的价值就是让那些深埋在逻辑锥里的节点变得“可控可观测”。否则你只能靠随机向量碰运气——累死测试机也测不全。

不过话说回来,扫描链本身也会引入面积开销。一个扫描触发器比普通触发器大15%到30%,加上布线拥塞,整体面积涨个5%到10%很常见。更头疼的是时序影响:测试模式下的路径延迟和功能模式不同,你得跑两套STA(静态时序分析)。有些设计为了保功能时序,偷偷把扫描链的时钟树降频——结果测试时间翻倍,测试成本直接起飞。

我见过最离谱的误区:把DFT当成多插几个测试点

去年帮一个初创团队看设计,他们老板拍胸脯说“我们做了DFT,每个模块都加了测试点”。我打开网表一看,好家伙——测试点全插在组合逻辑的中间节点,没有扫描链串联,也没有测试模式控制信号。这等于在墙上凿了一堆洞,但没装门,你进不去也出不来。

真正的测试性设计是一套系统性的架构改造。除了扫描链,还有内建自测试(BIST)——让芯片自己生成测试向量并比对结果,适合存储器这类规则结构;边界扫描(JTAG)——解决板级互连测试。但很多人不知道,BIST也有坑:March算法跑一遍存储器的功耗可能比正常读写高好几倍,你得设计低功耗测试模式,否则电池供电的IoT芯片测一次掉10%电量。

ATE测试机台与探针卡接触芯片实拍图ATE测试机台与探针卡接触芯片实拍图

还有一个冷思考:不是所有故障模型都值得覆盖。你辛辛苦苦把固定型故障覆盖率干到99%,但实际芯片失效里,桥接故障、延迟故障占了大头。有些团队为了追覆盖率数字,拼命堆测试向量,测试时间从3秒涨到30秒。ATE机台按秒计费,你算算量产时每颗芯片多花多少钱?所以DFT工程师得有成本意识——覆盖率和测试时间之间要找个平衡点,不是越高越好。

我自己的经验是:优先保证关键路径和易失效模块的覆盖率,对冗余逻辑可以适当放宽。另外,测试模式下的功耗必须仿真验证。别像我之前那个项目,测试向量跑起来局部电流密度超标,金属线电迁移寿命直接砍半。后来加了扫描链分段激活和门控时钟,才压下去。

测试性设计的边界:它救不了烂设计,但能让好设计不被冤枉

测试性设计的边界:它救不了烂设计,但能让好设计不被冤枉测试性设计的边界:它救不了烂设计,但能让好设计不被冤枉

说个扎心的事实:DFT不能提升芯片的功能正确性。如果你的设计本身有逻辑bug,扫描链只会帮你更清楚地看到错误——而不是帮你修好它。有些老板指望“上了DFT就能少流片几次”,那是做梦。DFT的价值在于:当芯片回来功能不对时,你能快速定位是制造缺陷还是设计错误。没有DFT,你只能靠猜;有了DFT,你能精确到哪根线哪个触发器。

但DFT也有边界。模拟电路、射频模块、高速SerDes——这些领域扫描链基本帮不上忙。你得用专门的模拟测试总线或者片上传感器。另外,混合信号芯片的测试模式切换可能引入噪声耦合,把敏感模拟电路搞崩。我见过一个电源管理芯片,测试模式一开,基准电压源就振荡——最后只能把DFT逻辑单独供电,加隔离环。

还有一个风险:测试逻辑本身也可能失效。扫描链的时钟树、复位网络如果设计不当,测试模式下会出现竞争冒险。更隐蔽的是,测试模式下的异常功耗可能加速老化,导致芯片出厂时是好的,用半年就坏了。所以安全关键领域(汽车、医疗)必须做测试模式下的可靠性仿真——别为了省事跳过这一步。

最后说个真实观察:很多团队把DFT工程师当成“后端打杂的”,直到流片回来测不了才后悔。其实测试性设计应该在架构定义阶段就介入——选什么扫描压缩方案、要不要做LBIST(逻辑内建自测试)、测试时钟怎么规划,这些决策越早做,后期返工越少。就像装修时水电改造和家具布局得一起想,等你墙面刷完了再改插座位置,那就等着砸墙吧。

行了,不啰嗦了。下次流片评审会,记得把DFT工程师拽进会议室——别让他只在签核清单上签个名就完事。那点面积和功耗开销,比重新流一次片的代价便宜太多了。