扫描链原理:扫描链的基本结构、扫描触发器、扫描模式与功能模式切换

大家好,我是你们的DFT讲师。今天我们来聊聊扫描链的核心原理。说实话,扫描链是DFT里最基础也最重要的技术之一。你想想看,芯片里成千上万个寄存器,怎么才能知道它们工作正不正常?扫描链就是干这个的。

扫描链的基本结构

扫描链说白了,就是把芯片里所有的触发器串成一串。就像一串珍珠项链,每个触发器就是一颗珍珠。测试时,测试数据从一端灌进去,经过每个触发器,最后从另一端流出来。

我刚开始接触DFT时,总觉得这玩意儿挺神奇的。为什么要把好好的功能模式改成测试模式?后来才明白,这是为了可控性和可观测性。

一个典型的扫描链包含以下几个部分:

  • 扫描输入(Scan In):测试数据进入芯片的端口
  • 扫描输出(Scan Out):测试数据离开芯片的端口
  • 扫描使能(Scan Enable):控制芯片在功能模式和扫描模式之间切换
  • 扫描时钟(Scan Clock):驱动扫描链工作的时钟信号
  • 扫描触发器(Scan Flip-Flop):经过改造的触发器,支持扫描模式

核心要点:扫描链的本质是把时序电路在测试时变成组合电路。这样我们就可以用ATPG工具生成测试向量,检测芯片内部的故障。

嗯,这里要注意,扫描链的长度会影响测试时间。链越长,测试向量需要的时间就越长。所以设计时要平衡测试覆盖率和测试时间。

扫描触发器

扫描触发器是扫描链的基本单元。普通的触发器只有数据输入(D)和时钟(CK),但扫描触发器多了一个扫描输入(SI)和扫描使能(SE)。

我记得有一次做项目,设计团队把扫描触发器的SE信号接反了。结果扫描链死活跑不通,查了两天才发现是这个问题。所以大家设计时一定要仔细检查SE的连接。

常见的扫描触发器结构有两种:

类型 结构特点 面积开销 性能影响
多路选择器型(MUX型) 在D输入端前加一个2选1MUX 较小 增加一个MUX延迟
锁存器型(LSSD型) 使用两个锁存器构成主从结构 较大 无MUX延迟,但面积大

实际项目中,MUX型用得最多。为什么?因为面积小,对芯片成本影响小。LSSD型虽然测试方便,但面积太大,现在很少用了。

个人经验:我建议在关键路径上尽量少用扫描触发器。因为MUX会引入额外延迟,可能影响芯片的最高工作频率。如果必须用,可以考虑用LSSD型或者优化时序。

扫描模式与功能模式切换

芯片有两种工作模式:功能模式和扫描模式。功能模式就是芯片正常工作时,扫描模式就是测试时。

切换靠的是Scan Enable信号。SE=0时,芯片工作在功能模式,触发器接收功能数据。SE=1时,芯片进入扫描模式,触发器接收扫描数据。

我曾经遇到过一个坑:SE信号在芯片内部有毛刺。功能模式下没问题,但一进入扫描模式,毛刺导致触发器误触发,扫描链数据全乱了。后来加了同步器和去毛刺电路才解决。

模式切换的时序要求:

  • 进入扫描模式:先拉高SE,再给时钟。SE要在时钟沿之前稳定。
  • 退出扫描模式:先停止时钟,再拉低SE。避免在切换过程中数据出错。
  • 扫描移位:SE保持高电平,时钟连续翻转,数据从SI移到SO。
  • 捕获模式:SE拉低,给一个或几个时钟脉冲,捕获功能路径上的数据。

警告:千万不要在SE切换时给时钟!否则触发器可能同时接收功能数据和扫描数据,导致数据冲突。我见过有人因为这个原因流片回来测试失败,损失惨重。

扫描测试的基本流程是这样的:

  1. 拉高SE,进入扫描模式
  2. 给N个时钟,把测试向量移入扫描链(N=扫描链长度)
  3. 拉低SE,进入捕获模式
  4. 给1个时钟,捕获功能路径上的响应
  5. 拉高SE,再次进入扫描模式
  6. 给N个时钟,把响应数据移出扫描链,同时移入下一个测试向量

说白了,就是「移入-捕获-移出」的循环。每次捕获后,把响应和预期值比较,就知道芯片有没有故障了。

扫描链结构图

下面我用SVG画了一张扫描链的结构图,方便大家理解:

扫描链基本结构 Scan In FF1 SI SE D Q FF2 SI SE D Q ... FFn SI SE D Q Scan Out SE CK D1 D2 Dn Q1 Q2 Qn 图例 扫描输入端口 扫描输出端口 扫描触发器 扫描使能(SE) 扫描时钟(CK)

这张图展示了扫描链的核心结构。数据从Scan In进入,经过每个触发器,最后从Scan Out出来。SE和CK控制着整个链的工作模式。

实际项目中的注意事项

做扫描链设计时,有几个坑我踩过,分享给大家:

  • 时钟域问题:不同时钟域的触发器不要串在一条扫描链上。否则跨时钟域的数据传输会出问题。我建议每个时钟域单独做扫描链。
  • 扫描链平衡:多条扫描链的长度尽量接近。这样测试时间由最长的链决定,链长均衡可以节省测试时间。
  • SE信号树:SE信号要驱动所有扫描触发器,负载很大。需要做缓冲树,保证SE信号到每个触发器的延迟一致。
  • 测试时钟:扫描测试时用的时钟频率通常比功能时钟低。因为扫描链上的组合逻辑路径可能很长,高频跑不动。

避坑指南:我曾经在一个项目中,把扫描链的SE信号和复位信号搞混了。结果一进扫描模式,芯片就复位了。查了两天才发现是SE和RST连在了一起。所以大家画原理图时一定要仔细检查信号连接。

好了,扫描链的基本原理就讲到这里。记住,扫描链的核心就是「串起来、移进去、抓一下、移出来」。掌握了这个思路,后面的ATPG和测试向量生成就水到渠成了。

可可精品资料库