1. 扫描链技术总述及原因
在芯片设计领域,可测性设计(DFT)是确保芯片制造后能够被有效测试的关键技术。其中,扫描链技术是最基础、最核心的DFT技术之一。它的本质是在测试模式下将时序电路转化为组合电路,通过引入控制电路,将时序电路中的触发器连接成多个"移位寄存器"。
1.1 为什么需要扫描链技术
几乎所有数字系统都是时序逻辑电路,而对时序电路生成测试向量在学术界是一个极其困难的问题。即使是只有几万逻辑门的时序电路,采用最好的自动测试向量生成(ATPG)算法,运行几周甚至上月的时间,故障覆盖率也达不到生产测试的要求。
相比之下,组合逻辑电路的测试向量生成算法已经比较成熟,可以在较短时间内(比如几个小时)获得较高的故障覆盖率,单固定型故障覆盖率通常会大于99%。因此,扫描链技术的核心思路就是:通过特殊设计,将时序电路转化为组合电路进行测试。
提示:在实际工程中,全扫描设计(所有触发器都替换为扫描触发器)已经成为主流方案。虽然会增加约10-15%的面积开销,但可以显著提高测试覆盖率。
2. 扫描链的基本组成单元及其结构
2.1 扫描触发器
扫描链的基本组成单元是扫描触发器(scan flip-flop)。它与普通触发器的关键区别在于内部集成了一个多路选择器(MUX)。
扫描触发器的主要信号包括:
- SE(Scan Enable):多路选择器使能信号
- D(functional input):功能输入端
- SI(Scan Input):测试输入端
- CK(Clock):时钟信号
- Q:功能输出端
- SO(Scan Output):测试输出端
当SE=1时,触发器选择SI作为输入;当SE=0时,选择D作为输入。这种设计使得触发器可以在功能模式和测试模式之间切换。
2.2 扫描链的两种设计方式
扫描链设计分为两种主要类型:
-
全扫描设计(full scan design):
- 设计中所有的触发器都被替换为扫描触发器
- 这些扫描触发器以链式结构相互连接,形成扫描链
- 测试覆盖率最高,但会增加面积和功耗开销
-
部分扫描设计(partial scan design):
- 只将部分触发器替换为扫描触发器
- 可以减少面积和功耗开销,但测试难度增加
- 通常用于对面积和功耗特别敏感的场合
实操心得:在现代芯片设计中,全扫描设计已经成为主流。随着工艺节点的进步,面积开销的相对影响越来越小,而测试覆盖率的要求越来越高。
3. 扫描链的工作机制
扫描链的工作过程分为三个阶段:扫描输入、捕获和扫描输出。这三个阶段通过SE信号的控制来实现模式切换。
3.1 扫描输入阶段(Scan In)
在这个阶段:
- SE信号保持高电平(有效)
- 扫描触发器仅接收SI端的信号,组合逻辑被旁路
- 测试图案从扫描输入端口串行输入
- 每个时钟有效边沿,图案移位至下一级触发器
- 经过n-1个时钟周期后,测试向量到达各触发器的SI端
注意事项:扫描输入阶段需要确保时钟信号干净稳定。任何时钟抖动都可能导致测试向量加载错误,影响后续测试结果。
3.2 捕获阶段(Capture)
捕获阶段分为两种模式:
3.2.1 低速捕获(针对固定型故障)
- SE信号拉低(失效)
- 触发器恢复正常的功能时序模式工作
- 组合逻辑处理测试图案并产生响应
- 响应被下一级触发器捕获
- 仅需一个时钟脉冲
3.2.2 全速捕获(针对跳变/路径延迟故障)
- SE信号保持低电平
- 需要两个功能时钟脉冲:
- 第一个脉冲:发射测试图案
- 第二个脉冲:捕获响应
- 两个脉冲之间的间隔等于功能时钟周期
- 验证信号能否在一个时钟周期内完成传播
实操心得:全速测试时,需要特别注意时钟信号的完整性。建议使用片上PLL生成测试时钟,避免板级时钟信号的质量问题。
3.3 扫描输出阶段(Scan Out)
在这个阶段:
- SE信号再次拉高(有效)
- 捕获到的数据在扫描链中串行移位输出
- 每个时钟有效边沿输出一位数据
- 输出数据与预期结果比较,完成故障验证
提示:现代测试机通常支持扫描输入和扫描输出同时进行,即在一个时钟周期内,移出当前测试的响应数据,同时移入下一个测试向量,这样可以显著提高测试效率。
4. 扫描链的物理实现考量
4.1 时序模式与物理设计
在物理设计(PnR)阶段,需要考虑不同的时序模式:
-
扫描移位时序模式(Scan Shift timing mode):
- 对应扫描输入和扫描输出阶段
- 组合逻辑被旁路
- 关键时序检查:保持时间(hold time)
-
捕获时序模式(Capture timing mode):
- 对应捕获阶段
- 组合逻辑参与工作
- 关键时序检查:建立时间(setup time)
注意事项:在物理设计阶段,需要为这两种模式分别进行时序分析,确保在所有工作模式下都能满足时序要求。
4.2 长扫描链的优缺点
优点:
- 减少扫描链总数
- 减少扫描输入/输出端口数量
- 简化测试接口设计
缺点:
- 扫描输入/输出需要更多时钟周期
- 测试时间与最长扫描链长度成正比
- 可能增加测试功耗
实操心得:在实际项目中,通常会在测试时间和测试接口复杂度之间进行权衡。常见的做法是将扫描链长度控制在1000-2000个触发器之间。
5. 扫描链技术的扩展与优化
5.1 测试压缩技术
为了减少测试数据量和测试时间,现代DFT方案通常会采用测试压缩技术:
- 在扫描链输入端加入解压缩逻辑
- 在扫描链输出端加入压缩逻辑
- 可以显著减少测试向量的体积
- 典型压缩比可达10x-100x
5.2 功耗感知测试
测试期间的开关活动可能远高于正常工作模式,导致:
- 动态功耗增加
- 电压降问题
- 芯片过热
功耗感知测试技术通过:
- 优化测试向量生成
- 控制测试时钟频率
- 采用分区测试策略
来降低测试期间的功耗。
5.3 其他DFT技术
除了扫描链技术外,现代DFT方案通常还会结合:
- 内建自测试(BIST)
- 边界扫描(Boundary Scan)
- 逻辑BIST
等多种技术,构建完整的可测试性解决方案。
6. 实际应用中的经验分享
6.1 扫描链插入的最佳实践
-
时钟域处理:
- 不同时钟域的触发器应该放在不同的扫描链中
- 跨时钟域路径需要特殊处理
-
复位信号处理:
- 确保扫描测试不会意外触发芯片复位
- 可能需要添加测试模式下的复位控制逻辑
-
异步信号处理:
- 异步信号在测试模式下需要特殊处理
- 可能需要添加同步逻辑
避坑指南:在RTL设计阶段就考虑DFT需求,可以显著减少后续的DFT实现难度。等到物理设计阶段再考虑DFT往往会导致大量返工。
6.2 测试覆盖率优化
提高测试覆盖率的常用方法:
- 增加测试向量数量
- 优化ATPG算法参数
- 针对覆盖率低的区域添加观察点
- 使用故障仿真工具分析覆盖率瓶颈
实测数据:在28nm工艺节点,典型的扫描测试覆盖率目标为:
- 固定型故障:>99%
- 跳变故障:>95%
- 路径延迟故障:>85%
6.3 生产测试考量
在生产测试中:
- 测试时间直接影响成本
- 需要平衡测试覆盖率和测试时间
- 多站点并行测试可以提高效率
- 测试程序需要定期优化更新
行业经验:先进工艺节点的测试成本可能占到芯片总成本的30%以上,因此DFT方案的优化对降低整体成本至关重要。
