4、数字逻辑测试基础:故障模型与测试生成算法
数字逻辑测试的核心目标,是判断一个制造完成的芯片是否在物理实现上存在缺陷,以及这些缺陷是否会导致其逻辑功能偏离设计规格。由于芯片内部节点不可直接物理探测,测试工程师必须依赖故障模型将物理缺陷抽象为逻辑层面的错误行为,并借助测试生成算法自动产生能够激活并传播该错误行为的测试向量。本章将深入剖析固定故障、跳变故障、桥接故障三大经典模型,并系统讲解D算法、PODEM、FAN三种自动测试向量生成(ATPG)算法的原理与工程适用场景。
4.1 核心故障模型:从物理缺陷到逻辑抽象
4.1.1 固定故障(Stuck-At Fault, SAF)
固定故障是最经典、使用最广泛的逻辑故障模型。它假设电路中某个信号线永久性地固定在逻辑0(Stuck-At-0, SA0)或逻辑1(Stuck-At-1, SA1)。该模型虽然简单,但能有效覆盖大部分制造缺陷,如金属线开路、晶体管短路、栅氧化层击穿等。在CMOS工艺中,一个节点的物理开路往往表现为该节点被上拉或下拉到固定电平,因此SAF模型具有较高的实用性。
判断方法:对于一条信号线n,若存在SA0故障,则无论输入如何变化,n始终为0;测试该故障需要生成一个向量,使n在正常电路中为1(即激活故障),并将该差异传播到至少一个主输出端。SA1故障同理,需要使正常值为0。
4.1.2 跳变故障(Transition Fault, TF)
跳变故障用于模拟时序相关的延迟缺陷。它假设某个节点在时钟沿到来时无法完成从0到1(慢上升)或从1到0(慢下降)的跳变,导致电路在规定的时钟周期内无法稳定到正确值。TF模型是延迟测试的基础,对于高速芯片(如CPU、GPU、5G基带芯片)尤为重要,因为工艺偏差可能导致关键路径的时序裕量不足。
测试方法:TF测试需要两个连续的测试向量(V1, V2)。V1用于将目标节点初始化到跳变的起始值,V2用于在下一个时钟沿触发跳变并捕获结果。例如,测试慢上升故障时,V1使节点为0,V2使节点为1,并在V2之后的下一个时钟沿通过扫描链或输出引脚捕获最终值。若捕获值仍为0,则说明存在慢上升故障。
| 故障类型 | 初始化向量V1 | 跳变向量V2 | 捕获条件 |
|---|---|---|---|
| 慢上升(Slow-to-Rise) | 目标节点=0 | 目标节点=1 | V2后捕获,期望值=1 |
| 慢下降(Slow-to-Fall) | 目标节点=1 | 目标节点=0 | V2后捕获,期望值=0 |
4.1.3 桥接故障(Bridging Fault, BF)
桥接故障指两条或多条信号线之间发生意外短路,常见于金属线间桥接或栅氧击穿导致的漏电。桥接故障的行为取决于短路电阻和驱动能力,可能表现为线与(Wired-AND)、线或(Wired-OR)或更复杂的反馈桥接。BF模型比SAF更复杂,因为故障效应可能同时影响多个节点,且测试向量需要同时激活多个节点的相反逻辑值。
判断方法:对于两条线A和B之间的桥接,若A驱动为1、B驱动为0,则短路点可能被拉低(线与)或拉高(线或)。测试时需要设置A=1、B=0(或相反),并观察输出是否偏离预期。在实际工程中,BF通常通过IDDQ测试(静态电流测试)辅助检测,因为桥接会导致静态电源电流显著增大。
4.2 测试生成算法:从D算法到FAN
4.2.1 D算法:完备但低效的奠基者
D算法由Roth于1966年提出,是第一个完备的组合电路ATPG算法。其核心思想是使用D立方体(D-Cube)表示故障效应:D表示正常值为1、故障值为0(1/0),D'表示正常值为0、故障值为1(0/1)。算法分为三个步骤:故障激活(设置故障点逻辑值)、D链传播(将D或D'从故障点传播到主输出)、一致性检查(确保所有赋值不冲突)。
操作流程:
- 选择目标故障,确定故障点的D立方体(如SA0故障需要正常值为1,即D)。
- 通过立方体交集运算,将D传播到门输出。例如,与门的一个输入为D,另一个输入为1时,输出为D。
- 重复传播直到D到达主输出。
- 执行反向蕴涵(Implication),为未赋值的输入指定逻辑值,并检查是否与已有赋值冲突。
- 若冲突,则回溯(Backtrack)到最近的决策点重新赋值。
D算法虽然完备,但在处理大型电路时,由于需要显式维护D链和进行大量立方体运算,计算复杂度呈指数级增长,实际工程中很少直接使用。
4.2.2 PODEM:面向目标的隐式枚举
PODEM(Path-Oriented Decision Making)由Goel于1981年提出,是对D算法的重大改进。PODEM不再显式传播D链,而是从主输入(PI)反向回溯,通过隐式枚举所有可能的PI赋值组合来寻找测试向量。其核心优势在于:只有当PI赋值确定后,才通过逻辑蕴涵计算内部节点值,从而避免了D算法中大量无效的立方体操作。
关键步骤:
- 目标建立:为故障点设置激活值(如SA0需要正常值为1),并选择一个未赋值的门输入作为回溯目标。
- 反向回溯:从目标门输入出发,通过深度优先搜索向PI方向回溯,为PI赋值。
- 逻辑蕴涵:每次PI赋值后,立即计算所有可达节点的逻辑值,并检查是否满足故障激活和传播条件。
- 冲突处理:若当前PI赋值导致矛盾,则回溯到最近的决策点,翻转PI值。
PODEM的剪枝效率远高于D算法,因为它只在PI空间内搜索,且每次赋值都进行局部蕴涵,能快速排除无效分支。对于中小规模电路(<10万门),PODEM的测试生成时间通常在秒级以内。
4.2.3 FAN:多路径传播与扇出点回溯
FAN(Fanout-Oriented Algorithm)由Fujiwara和Shimono于1983年提出,进一步提升了PODEM的效率。FAN的改进点包括:扇出点回溯(从扇出点而非门输入开始回溯)、唯一蕴涵(识别必须赋值的信号)、多路径传播(同时考虑D到多个输出的传播路径)。
核心机制:
| 特性 | D算法 | PODEM | FAN |
|---|---|---|---|
| 搜索空间 | 内部节点立方体 | 主输入PI | 主输入PI + 扇出点 |
| 传播方式 | 显式D链传播 | 隐式蕴涵 | 多路径同时传播 |
| 回溯粒度 | 门级 | PI级 | 扇出点级 |
| 剪枝效率 | 低 | 中 | 高 |
| 适用规模 | 教学/小规模 | 中规模 | 大规模工业设计 |
FAN通过识别头线(Head Line)(即从PI到该线只有一条路径)和扇出点,将回溯目标限定在更少的决策点上,从而大幅减少回溯次数。在工业级ATPG工具(如Synopsys TetraMAX、Cadence Modus)中,FAN及其改进版本(如SOCrates)是默认算法。
4.3 实战案例:某MCU芯片组合逻辑的ATPG流程
背景与约束:某款车规级MCU芯片,逻辑规模约200万门,采用40nm工艺。测试规格要求SAF故障覆盖率≥99%,TF故障覆盖率≥95%,且测试向量数量不超过5000条以控制ATE测试时间(目标<2秒/片)。
初始现象:使用PODEM算法生成的SAF测试集覆盖率为97.8%,但TF覆盖率仅88%,且向量数已达6200条,超出预算。
分析过程:工程师检查发现,TF覆盖率不足的原因是PODEM在生成跳变测试时,对时序路径的初始化向量V1处理效率低,导致大量向量被浪费在重复初始化上。同时,部分关键路径的慢上升故障未被激活,因为PODEM未考虑多路径传播。
实际操作:
- 切换到FAN算法,并启用“多路径传播”选项,使D可以同时通过多条路径传播到不同输出,减少向量数量。
- 对时序单元(扫描触发器)增加快速初始化模式,在V1阶段直接通过扫描链并行加载初始值,而非通过组合逻辑逐级设置。
- 使用动态向量压缩(Dynamic Compaction)合并兼容的测试向量,将重复的初始化序列合并。
结果对比:最终SAF覆盖率提升至99.3%,TF覆盖率提升至96.1%,向量数压缩至4300条,ATE测试时间降至1.6秒/片。良率分析显示,TF覆盖率的提升成功捕获了3颗因金属线延迟缺陷导致的失效芯片,避免了DPPM超标风险。
4.4 常见误区与总结复盘
误区一:认为SAF覆盖率100%就代表芯片测试充分。实际上,SAF模型无法覆盖延迟缺陷、桥接缺陷和参数漂移。对于高速芯片,必须补充TF测试和IDDQ测试。
误区二:忽略故障模型的选择对良率分析的影响。如果测试集只包含SAF向量,那么因桥接故障导致的失效芯片会被误判为“功能正常”,导致DPPM虚低,最终在客户应用中暴露问题。
误区三:盲目增加向量数量以提高覆盖率。向量数增加会直接拉长ATE测试时间,增加测试成本。应优先优化算法和DFT设计,而非简单堆叠向量。
总结:故障模型是连接物理缺陷与逻辑测试的桥梁,SAF、TF、BF分别从静态逻辑、时序延迟和互连短路三个维度覆盖缺陷空间。ATPG算法从D算法的理论完备到PODEM的工程可用,再到FAN的高效剪枝,体现了计算复杂度与覆盖率之间的平衡。在实际ASIC设计中,测试工程师需要根据芯片规模、工艺节点、性能指标和成本预算,综合选择故障模型和ATPG策略,并通过DFT协同设计实现覆盖率与测试时间的最优解。