2、扫描链基础:扫描链原理、扫描触发器、扫描输入输出、扫描使能

好,咱们正式开始聊扫描链。说实话,这是 DFT 里最核心、最基础的东西。你想想看,芯片里那么多寄存器,你怎么知道它们在生产出来之后都能正常工作?靠的就是扫描链。

2.1 扫描链原理:把时序电路变成组合逻辑

扫描链的原理,说白了就是一句话:把芯片里的普通寄存器,换成扫描触发器。这样在测试模式下,所有寄存器就串成了一根长长的链条。

为什么要这么干?因为测试组合逻辑容易啊。你给一组输入,看输出对不对就行。但时序电路有状态,你得让状态跑起来才能测。扫描链就是让这些寄存器在测试时变成「移位寄存器」,你可以把测试数据一个一个灌进去,然后捕获结果再移出来。

我刚开始接触 DFT 时,总觉得这玩意儿很玄乎。后来自己搭过一次扫描链,才明白其实就是「串行化」三个字。把并行的数据通路,在测试时变成串行的移位通路。

核心思想:正常模式下各干各的,测试模式下串成一串。

2.2 扫描触发器:普通寄存器的「变身」

扫描触发器,英文叫 Scan Flip-Flop,简称 SFF。它比普通寄存器多了一个输入端口和一个控制端口。

具体来说,一个扫描触发器有:

  • 数据输入(D):正常模式下的输入
  • 扫描输入(SI):测试模式下的输入
  • 扫描使能(SE):控制选择哪个输入
  • 时钟(CK):时钟信号
  • 输出(Q):输出信号

嗯,这里要注意:扫描使能 SE 是关键。SE=0 时,走正常数据通路;SE=1 时,走扫描通路。

我在项目中遇到过一种情况:某个库里的扫描触发器,SE 信号是异步的。结果仿真时出现了毛刺,导致扫描链移位出错。后来我建议改用同步 SE 的触发器,问题就解决了。所以选库的时候,一定要看清楚 SE 是同步还是异步。

个人经验:我一般会优先选择带「双沿触发」能力的扫描触发器。虽然面积大一点,但测试覆盖率能提高不少。

2.3 扫描输入输出:数据怎么进去,怎么出来

扫描输入(Scan In)和扫描输出(Scan Out)是芯片的测试引脚。你想想看,芯片那么多寄存器,不可能每个都单独拉一根测试线出来。所以就用扫描输入和扫描输出这两个引脚,搞定所有寄存器的测试。

具体流程是这样的:

  1. 把 SE 拉高,进入测试模式
  2. 在扫描输入引脚上,一个时钟周期送一个 bit 数据
  3. 数据沿着扫描链,一级一级往下传
  4. 传完所有寄存器后,把 SE 拉低,进入捕获模式
  5. 一个时钟周期后,组合逻辑的结果被捕获到寄存器里
  6. 再把 SE 拉高,把捕获到的结果从扫描输出引脚移出来

说白了就是「灌进去 → 跑一下 → 吐出来」。你对比一下输入和输出,就知道芯片有没有问题。

我记得有一次,芯片流片回来,扫描链死活跑不通。查了半天,发现是扫描输出引脚被复用了,测试时没切换过来。从那以后,我每次做扫描链都会检查引脚复用逻辑。

避坑指南:我曾经因为扫描链的输入输出引脚没有做 ESD 保护,导致测试时芯片被静电打坏。后来我学乖了,扫描引脚一定要加 ESD 保护电路。

2.4 扫描使能:控制模式的开关

扫描使能(Scan Enable,SE)是整个扫描链的「总开关」。它决定了芯片是在正常工作,还是在做测试。

SE 信号的设计有几个要点:

  • 全局性:SE 必须能同时控制所有扫描触发器
  • 快速切换:从移位模式切换到捕获模式,SE 必须在半个时钟周期内完成
  • 无毛刺:SE 切换时不能有毛刺,否则会导致数据错误

你可能会问:为什么 SE 切换要这么快?因为移位模式结束后,下一个时钟沿就要捕获数据。如果 SE 切换慢了,捕获到的数据就不对。

我个人的习惯是,SE 信号会单独走一根全局布线,不跟其他信号混在一起。这样能保证 SE 的延迟最小,切换最快。

另外,SE 信号在测试模式下要能通过扫描链本身来测试。也就是说,SE 本身也要能被扫描到。这个细节很多人会忽略,但做 DFT 的人必须考虑到。

关键点:SE 信号的设计质量,直接决定了扫描链能不能正常工作。我建议在综合时就把 SE 的时序约束设得紧一点,别留太多余量。

2.5 扫描链的完整工作流程

最后,咱们把整个流程串起来看一遍:

步骤 SE 状态 操作
1. 移位加载 1 把测试数据从 Scan In 移入所有寄存器
2. 捕获 0 一个时钟周期,组合逻辑结果被捕获
3. 移位卸载 1 把捕获结果从 Scan Out 移出,同时加载下一组数据

你看,就这么三步。但每一步都有坑。比如移位加载时,数据能不能在一个时钟周期内传到下一级?捕获时,组合逻辑的路径能不能满足时序?卸载时,输出数据能不能被正确采样?

嗯,这些细节咱们后面会慢慢展开。今天先把扫描链的骨架搭起来,后面再往里填肉。

一句话总结:扫描链就是把芯片里的寄存器串起来,让测试变得可控、可观测。你掌握了这个思路,后面学什么扫描压缩、EDT 都不难。