故障模型基础:stuck-at、transition、bridging 故障模型
大家好,我是你们的讲师。今天我们来聊聊故障仿真里最核心的东西——故障模型。
说实话,我刚入行那会儿,觉得故障模型不就是把电路搞坏吗?有什么好学的。直到有一次,我负责一个芯片的ATE测试程序开发,结果流片回来,芯片在低温下死活跑不过测试。我排查了整整两周,最后发现是一个transition故障在作祟。从那以后,我再也不敢小看这些基础模型了。
今天,我带你把这三种最经典的故障模型彻底搞明白。
1. stuck-at 故障模型
stuck-at故障,说白了就是电路里某个节点卡死在逻辑0或逻辑1上。这是最古老、最经典的故障模型,也是我们做故障仿真的入门第一课。
为什么它这么重要?
因为简单。你想想看,一个门电路的输出,要么是0要么是1。如果它坏了,大概率就是卡死在某个电平上。stuck-at模型就是模拟这种失效。
我个人习惯把stuck-at故障分为两类:
- stuck-at-0 (SA0):节点永远输出0
- stuck-at-1 (SA1):节点永远输出1
举个例子,一个两输入与非门,正常情况应该是:
输入A=1, 输入B=1 → 输出=0
输入A=0, 输入B=1 → 输出=1
如果输出端发生了SA0故障,那不管输入是什么,输出永远是0。这就是stuck-at故障的本质。
关键点:stuck-at故障模型假设故障是永久性的,不会随时间变化。它不考虑时序,只考虑逻辑值。
我在项目中遇到过一件事:一个同事用stuck-at模型做测试覆盖率,覆盖率做到了99%,结果芯片流片回来还是有问题。为什么?因为stuck-at模型覆盖不了所有类型的故障。这就是为什么我们还需要其他模型。
2. transition 故障模型
transition故障,翻译过来就是“跳变故障”。它模拟的是信号从0变1或者从1变0时,速度太慢,导致在时钟沿到来时还没稳定。
嗯,这里要注意:transition故障是时序相关的。它不像stuck-at那样卡死不动,而是“反应迟钝”。
transition故障分两种:
- slow-to-rise (STR):从0变1太慢
- slow-to-fall (STF):从1变0太慢
为什么会这样?说白了就是晶体管的驱动能力变弱了。比如某个PMOS管老化,导致上拉电流不足,信号上升时间变长。
我建议你在做transition故障仿真时,一定要考虑两个向量:
- 初始化向量:把节点设置到初始状态
- 跳变向量:让节点发生跳变
举个例子:
// 检测节点X的slow-to-rise故障
// 第一步:把X设为0
// 第二步:施加一个让X从0变1的输入组合
// 第三步:在时钟沿采样,看X是否成功变到1
我的经验:transition故障的测试向量长度通常是stuck-at的2-3倍。因为你需要两个向量来检测一个故障。我曾经在一个项目中,为了覆盖所有transition故障,测试向量从原来的1000条增加到了3500条。
transition故障在深亚微米工艺下特别常见。我记得有一次,一个芯片在高温下工作正常,低温下却频繁出错。最后定位到是一条长互连线上的transition故障——低温下载流子迁移率变化,导致信号跳变速度变慢。
3. bridging 故障模型
bridging故障,就是“桥接故障”。它模拟的是两条信号线之间意外短路。
你想想看,芯片制造过程中,金属线之间可能因为颗粒、刻蚀残留等原因连在一起。bridging故障就是模拟这种情况。
bridging故障分两类:
- AND桥接:两条线短路后,逻辑值取与
- OR桥接:两条线短路后,逻辑值取或
为什么会有AND和OR的区别?这取决于驱动管的类型和工艺。CMOS工艺中,如果两条线都是强驱动,短路后通常表现为AND桥接;如果驱动能力不对称,则可能表现为OR桥接。
| 桥接类型 | 逻辑行为 | 典型场景 |
|---|---|---|
| AND桥接 | Vout = Va & Vb | 两条强驱动线短路 |
| OR桥接 | Vout = Va | Vb | 驱动能力不对称 |
| 反馈桥接 | 形成组合环路 | 输出反馈到输入 |
警告:bridging故障的仿真复杂度远高于stuck-at。因为你需要考虑所有可能的线对组合。一个1000条网线的设计,理论上就有近50万种桥接故障。实际工程中,我们通常只对物理相邻的线对进行桥接故障仿真。
我曾经遇到过一个案例:芯片在功能测试时一切正常,但在EMC测试中频繁复位。最后发现是两条相邻的地址线发生了桥接——它们物理上靠得太近,在电磁干扰下产生了耦合。这就是bridging故障的典型表现。
三种模型的对比与选择
好了,三种模型都讲完了。我们来做个对比:
| 模型 | 故障本质 | 是否时序相关 | 测试向量长度 | 覆盖率目标 |
|---|---|---|---|---|
| stuck-at | 节点卡死 | 否 | 短 | ≥95% |
| transition | 跳变太慢 | 是 | 中 | ≥90% |
| bridging | 线间短路 | 可能 | 长 | ≥85% |
我个人习惯的做法是:先用stuck-at模型做快速筛选,覆盖率做到95%以上;然后用transition模型覆盖时序相关的故障;最后用bridging模型做物理邻近故障的补充。这样三步走,基本能把大部分制造缺陷都覆盖到。
嗯,最后说一句:没有完美的故障模型。每种模型都有它的局限。关键是要理解它们的原理,然后根据你的设计特点和工艺节点,选择合适的模型组合。
核心总结:
- stuck-at:最简单,最基础,适合做快速筛选
- transition:考虑时序,适合深亚微米工艺
- bridging:考虑物理布局,适合高密度设计