扫描链原理:扫描链的基本结构、扫描触发器、扫描模式与功能模式切换
大家好,我是你们的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切换时给时钟!否则触发器可能同时接收功能数据和扫描数据,导致数据冲突。我见过有人因为这个原因流片回来测试失败,损失惨重。
扫描测试的基本流程是这样的:
- 拉高SE,进入扫描模式
- 给N个时钟,把测试向量移入扫描链(N=扫描链长度)
- 拉低SE,进入捕获模式
- 给1个时钟,捕获功能路径上的响应
- 拉高SE,再次进入扫描模式
- 给N个时钟,把响应数据移出扫描链,同时移入下一个测试向量
说白了,就是「移入-捕获-移出」的循环。每次捕获后,把响应和预期值比较,就知道芯片有没有故障了。
扫描链结构图
下面我用SVG画了一张扫描链的结构图,方便大家理解:
这张图展示了扫描链的核心结构。数据从Scan In进入,经过每个触发器,最后从Scan Out出来。SE和CK控制着整个链的工作模式。
实际项目中的注意事项
做扫描链设计时,有几个坑我踩过,分享给大家:
- 时钟域问题:不同时钟域的触发器不要串在一条扫描链上。否则跨时钟域的数据传输会出问题。我建议每个时钟域单独做扫描链。
- 扫描链平衡:多条扫描链的长度尽量接近。这样测试时间由最长的链决定,链长均衡可以节省测试时间。
- SE信号树:SE信号要驱动所有扫描触发器,负载很大。需要做缓冲树,保证SE信号到每个触发器的延迟一致。
- 测试时钟:扫描测试时用的时钟频率通常比功能时钟低。因为扫描链上的组合逻辑路径可能很长,高频跑不动。
避坑指南:我曾经在一个项目中,把扫描链的SE信号和复位信号搞混了。结果一进扫描模式,芯片就复位了。查了两天才发现是SE和RST连在了一起。所以大家画原理图时一定要仔细检查信号连接。
好了,扫描链的基本原理就讲到这里。记住,扫描链的核心就是「串起来、移进去、抓一下、移出来」。掌握了这个思路,后面的ATPG和测试向量生成就水到渠成了。
可可精品资料库