ATPG 介绍与故障分类全解析

从自动测试向量生成原理到故障模型与 Tessent ATPG 流程

在芯片生产测试中,ATPG(Automatic Test Pattern Generation,自动测试向量生成)是确保芯片质量的核心环节。它通过自动生成测试向量,在 ATE(自动测试设备)上检测芯片是否存在制造缺陷。本章将从 ATPG 基本概念出发,系统讲解故障模型、故障分类体系、测试覆盖率指标,以及 Tessent ATPG 的完整工作流程。


一、ATPG 基本概念

1.1 什么是 ATPG

ATPG(Automatic Test Pattern Generation)的全称是自动测试向量生成,是指自动化地产生测试向量(Test Pattern)的技术。Test Pattern,有时也称为 Test Vector,是一系列的 0 和 1 值,用于通过芯片的输入端加载到芯片中,检测芯片输出是否符合预期,从而判断是否存在生产制造故障。

在芯片生产测试中,ATE(Automatic Test Equipment,自动测试设备)是核心测试仪器。ATE 可以存储 Pattern 并将其通过 Primary Input 加载到芯片中,同时检测芯片输出,判断是否存在生产制造故障。

1.2 ATPG 的目标与过程

ATPG 的核心目标是产生能够获得一定 Test Coverage 的测试向量。这里的 Test Coverage 是指 Pattern 能够测试到的 Faults 所占的比例。

ATPG 包含两个主要步骤:

• 产生测试向量:

工具根据电路结构和故障模型,自动生成能够检测特定故障的测试向量。

• 执行 Fault Simulation:

对已生成的 Pattern 执行 Fault Simulation,验证哪些 Faults 可以被 Pattern 测试到。

💡 Tip: ATPG 的执行需要已经完成 Scan Insertion 的工作。换言之,ATPG 是 DFT 流程中 Scan Insertion 之后的下一步。

图1:ATPG 的基本流程 ------ 从电路到测试向量的产生与验证

1.3 主流 ATPG 工具

当前主流的 ATPG 工具与各家 EDA 厂商一一对应:

|----------------------|---------------------------------|---------------|
| EDA 厂商 | ATPG 工具 | 压缩方案 |
| Synopsys | TetraMax | Adaptive Scan |
| Siemens EDA (Mentor) | Tessent FastScan / TestKompress | EDT |
| Cadence | Encounter Test / Modus | OPMISR |

重要原则:ATPG 工具的选择必须与插入的压缩电路所用的 EDA 厂商保持一致。例如,如果使用 Tessent 插入了 EDT 压缩电路,则必须使用 Tessent ATPG 工具进行测试向量生成。


二、故障模型与故障分类

2.1 Defect 与 Fault 的区别

在芯片测试领域,需要明确区分两个核心概念:

• Defect(缺陷):

在芯片生产制造过程中导致的电路缺陷,是物理层面的实际问题,例如短路、断路、氧化等。

• Fault(故障):

芯片生产制造过程中潜在的一种故障点,是对 Defect 在逻辑层面的抽象建模。ATPG 工具实际操作的对象是 Fault,而非 Defect。

图2:Defect 与 Fault 的关系 ------ 从物理缺陷到逻辑故障建模

2.2 常用故障模型

Stuck-at Fault(固定故障)

Stuck-at Fault 是最基本且最常用的故障模型。它假设电路中的某个节点固定为逻辑 0(Stuck-at-0,SA0)或逻辑 1(Stuck-at-1,SA1)。这种故障模型简单有效,是 ATPG 的基础故障模型。

图3:Stuck-at Fault 示意图 ------ 节点固定为 0 或 1

Transition Fault(转换故障)

Transition Fault 用于检测时序相关的故障。它分为两种类型:

• Slow-to-Rise(STR):

节点从 0 到 1 的跳变过慢,无法在规定时间内完成。

• Slow-to-Fall(STF):

节点从 1 到 0 的跳变过慢,无法在规定时间内完成。

Transition Fault 是 At-Speed 测试的基础,需要配合 OCC(On-Chip Clock Controller)在实际工作频率下进行测试。

图4:Transition Fault 示意图 ------ Slow-to-Rise 与 Slow-to-Fall

图5:Transition Fault 的 Launch-Capture 测试原理

图6:Stuck-at Fault 与 Transition Fault 的对比

2.3 故障分类体系

ATPG 工具会将所有 Fault 按照一定的层次结构进行分类。故障分类的层次如下图所示,从顶层开始逐步细分:

图7:故障分类层次图

Untestable Faults(不可测故障)

Untestable Faults 是指无论如何都无法被测试到的故障,包括以下几种:

• Unused(UU):

电路中没有连接的点,无法控制也无法观察。

• Tied(TI):

电路中被固定连接到 VDD 或 GND 的点。例如 Tied-to-VDD 的点对应 SA0 故障就是不可测的,因为它本身就是固定为 1 的。

图8:Unused(UU)和 Tied(TI)故障示例

图9:Tied 故障的具体电路示例

• Blocked(BL):

因为路径被阻塞而无法测试的故障,通常是因为控制或观察点不可达。

• Redundant(RE):

冗余故障,即故障的存在不会改变电路的功能行为。这是设计中的冗余逻辑导致的。

图10:Blocked(BL)故障示例

图11:Redundant(RE)故障示例

Testable Faults(可测故障)

Testable Faults 是理论上可以被测试到的故障,进一步细分为以下几类:

• Detected(DT)------ 已检测到的故障:

能够被 Pattern 检测到的故障,包括两种发现方式:

• Det_simulation(DS):

当工具执行 Fault Simulation 时能够检测到的故障。

• Det_implication(DI):

当工具执行 Learning Analysis 时能够检测到的故障。

• Possibly Detected(PD)------ 可能检测到的故障:

进一步分为:

• Posdet_testable(PT):

潜在能够被检测到的故障。

• Posdet_untestable(PU):

在 Pattern 产生过程中能够证明是 ATPG_untestable 的,并且很难被测到的 Posdet 故障。

ATPG Untestable Faults(AU)

ATPG_untestable 故障是指找不到相关 Pattern 能够检测到该故障,但也无法证明它们是 Redundant Fault。大部分原因是 Constraint 或 Limitation 导致的,常见分类包括:

|-----------|----------------------------|-----------------------------------------------------|
| AU 类型 | 全称 | 原因说明 |
| AU.SEQ | Sequential ATPG Untestable | 由于 non-scan 导致需要多个 capture 时钟 cycle 才能传递到 observe 点 |
| AU.PC | Pin Constraint | 由于 pin constraint 导致 fault 不可控或无法传递到 observe 点 |
| AU.TC | Tie Cell | 由于 capture 阶段 cell 是 TIE0/TIE1/TIEX 导致 fault 无法测试 |
| AU.BB | Black Box | 因为有 black-box 导致 fault 无法检测 |

Undetected Faults(UD)

Undetected Faults 是指无法检测到的故障,且无法证明它们是 Untestable 或 ATPG_untestable。工具会优先将其归类为 UO/UC 故障,然后通过推测 Pattern 将其分为具体的故障分类:

• Uncontrollable(UC):

Undetected Fault,因为无法控制造成的。

• Unobserved(UO):

Undetected Fault,因为无法传递到观察点的。

• UD.EAB:

与 EDT 压缩相关的故障。

• UD.AAB:

与 ATPG 工具的 Abort 相关的故障。

💡 Tip: 在实际项目中,ATPG_untestable(AU)和 Undetected(UD)是需要重点分析的故障类型。通过分析这些故障的来源,可以有针对性地优化设计或调整约束,提高覆盖率。


三、测试覆盖率指标

3.1 Test Coverage vs Fault Coverage

在芯片测试中,有两个经常被提到但容易混淆的概念:

• Test Coverage(测试覆盖率):

能够被测试到的 Fault 占"应该被测试的 Fault"的比例。分子中排除了所有 Untestable Fault(UU、TI、BL、RE)。这是更有意义的指标。

• Fault Coverage(故障覆盖率):

能够被测试到的 Fault 占整体 Fault 的比例。分子中包含了所有故障。由于分子包含了 Untestable Fault,数值通常低于 Test Coverage。

图12:Test Coverage 与 Fault Coverage 的计算公式对比

图13:Test Coverage 与 Fault Coverage 的关系图

3.2 ATPG Effectiveness

ATPG Effectiveness 是衡量 ATPG 工具效率的重要指标,它反映的是工具创建和分类 Fault 的能力。高的 ATPG Effectiveness 意味着工具能够更准确地分类故障,减少不确定的 UD 故障数量。

图14:ATPG Effectiveness 指标说明

💡 Tip: 在实际项目中,通常以 Test Coverage 作为主要考核指标。一般要求 Test Coverage 达到 95% 以上,对于关键设计甚至要求 99% 以上。


四、Tessent ATPG 工作流程

4.1 ATPG 工具基本流程

Tessent ATPG 的完整工作流程如下图所示,从工具调用到 Pattern 输出,可以分为几个主要阶段:

图15:Tessent ATPG 完整工作流程图

步骤一:调用工具与加载 Design

使用"tessent -shell"命令调用工具,并通过"set_context pattern -scan"命令进入 ATPG 模式。然后加载 post-scan 的 gate level design 及相关的 DFT library:

• read_verilog ------ 加载门级网表

• read_cell_library ------ 加载单元库

步骤二:Setup Mode

读入 library 及 netlist 后,工具自动进入 Setup Mode。在这个阶段可以执行多个任务,包括:

• 读入 SDC 约束文件

• 配置 DFT 相关信息

• 创建 setup 相关的配置信息

步骤三:退出 Setup Mode

当设置完相关的 Setup 信息后,工具退出 Setup Mode,并触发一系列自动执行活动:

• 创建 Flat Model:

将层次化的设计展平为单层模型,便于故障分析。

• Learning Analysis:

工具自动执行深入的电路行为分析,学习电路的逻辑关系,这对故障分类至关重要。

• Design Rule Checking(DRC):

检查设计是否满足各种 DFT 规则要求,如果 DRC 不通过则无法继续。

步骤四:Analysis Mode

DRC 检查通过后,工具自动进入 Analysis Mode。在这个阶段可以设置 Pattern 相关的信息,包括:

• Pattern 类型配置(Basic Scan / At-Speed 等)

• Pattern 数量限制

• 测试约束设置

步骤五:创建 Pattern 与验证

• Create Pattern:

执行"create_patterns"命令,工具自动推 Pattern。可以修改相关的 constraint 来获得更高的 coverage。

• 验证 Pattern:

Pattern 创建完成后,在交付 Pattern 之前需要通过仿真的方式验证 Pattern 的正确性。

💡 Tip: DRC 是 ATPG 流程中的关键检查点。如果 DRC 报告有违例,必须先解决违例后才能继续下一步,否则生成的 Pattern 可能无效。

4.2 ATPG 输入与输出

Tessent ATPG 工具的输入输出如下图所示:

图16:ATPG 工具的输入与输出概览

ATPG 输入文件

图17:ATPG 输入文件清单

图18:ATPG 输入文件详细说明

ATPG 输出文件

ATPG 的输出主要包括三类文件:

• Test Patterns:

包含测试向量的文件,工具可以生成多种仿真器和 ASIC 厂商格式。

• ATPG Information Files:

包含 ATPG Session 相关信息的一组文件,例如 log 文件。

• Fault List:

以 ASCII 格式存储的内部故障信息文件,采用标准的 Tessent Fault Format。


五、本章总结

本章系统讲解了 ATPG 的基本概念、故障分类体系以及 Tessent ATPG 的完整工作流程。

① ATPG 的目标是自动生成测试向量,通过 Fault Simulation 验证哪些故障可以被检测到。

② Defect 是物理层面的电路缺陷,Fault 是逻辑层面的故障建模,ATPG 操作的对象是 Fault。

③ 故障分类从顶层分为 Untestable(UU、TI、BL、RE)和 Testable(DT、PD、AU、UD)两大类。

④ Test Coverage 排除了 Untestable Fault,是更有意义的考核指标;Fault Coverage 包含所有故障。

⑤ Tessent ATPG 流程从工具调用、加载 Design、Setup Mode、Learning Analysis、DRC、Analysis Mode 到 Pattern 创建与验证,形成完整的闭环。

故障分类完整对照表

|-------------------|--------|---------------------|-------------------|
| 类别 | 缩写 | 子类型 | 说明 |
| Untestable | UT | UU / TI / BL / RE | 无论如何都无法测试的故障 |
| Detected | DT | DS / DI | 能被 Pattern 检测到的故障 |
| Possibly Detected | PD | PT / PU | 可能被检测到的故障 |
| ATPG Untestable | AU | SEQ / PC / TC / BB | 因约束/限制无法测试,但非冗余 |
| Undetected | UD | UC / UO / EAB / AAB | 无法归类为上述类型的故障 |

Tessent ATPG 流程阶段总览表

|--------|---------------|-------------------------------------|--------------------------------------------|
| 阶段 | 工作模式 | 主要任务 | 关键命令 |
| 1 | Shell | 调用工具,进入 ATPG 模式 | tessent -shell / set_context pattern -scan |
| 2 | Setup Mode | 加载 Design,配置 DFT 信息 | read_verilog / read_cell_library |
| 3 | 自动执行 | 创建 Flat Model,Learning Analysis,DRC | 自动触发 |
| 4 | Analysis Mode | 配置 Pattern 相关信息 | 设置 Pattern 类型、约束等 |
| 5 | Pattern 创建 | 生成测试向量 | create_patterns |
| 6 | 验证 | 仿真验证 Pattern 正确性 | 仿真工具 |


相关推荐
临岸草惊风.16 天前
简单VASP计算INCAR设置(结构优化OPT、静态自洽SCF、能带BAND、态密度DOS)
linux·dft
景芯SoC芯片实战2 个月前
12nm工艺下,6T-Turbo Cell的Filler到底该怎么插?
数据库·数字ic·dft·soc后端
迷失的小猫3 个月前
基于DC的Scan插入流程全解析
dft·dc·scan
迷失的小猫4 个月前
Wrapper Cells 分析与插入全解析
wrapper·tessent
迷失的小猫4 个月前
Tessent MBIST Flow 实战全解析
dft·mbist
迷失的小猫4 个月前
Scan Test Point 插入全解析
dc·tessent·test point
DarrenHChen_EDA4 个月前
【Backend Flow工程实践 16】从 Scan Chain 到 Placement:测试结构为什么会影响后端布局?
eda·dft·apr·placement·scan chain·backend flow·可测性设计
科学创新前沿6 个月前
物理信息神经网络:从数据驱动到物理嵌入的科学计算新范式!
人工智能·深度学习·dft·pinn·流体力学·固体力学·断裂力学