第二章:测试基础理论——故障模型、测试覆盖率与ATPG概念
各位同学,今天我们来聊聊DFT最核心的理论基础。说实话,我刚入行那会儿,觉得这些理论挺枯燥的。但后来踩过几次坑,才明白——不懂理论,你连测试向量怎么写的都不知道。
这一章,我会把故障模型、测试覆盖率、ATPG这三个概念串起来讲。它们就像测试的“三驾马车”,缺一不可。
2.1 故障模型:芯片为什么会坏?
芯片制造出来,不可能100%完美。晶圆上的灰尘、工艺偏差、金属线断裂……这些都会导致芯片失效。那我们要怎么描述这些失效呢?
故障模型就是干这个的。它把物理缺陷抽象成逻辑模型,方便我们写测试向量。
2.1.1 Stuck-at 故障(固定故障)
这是最经典的故障模型。说白了,就是某个节点的逻辑值被“卡死”在0或1,怎么都变不了。
- Stuck-at-0 (SA0):节点永远为0
- Stuck-at-1 (SA1):节点永远为1
举个例子,一个与门输出端SA0了,那不管输入怎么变,输出永远是0。嗯,这里要注意:Stuck-at模型假设一个芯片只有一个故障点。虽然现实没那么简单,但作为基础模型,它非常实用。
我个人习惯:在做快速测试评估时,先用Stuck-at模型跑一遍。它能覆盖大部分制造缺陷,效率很高。
2.1.2 Transition 故障(跳变故障)
Stuck-at模型只能测“静态”问题。但芯片是动态工作的,信号从0变1或从1变0时,也可能出问题。
Transition故障就是测这个的。它检查信号能不能在规定时间内完成跳变。
- Slow-to-Rise:上升沿太慢
- Slow-to-Fall:下降沿太慢
我在项目中遇到过一件事:某款芯片功能仿真全过,但量产时高频下总出错。后来一查,是某条路径的Transition故障没覆盖到。从那以后,我每次做测试方案,都会把Transition故障单独拎出来检查。
2.1.3 Bridging 故障(桥接故障)
两根本不该连在一起的金属线,因为工艺缺陷短路了。这就是Bridging故障。
它有两种常见类型:
- AND型桥接:两个节点短路后,逻辑值取“与”
- OR型桥接:两个节点短路后,逻辑值取“或”
你想想看,如果一根数据线和一根时钟线桥接了,那后果……嗯,我见过一次,整个芯片时序全乱套。
避坑指南:我曾经以为Bridging故障只在老工艺里出现。后来在28nm项目里也遇到了。别小看它,先进工艺的金属层更多,桥接风险反而更大。
2.2 测试覆盖率:你的测试够不够?
测试覆盖率,说白了就是“你测了多少”。它是一个百分比,用来衡量测试向量的完备性。
最常见的两种:
| 覆盖率类型 | 含义 | 行业标准 |
|---|---|---|
| Stuck-at覆盖率 | 检测到的Stuck-at故障数 / 总故障数 | ≥ 98% |
| Transition覆盖率 | 检测到的Transition故障数 / 总故障数 | ≥ 90% |
为什么不是100%?因为有些故障根本测不到。比如冗余逻辑里的故障,或者某些特殊路径。我建议:别死磕100%,98%以上就够用了。剩下的2%,靠良率分析和工艺监控来补。
注意:覆盖率不是越高越好。盲目追求100%,会导致测试向量数量爆炸,测试时间翻倍。成本上划不来。
2.3 ATPG:自动生成测试向量
ATPG,全称Automatic Test Pattern Generation。它就是帮你自动写测试向量的工具。
你只需要给ATPG工具三个东西:
- 网表(Netlist)
- 故障模型(比如Stuck-at)
- 约束条件(比如时钟、复位)
工具就会自动生成测试向量。这些向量会被加载到ATE(自动测试设备)上,对芯片进行测试。
ATPG的核心算法有两种:
- D算法:经典算法,适合小规模电路
- FAN算法:改进版,速度更快,适合大规模设计
我记得第一次用ATPG时,看到工具自动生成了几万条向量,心里还挺震撼的。但后来发现,工具生成的向量不一定最优。我通常会手动调整一些关键路径的向量,把覆盖率再提一两个点。
我的经验:ATPG工具跑完后,一定要检查“未覆盖故障列表”。那些没测到的故障,往往藏着设计隐患。我曾经靠这个列表,发现了一个时钟门控的逻辑错误。
2.4 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以把它当作一个“测试理论地图”。
这张图你看懂了吗?故障模型是基础,覆盖率是标尺,ATPG是工具。三者环环相扣,缺一不可。
2.5 本章小结
这一章的内容,说白了就是三个词:Stuck-at、覆盖率、ATPG。但别小看它们,我做了十几年DFT,每次新项目都离不开这三个概念。
最后送大家一句话:理论是实践的指南,实践是理论的验证。下一章我们会讲具体的测试架构,到时候你会发现,今天学的这些理论全都能用上。
课后小作业:打开你的DFT工具,跑一次Stuck-at覆盖率分析。看看未覆盖的故障有哪些?试着分析一下原因。我曾经用这个方法,帮团队找到了一个隐藏很深的时钟域同步问题。