扫描链(Scan Chain)—— 芯片测试的“高速公路“
#Scan Chain#SFF#Shift Capture#扫描测试#DFT实践如果说DFT是理念那么Scan Chain就是最重要的实践。它将芯片内所有的寄存器串联成一条数据高速公路让我们可以随意控制和观测每个节点的值。DFF vs SFF关键的硬件升级传统功能设计中使用D触发器DFF而在Scan Test中需要将其替换为扫描触发器SFFScan Flip-Flop。两者的核心区别在于SFF在数据输入端D之前增加了一个多路选择器MUX可以在功能信号和测试信号之间切换。// SFF内部逻辑示意 // 当 scan_enable 0选择功能输入 D正常工作模式 // 当 scan_enable 1选择扫描输入 SI测试移位模式 Q scan_enable ? SI : D;Scan Test的完整流程四步法【Step 1: Test Setup测试建立】激活scan模式将scan enable信号置高准备进入测试状态。【Step 2: Load加载】在scan enable拉高状态下通过扫描链输入端SI逐位移入测试向量将特定的测试值装载到每个SFF中。【Step 3: Capture捕获】将scan enable拉低让电路在功能模式下运行一个或多个时钟周期让组合逻辑的运算结果被各个SFF捕获存储。【Step 4: Unload卸载】再次激活scan模式将各SFF中捕获的值移出到扫描链输出端SO与期望值进行比较判断是否有故障。为什么要分组Scan Chain Family当芯片存在多个时钟域时直接将不同时钟域的SFF混在一条扫描链中会引发时序混乱。Tessent工具提供了Scan Chain Family功能确保同一条扫描链上的SFF属于同一时钟域或时钟边沿。// 按时钟域分组示例 create_scan_chain_family family_clk1 \ -include_elements [get_scan_element -filter clock_domain clk1] create_scan_chain_family family_clk23 \ -include_elements [get_scan_element -filter \ clock_domain clk2 || clock_domain clk3]⚡EDT技术压缩测试时间对于大规模芯片扫描链可能有数十万个SFF测试时间极长。EDTEmbedded Deterministic Test技术通过压缩编码将少量测试通道扩展为大量测试向量可将测试时间减少10-100倍。// EDT模式配置示例 add_scan_mode edt_mode -edt_instance dut/tessent_edt_c1_inst add_scan_mode multi_mode -chain_count 4 // 多链模式 add_scan_mode single_mode -chain_count 1 // 单链模式✅小结SFF是Scan Test的硬件基础比DFF多了一个测试路径MUXScan Test四步法Test Setup → Load → Capture → UnloadScan Chain Family按时钟域分组避免跨域测试时序问题EDT技术可大幅压缩测试时间提升测试效率