4. 组合逻辑测试生成进阶:PODEM算法、FAN算法、SOCRATES算法、算法比较
在数字集成电路测试领域,自动测试向量生成(ATPG)是核心环节。针对组合逻辑电路,早期的D算法(D-Algorithm)虽然完备,但在处理大规模电路时存在回溯次数过多、效率低下的问题。本章深入探讨三种经典的组合逻辑测试生成算法:PODEM、FAN 和 SOCRATES,并对其性能与适用场景进行系统性比较。
4.1 PODEM算法:面向目标的回溯
PODEM(Path-Oriented Decision Making)算法由Goel于1981年提出,其核心思想是避免对内部线网进行盲目赋值,而是将决策点限定在原始输入(PI)上。通过为PI赋值来间接控制内部节点,从而大幅减少回溯空间。
4.1.1 算法流程
- 初始化: 设置故障列表,所有PI为未赋值(X)。
- 建立目标: 从故障点出发,确定需要激活故障(D或D')以及将故障效应传播至PO所需的条件。
- 反向蕴涵: 将目标值反向推导至PI,生成一个PI赋值请求。
- 决策与赋值: 选择一个未赋值的PI,根据请求赋值(0或1)。若请求冲突,则尝试另一逻辑值。
- 前向蕴涵: 根据PI赋值,计算内部线网逻辑值,检查故障是否被激活并传播。
- 回溯与剪枝: 若当前赋值导致故障无法激活或传播(如D链消失),则回溯至上一个决策点,翻转PI赋值。若所有PI组合尝试失败,则判定故障不可测。
4.1.2 PODEM算法流程图
4.2 FAN算法:加速回溯与唯一蕴涵
FAN(Fanout-Oriented)算法由Fujiwara和Shimono于1983年提出,是对PODEM的重大改进。FAN算法引入了唯一蕴涵(Unique Implication)和扇出点回溯(Fanout Point Backtracking)两大关键技术,显著减少了回溯次数。
4.2.1 关键技术
- 唯一蕴涵: 在赋值过程中,如果某个线网的值被唯一确定(例如,与非门输入为0,则输出必为1),则立即进行前向或后向推导,无需等待决策。这能提前发现矛盾或简化问题。
- 扇出点回溯: FAN将回溯的决策点从PI转移到扇出点(Fanout Point)。扇出点是指一个信号驱动多个门输入的节点。由于扇出点往往是故障传播的瓶颈,在此处决策比在PI决策更高效。
- 多路回溯: FAN支持同时处理多个目标,通过分析目标之间的相关性,选择最优的扇出点进行回溯。
4.2.2 FAN算法与PODEM对比
| 特性 | PODEM | FAN |
|---|---|---|
| 决策点 | 原始输入 (PI) | 扇出点 (Fanout Point) |
| 蕴涵策略 | 标准前向/后向蕴涵 | 唯一蕴涵 + 标准蕴涵 |
| 目标处理 | 单目标顺序处理 | 多目标并行处理 |
| 回溯效率 | 中等 | 高(减少回溯次数约50%) |
| 算法复杂度 | O(2^n),n为PI数 | O(2^m),m为扇出点数(通常m < n) |
4.3 SOCRATES算法:学习与静态蕴涵
SOCRATES(Structure-Oriented Cost-Reduction Algorithm for Test Generation)由Schulz等人于1988年提出,是FAN算法的进一步深化。它引入了静态学习(Static Learning)和动态学习(Dynamic Learning)机制,通过预先计算和存储电路中的隐含关系,来加速测试生成过程。
4.3.1 核心创新
- 静态学习: 在测试生成开始前,对电路进行全局分析,推导出所有可能的固定蕴涵关系(例如,若a=1且b=1,则c=1)。这些关系被存储在一个“学习库”中,供后续测试生成直接调用。
- 动态学习: 在测试生成过程中,当遇到新的赋值组合时,实时推导并记录新的蕴涵关系。这些关系仅在当前搜索分支中有效,分支回溯时被丢弃。
- 改进的唯一蕴涵: SOCRATES利用学习到的知识,能够识别出比FAN更复杂的唯一蕴涵情况,例如通过多级门推导出的间接唯一关系。
4.3.2 SOCRATES算法架构
4.4 算法比较与选型指南
三种算法在回溯策略、蕴涵能力和计算开销上各有侧重。下表从多个维度进行系统性比较,帮助工程师根据电路规模和测试需求选择合适的算法。
| 比较维度 | PODEM | FAN | SOCRATES |
|---|---|---|---|
| 提出时间 | 1981 | 1983 | 1988 |
| 回溯决策点 | 原始输入 (PI) | 扇出点 | 扇出点 + 学习辅助 |
| 蕴涵机制 | 标准蕴涵 | 唯一蕴涵 | 静态/动态学习 + 改进唯一蕴涵 |
| 回溯次数 | 高 | 中 | 低 |
| 预处理开销 | 无 | 低 | 高(静态学习耗时) |
| 内存占用 | 低 | 中 | 高(需存储学习库) |
| 适用电路规模 | 小规模 (< 1K门) | 中等规模 (1K~10K门) | 大规模 (> 10K门) |
| 故障覆盖率 | 高(完备) | 高(完备) | 高(完备) |
| 典型应用场景 | 教学演示、简单模块 | 标准单元库测试 | 复杂SoC、ASIC测试 |
4.4.1 选型建议
- 教学与原型验证: 推荐使用PODEM,其逻辑简单,易于实现和调试。
- 中等规模工业设计: FAN算法是性价比最高的选择,在回溯效率和实现复杂度之间取得了良好平衡。
- 大规模高性能设计: 优先选择SOCRATES或其衍生算法(如EST、SPIRIT)。虽然预处理时间长,但测试生成阶段的加速效果非常显著,尤其适合需要反复回归测试的场景。
4.5 本章小结
本章详细介绍了组合逻辑测试生成的三种进阶算法:PODEM、FAN和SOCRATES。PODEM通过将决策点限定在PI,奠定了面向目标回溯的基础;FAN通过引入唯一蕴涵和扇出点回溯,大幅提升了回溯效率;SOCRATES则通过静态/动态学习机制,将测试生成性能推向了新的高度。理解这些算法的演进逻辑,对于掌握现代ATPG工具的原理和进行DFT设计优化具有重要意义。