DFT设计中Scan Chain插入与故障诊断工程案例 - 第2节

2.1 扫描链的基本结构

扫描链(Scan Chain)是结构化可测试性设计(DFT)中最核心的架构之一。其基本思想是将电路中的普通时序单元(触发器)替换为可扫描触发器(Scan Flip-Flop, SFF),并在测试模式下将这些 SFF 首尾相连,形成一条或多条移位寄存器链。通过这条链,测试工程师可以直接从外部输入测试向量(Test Pattern)到芯片内部节点,并将内部状态移位输出进行比对,从而大幅提升故障覆盖率和可观测性。

2.1.1 可扫描触发器(SFF)的内部结构

一个标准的可扫描触发器在普通 D 触发器的基础上增加了一个测试数据输入端口(Scan In, SI)和一个测试模式选择信号(Scan Enable, SE)。其核心是一个 2 选 1 多路选择器(MUX),由 SE 信号控制选择数据路径:

  • 正常模式(SE=0):MUX 选择功能数据输入 D,触发器执行正常的逻辑功能。
  • 测试模式(SE=1):MUX 选择扫描数据输入 SI,触发器成为移位寄存器的一级。
关键点:SFF 的 Q 端同时驱动组合逻辑和下一级 SFF 的 SI 端,确保功能路径和扫描路径互不干扰。
可扫描触发器(SFF)内部结构 MUX 2-to-1 D-FF (主从锁存) D SI SE CLK Q QB SE=0 时 D 路径有效;SE=1 时 SI 路径有效,形成移位寄存器

2.1.2 扫描链的物理连接

将多个 SFF 串联即构成扫描链。典型的扫描链包含以下端口:

端口名称 方向 功能描述
Scan In (SI) 输入 测试数据串行输入端口,连接到第一级 SFF 的 SI 引脚
Scan Out (SO) 输出 测试数据串行输出端口,来自最后一级 SFF 的 Q 端
Scan Enable (SE) 输入 全局测试模式控制信号,控制所有 SFF 在功能模式与移位模式间切换
Scan Clock (SCK) 输入 测试模式下使用的时钟,通常与功能时钟共用或独立
工程提示:在大型 SoC 中,通常将扫描链划分为多条长度相近的短链(如每条链 500~1000 级),以平衡测试时间和芯片引脚资源。链的长度直接影响测试向量的移位周期数。

2.2 工作模式:正常模式与测试模式

扫描链支持两种截然不同的工作模式,通过 SE 信号进行切换。理解这两种模式的切换机制是进行故障诊断的基础。

2.2.1 正常模式(Normal Mode)

  • SE 状态:置为 0(低电平)。
  • 数据路径:每个 SFF 的 MUX 选择功能数据输入 D,触发器作为普通寄存器使用,参与正常的逻辑运算。
  • 扫描链状态:链在电气上仍然存在,但 SI 路径被 MUX 阻断,链不参与任何数据移位。
  • 性能影响:由于 MUX 的插入,正常模式下数据路径上会引入约 1~2 个门延迟的额外开销,这是 DFT 的面积与性能代价。

2.2.2 测试模式(Test Mode)

  • SE 状态:置为 1(高电平)。
  • 数据路径:每个 SFF 的 MUX 选择扫描数据输入 SI,所有 SFF 首尾连接成一条移位寄存器链。
  • 操作阶段:测试模式进一步细分为三个子阶段:
    1. 移位(Shift):在 SCK 驱动下,测试向量从 SI 端口逐位移入所有 SFF,同时上一轮捕获的结果从 SO 端口逐位移出。
    2. 捕获(Capture):SE 切换回 0,施加一个或多个功能时钟脉冲,让组合逻辑根据当前 SFF 状态计算新的结果并锁存到 SFF 的 D 端。
    3. 输出移位(Shift Out):SE 再次置为 1,将捕获到的响应数据通过 SO 端口串行移出,与期望值比对。
扫描链工作模式切换与测试流程 正常模式 SE=0, D→Q 路径 测试模式 SE=1, SI→Q 路径 SE=1 SE=0 ① 移位(Shift) 向量移入 + 响应移出 ② 捕获(Capture) 功能时钟锁存结果 ③ 输出移位 串行输出比对 完整测试周期:Shift In (N个时钟) → Capture (1~2个时钟) → Shift Out (N个时钟) 其中 N 为扫描链长度(SFF 级数)

2.3 移位操作原理

移位操作是扫描链测试的核心执行环节。其本质是利用 SFF 构成的移位寄存器,在测试时钟驱动下完成数据的串行加载与卸载。

2.3.1 移位操作的时序

假设一条扫描链包含 N 级 SFF,移位操作需要 N 个时钟周期完成一次完整的向量加载或响应卸载。具体时序如下:

  1. 第 1 个时钟上升沿:SI 端口上的第一位测试数据(bit 0)被移入第一级 SFF(SFF_1),同时 SFF_1 原有的数据被推到 SFF_2。
  2. 第 2 个时钟上升沿:bit 0 进入 SFF_2,bit 1 进入 SFF_1,依此类推。
  3. 第 N 个时钟上升沿:bit 0 到达最后一级 SFF(SFF_N),bit N-1 进入 SFF_1。此时整个链被填满,移位加载完成。
  4. 捕获阶段:SE 置 0,施加功能时钟,组合逻辑计算结果被锁存到 SFF 的 D 端。
  5. 输出移位:SE 置 1,再次施加 N 个时钟,将捕获到的响应数据从 SO 端口逐位移出,同时可以移入下一组测试向量。
常见误区:移位操作期间,组合逻辑的输入随着 SFF 状态变化而不断跳变,这些中间状态不是有效的功能状态,因此移位期间必须屏蔽(Mask)输出响应,只捕获最后一个时钟沿后的稳定值。

2.3.2 移位操作的关键参数

参数 符号 计算公式 说明
链长度 N — 单条扫描链中 SFF 的级数
移位时钟数 T_shift N × 2(加载+卸载) 完成一次完整测试所需的移位时钟周期
测试时间 T_test (N × 2 + 1) × T_clk 包含 1 个捕获时钟,T_clk 为测试时钟周期
数据吞吐率 R 1 / (N × T_clk) 每秒钟可加载的测试向量数量

2.3.3 移位操作中的信号完整性

在实际工程中,移位操作面临以下信号完整性问题,需要 DFT 工程师在插入扫描链时特别关注:

  • 时钟偏斜(Clock Skew):移位操作要求所有 SFF 在同一时钟沿触发,时钟偏斜过大会导致数据保持时间违例,造成移位错误。
  • SE 信号同步:SE 信号必须在时钟沿附近保持稳定,通常建议使用同步器或门控时钟方案,避免 SE 在移位过程中毛刺导致模式误切换。
  • 功耗峰值:移位期间所有 SFF 同时翻转,瞬时功耗可能达到功能模式的数倍,需要评估 IR Drop 是否会导致逻辑错误。
移位操作数据流示意图(N=4 级链) SFF_1 [bit 3] SFF_2 [bit 2] SFF_3 [bit 1] SFF_4 [bit 0] SI SO CLK 数据流方向:SI → SFF_1 → SFF_2 → SFF_3 → SFF_4 → SO 每个时钟上升沿,数据向右移动一级;4 个时钟后完成一次完整加载 捕获阶段后,再经 4 个时钟将响应从 SO 移出

2.4 扫描链的故障诊断基础

当扫描链本身存在物理缺陷或设计错误时,整个测试流程将失效。常见的扫描链故障类型包括:

故障类型 故障表现 诊断方法
Stuck-at 故障 SO 端口始终输出固定值(0 或 1) 移入全 0/全 1 向量,观察输出是否翻转
断链故障 移位过程中数据在某级丢失 使用 Walking 1/0 向量定位断点位置
保持时间违例 高速移位时出现随机错误 降低测试时钟频率,对比低速与高速结果
SE 控制故障 无法切换模式,捕获阶段数据错误 检查 SE 路径的时序与逻辑连接
工程实践:在芯片流片后的首次测试中,建议先执行“扫描链完整性测试”(Scan Chain Integrity Test),使用简单的 Walking 1/0 向量确认每条扫描链的移位功能正常,再执行后续的 ATPG 向量测试。这是故障诊断的第一步,也是最重要的一步。