扫描链移位与捕获:扫描触发器怎样串链,shift 与 capture 两阶段各验证什么
可测性设计 DFT 入门 提出过一个核心矛盾:芯片内部有成千上万个触发器,封装引脚却只有几百个,测试机台无法直接触达内部节点。扫描链的答案是把这些触发器串成可串行读写的移位寄存器,让机台通过极少的测试引脚间接控制和观察每个内部记忆元件。可测性设计(DFT):扫描链、BIST、ATPG 与 JTAG 从方法学层面介绍过这套机制,本篇把镜头推到链路内部:扫描触发器长什么样、比特怎样在链里流动、shift(移位)与 capture(捕获)各验证什么、跨时钟域处为什么要插 lockup latch,以及慢速 stuck-at 与高速 at-speed 测试的节拍差异。板级引脚测试与 TAP 状态机由 JTAG 边界扫描 承接。
本文要回答的问题
- 普通 D 触发器怎样改造成扫描触发器,SI、SE、SO 三个测试端口各起什么作用?
- 海量扫描触发器怎样串成扫描链,链的长度与测试时间、布线开销之间怎么交换?
- shift 移位阶段与 capture 捕获阶段的时钟节拍有何不同,各自能证明什么、不能证明什么?
- stuck-at 固定故障测试与 at-speed 跳变故障测试在捕获脉冲安排上差在哪里?
- lockup latch 是什么元件,为什么跨时钟域扫描接口和沿相反的触发器之间必须插它?
- 扫描测试模式与芯片正常功能模式有哪些本质区别,能不能互相替代?
先用一张流程卡给出一条测试向量的完整生命周期:任何 ATPG(自动测试向量生成)向量落到机台上,都是「移入、捕获、移出、比较」四段循环,区别只在捕获段用什么节拍。
读这张卡抓住一条主线:移位段负责「搬运」比特,捕获段负责「产生」被测响应。机台看到的永远只是扫描输入与输出两根串行引脚上的比特流,内部节点的可控、可观察性全部由这条循环间接实现。
一、从普通 D 触发器到扫描触发器:mux-D 结构与三个测试端口
普通 D 触发器只有一个数据输入 D、一个时钟输入和一个输出 Q,每个时钟沿把 D 端的值采样进内部记忆。要让它可被串行访问,主流做法是在 D 端前面加一个二选一多路选择器,这就是 mux-D 型扫描触发器(scan DFF,又称扫描单元)。多路选择器的两个输入分别是原功能数据 D 和扫描输入 SI(scan-in),选择端是扫描使能 SE(scan-enable):SE 为低时触发器走正常功能路径,SE 为高时输入切到 SI,触发器在测试时钟驱动下采样前一级送来的扫描比特。触发器的输出 Q 同时充当扫描输出 SO(scan-out),接到下一级的 SI。
读这张图分两条路径:灰色是链的串行出入口,蓝色三个扫描单元首尾相接构成移位寄存器主干,SE 拉高时数据沿主干逐拍流动;紫色组合逻辑云只在 SE 拉低时接入,代表芯片本来的功能数据通路。单元内的 MUX 是扫描能力的全部代价来源——功能模式下它处于透传状态,但仍给 D 路径引入一级小延迟和少量面积,整芯片扫描结构的面积开销通常在几个百分点量级,随触发器密度与单元库而变。
另有一种基于锁存器的 LSSD(电平敏感扫描设计)风格,用成对主从锁存器构成扫描通路,对时序冒险更不敏感,但单元更复杂、时钟负担更重;主流边沿触发商用流程几乎清一色使用 mux-D,本篇以此为准。两种记忆元件的采样方式差异见 锁存器和触发器的区别。
| 对比维度 | 普通 D 触发器 | mux-D 扫描触发器 |
|---|---|---|
| 数据端口 | 只有 D | D 与 SI 两个输入,SE 选择 |
| 控制端口 | 时钟、异步置复位 | 增加 SE,时钟在测试时可切到测试时钟 |
| 功能模式行为 | 直接采样 D | SE=0,MUX 透传 D,行为与普通单元等价 |
| 内部节点可访问性 | 只能经功能逻辑间接影响 | 可经 SI 直接置值、经 SO 直接读出 |
| 面积与延迟 | 基准 | 多一个 MUX,面积略增、D 路径多一级小延迟 |
| 串接能力 | 无 | SO 接下一级 SI 即构成移位寄存器 |
扫描触发器不是手动例化的,而是综合后由 DFT 工具把网表里的普通触发器自动替换成扫描版本,再按物理位置和时钟域分组完成 stitch(缝合串接),流程见 扫描链插入流程。通用移位寄存器 与扫描链是同一种时序结构,区别只在用途:前者服务功能数据处理,后者服务制造测试。
二、扫描链怎样串起来:链长、链数与测试时间的交换
串接规则本身很简单:链首扫描单元的 SI 接芯片级扫描输入引脚,每个单元的 SO 接下一个单元的 SI,链尾单元的 SO 接扫描输出引脚(中间可能再经过压缩/解压缩结构);全链共用 SE,时钟则按单元所属时钟域分组连接。一条长度为 N 的链,装入一个 N 比特状态恰好需要 N 个移位脉冲,读出旧状态同样需要 N 拍。
这个 N 拍关系决定了测试时间的基本账:一条向量光移位就要约 2N 拍,ATPG 向量集动辄数万条,总拍数随链长线性膨胀,直接推高 ATE(自动测试设备)机台占用时间,而机台时间是量产测试成本的主要构成。把长链切成多条短链并行移位可以线性缩短墙钟时间,但每条并行链都要占用扫描引脚或片上压缩逻辑,引脚与面积构成反方向约束。工程上的平衡点是多链并行加向量压缩,链间长度还要尽量均衡,避免最长链拖住全部节拍,检查方法见 scan 链长度均衡。
| 编排方式 | 单向量移位拍数 | 引脚与面积代价 | 适用情形 |
|---|---|---|---|
| 单条长链 | 约 2N 拍,N 为全片触发器数 | 扫描引脚最少 | 触发器规模小、引脚极紧的设计 |
| 多条等长链并行 | 约 2N/K 拍,K 为链数 | 占用 K 组扫描通道与绕线 | 中大规模芯片的主流编排 |
| 多链加片上压缩 | 链外再经解压缩/压缩器 | 增加压缩逻辑面积,省外部引脚 | 千万门级、引脚预算受限的 SoC |
串接还有一条硬约束:同一条链里的单元原则上共享同一移位时钟结构,跨时钟域单元不能随意缝合,否则移位时的沿竞争会让比特在到达下一级前就被采样。这正是第五节 lockup latch 要解决的问题,也是缝合工具按时钟域分链的原因。
三、shift 移位阶段:慢节拍搬运,同时自查链路完好
进入 shift 阶段后,SE 保持高电平,所有扫描单元的 MUX 切向 SI,链在测试时钟驱动下退化为一条纯粹的移位寄存器。机台以慢速、受控的测试时钟(通常由机台直供或经片上时钟控制器分频得到,频率明显低于功能频率)逐拍送出激励比特:第一拍进入链首,第二拍被挤到第二级,N 拍之后整个激励状态在链内各就各位。捕获完成后再用同样方式把响应比特挤出链尾,机台在扫描输出口逐位采样、与预期响应比较。
为什么移位必须用慢时钟?移位路径是穿越全片的长串行路径,线上延迟与时钟偏差逐级累积;放慢节拍给建立时间留足裕量,让移位正确性只取决于链结构而不取决于芯片的速度等级。shift 阶段考的是「链通不通、比特能不能忠实搬运」,不是「芯片能跑多快」。链路自身完好性也在此阶段验证:正式跑 ATPG 向量前,先移入 0011 之类已知翻转图案再原样移出,比对不一致就说明链内存在固定故障、相邻位短接或缝合断开,不过此关,后续向量都不可信。
shift 还有一个易被忽视的副作用:每个移位脉冲都可能让链上很大比例的触发器同时翻转,翻转率远高于功能典型工况,瞬时功耗与电源压降可能超出功能峰值,严重时把比特在片上打翻。低功耗扫描通过抑制无关翻转、分片使能时钟把移位功耗压回安全区间,做法见 扫描移位功耗控制。
| 对比维度 | shift 移位阶段 | capture 捕获阶段 |
|---|---|---|
| SE 电平 | 高,输入切到 SI | 低,输入切回功能 D |
| 时钟来源与频率 | 机台慢节拍测试时钟,频率明显低于功能频率 | 慢速测试时钟或 PLL 功能节拍,取决于故障模型 |
| 持续拍数 | 与链长相等,N 个触发器移 N 拍 | 通常 1 到 2 个脉冲 |
| 验证对象 | 链路完整性、激励装载与响应搬出 | 组合逻辑对当前状态的真实响应 |
| 翻转活动 | 全链高翻转,功耗压力大 | 仅受测路径翻转,接近功能工况 |
| 失败含义 | 链断、固定故障或移位时序问题 | 被测逻辑节点存在制造缺陷 |
四、capture 捕获阶段:让功能逻辑算一拍,再把结果收进链里
激励就位后 SE 拉低,扫描单元重新接入功能 D 端,capture 阶段开始。链内触发器保持着刚移入的状态并驱动芯片原本的组合逻辑,逻辑云经过传播延迟算出响应送到下游 D 端;机台施加捕获脉冲,响应在时钟沿被打入扫描单元,内部组合逻辑的「答卷」就此存进可串行读出的寄存器阵列,随后 SE 再次拉高转入移出。诊断能力正来自这个分工:shift 解决「够不够得着内部节点」,capture 解决「逻辑算得对不对」。
捕获脉冲的安排随故障模型分两大流派,这也是 at-speed 与 stuck-at 测试的节拍分野。stuck-at(固定故障)测试假设缺陷表现为某节点被永久钉在逻辑 0 或 1,属于逻辑层面的静态故障模型,捕获时钟可以用慢速测试时钟,单个捕获脉冲即可,对机台定时精度要求低、向量生成成熟,检测的是短路、开路、栅极失效这类「电平不对」的制造缺陷。at-speed(速敏)测试针对跳变延迟故障:节点能翻转,但翻转得太慢,慢时钟下照样采样正确,只有按功能频率施加两个紧挨着的脉冲——第一个脉冲发起跳变、第二个脉冲在一个功能周期后采样——才能让延迟缺陷现出原形。两个脉冲的发起方式分 LOS(移位发起跳变)与 LOC(捕获发起跳变)两派,差异见 LOC LOS at-speed 对比;功能节拍脉冲不能由慢速机台直接供给,需要片上时钟控制器从 PLL 斩出受控脉冲,机制见 OCC 片上时钟控制器。
图中灰色是机台侧的输入输出物料,蓝色两段是移位搬运,橙色捕获脉冲是全篇唯一让功能逻辑参与工作的节拍,绿色是它产出的响应,紫色是机台收口判读。读图时注意捕获段宽度:stuck-at 只有一个宽松的慢脉冲,at-speed 则是两个间隔一个功能周期的高速脉冲,两段流程的其余骨架完全相同。
| 对比维度 | stuck-at 固定故障测试 | at-speed 跳变延迟测试 |
|---|---|---|
| 故障假设 | 节点永久固定为 0 或 1 | 节点翻转过慢,延迟超出周期 |
| 捕获时钟 | 慢速测试时钟即可 | 必须功能频率的 PLL 高速时钟 |
| 捕获脉冲 | 通常 1 个 | 2 个,间隔一个功能周期 |
| 主要缺陷类型 | 开路、短路、桥连等电平缺陷 | 阻性开路、工艺涨落导致的慢路径 |
| 机台与结构要求 | 定时宽松,成本较低 | 需 OCC 支持,定时精度要求高 |
| 覆盖关系 | 基础覆盖面,向量集成熟 | 补足延迟类缺陷,不替代 stuck-at |
两类测试在量产中是叠加关系:stuck-at 向量集负责大面积基础筛查,at-speed 向量集针对深亚微米工艺下比例上升的延迟缺陷追加覆盖。扫描链自身的建立保持时序收敛与模式切换检查口径,见 扫描链原理与时序。
五、lockup latch:跨时钟域接口处的半周期保险
第二、三节隐含了一个假设:移位时前一级发出的比特,总能赶在下一级采样沿之前稳定在 SI 上。同一时钟域内,平衡的时钟树让链上各单元的时钟沿几乎对齐,这个假设成立。但一条链若缝合了不同时钟域的单元——例如前级由 clk_A 驱动、后级由 clk_B 驱动——两个时钟在测试模式下的相位关系并不受控,clk_B 的采样沿可能比数据到达得还早,表现为移位 hold 违例,比特被整体错开一拍且无法靠降频解决(hold 检查与周期无关,这一点与功能时序中的规律一致)。沿相反的触发器相邻(上升沿单元接下降沿单元)时也有同类竞争。
工程解法是在两段扫描路径的交界插一个 lockup latch(锁定锁存器):通常用负电平敏感锁存器,时钟接发射侧时钟,低电平期间透明、高电平期间关断保持。发射触发器上升沿发出的数据在低电平半周内从容穿过锁存器,下一个上升沿到来时锁存器关断、把稳定数据保持在输出端,下游采样触发器整个后续周期看到的都是稳定值。等于在两个沿之间人为垫出半个周期的 hold 裕量,把跨域相位差吸收进保持窗口。

这棵分解树把跨域扫描问题拆成风险、对策、位置与代价四支。两个边界要强调:lockup latch 只挂扫描通路,功能模式下不参与数据传播,对功能时序无影响;它也不是时钟树平衡的替代品,同域链段仍靠 CTS 平衡沿差,锁存器只处理无法共树的域间与沿间接口,全链无差别插锁存器只会白付面积。
六、扫描模式与功能模式:同一颗芯片的两套工作世界
扫描测试借用功能触发器执行,但扫描模式不是功能模式的一档,两者在时钟结构、时序约束、功耗画像和结论口径上都是两套体系。时钟侧,功能模式由 PLL 按应用配置供钟,扫描模式移位用机台慢时钟、at-speed 捕获才经 OCC 短暂切回高速脉冲;约束侧,SE 是跨越全片、功能模式不存在的特殊信号,扫描路径在功能 SDC 里要按 false path 隔离,测试模式另立一套 SDC,漏配会让签核淹没在误报里,具体写法见 测试模式 SDC:shift/capture 约束与 false path。
结论侧的区别更需要清醒:扫描测试回答的是「这颗芯片有没有制造缺陷」,故障模型限定在 stuck-at、跳变延迟等可建模集合内;它不复现业务场景,不验证架构功能正确性,也不覆盖模拟、PLL 等未纳入扫描的电路。设计本身的逻辑错误要靠仿真与形式验证在流片前拦截,两者职责不可互换。
| 对比维度 | 功能模式 | 扫描测试模式 |
|---|---|---|
| 触发器输入 | D,接功能组合逻辑 | SE 选择 SI 或 D,两阶段切换 |
| 时钟来源 | PLL 按应用配置 | 移位用机台慢时钟,捕获按需切高速脉冲 |
| 时序约束 | 功能 SDC,按真实工作频率签核 | 独立测试 SDC,扫描路径单独处理 |
| 典型翻转率 | 随业务变化,平均值有限 | 移位期全链高翻转,功耗压力突出 |
| 验证目标 | 设计逻辑是否满足规格(流片前仿真) | 制造缺陷是否落在故障模型覆盖内(量产) |
| 覆盖空白 | 由验证方法学决定 | 模拟电路、未建模缺陷与高速接口需其他测试补位 |
这一篇在知识体系里的位置
本篇是 DFT 知识簇的机制深水区:上游由 可测性设计 DFT 入门 与 DFT 方法学总览 建立「为什么要扫描」的背景,记忆元件与移位寄存器基础在 锁存器和触发器的区别 和 常用时序逻辑部件。向下游走工程实现:链缝合接 扫描链插入流程 与 scan 链长度均衡,时序签核接 扫描链原理与时序 与 测试模式 SDC,高速节拍接 OCC 片上时钟控制器 和 LOC LOS 对比。板级引脚维度由 JTAG 边界扫描 承接,与本篇互为表里。
总结
扫描链移位与捕获的本质,是给每个 D 触发器加一个由 SE 控制的输入多路选择器,使其功能模式下照常工作、测试模式下首尾串成移位寄存器。shift 阶段以慢节拍时钟装入激励、搬出响应并自查链路完整性,代价是全链高翻转的功耗压力;capture 阶段切回功能 D 端,用一个慢速脉冲覆盖 stuck-at 固定故障,或用 OCC 斩出的两个功能节拍脉冲检测 at-speed 跳变延迟缺陷。跨时钟域与反相沿接口处,负电平敏感的 lockup latch 在扫描通路上垫出半周期保持裕量,吸收不受控的相位差且不影响功能时序。链长与测试时间线性相关,多链并行与向量压缩用于换取机台时间;扫描模式在时钟、约束与结论口径上都独立于功能模式——它筛的是制造缺陷,不替代流片前的功能验证。