测试基础理论:故障模型与测试覆盖率

各位同学,今天我们来聊聊测试理论中最核心的两个概念——故障模型和测试覆盖率。说实话,我刚入行那会儿,觉得这些理论挺枯燥的。直到有一次,一颗芯片在ATE上测了三天三夜,结果客户那边一上电就挂了……嗯,从那以后,我再也不敢轻视这些基础理论了。

一、什么是故障模型?

故障模型,说白了就是我们对芯片内部可能出现的物理缺陷的一种数学抽象。你想想看,芯片制造过程中,掺杂浓度偏差、光刻对准误差、金属线断裂……这些物理缺陷千奇百怪,我们不可能为每一种缺陷都设计测试向量。所以,我们需要一个模型——用有限的几种故障类型,去覆盖尽可能多的实际缺陷。

我个人习惯把故障模型分成三大类:

  • 结构故障模型:关注电路拓扑结构的变化
  • 时序故障模型:关注信号传播延迟的变化
  • 耦合故障模型:关注信号线之间的相互影响

下面我们逐个展开讲。

二、Stuck-at 故障模型

Stuck-at 模型是最经典、最基础的故障模型。它的思想很简单:假设某条信号线要么永远固定在逻辑0(Stuck-at-0,简称SA0),要么永远固定在逻辑1(Stuck-at-1,简称SA1)。

核心要点:一个节点同时存在SA0和SA1两种故障可能。对于n个节点的电路,理论上最多有2n个Stuck-at故障。

我在项目中遇到过这样一个案例:一颗MCU芯片的GPIO输出始终为低,怎么查都查不出原因。后来用扫描链抓了一下内部状态,发现是输出缓冲器的使能信号线发生了SA0故障。你看,一个简单的Stuck-at模型,就帮我们定位了问题。

Stuck-at模型的优点很明显:

  • 模型简单,计算复杂度低
  • 与工艺无关,通用性强
  • 测试生成算法成熟(D算法、PODEM等)

但它也有局限:

  • 无法覆盖时序相关的故障
  • 对某些桥接故障不敏感
  • 实际缺陷可能表现为间歇性故障,而非永久性固定

小提示:在实际项目中,我通常用Stuck-at覆盖率作为测试质量的"底线"指标。如果Stuck-at覆盖率达不到95%以上,我会建议重新审视测试方案。

三、Transition 故障模型

Transition故障模型,也叫跳变故障模型。它关注的是信号从0到1(上升沿)或从1到0(下降沿)的跳变过程是否正常。

为什么会需要这个模型?你想想看,随着工艺节点不断缩小,信号线的RC延迟越来越显著。一根金属线可能因为电阻过大,导致信号跳变速度变慢,甚至完全无法完成跳变。这就是Transition故障。

Transition故障分为两种:

  • Slow-to-Rise (STR):信号从0到1的跳变太慢,在时钟采样时仍未达到高电平
  • Slow-to-Fall (STF):信号从1到0的跳变太慢,在时钟采样时仍未达到低电平

我记得有一次,一颗28nm工艺的芯片在低温下工作正常,但高温下频繁出错。我们用Transition测试向量一跑,发现一条关键路径上的缓冲器在高温下驱动能力下降,导致STR故障。这就是Transition模型的价值——它能捕捉到Stuck-at模型看不到的时序问题。

注意:Transition测试需要两个连续的时钟周期——第一个周期施加初始值并启动跳变,第二个周期捕获结果。所以测试向量长度通常是Stuck-at的两倍。

四、Bridging 故障模型

Bridging故障模型,顾名思义,就是两条信号线之间发生了意外的短路。在深亚微米工艺中,金属线间距越来越小,Bridging故障的发生概率显著上升。

Bridging故障的建模比Stuck-at复杂得多:

  • AND桥接:两条线短路后,逻辑表现为线与(如果驱动能力相同)
  • OR桥接:两条线短路后,逻辑表现为线或
  • Dominant桥接:其中一条线的驱动能力远强于另一条,强驱动线"压倒"弱驱动线

我曾经处理过一个案例:一颗SoC芯片的I2C总线偶尔出现数据错误。用Stuck-at和Transition测试都查不出问题,最后用Bridging测试才发现——SDA线和SCL线之间有一个微小的金属桥接,只有在特定数据模式下才会触发。嗯,从那以后,我对Bridging模型就格外重视了。

实战建议:对于先进工艺(28nm以下),我建议在测试方案中至少包含以下Bridging测试:

  • 相邻金属线之间的桥接
  • 同层金属线的平行桥接
  • 不同层金属线的交叉桥接

五、其他常见故障模型

除了上面三种,还有几个故障模型值得了解:

故障模型 描述 适用场景
IDDQ故障 静态电流异常增大 检测CMOS电路中的短路缺陷
Open故障 信号线断路 检测金属线断裂、过孔失效
Delay故障 信号传播延迟超出预期 检测路径延迟缺陷
Coupling故障 信号线之间的串扰 检测高密度布线中的干扰

六、测试覆盖率概念

测试覆盖率,简单说就是——你的测试向量能检测到多少故障。但这里有个坑:覆盖率不是越高越好,而是要在成本和收益之间找到平衡点。

常见的覆盖率指标有:

  • Stuck-at覆盖率:检测到的Stuck-at故障数 / 总Stuck-at故障数
  • Transition覆盖率:检测到的Transition故障数 / 总Transition故障数
  • Bridging覆盖率:检测到的Bridging故障数 / 总Bridging故障数
  • 动态故障覆盖率:考虑时序因素的覆盖率

行业经验值

  • Stuck-at覆盖率:≥98%(消费类芯片),≥99.5%(车规芯片)
  • Transition覆盖率:≥90%(消费类芯片),≥95%(车规芯片)
  • Bridging覆盖率:≥85%(视工艺节点而定)

我曾经犯过一个错误:为了追求100%的Stuck-at覆盖率,增加了大量冗余测试向量,导致测试时间翻了三倍。结果呢?多出来的那2%覆盖率,一个实际缺陷都没抓到。所以我现在做测试方案时,会先设定一个合理的覆盖率目标,然后通过故障仿真来验证——而不是盲目追求数字。

七、覆盖率与测试质量的关系

这里我要强调一个观点:高覆盖率不等于高质量

为什么?因为覆盖率只反映了"我们测试了哪些故障",但没反映"我们没测试哪些故障"。举个例子:

  • 你的Stuck-at覆盖率是99%,但芯片中实际存在的缺陷是Bridging故障——那这99%的覆盖率就毫无意义
  • 你的Transition覆盖率是95%,但测试向量只覆盖了低频路径——那高频路径上的缺陷就漏掉了

所以,我建议的做法是:

  1. 根据芯片的应用场景,确定最相关的故障模型
  2. 为每个故障模型设定合理的覆盖率目标
  3. 用故障仿真验证覆盖率,而不是用公式计算
  4. 结合良率数据,持续优化测试方案

我的经验:在项目初期,我会先跑一遍Stuck-at测试,确保基础覆盖率达标。然后根据芯片的薄弱环节(比如高频路径、长走线、高密度区域),有针对性地增加Transition和Bridging测试。这样既保证了测试质量,又控制了测试成本。

八、小结

好了,今天的内容就到这里。总结一下:

  • 故障模型是测试理论的基石,Stuck-at、Transition、Bridging是三种最常用的模型
  • 测试覆盖率是衡量测试质量的指标,但不要盲目追求数字
  • 实际项目中,要根据芯片特点和应用场景,选择合适的故障模型和覆盖率目标

下一章,我们会聊聊测试向量生成的具体方法。到时候我会分享一些我在ATE上调试测试向量的实战经验,保证干货满满。

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