第二章:测试基础理论——故障模型、测试覆盖率与ATPG概念
各位同学,大家好。今天我们聊聊测试理论中最核心的几个概念。说实话,我刚入行那会儿,觉得测试就是拿个向量跑一跑,能过就行。后来吃过亏才明白——不懂故障模型,你连芯片哪里可能坏都不知道,更别提怎么测了。
2.1 故障模型:我们到底在测什么?
芯片制造出来,不可能百分百完美。晶圆上的灰尘、光刻的偏差、金属线的断裂……这些物理缺陷千奇百怪。但我们做DFT的,不能针对每一种缺陷都去设计测试向量,那样工作量太大了。所以,我们需要故障模型——把物理缺陷抽象成逻辑层面的行为。
我个人习惯把故障模型分成三类:静态的、动态的、以及桥接的。咱们一个一个说。
2.1.1 Stuck-at 故障模型
这是最经典、最基础的模型。说白了,就是假设某条信号线永远卡死在逻辑0或者逻辑1上。比如一个与门的输出,本该是0和1来回跳变,结果它一直输出0,那就是 stuck-at 0。
我在项目中遇到过一件事:一个老工程师坚持只用 stuck-at 测试,说“够用了”。结果芯片在低温下频繁出错,后来发现是信号上升沿太慢,导致时序违规。你看,stuck-at 模型根本抓不住这种问题。
Stuck-at 模型的优点是简单、成熟,ATPG工具对它的支持最好。缺点是它太“静态”了,无法覆盖时序相关的缺陷。
2.1.2 Transition 故障模型
Transition 模型,就是用来补 stuck-at 的短板的。它关注的是信号从0变1(上升沿)或者从1变0(下降沿)时,能不能在规定时间内完成跳变。
你想想看,一个信号从0变1,如果因为驱动能力不足,花了两个时钟周期才完成,那中间采样的数据就是错的。这种缺陷,stuck-at 模型完全测不出来。
Transition 测试需要两个向量:第一个把信号初始化到某个值,第二个让它跳变并捕获结果。ATPG工具会生成这种“双向量”序列。
2.1.3 Bridging 故障模型
Bridging,就是桥接。两根不该连在一起的金属线,因为工艺缺陷短路了。这种故障在先进工艺下越来越常见,因为线间距越来越小。
桥接故障有两种:
- Wired-AND / Wired-OR: 两根线短路后,逻辑值取与或者或。比如一根线是1,另一根是0,短路后可能变成0(AND型)或者1(OR型)。
- Dominant 桥接: 其中一根线的驱动能力更强,短路后完全覆盖另一根线的值。
嗯,这里要注意:桥接故障的建模非常复杂,因为涉及物理位置和驱动强度。实际项目中,我们通常只对关键信号(比如时钟、复位、扫描链)做专门的桥接测试,不会全芯片铺开。
2.2 测试覆盖率:你的测试够不够?
覆盖率,就是衡量测试向量“测了多少”的指标。但这里有个坑——覆盖率不是越高越好,而是“够用就好”。
常见的覆盖率指标有:
| 覆盖率类型 | 含义 | 典型目标值 |
|---|---|---|
| Stuck-at 覆盖率 | 所有 stuck-at 故障中被检测到的比例 | ≥ 98% |
| Transition 覆盖率 | 所有 transition 故障中被检测到的比例 | ≥ 90% |
| 桥接覆盖率 | 根据版图提取的桥接故障中被检测到的比例 | ≥ 85% |
| 动态故障覆盖率 | 包含时序和延迟的故障检测比例 | ≥ 80% |
覆盖率怎么算?公式很简单:
故障覆盖率 = (检测到的故障数 / 总故障数) × 100%
但实际计算时,ATPG工具会做故障压缩——把等价的故障合并成一个。比如一个与非门的输出 stuck-at 0,和输入 stuck-at 1 在某些条件下是等价的。合并后,总故障数会减少,覆盖率看起来会高一些。嗯,这里要留个心眼。
2.3 ATPG概念:自动测试向量生成
ATPG,全称 Automatic Test Pattern Generation。说白了,就是让工具自动帮你生成测试向量,不用你手动写。
ATPG的核心逻辑是什么?我举个例子你就明白了。
假设我们要测一个与门输出 stuck-at 0 的故障。正常情况,输入是11时,输出应该是1。如果输出 stuck-at 0,那输入11时输出还是0。所以,ATPG要做三件事:
- 故障激活: 让故障点产生一个与正常值不同的信号。比如让与门输入为11,正常输出1,故障输出0,这样故障就被“激活”了。
- 故障传播: 把故障点的异常信号传递到芯片的某个输出引脚。比如把与门的输出连到一个观察点。
- 向量生成: 确定所有输入引脚的值,使得上述两个条件同时成立。
ATPG工具用的算法,最常见的是 D算法、PODEM、FAN 等。这些算法本质上都是在做“回溯”——从故障点出发,反向推导出输入应该是什么值。
ATPG生成的向量,通常有两种格式:
- Serial 向量: 通过扫描链串行输入,适合ATE测试机台。
- Parallel 向量: 通过芯片的并行输入引脚直接施加,适合功能测试。
实际项目中,我们主要用 serial 向量,因为扫描链可以访问到芯片内部所有节点,覆盖率更高。
2.4 知识体系总览
下面这张图,是我自己画的,把本章的核心逻辑串起来了。你一看就明白:
从这张图你可以看到,整个测试流程是闭环的:物理缺陷 → 故障模型 → ATPG → 覆盖率评估 → 如果不达标就回头改设计或者加向量。我在实际项目中,这个循环通常要跑3到5轮才能收敛。
2.5 小结
今天的内容,说白了就是三件事:
- 故障模型帮我们把物理缺陷翻译成逻辑问题。Stuck-at 是基础,Transition 补时序,Bridging 管短路。
- 测试覆盖率是衡量测试质量的尺子。别只看一个数,要综合看。
- ATPG 是自动生成测试向量的工具。它背后的算法很复杂,但用起来很简单——前提是你的扫描链是好的。
嗯,今天就到这里。下一章我们讲扫描链设计,那是DFT的“基础设施”,也是我最喜欢讲的部分。
公众号:蓝海资料掘金营,微信deep3321