零基础搭建DFT测试环境 - 第2节
一、故障模型:芯片出错的“标准答案”
做DFT测试,说白了就是给芯片“体检”。但芯片那么大,怎么知道它哪里疼?
这时候就需要故障模型了。它就像医生的诊断手册,把各种可能的“病症”标准化。我个人习惯把故障模型理解为:用数学语言描述物理缺陷。
1.1 Stuck-at 故障模型
这是最经典的模型,也是我入行时学的第一个概念。
Stuck-at 故障,就是某个节点“卡死”在逻辑0或逻辑1上。比如一根信号线本该能高能低,结果它永远输出0,这就是 Stuck-at-0(SA0)。
举个例子:
正常情况:A = 1 → 输出 Y = 1
SA0故障: A = 1 → 输出 Y = 0(因为A被卡死在0)
我在项目中遇到过最典型的案例:某颗芯片的复位信号线有SA1故障,结果芯片永远处于复位状态,根本跑不起来。排查了三天才发现是制造过程中的金属残留。
- 每个节点有两种故障:SA0 和 SA1
- 一个芯片有N个节点,理论上就有2N个故障
- 实际测试中,我们只关心“可测”的故障
1.2 Transition Delay 故障模型
Stuck-at 测的是“静态”问题,但芯片跑起来是动态的。Transition Delay 模型就是用来抓“慢半拍”的毛病。
你想想看,信号从0变1(上升沿)或者从1变0(下降沿),如果变化太慢,就会导致时序违规。这种故障在高速芯片中特别常见。
两种类型:
- Slow-to-Rise: 从0变1时太慢
- Slow-to-Fall: 从1变0时太慢
二、测试覆盖率:你的测试够不够“狠”
测试覆盖率,就是衡量你测试质量的指标。说白了:你测了多少?漏了多少?
公式很简单:
测试覆盖率 = (检测到的故障数 / 总可测故障数) × 100%
举个例子:芯片有1000个可测故障,你的测试向量能检测到950个,那覆盖率就是95%。
我曾经遇到一个项目,为了追求99%的覆盖率,测试向量增加了3倍,测试时间从10秒变成了40秒。结果量产时测试成本太高,利润全被吃掉了。嗯,这就是典型的“过度测试”。
三、ATPG:自动生成测试向量的“大脑”
ATPG,全称 Automatic Test Pattern Generation。它的任务就是:自动生成测试向量,让故障“现出原形”。
3.1 ATPG 的基本原理
ATPG 的核心思想是:激励 + 观察。
- 激励: 给芯片输入特定的信号组合
- 观察: 看输出是否和预期一致
如果输出和预期不一样,说明有故障。ATPG 就是自动找出“什么样的输入组合能暴露故障”。
3.2 常用算法
| 算法 | 原理 | 适用场景 |
|---|---|---|
| D算法 | 基于布尔差分,精确但慢 | 小规模电路 |
| PODEM | 定向搜索,效率高 | 中等规模电路 |
| FAN | 改进版PODEM,更快 | 大规模电路 |
3.3 ATPG 流程
我画了一张图,帮你理清ATPG的完整流程:
3.4 ATPG 的“坑”与“避坑”
ATPG 不是万能的。我总结几个常见问题:
- 时序问题: ATPG 默认是组合逻辑,遇到时序电路要特别处理
- X态传播: 未初始化的寄存器会导致X态,影响测试结果
- 测试点插入: 覆盖率不够时,需要手动插入测试点
四、三个概念的关系
最后,我用一句话总结这三者的关系:
故障模型定义了“测什么”,测试覆盖率衡量了“测了多少”,ATPG解决了“怎么测”。
三者缺一不可。没有故障模型,ATPG就是无头苍蝇;没有覆盖率指标,你永远不知道测试够不够;没有ATPG,手工写测试向量会累死人。