扫描测试Scan Design原理与实现在所有DFT技术中,**扫描测试(Scan Design)**是最基础、最成熟、应用最广的一种。它通过将电路中的触发器改造成可串行移位的"扫描触发器",串成一条条扫描链,让ATE能像读写一串移位寄存器一样,把测试向量"灌入"芯片内部、把响应"导出"到外部。本文从扫描链的物理结构出发,系统讲解扫描单元设计、Shift/Capture时序、多链平衡、stitching策略,并附完整的Python模拟、Verilog实现与实战案例,帮助读者彻底掌握扫描测试。一、扫描测试概述1.1 为什么需要扫描测试回顾上篇博客提到的可测性问题:组合电路的内部节点可以靠"测试点插入"改善,但时序电路中的触发器才是真正的难题——它们存储着电路的状态,外部无法直接读写。考虑一个含N个触发器的同步电路,要完整测试其所有状态,理论上需要 2^N 个测试向量。当N=100时,需要约 1.27×10^30 个向量,按每个向量1ns测试,需 4×10^13 年,远超宇宙年龄!扫描测试的思路是:改造触发器本身,让它们既能正常工作,又能在测试时被"重新连接"为一条串行移位寄存器(scan chain)。这样:测试向量生成时:从一条扫描链的SI(Scan In)逐位移入,N拍即可任意设置N个触发器的状态响应捕获后:从SO(Scan Out)逐位移出