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 端,确保功能路径和扫描路径互不干扰。
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 首尾连接成一条移位寄存器链。
- 操作阶段:测试模式进一步细分为三个子阶段:
- 移位(Shift):在 SCK 驱动下,测试向量从 SI 端口逐位移入所有 SFF,同时上一轮捕获的结果从 SO 端口逐位移出。
- 捕获(Capture):SE 切换回 0,施加一个或多个功能时钟脉冲,让组合逻辑根据当前 SFF 状态计算新的结果并锁存到 SFF 的 D 端。
- 输出移位(Shift Out):SE 再次置为 1,将捕获到的响应数据通过 SO 端口串行移出,与期望值比对。
2.3 移位操作原理
移位操作是扫描链测试的核心执行环节。其本质是利用 SFF 构成的移位寄存器,在测试时钟驱动下完成数据的串行加载与卸载。
2.3.1 移位操作的时序
假设一条扫描链包含 N 级 SFF,移位操作需要 N 个时钟周期完成一次完整的向量加载或响应卸载。具体时序如下:
- 第 1 个时钟上升沿:SI 端口上的第一位测试数据(bit 0)被移入第一级 SFF(SFF_1),同时 SFF_1 原有的数据被推到 SFF_2。
- 第 2 个时钟上升沿:bit 0 进入 SFF_2,bit 1 进入 SFF_1,依此类推。
- 第 N 个时钟上升沿:bit 0 到达最后一级 SFF(SFF_N),bit N-1 进入 SFF_1。此时整个链被填满,移位加载完成。
- 捕获阶段:SE 置 0,施加功能时钟,组合逻辑计算结果被锁存到 SFF 的 D 端。
- 输出移位: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 是否会导致逻辑错误。
2.4 扫描链的故障诊断基础
当扫描链本身存在物理缺陷或设计错误时,整个测试流程将失效。常见的扫描链故障类型包括:
| 故障类型 | 故障表现 | 诊断方法 |
|---|---|---|
| Stuck-at 故障 | SO 端口始终输出固定值(0 或 1) | 移入全 0/全 1 向量,观察输出是否翻转 |
| 断链故障 | 移位过程中数据在某级丢失 | 使用 Walking 1/0 向量定位断点位置 |
| 保持时间违例 | 高速移位时出现随机错误 | 降低测试时钟频率,对比低速与高速结果 |
| SE 控制故障 | 无法切换模式,捕获阶段数据错误 | 检查 SE 路径的时序与逻辑连接 |
工程实践:在芯片流片后的首次测试中,建议先执行“扫描链完整性测试”(Scan Chain Integrity Test),使用简单的 Walking 1/0 向量确认每条扫描链的移位功能正常,再执行后续的 ATPG 向量测试。这是故障诊断的第一步,也是最重要的一步。