4、扫描链设计入门:扫描触发器、扫描链插入、扫描使能控制、扫描链的时钟与复位设计,以及扫描链的验证方法
扫描链(Scan Chain)是结构化可测试性设计(DFT)的基石,其核心思想是将芯片内部难以直接观测的时序单元(触发器)通过额外的测试逻辑串联成移位寄存器链,从而在测试模式下获得对内部状态的直接控制与观测能力。本章将围绕扫描触发器结构、扫描链插入流程、扫描使能(Scan Enable)控制策略、时钟与复位设计要点以及验证方法展开,帮助读者建立从单元级到系统级的扫描链设计完整认知。
4.1 扫描触发器:可测试性设计的核心单元
核心原理:扫描触发器(Scan Flip-Flop, SFF)在普通功能触发器的基础上增加了一个测试数据输入端(Scan In, SI)和模式选择信号(Scan Enable, SE)。当SE为低电平时,触发器正常工作,数据从功能输入端D进入;当SE为高电平时,触发器进入移位模式,数据从SI端进入,多个触发器通过SI/SO首尾相连形成移位寄存器链。这种结构使得测试设备可以通过串行方式将测试向量移入所有触发器,并在捕获周期后通过串行方式将响应移出,从而实现对内部节点的可控性和可观测性。
常见扫描触发器结构对比:
| 类型 | 结构特点 | 面积开销 | 时序影响 | 适用场景 |
|---|---|---|---|---|
| MUX-D型 | D端前加2选1MUX | 约+15%~20% | D到Q路径增加MUX延迟 | 最常用,标准单元库支持好 |
| LSSD | 双锁存器结构,双时钟 | 约+30%~40% | 无MUX延迟,但时钟复杂 | 高性能/高可靠性设计 |
| 时钟边沿型 | 利用时钟边沿采样SI | 约+10%~15% | 对时钟质量要求高 | 低功耗设计 |
操作流程:在RTL设计完成后,使用DFT Compiler或Tessent等工具执行replace_scan_flip_flop命令,将普通D触发器替换为扫描触发器。替换过程中工具会自动处理异步复位/置位端,确保扫描模式下复位信号不会干扰移位操作。
4.2 扫描链插入:从RTL到可测试网表
核心原理:扫描链插入是将设计中所有扫描触发器按照一定策略串联成一条或多条链的过程。链的起点为芯片的扫描输入引脚(Scan In),终点为扫描输出引脚(Scan Out)。插入策略直接影响测试时间、布线拥塞和时序收敛。
扫描链插入的关键决策点:
- 链数量与长度平衡:链越长,测试时间越短(并行移位),但单条链故障诊断难度增大;通常每条链控制在500~2000个触发器。
- 物理邻近性:优先将物理位置相近的触发器串在一起,减少布线绕线,避免拥塞。
- 时钟域划分:不同时钟域的触发器不应混链,否则需要额外的时钟同步逻辑,且捕获时可能产生亚稳态。
- 复位类型分组:异步复位与同步复位触发器分开成链,便于复位信号管理。
操作流程:在综合阶段,工具根据约束文件(SDC)中的set_scan_configuration指令自动完成链插入。典型命令示例如下:
set_scan_configuration -chain_count 8 -clock_mixing mix_clocks
set_scan_configuration -style muxed_flip_flop
set_scan_path scan_in -view spec
insert_scan
案例拆解:某AI加速芯片设计包含约200万触发器,工作时钟为1GHz,分4个时钟域。初始方案采用单条扫描链,测试时间约需120ms,但布线拥塞严重,导致时序违例。经分析后改为8条链(每时钟域2条),链长从200万降至25万,测试时间缩短至15ms,布线拥塞降低60%,时序全部收敛。代价是增加了8组扫描输入/输出引脚,但通过引脚复用技术(与功能IO共享)解决了封装引脚不足的问题。
4.3 扫描使能控制:移位与捕获的精准切换
核心原理:扫描使能信号SE是扫描设计的“总开关”。在移位阶段(SE=1),所有扫描触发器通过SI串行移入测试向量;在捕获阶段(SE=0),触发器捕获功能逻辑的响应。SE信号的时序控制直接决定测试的可靠性。
SE信号设计要点:
- 全局SE vs 局部SE:全局SE简单但切换时所有触发器同时动作,容易产生地弹噪声;局部SE(按时钟域或模块分组)可降低同时翻转率,但需要额外的SE控制逻辑。
- SE与时钟的时序关系:SE必须在时钟沿之前稳定(建立时间),并在时钟沿之后保持(保持时间)。通常使用测试时钟(慢速时钟)进行移位,捕获时切换到功能时钟(高速时钟)。
- SE信号同步:SE信号从测试控制器(如TAP控制器)输出后,需经过同步器进入各时钟域,避免亚稳态。
SE切换时序要求:
| 阶段 | SE状态 | 时钟频率 | 数据来源 | 目的 |
|---|---|---|---|---|
| 移位(Shift) | 1 | 慢速(10~50MHz) | SI串行输入 | 装载测试向量/卸载响应 |
| 捕获(Capture) | 0 | 功能时钟(全速) | 组合逻辑输出 | 捕获功能响应 |
实战场景:在捕获阶段,如果SE信号在时钟沿附近发生跳变,可能导致部分触发器仍处于移位模式而另一部分已进入捕获模式,造成捕获数据错误。解决方法是使用SE时钟同步电路:在SE路径上插入延迟单元或使用专用SE寄存器,确保SE变化沿与捕获时钟沿错开至少一个时钟周期。
4.4 扫描链的时钟与复位设计
核心原理:扫描链的时钟与复位设计是保证测试可靠性的关键。时钟方面,需要确保移位和捕获阶段时钟可控、无毛刺;复位方面,需要避免复位信号在扫描过程中意外触发,同时要防止X态(未知态)在链中传播。
时钟设计要点:
- 时钟可控性:所有时钟必须能够被测试控制器独立控制(开启/关闭),以便在移位时使用慢速测试时钟,捕获时切换到功能时钟。
- 时钟无毛刺:时钟切换瞬间不能产生毛刺,否则可能导致触发器误触发。通常使用时钟门控单元(ICG)配合专用测试时钟选择器。
- 跨时钟域处理:如果扫描链跨越多个时钟域,必须在链中插入同步器或使用锁存器桥接,避免亚稳态。
复位设计要点:
- 扫描模式复位处理:在移位阶段,所有异步复位信号必须保持非激活状态(对于高电平复位为0,低电平复位为1),否则复位会随时清除扫描数据。
- 复位信号隔离:在扫描模式下,通过测试逻辑将功能复位信号强制为无效电平,防止内部复位源干扰。
- X态抑制:未复位触发器在扫描开始时可能处于X态,这些X态在移位过程中会沿链传播,导致测试响应无法判断。解决方法是在链首插入“链头清零”逻辑,或在测试开始时先执行一次全局复位。
案例拆解:某通信芯片在ATE测试时发现扫描链输出全为X态。经排查,原因是设计中存在一个内部看门狗复位信号,在测试模式下仍周期性触发复位,导致扫描数据被不断清零。解决方案是在测试模式(Test Mode)信号控制下,用AND门屏蔽看门狗复位输出,同时将复位信号同步到测试时钟域。修改后扫描链测试恢复正常,故障覆盖率从82%提升至97.5%。
scan_rst_n专用测试复位端口,该端口在功能模式下连接到VDD,在测试模式下由ATE独立控制。4.5 扫描链的验证方法
核心原理:扫描链验证是确保扫描链本身无故障、可正常工作的过程。验证分为两个层次:一是扫描链完整性验证(链本身能否正确移位),二是扫描链测试向量验证(链上数据能否正确捕获功能逻辑响应)。
验证流程:
| 验证步骤 | 方法 | 工具/手段 | 通过标准 |
|---|---|---|---|
| 1. 扫描链完整性检查 | 移入已知数据(如0101...),移出比对 | ATE测试 / 仿真 | 移出数据与预期完全一致 |
| 2. 扫描链时序验证 | STA检查Shift路径时序 | PrimeTime / Tempus | 无建立/保持违例 |
| 3. 扫描链ATPG向量生成 | 生成Shift和Capture向量 | Tessent / Modus | 故障覆盖率>95% |
| 4. 故障诊断 | 对失败向量进行逻辑诊断 | Diagnosis工具 | 定位到具体故障触发器 |
操作流程:在ATE测试中,首先执行扫描链完整性测试:将扫描使能SE置1,从Scan In移入一串已知数据(如0xAAAA),经过N个时钟周期后从Scan Out读出,与预期值比对。若数据一致,说明链本身无断路、短路故障。然后执行ATPG测试向量,捕获功能逻辑的故障。
案例拆解:某SoC芯片在ATE测试时,扫描链完整性测试失败,移出数据在第1024位出现错误。通过诊断工具分析,定位到第1024个触发器存在固定0故障(Stuck-at-0)。进一步物理分析发现,该触发器的SI引脚存在金属桥接缺陷。通过修改版图布线间距后,故障消除。此案例说明扫描链验证不仅能发现逻辑错误,还能辅助物理缺陷定位。