2. 测试基础概念:故障模型、测试覆盖率与ATPG
大家好,欢迎来到第二章。今天咱们聊聊测试的“地基”——故障模型、测试覆盖率,还有ATPG。这些概念听起来有点抽象,但说白了,它们就是判断一颗芯片“好不好”的尺子。
我刚开始做DFT那会儿,总觉得测试就是“通电能跑就行”。后来吃过亏才明白——没有扎实的故障模型和覆盖率分析,流片回来的芯片就像开盲盒。嗯,咱们今天就把这些概念掰开揉碎了讲清楚。
2.1 故障模型:芯片的“病历本”
芯片制造过程中,总会有一些物理缺陷。比如一根金属线断了,或者两个节点短路了。故障模型,就是把这些物理缺陷“翻译”成我们能理解和模拟的逻辑行为。
我个人习惯把故障模型分成三大类:
2.1.1 Stuck-at 故障(固定故障)
这是最经典的模型。它假设某个节点永远固定在逻辑0或逻辑1,不会变化。
- Stuck-at-0 (SA0):节点被“焊死”在0电平
- Stuck-at-1 (SA1):节点被“焊死”在1电平
举个例子:一个与门,输入A是1,输入B是1,输出应该是1。但如果输出端有SA0故障,那输出永远是0。测试时,我们就要想办法让这个故障“现原形”。
核心思想:Stuck-at模型简单、高效,覆盖了大部分制造缺陷。但它有个缺点——它假设故障是静态的,无法模拟时序相关的缺陷。
我的经验:我在项目中遇到过,Stuck-at覆盖率做到99%以上,芯片还是有问题。后来发现是时序故障。所以,别迷信单一模型。
2.1.2 Transition 故障(跳变故障)
这个模型专门对付“慢吞吞”的节点。它假设一个节点从0变1(上升沿)或从1变0(下降沿)时,速度太慢,导致在下一个时钟沿来临时还没稳定。
- Slow-to-Rise (STR):上升太慢
- Slow-to-Fall (STF):下降太慢
为什么会这样?可能是晶体管驱动能力不足,或者连线电阻电容太大。Transition故障需要两个向量:第一个向量把节点设置到初始状态,第二个向量触发跳变并捕获结果。
注意:Transition故障的测试比Stuck-at复杂得多。它需要“启动”和“捕获”两个时钟周期。我建议在做ATPG时,单独跑Transition的pattern,别和Stuck-at混在一起。
2.1.3 Bridging 故障(桥接故障)
芯片上两根靠得很近的金属线,可能会因为工艺问题“搭”在一起,形成短路。这就是Bridging故障。
它有两种常见类型:
- AND型桥接:两个节点短路后,逻辑上相当于“与”的关系
- OR型桥接:两个节点短路后,逻辑上相当于“或”的关系
你想想看,如果一根数据线和一根时钟线桥接了,那后果不堪设想。Bridging故障的建模非常复杂,因为要考虑物理位置和驱动能力。
避坑指南:我曾经在一个项目中,Stuck-at和Transition覆盖率都达标了,但芯片在高温下还是失效。最后定位到是两根相邻的电源线桥接。从那以后,我要求团队必须做Bridging故障的仿真,尤其是高密度区域。
2.2 测试覆盖率:你的测试够不够“狠”?
覆盖率,就是衡量测试向量“抓故障”能力的指标。它不是一个数字游戏,而是质量的保证。
常见的覆盖率指标有:
| 覆盖率类型 | 含义 | 典型目标 |
|---|---|---|
| Stuck-at覆盖率 | 检测到的Stuck-at故障数 / 总故障数 | >98% |
| Transition覆盖率 | 检测到的Transition故障数 / 总故障数 | >90% |
| 动态故障覆盖率 | 考虑时序的故障检测率 | >85% |
我个人习惯,在项目初期就定好覆盖率目标。比如Stuck-at必须做到99%,Transition做到95%。达不到?那就加pattern,或者优化设计。
重要提醒:覆盖率100%不代表芯片100%没问题。它只说明你的测试向量覆盖了所有可建模的故障。有些缺陷,比如软错误、老化效应,覆盖率是管不到的。
2.3 ATPG:自动生成测试向量的“神器”
ATPG,全称Automatic Test Pattern Generation。说白了,就是让EDA工具自动帮你生成测试向量,不用你手动去写。
ATPG的基本流程是这样的:
- 读入网表:工具先认识你的电路结构
- 建立故障列表:根据故障模型,生成所有可能的故障
- 故障压缩:去掉等价的故障,减少计算量
- 生成向量:对每个故障,自动计算能检测它的输入组合
- 故障仿真:验证生成的向量是否真的能检测到故障
ATPG算法有很多种,比如D算法、PODEM、FAN等。现在主流工具(如TetraMAX、FastScan)都用了混合算法,速度和效果都不错。
我的建议:ATPG不是万能的。如果设计中有大量X态(未知态)或者异步逻辑,ATPG工具会很难生成有效向量。我建议在设计阶段就考虑DFT友好性,比如插入扫描链、避免异步复位。
2.4 三者之间的关系
故障模型、覆盖率和ATPG,其实是三位一体的:
- 故障模型是“靶子”,告诉你该打哪里
- 覆盖率是“计分板”,告诉你打中了多少
- ATPG是“枪手”,自动帮你瞄准射击
没有好的故障模型,覆盖率就是空中楼阁。没有覆盖率目标,ATPG就是无头苍蝇。三者缺一不可。
最后提醒:我曾经见过一个团队,ATPG跑出了99%的覆盖率,但芯片量产良率很低。后来发现,他们用的故障模型太老了,没有包含Transition和Bridging。所以,选对模型,比盲目追求数字更重要。
好了,这一章就到这里。下一章咱们聊聊扫描链设计——这可是DFT的“核心武器”。