4. 组合逻辑测试生成进阶:PODEM算法、FAN算法、SOCRATES算法、算法比较

在数字集成电路测试领域,自动测试向量生成(ATPG)是核心环节。针对组合逻辑电路,早期的D算法(D-Algorithm)虽然完备,但在处理大规模电路时存在回溯次数过多、效率低下的问题。本章深入探讨三种经典的组合逻辑测试生成算法:PODEM、FAN 和 SOCRATES,并对其性能与适用场景进行系统性比较。

4.1 PODEM算法:面向目标的回溯

PODEM(Path-Oriented Decision Making)算法由Goel于1981年提出,其核心思想是避免对内部线网进行盲目赋值,而是将决策点限定在原始输入(PI)上。通过为PI赋值来间接控制内部节点,从而大幅减少回溯空间。

核心机制: PODEM采用“面向目标”的隐式枚举策略。算法首先为故障激活和传播建立目标(Objective),然后通过反向蕴涵(Backward Implication)将目标转化为对PI的赋值请求,最后通过分支定界法在PI空间中进行搜索。

4.1.1 算法流程

  1. 初始化: 设置故障列表,所有PI为未赋值(X)。
  2. 建立目标: 从故障点出发,确定需要激活故障(D或D')以及将故障效应传播至PO所需的条件。
  3. 反向蕴涵: 将目标值反向推导至PI,生成一个PI赋值请求。
  4. 决策与赋值: 选择一个未赋值的PI,根据请求赋值(0或1)。若请求冲突,则尝试另一逻辑值。
  5. 前向蕴涵: 根据PI赋值,计算内部线网逻辑值,检查故障是否被激活并传播。
  6. 回溯与剪枝: 若当前赋值导致故障无法激活或传播(如D链消失),则回溯至上一个决策点,翻转PI赋值。若所有PI组合尝试失败,则判定故障不可测。
关键优势: PODEM的决策空间仅为PI数量(n个PI,最多2^n种组合),远小于D算法对所有内部节点决策的空间。对于中等规模电路,PODEM效率显著优于D算法。

4.1.2 PODEM算法流程图

PODEM算法核心流程 开始:设置故障 建立目标 (Objective) 反向蕴涵至PI 决策:PI赋值 前向蕴涵 & 检查 成功? 输出向量 回溯/剪枝

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支持同时处理多个目标,通过分析目标之间的相关性,选择最优的扇出点进行回溯。
注意: 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更复杂的唯一蕴涵情况,例如通过多级门推导出的间接唯一关系。
性能提升: 实验数据表明,SOCRATES在处理大型组合电路(如ISCAS-85基准电路)时,其回溯次数通常仅为FAN的10%~30%,测试生成时间也大幅缩短。

4.3.2 SOCRATES算法架构

SOCRATES算法架构:学习与蕴涵引擎 电路网表 静态学习引擎 (全局蕴涵分析) 学习知识库 主测试生成引擎 (目标建立 / 回溯 / 蕴涵) 动态学习引擎 (实时蕴涵推导与记录) 测试向量输出

4.4 算法比较与选型指南

三种算法在回溯策略、蕴涵能力和计算开销上各有侧重。下表从多个维度进行系统性比较,帮助工程师根据电路规模和测试需求选择合适的算法。

比较维度 PODEM FAN SOCRATES
提出时间 1981 1983 1988
回溯决策点 原始输入 (PI) 扇出点 扇出点 + 学习辅助
蕴涵机制 标准蕴涵 唯一蕴涵 静态/动态学习 + 改进唯一蕴涵
回溯次数 高 中 低
预处理开销 无 低 高(静态学习耗时)
内存占用 低 中 高(需存储学习库)
适用电路规模 小规模 (< 1K门) 中等规模 (1K~10K门) 大规模 (> 10K门)
故障覆盖率 高(完备) 高(完备) 高(完备)
典型应用场景 教学演示、简单模块 标准单元库测试 复杂SoC、ASIC测试

4.4.1 选型建议

  • 教学与原型验证: 推荐使用PODEM,其逻辑简单,易于实现和调试。
  • 中等规模工业设计: FAN算法是性价比最高的选择,在回溯效率和实现复杂度之间取得了良好平衡。
  • 大规模高性能设计: 优先选择SOCRATES或其衍生算法(如EST、SPIRIT)。虽然预处理时间长,但测试生成阶段的加速效果非常显著,尤其适合需要反复回归测试的场景。
工程实践提示: 现代商业ATPG工具(如Synopsys TetraMAX、Mentor Tessent)通常集成了多种算法,并支持自动切换。在工具使用中,可以通过设置“effort level”或“algorithm priority”来引导工具选择最适合当前电路的算法组合。

4.5 本章小结

本章详细介绍了组合逻辑测试生成的三种进阶算法:PODEM、FAN和SOCRATES。PODEM通过将决策点限定在PI,奠定了面向目标回溯的基础;FAN通过引入唯一蕴涵和扇出点回溯,大幅提升了回溯效率;SOCRATES则通过静态/动态学习机制,将测试生成性能推向了新的高度。理解这些算法的演进逻辑,对于掌握现代ATPG工具的原理和进行DFT设计优化具有重要意义。