第二讲:测试基础理论——故障模型、覆盖率、ATPG与故障仿真

大家好,欢迎来到DFT实战课程的第二讲。

今天我们要聊的,是DFT最核心的理论基础。说实话,这部分内容看起来有点枯燥,但它是整个可测试性设计的根基。我见过不少工程师,上来就学各种DFT结构,结果遇到实际故障定位时一头雾水——说白了,就是基础没打牢。

2.1 故障模型:芯片为什么会坏?

芯片制造出来,不是每一颗都能正常工作。我们得先搞清楚,它到底可能怎么坏。

2.1.1 Stuck-at 故障模型

这是最经典的故障模型,也是我入行时学的第一个模型。

简单说,就是某个节点被“卡死”在逻辑0或逻辑1上。比如一根信号线本该在0和1之间跳变,结果它永远停在0了——这就是Stuck-at-0故障。

关键点:

  • Stuck-at-0 (SA0):节点永远为0
  • Stuck-at-1 (SA1):节点永远为1
  • 通常假设单故障模型——一次只考虑一个故障

我在项目中遇到过一件事:某次流片回来,芯片的SPI接口死活读不到数据。后来定位发现,是MISO引脚内部的一个缓冲器发生了SA0故障。嗯,这种问题用ATPG生成的测试向量,一抓一个准。

2.1.2 Transition 故障模型

Stuck-at模型只能检测静态故障。但芯片跑在高速时钟下,问题往往出在信号跳变上。

Transition故障,说白了就是信号从0变1(或从1变0)时,速度太慢,没能在时钟沿之前稳定下来。

我的经验:

Transition故障在先进工艺节点(比如7nm、5nm)中越来越常见。我建议在做ATPG时,一定要同时生成Stuck-at和Transition两种向量。别偷懒,否则流片回来有你哭的。

2.1.3 Bridging 故障模型

两根相邻的金属线,因为工艺缺陷短路了——这就是Bridging故障。

它比Stuck-at复杂得多。因为短路后,逻辑值取决于驱动强度、线长、甚至温度。你想想看,两根线打架,谁赢?

故障类型 物理本质 检测难度
Stuck-at 节点固定为0或1
Transition 信号跳变速度不足
Bridging 相邻线短路

2.2 测试覆盖率:你的测试够不够?

测试覆盖率,就是衡量你的测试向量能检测到多少故障的指标。

公式很简单:

测试覆盖率 = (检测到的故障数 / 总故障数) × 100%

但这里有个坑。我曾经遇到一个项目,报告显示Stuck-at覆盖率达到98%,结果流片回来还是出了问题。为什么?因为Transition覆盖率只有60%。

避坑指南:

我曾经以为只要Stuck-at覆盖率够高就万事大吉。后来发现,Transition故障才是高速芯片的隐形杀手。现在我的习惯是:Stuck-at覆盖率目标99%以上,Transition覆盖率目标95%以上。

2.3 ATPG:自动测试向量生成

ATPG,全称Automatic Test Pattern Generation。它的任务就是:给定一个故障,自动生成一组输入向量,让这个故障能被观察到。

ATPG的基本原理,我总结为三步:

  1. 故障激活:让故障点的逻辑值与正常值相反
  2. 故障传播:把故障点的差异传到某个输出引脚
  3. 敏化路径:确保传播路径上的其他信号不会干扰

举个例子,假设我们要检测一个与门输出端的SA0故障:

// 正常情况:与门输出 = A & B
// 故障情况:输出固定为0

// ATPG生成的向量:
// 设置 A=1, B=1
// 正常输出应为1,故障输出为0
// 差异被传播到输出端,故障被检测到

你可能会问:ATPG工具是怎么做到的?

其实核心算法就是D算法、PODEM、FAN这些。不过现在商业工具都封装好了,我们直接用就行。但理解原理很重要——至少你知道工具在干什么,出了问题能排查。

2.4 故障仿真:验证你的向量

ATPG生成了向量,但你怎么知道它真的能检测到故障?

答案就是故障仿真。

故障仿真的流程大致如下:

  1. 在网表中注入一个故障
  2. 用ATPG生成的向量进行仿真
  3. 观察输出是否与无故障时的输出不同
  4. 如果不同,说明这个故障被检测到了

我记得刚入行时,有一次跑故障仿真,跑了整整两天。后来发现是故障列表太大了——几百万个故障,一个个仿真当然慢。

优化技巧:

现在主流工具都支持故障压缩和并行仿真。比如,一次仿真可以同时处理多个故障,只要它们的传播路径不冲突。另外,我建议先做故障分级——把等效故障合并,能大幅减少仿真时间。

2.5 本章知识体系

下面这张图,是我自己总结的测试理论基础框架。你把它记牢了,后面学DFT结构会轻松很多。

测试理论基础体系 故障模型 Stuck-at Transition Bridging 测试覆盖率 Stuck-at覆盖率 Transition覆盖率 ATPG 故障激活 + 传播 故障仿真 向量验证 故障分级 反馈优化 核心流程:故障模型 → 覆盖率目标 → ATPG生成向量 → 故障仿真验证 💡 我的建议:先跑Stuck-at向量,再补Transition向量。Bridging故障用版图分析辅助,不要盲目追求100%覆盖率

2.6 小结

这一讲的内容,说白了就是四个字:故障、覆盖、生成、仿真。

  • 故障模型:告诉你芯片可能怎么坏
  • 测试覆盖率:告诉你测试够不够
  • ATPG:自动帮你生成测试向量
  • 故障仿真:验证向量到底管不管用

这些理论,是后面所有DFT结构的基础。你把它吃透了,后面学扫描链、BIST、边界扫描,都会觉得顺理成章。

一句话总结:

没有扎实的测试理论基础,DFT就是空中楼阁。我见过太多人上来就学工具操作,结果连故障覆盖率报告都看不懂——千万别走这条路。


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