2、扫描触发器:扫描触发器的结构、D型触发器的扫描改造、扫描使能信号
好,咱们今天聊聊扫描触发器。这是整个Scan Chain的基石,说白了,没有它,后面的一切都无从谈起。
我记得刚入行那会儿,带我的老工程师跟我说过一句话:「你搞懂了这个触发器怎么改造成扫描触发器,DFT就算入门一半了。」当时我还不太信,后来自己动手做了几个项目,才发现这话一点不夸张。
2.1 标准D型触发器回顾
先简单回顾一下标准D型触发器。它有三个基本端口:数据输入D、时钟CK、数据输出Q。时钟上升沿到来时,Q = D。这个大家都很熟悉,我就不多啰嗦了。
但在DFT场景下,这个结构有个致命问题——它只能捕获功能路径上的数据。测试模式下,我们想往里面灌测试向量,怎么办?
嗯,这就需要改造了。
2.2 D型触发器的扫描改造
改造的核心思路其实很简单:给触发器增加一个「第二输入通道」。这个通道专门用来传输测试数据。
具体怎么做呢?我画个简化的结构图给你看:
标准D触发器:
D --| |
|FF |-- Q
CK--|___|
扫描D触发器(muxed-D型):
D --| |
|MUX|--| |
SI --| | |FF |-- Q
SE --------|___|
CK ------------|
看到了吗?我们在D触发器的输入端前面加了一个2选1的多路选择器(MUX)。这个MUX的两个输入分别是:
- 功能数据输入D(正常工作用)
- 扫描数据输入SI(测试模式用)
选择控制端就是扫描使能信号SE(Scan Enable)。
我个人习惯把这种结构叫做「muxed-D扫描触发器」。它是最常见、最经典的扫描触发器结构,没有之一。
关键点: 当SE=0时,触发器工作在功能模式,Q跟随D。当SE=1时,触发器工作在扫描模式,Q跟随SI。
2.3 扫描使能信号(SE)
SE这个信号,你别看它只是一个控制位,它在整个Scan Chain里扮演的角色太重要了。
为什么这么说?你想想看:
- 在扫描移位阶段(shift phase),SE必须为1,让所有触发器串成一条链,数据从SI一级一级传下去。
- 在功能捕获阶段(capture phase),SE必须为0,让触发器捕获功能路径上的真实响应。
这两个阶段切换的时候,SE的时序要求非常苛刻。我曾经在一个项目里吃过亏——SE信号在时钟沿附近发生了毛刺,导致部分触发器误切换到了功能模式,整个测试向量全废了。
避坑指南: 我曾经因为SE的时钟树没有做平衡,导致链上不同位置的SE到达时间差了0.5ns。结果就是,链头已经进入捕获模式了,链尾还在移位。这种问题在ATE测试机上查起来非常痛苦。所以,SE的时钟树综合一定要和功能时钟同等对待,甚至更严格。
2.4 其他扫描触发器结构
除了muxed-D型,还有几种变体,我简单列一下:
| 结构类型 | 特点 | 适用场景 |
|---|---|---|
| muxed-D型 | 面积小,结构简单 | 最常用,90%以上的设计都用它 |
| LSSD(电平敏感扫描设计) | 使用两相非交叠时钟,无竞争风险 | 高性能、高可靠性设计 |
| 时钟扫描型 | 通过时钟选择实现扫描 | 特殊低功耗设计 |
LSSD结构我在IBM的老项目里见过一次。它用两个锁存器代替一个触发器,虽然面积大了一倍,但抗时钟毛刺的能力确实强。不过现在主流工艺下,muxed-D型已经足够用了。
2.5 实际设计中的注意事项
最后,我总结几个实际项目中容易踩的坑:
- SE信号不要和功能逻辑混用。我见过有人为了省面积,把SE接到某个组合逻辑的输出上。结果测试模式下逻辑出错,整个链都动不了。
- 扫描触发器的Q端负载要均匀。如果链上某个触发器的扇出特别大,它的延迟就会变大,影响整个链的时序。
- 注意异步复位/置位端。扫描模式下,这些异步控制端必须被强制无效,否则测试向量会被意外清除。
小技巧: 在做扫描插入时,我习惯先检查所有触发器的时钟端是否干净。如果某个触发器的时钟端接了门控时钟,一定要确保门控逻辑在测试模式下被旁路掉。否则,时钟一停,数据就卡住了。
好了,关于扫描触发器的结构、改造和使能信号,今天就聊到这儿。下一节我们讲扫描链的构建和连接,到时候你会看到这些触发器是怎么串成一条长龙的。