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 实际设计中的注意事项

最后,我总结几个实际项目中容易踩的坑:

  1. SE信号不要和功能逻辑混用。我见过有人为了省面积,把SE接到某个组合逻辑的输出上。结果测试模式下逻辑出错,整个链都动不了。
  2. 扫描触发器的Q端负载要均匀。如果链上某个触发器的扇出特别大,它的延迟就会变大,影响整个链的时序。
  3. 注意异步复位/置位端。扫描模式下,这些异步控制端必须被强制无效,否则测试向量会被意外清除。

小技巧: 在做扫描插入时,我习惯先检查所有触发器的时钟端是否干净。如果某个触发器的时钟端接了门控时钟,一定要确保门控逻辑在测试模式下被旁路掉。否则,时钟一停,数据就卡住了。

好了,关于扫描触发器的结构、改造和使能信号,今天就聊到这儿。下一节我们讲扫描链的构建和连接,到时候你会看到这些触发器是怎么串成一条长龙的。