4. 故障模型与测试原理:从缺陷到可测性的桥梁
在DFT(可测试性设计)工程中,我们面对的核心问题并非“芯片是否功能正确”,而是“如何用有限的测试向量,高效地判断一颗芯片是否存在制造缺陷”。制造过程中的工艺偏差、微粒污染、光刻对准误差等,都会在硅片上引入物理缺陷,而这些物理缺陷最终会表现为逻辑层面的故障。故障模型(Fault Model)正是连接物理缺陷与逻辑测试行为之间的抽象桥梁。本章将深入剖析最经典的三大故障模型——固定故障、跳变故障与桥接故障,并系统阐述测试生成的基本原理与故障覆盖率这一核心度量指标。理解这些内容,是成为一名合格DFT工程师的基石,也是后续学习扫描链设计、ATPG(自动测试向量生成)与BIST(内建自测试)的必备前提。
上图清晰地展示了从物理缺陷到故障覆盖率评估的完整链路。DFT工程师的核心工作,就是围绕这一链路,建立准确的故障模型,并利用EDA工具生成高效的测试向量,最终以故障覆盖率作为验收标准。下面我们将逐一拆解每个环节的细节。
4.1 固定故障模型:数字测试的基石
核心原理:固定故障(Stuck-At Fault, SAF)是最经典、最基础的逻辑故障模型。它假设电路中的某个信号节点(如逻辑门的输入或输出引脚)永久性地固定为逻辑高电平(Stuck-At-1, SA1)或逻辑低电平(Stuck-At-0, SA0)。这种模型抽象掉了具体的物理缺陷形态(如金属线断裂、晶体管短路),直接关注逻辑行为。在实际工程中,我们通常采用单固定故障(SSF)假设,即一次只考虑一个节点存在故障,这大大简化了测试生成的复杂度。尽管真实缺陷可能同时影响多个节点,但SSF模型已被证明能覆盖绝大多数实际缺陷。
判断方法与测试条件:要检测一个SAF故障,必须满足两个条件:故障敏化与故障传播。故障敏化是指将故障节点的逻辑值设置为与故障值相反的值(例如,检测SA0需要将该节点驱动为1),使得故障能够“激活”。故障传播是指将故障节点的错误逻辑值,通过一条或多条路径传递到芯片的某个主输出(Primary Output, PO)或扫描触发器(Scan Flip-Flop),从而被外部测试设备观测到。例如,对于一个2输入与门(AND),要检测其输出端SA0故障,需要将两个输入均置为1(敏化),此时正常输出为1,故障输出为0,该差异即可被传播至输出端。
| 故障类型 | 敏化条件 | 传播要求 | 典型缺陷 |
|---|---|---|---|
| SA0 (固定为0) | 节点需被驱动为逻辑1 | 错误值0需传播至可观测点 | 金属线断路、晶体管漏极开路 |
| SA1 (固定为1) | 节点需被驱动为逻辑0 | 错误值1需传播至可观测点 | 电源与信号线短路、栅氧化层击穿 |
常见误区:初学者常误以为固定故障只影响逻辑门,实际上它同样适用于寄存器、存储器地址译码器等所有数字逻辑。另一个误区是忽略“等效故障”的概念。例如,一个2输入与非门(NAND)的输入A的SA0故障,与输出端的SA1故障在逻辑行为上完全等价。ATPG工具会自动进行故障合并,减少需要处理的故障数量,从而提升效率。
4.2 跳变故障与桥接故障:覆盖动态与物理缺陷
跳变故障(Transition Fault, TF)核心原理:随着工艺节点缩小,时序相关的缺陷(如信号传播延迟过大)日益突出。跳变故障模型用于模拟这类延迟故障。它假设电路中的某个节点在时钟沿到来时,从0到1(慢上升)或从1到0(慢下降)的跳变无法在规定的时钟周期内完成。检测跳变故障需要两个连续的测试向量:第一个向量(初始化向量)将节点设置为初始状态,第二个向量(启动向量)在节点上产生一个跳变,并同时保证该跳变能传播到可观测点。如果故障存在,则观测到的值将不是期望的最终值。
桥接故障(Bridging Fault, BF)核心原理:桥接故障源于工艺缺陷导致的两条或多条信号线之间的意外短路。这种故障的行为比SAF复杂得多。根据短路点的逻辑关系,可分为逻辑桥接(如线与、线或)和反馈桥接(导致电路振荡或变成记忆元件)。桥接故障的检测高度依赖于版图信息,因为只有物理上相邻的线才可能发生桥接。在DFT流程中,通常使用版图寄生提取工具生成候选故障列表,再交由ATPG处理。
案例拆解:假设一个简单的组合电路,包含两个串联的反相器(INV1和INV2)。我们想检测INV2输出端的慢上升跳变故障。测试向量对为 (V1, V2)。V1需将INV2输出初始化为0(即INV2输入为1,INV1输入为0),V2需将INV2输入变为0(即INV1输入为1),从而在INV2输出端产生一个0→1的跳变。如果该跳变在时钟周期内未完成,则捕获到的值仍为0,故障被检测。此案例表明,跳变测试向量对必须连续施加,中间不能有间隔。
4.3 测试生成原理与故障覆盖率
测试生成(ATPG)基本原理:自动测试向量生成(ATPG)的核心算法包括D算法、PODEM和FAN等。这些算法的本质是路径敏化。以D算法为例,它引入D(正常为1,故障为0)和D'(正常为0,故障为1)符号,通过D-驱赶(将D值向输出端传播)、一致性操作(确保所有赋值不冲突)和蕴含(推导必要赋值)来系统地寻找测试向量。现代ATPG工具已高度优化,能在几秒内处理数百万门的电路,并支持压缩、合并等高级功能。
故障覆盖率(Fault Coverage, FC)定义与计算:故障覆盖率是衡量测试向量有效性的核心指标,定义为被检测到的故障数与故障总数之比。公式为:FC = (Detected Faults / Total Faults) × 100%。其中,Total Faults通常指故障列表中的全部故障,但会排除掉不可测试故障(如冗余逻辑导致的不可敏化故障)。因此,实际工程中更关注测试效率(Test Efficiency),即检测故障数除以(总故障数 - 不可测故障数)。
// 故障覆盖率计算示例(伪代码)
total_faults = 1000; // 故障列表总数
detected_faults = 950; // 测试向量检测到的故障数
untestable_faults = 30; // 冗余逻辑导致的不可测故障
fault_coverage = (detected_faults / total_faults) * 100; // 95%
test_efficiency = (detected_faults / (total_faults - untestable_faults)) * 100; // 97.9%
操作流程:在真实项目中,DFT工程师通常遵循以下流程:1) 使用EDA工具(如Synopsys TetraMAX、Mentor Tessent)读入门级网表;2) 定义故障模型(通常为SAF+TF);3) 工具自动生成故障列表;4) 运行ATPG生成测试向量;5) 进行故障模拟,计算覆盖率;6) 若覆盖率不达标(例如低于98%),则需分析未检测故障原因,可能通过增加测试点(Test Point)、修改设计逻辑或增加向量数量来改善。
| 指标 | 计算公式 | 目标值参考 | 影响因素 |
|---|---|---|---|
| 故障覆盖率 (FC) | 检测故障数 / 故障总数 | ≥98% (SAF) | 向量数量、可控制性/可观测性 |
| 测试效率 (TE) | 检测故障数 / (总故障数 - 不可测故障) | ≥99% | 冗余逻辑、设计约束 |
| 向量体积 | 测试向量文件大小 | 越小越好 | ATPG压缩算法、扫描链结构 |
常见误区与复盘:一个常见的误区是认为故障覆盖率越高,芯片质量就一定越好。实际上,覆盖率只是衡量测试向量对模型化故障的检测能力,并不能覆盖所有物理缺陷。例如,一个针对SAF的测试集可能对桥接故障的覆盖率很低。因此,现代DFT策略强调多模型混合测试。另一个误区是忽视X态(未知态)的影响。在故障模拟中,未初始化触发器的输出为X态,这会掩盖故障的传播,导致覆盖率虚高或偏低。解决方法是使用X态压缩(X-Compaction)技术或在设计中加入复位逻辑。
总结而言,故障模型是DFT的理论基石,测试生成是将模型转化为实际测试向量的工程手段,而故障覆盖率则是衡量这一切成效的标尺。深入理解这三者之间的内在联系,能够帮助DFT工程师在设计阶段就做出正确的可测性决策,从而在芯片流片前,就为其质量与可靠性打下坚实基础。