第三章 测试基础理论:故障模型、测试覆盖率与良率计算
各位同学,今天我们聊聊测试的“地基”——故障模型、覆盖率和良率。说实话,这些概念听起来有点理论,但你要是真进了量产导入的坑,天天都得跟它们打交道。我当年刚入行时,觉得故障模型就是书本上的几个图,直到有一次在N7项目上,一颗芯片因为一个极小的桥接故障漏掉了,结果整批货被客户退回……嗯,从那以后,我再也不敢小看这些基础理论了。
3.1 故障模型:芯片的“常见病”
芯片制造不是完美的。晶圆上的灰尘、光刻的偏差、材料的缺陷,都会让晶体管“生病”。测试的目的,就是把这些“病人”揪出来。而故障模型,就是我们给这些“病”起的名字和分类。
3.1.1 Stuck-at 故障(固定型故障)
这是最经典的模型。说白了,就是一根信号线被“焊死”在了0或者1上,怎么都拉不动。
- Stuck-at-0 (SA0):信号永远为0。比如一个反相器的输出本该是1,结果死活出不来。
- Stuck-at-1 (SA1):信号永远为1。比如一个与非门的输出本该是0,结果一直高电平。
我个人习惯把Stuck-at模型当作“入门级体检”。它简单、直观,覆盖率也容易算。但你要注意,它只能模拟永久性的物理短路或断路。像那种时好时坏的“软故障”,它就抓不住了。
重要概念:Stuck-at故障模型假设每个节点只有一种故障状态。一个电路有N个节点,理论上就有2N个可能的Stuck-at故障(每个节点SA0和SA1各一个)。
3.1.2 Transition 故障(转换故障)
这个模型比Stuck-at高级一点。它模拟的是信号从0变1(上升沿)或从1变0(下降沿)时,速度太慢,导致在时钟沿来临时没完成跳变。
你想想看,芯片频率越来越高,留给信号跳变的时间越来越短。我在N5项目上就遇到过,一个关键路径上的缓冲器因为工艺波动,驱动能力下降,导致信号上升时间从20ps变成了50ps。结果呢?芯片在低频下跑得好好的,一上高频就报错。这就是典型的Transition故障。
- Slow-to-Rise (STR):上升沿太慢。
- Slow-to-Fall (STF):下降沿太慢。
测试Transition故障,需要连续施加两个向量:第一个把节点设成初始值,第二个让它跳变,然后在下一个时钟沿捕获结果。这比Stuck-at测试复杂得多,但更贴近实际的高速问题。
3.1.3 Bridging 故障(桥接故障)
这个模型模拟的是两根本不该相连的金属线,因为制造缺陷“搭”在了一起。短路了嘛。
桥接故障分两种:
- 电阻性桥接:两根线之间有个小电阻,信号会互相干扰。这种最难测,因为电阻值可能很大,只在特定条件下才表现出故障。
- 硬桥接:直接短路,相当于逻辑上的“线与”或“线或”。
我曾经在N3的一个测试芯片上,发现一个SRAM的位线因为光刻残留物发生了桥接。那问题藏得特别深,常规的Stuck-at测试全过了,但芯片就是偶尔读错数据。最后我们专门加了Bridging测试向量才把它抓出来。所以,千万别以为Stuck-at覆盖率高就万事大吉。
我的小技巧:在先进制程中,Bridging故障越来越常见。我建议你在设计测试向量时,除了标准库里的故障模型,还要根据版图布局,手动添加一些高风险的桥接点(比如长距离并行走线、密集的过孔区域)。
3.2 测试覆盖率:你的测试够“狠”吗?
覆盖率,就是衡量你的测试向量到底“测到了多少”故障。它不是一个虚无缥缈的指标,而是直接关系到芯片出厂后的质量。
公式很简单:
测试覆盖率 = (检测到的故障数 / 总故障数) × 100%
但这里有个坑:总故障数怎么算?
- 对于Stuck-at,就是2N(N为节点数)。
- 对于Transition,是2N(每个节点两个方向)。
- 对于Bridging,那就复杂了,因为任意两根线都可能桥接,总故障数可能是N×(N-1)/2。所以实际中我们只选“最可能”的桥接点来建模。
我记得有一次,一个同事兴冲冲地跟我说:“我的Stuck-at覆盖率做到了99%!”结果我一看报告,他用的故障列表里只包含了标准单元内部的节点,完全没考虑顶层互联线的故障。那这个99%就是“注水”的。真正的覆盖率,必须基于完整的、包含所有物理节点的故障列表。
避坑指南:我曾经在N7项目上吃过亏。当时ATE测试的Stuck-at覆盖率是98.5%,但良率却比预期低了2%。后来一查,发现是测试向量对某些“冗余逻辑”的覆盖率不够。这些逻辑在功能上看似多余,但一旦有故障,就会导致芯片功耗异常或时序违规。所以,覆盖率不仅要看数字,还要看它覆盖了哪些“角落”。
3.3 DPPM与良率计算:从测试到出货的“生死线”
测试的最终目的,是保证出货质量。而DPPM(Defective Parts Per Million,百万分之缺陷率)和良率,就是衡量这个质量的标尺。
3.3.1 良率(Yield)
良率分两种:
- 晶圆良率(Wafer Yield):一片晶圆上,好芯片的数量占总芯片数的比例。这主要跟制造工艺有关。
- 测试良率(Test Yield):经过测试后,通过测试的芯片数量占被测芯片总数的比例。这跟测试向量、测试条件直接相关。
举个例子:一片晶圆上有1000颗芯片,制造缺陷导致100颗坏了,晶圆良率就是90%。剩下的900颗拿去测试,测试向量又“打死”了50颗,那测试良率就是850/900 ≈ 94.4%。最终出货的良率是850/1000 = 85%。
3.3.2 DPPM:客户眼中的“质量分数”
DPPM是客户最关心的指标。它表示:你出货的每一百万颗芯片中,有多少颗是坏的(在客户那里被发现)。
DPPM = (客户退回的坏芯片数 / 总出货芯片数) × 1,000,000
比如你出货了10万颗芯片,客户退回了5颗坏的,那DPPM就是50。这个数字越小越好。一般消费类芯片要求DPPM < 500,汽车芯片要求DPPM < 10,甚至< 1。
这里有个关键关系:测试覆盖率越高,DPPM越低。但这不是线性的。我做过一个统计:
| Stuck-at覆盖率 | 理论DPPM(假设其他条件不变) |
|---|---|
| 95% | ~5000 |
| 98% | ~2000 |
| 99% | ~1000 |
| 99.5% | ~500 |
| 99.9% | ~100 |
你看,从99%到99.9%,覆盖率只提升了0.9%,但DPPM却从1000降到了100。这就是为什么高端芯片对测试覆盖率的要求那么苛刻。但也要注意,覆盖率超过99.5%后,每提升0.1%都需要付出巨大的测试时间和成本代价。所以,实际项目中要找到一个平衡点。
核心公式:
最终良率 = 晶圆良率 × 测试良率
DPPM ≈ (1 - 测试覆盖率) × 缺陷密度 × 常数
这个常数跟芯片面积、工艺节点、缺陷分布有关。在N5制程下,我一般取0.5~1.0之间的值。
3.4 总结与实战建议
好了,今天的内容就这些。我们来捋一捋:
- 故障模型:Stuck-at是基础,Transition抓时序,Bridging抓短路。三者缺一不可。
- 测试覆盖率:别只看数字,要看它基于什么故障列表。覆盖率越高,DPPM越低,但成本也越高。
- DPPM与良率:良率是制造和测试的共同结果,DPPM是客户对你的最终评价。
最后,给你一个实战建议:在做量产导入时,先跑一遍Stuck-at覆盖率,确保达到99%以上。然后针对关键路径和高速接口,补充Transition测试。最后,根据版图分析,挑出10~20个最危险的桥接点,手动加Bridging测试。这样,你的测试方案才算“靠谱”。
下一章,我们会聊聊测试向量是怎么生成的,以及如何用ATPG工具自动搞定这些故障模型。到时候见。