3. 扫描链(Scan Chain)原理
各位同学,今天我们来聊聊扫描链。说实话,扫描链是 DFT 里最基础、也最核心的技术之一。我刚开始接触 DFT 时,觉得这东西不就是把几个触发器串起来嘛,有什么难的?后来真正做项目才发现,里面的门道还真不少。咱们今天就把扫描链的里里外外掰扯清楚。
3.1 扫描触发器结构
先说说扫描触发器。普通触发器只有数据输入 D 和时钟 CK,输出 Q。但扫描触发器多了一个测试模式下的输入——扫描输入 SI,以及一个控制信号 SE(Scan Enable)。
你想想看,为什么要加这些东西?
说白了,就是为了在测试模式下,能把所有触发器串成一条链。功能模式下,每个触发器各司其职,处理自己的数据。测试模式下,我们通过 SI 把测试向量灌进去,再通过 Q 把结果扫出来。
我见过很多新手会问:那扫描触发器是不是要重新设计?其实不用。我们通常是在标准单元库里选带扫描功能的触发器,或者用普通的 D 触发器加一个 MUX 来实现。我个人习惯用后者,因为灵活性更高。
扫描触发器的结构其实很简单:
// 扫描触发器结构示意
module scan_flip_flop (
input D, // 功能数据输入
input SI, // 扫描数据输入
input SE, // 扫描使能
input CK, // 时钟
output Q // 输出
);
wire mux_out;
assign mux_out = SE ? SI : D; // 2选1 MUX
dff dff_inst (
.D(mux_out),
.CK(CK),
.Q(Q)
);
endmodule
嗯,这里要注意:SE 信号控制的是 MUX 的选择端。当 SE=1 时,走扫描路径;SE=0 时,走功能路径。这个逻辑很简单,但实际项目中,SE 信号的时序约束往往是个坑。
3.2 扫描链插入流程
扫描链插入,说白了就是把设计里所有的扫描触发器按一定顺序串起来。这个流程我做过很多次,每次都有新体会。
典型的流程是这样的:
- RTL 设计完成——先有功能代码
- 综合时插入扫描链——工具自动完成
- 生成测试协议文件——告诉 ATE 怎么测
- ATPG 生成测试向量——自动测试向量生成
- 仿真验证——确保扫描链能正常工作
我记得第一次做扫描链插入时,用的是 Synopsys 的 DFT Compiler。当时觉得工具很智能,跑个命令就完事了。后来发现,工具只是帮你做了机械的工作,真正的难点在于怎么规划扫描链。
举个例子,一个芯片有 10 万个触发器,你打算分成几条链?每条链多长?
这里有个经验值:每条扫描链的长度建议控制在 1000~5000 个触发器之间。太短了,测试时间会很长(因为要串行扫入扫出);太长了,ATE 的通道数不够用。
我曾经在一个项目中,把扫描链分成了 32 条,每条约 3000 个触发器。结果测试时间刚好满足客户要求。后来另一个项目,我偷懒只分了 8 条链,每条 12000 个触发器,结果测试时间长了 4 倍,被项目经理骂了一顿。
所以,扫描链的划分,其实是在测试时间和测试资源之间做权衡。
3.3 扫描模式与功能模式切换
这个知识点,我建议你重点理解。因为很多芯片在测试时没问题,一上电就跑飞了,往往就是模式切换没处理好。
扫描模式和功能模式,本质上是同一个芯片的两种工作状态。区别在于:
| 特性 | 功能模式 | 扫描模式 |
|---|---|---|
| SE 信号 | 0 | 1 |
| 数据路径 | D → Q | SI → Q |
| 时钟 | 正常时钟 | 通常用慢时钟 |
| 功耗 | 正常 | 较高(触发器同时翻转) |
切换过程其实就两步:
- 拉高 SE,进入扫描模式
- 通过 SI 灌入测试向量,然后拉低 SE,进入功能模式
- 在功能模式下运行一个时钟周期,捕获结果
- 再拉高 SE,把结果从 Q 扫出来
这里有个关键点:SE 信号必须在时钟沿之前稳定下来。否则会出现竞争冒险,导致数据错误。
另外,扫描模式下的时钟频率通常比功能模式低。为什么?因为扫描模式下,所有触发器都在同时翻转,功耗会急剧上升。我见过一个项目,在扫描模式下时钟频率设成了 100MHz,结果芯片直接过热保护了。后来降到 10MHz,一切正常。
3.4 知识体系总览
为了让你更直观地理解扫描链的整体结构,我画了一张图:
这张图把扫描链的三个核心知识点串在了一起。你仔细看看,其实它们之间是环环相扣的:理解了扫描触发器的结构,才能明白扫描链怎么插入;理解了插入流程,才能做好模式切换。
好了,关于扫描链的原理,今天就讲到这里。记住一句话:扫描链的本质,就是用面积换可测试性。多花一点硬件资源,换来的是芯片质量的保障。这笔账,怎么算都划算。
- 扫描触发器 = 普通触发器 + 2选1 MUX
- 扫描链长度建议 1000~5000 个触发器
- SE 信号必须做同步处理,避免毛刺
- 扫描模式时钟频率通常为功能频率的 1/10
可可精品资料库