第二章:测试基础理论——故障模型、测试覆盖率与ATPG概念

各位同学,大家好。今天我们聊聊测试理论中最核心的几个概念。说实话,我刚入行那会儿,觉得测试就是拿个向量跑一跑,能过就行。后来吃过亏才明白——不懂故障模型,你连芯片哪里可能坏都不知道,更别提怎么测了。

2.1 故障模型:我们到底在测什么?

芯片制造出来,不可能百分百完美。晶圆上的灰尘、光刻的偏差、金属线的断裂……这些物理缺陷千奇百怪。但我们做DFT的,不能针对每一种缺陷都去设计测试向量,那样工作量太大了。所以,我们需要故障模型——把物理缺陷抽象成逻辑层面的行为。

我个人习惯把故障模型分成三类:静态的、动态的、以及桥接的。咱们一个一个说。

2.1.1 Stuck-at 故障模型

这是最经典、最基础的模型。说白了,就是假设某条信号线永远卡死在逻辑0或者逻辑1上。比如一个与门的输出,本该是0和1来回跳变,结果它一直输出0,那就是 stuck-at 0。

核心要点: Stuck-at 模型只关心信号的稳态值,不关心跳变过程。

我在项目中遇到过一件事:一个老工程师坚持只用 stuck-at 测试,说“够用了”。结果芯片在低温下频繁出错,后来发现是信号上升沿太慢,导致时序违规。你看,stuck-at 模型根本抓不住这种问题。

Stuck-at 模型的优点是简单、成熟,ATPG工具对它的支持最好。缺点是它太“静态”了,无法覆盖时序相关的缺陷。

2.1.2 Transition 故障模型

Transition 模型,就是用来补 stuck-at 的短板的。它关注的是信号从0变1(上升沿)或者从1变0(下降沿)时,能不能在规定时间内完成跳变。

你想想看,一个信号从0变1,如果因为驱动能力不足,花了两个时钟周期才完成,那中间采样的数据就是错的。这种缺陷,stuck-at 模型完全测不出来。

我的经验: 在高速设计中(比如DDR接口),Transition 故障覆盖率必须单独考核。我曾经有一个项目,stuck-at 覆盖率做到了99%,但 transition 覆盖率只有70%,结果流片回来,高频模式下直接罢工。

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%
避坑指南: 我曾经有一个项目,stuck-at 覆盖率做到了99.5%,但芯片量产良率只有70%。后来查出来,是因为 transition 覆盖率只有60%。所以,不要只看一个指标,要综合评估。

覆盖率怎么算?公式很简单:

故障覆盖率 = (检测到的故障数 / 总故障数) × 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要做三件事:

  1. 故障激活: 让故障点产生一个与正常值不同的信号。比如让与门输入为11,正常输出1,故障输出0,这样故障就被“激活”了。
  2. 故障传播: 把故障点的异常信号传递到芯片的某个输出引脚。比如把与门的输出连到一个观察点。
  3. 向量生成: 确定所有输入引脚的值,使得上述两个条件同时成立。

ATPG工具用的算法,最常见的是 D算法、PODEM、FAN 等。这些算法本质上都是在做“回溯”——从故障点出发,反向推导出输入应该是什么值。

我个人习惯: 在跑ATPG之前,先检查扫描链是否完整。如果扫描链本身就有问题,ATPG生成的向量全是废的。我曾经有一次,扫描链上有一个反相器插反了,结果ATPG跑了三天,覆盖率一直是0%。后来发现是扫描链没通。

ATPG生成的向量,通常有两种格式:

  • Serial 向量: 通过扫描链串行输入,适合ATE测试机台。
  • Parallel 向量: 通过芯片的并行输入引脚直接施加,适合功能测试。

实际项目中,我们主要用 serial 向量,因为扫描链可以访问到芯片内部所有节点,覆盖率更高。

2.4 知识体系总览

下面这张图,是我自己画的,把本章的核心逻辑串起来了。你一看就明白:

测试基础理论核心逻辑 物理缺陷 (晶圆灰尘、金属桥接等) 故障模型抽象 Stuck-at | Transition | Bridging ATPG 自动生成 测试向量 测试覆盖率评估 覆盖率达标? 否 → 增加向量/修改DFT 是 → 输出测试向量

从这张图你可以看到,整个测试流程是闭环的:物理缺陷 → 故障模型 → ATPG → 覆盖率评估 → 如果不达标就回头改设计或者加向量。我在实际项目中,这个循环通常要跑3到5轮才能收敛。

2.5 小结

今天的内容,说白了就是三件事:

  • 故障模型帮我们把物理缺陷翻译成逻辑问题。Stuck-at 是基础,Transition 补时序,Bridging 管短路。
  • 测试覆盖率是衡量测试质量的尺子。别只看一个数,要综合看。
  • ATPG 是自动生成测试向量的工具。它背后的算法很复杂,但用起来很简单——前提是你的扫描链是好的。

嗯,今天就到这里。下一章我们讲扫描链设计,那是DFT的“基础设施”,也是我最喜欢讲的部分。


公众号:蓝海资料掘金营,微信deep3321