第四章 扫描链插入方法:全扫描与部分扫描、扫描链插入流程、扫描链平衡与优化、扫描链诊断

扫描链(Scan Chain)是DFT(可测试性设计)中最核心的硬件基础设施,它将芯片中的时序单元(触发器)转换为可控、可观测的测试端口。本章将系统讲解扫描链插入的完整知识体系:从全扫描与部分扫描的策略选择,到扫描链插入的工程流程,再到扫描链平衡与优化的方法,最后深入扫描链诊断技术。理解本章内容,是掌握ATPG测试向量生成的前提——因为测试向量的质量与效率,直接取决于扫描链的结构设计与实现质量。

扫描链插入方法体系 扫描策略选择 全扫描 vs 部分扫描 扫描链插入流程 RTL→网表→扫描替换→连接 扫描链平衡与优化 长度均衡·时序收敛·功耗优化 扫描链诊断 故障定位·链完整性分析 全扫描 (Full Scan) · 所有时序单元可扫描 · 测试覆盖率最高 · 面积开销约5-10% · 时序影响较大 部分扫描 (Partial Scan) · 仅关键时序单元可扫描 · 面积/时序开销小 · 覆盖率降低 · 需ATPG特殊处理 平衡优化要点 · 链长差异 < 10% · 时钟域分组 · 保持时间修复 · 移位功耗控制 诊断技术 · 链测试模式 · 故障字典分析 · 扫描链完整性检查 · 逻辑诊断定位 核心目标:在覆盖率、面积、时序、功耗之间取得最优平衡 扫描链设计质量 = ATPG向量质量 × 测试成本效率

上图展示了扫描链插入方法的整体知识框架。本章将按照“策略选择→流程实施→平衡优化→诊断调试”的逻辑主线,逐一深入剖析每个环节的核心原理与工程实践要点。

4.1 全扫描与部分扫描:策略选择的权衡艺术

4.1.1 核心原理

全扫描(Full Scan)是指将设计中所有时序单元(D触发器、锁存器等)全部替换为可扫描的扫描触发器(Scan Flip-Flop, SFF),并将它们串联成一条或多条扫描链。全扫描的核心优势在于:测试时,所有时序单元的状态可以被完全控制(通过扫描输入)和完全观测(通过扫描输出),从而将复杂的时序测试问题转化为组合逻辑测试问题,大幅提升故障覆盖率(通常可达95%以上)。

部分扫描(Partial Scan)则只选择部分关键时序单元进行扫描替换。选择哪些触发器进入扫描链,通常基于以下准则:处于关键路径上的触发器、控制信号较多的触发器、或对测试覆盖率贡献最大的触发器。部分扫描的动机在于降低面积开销和时序性能损失,但代价是测试覆盖率下降,且ATPG工具需要处理剩余的非扫描时序单元,生成测试向量的复杂度显著增加。

4.1.2 判断方法:如何选择扫描策略

在实际工程中,选择全扫描还是部分扫描,需要综合评估以下因素:

评估维度全扫描部分扫描
故障覆盖率目标≥95%,可达到99%+通常80%-90%,取决于选择比例
面积开销增加5%-10%(SFF面积更大)增加2%-5%
时序性能影响关键路径延迟增加约5%-8%仅影响被替换的路径
ATPG复杂度低,工具处理简单高,需处理时序反馈回路
测试向量长度较短,测试时间可控较长,可能需要更多向量
设计复杂度低,流程成熟高,需要精细的触发器选择

对于大多数SoC和ASIC设计,推荐采用全扫描。只有在以下特殊场景下才考虑部分扫描:超高速设计(如SerDes、RF前端)中关键路径时序余量极小;面积极度受限的芯片(如低成本MCU);或某些模拟/混合信号模块中不适合插入扫描单元。

经验提醒:在项目早期(RTL阶段)就应确定扫描策略。如果计划使用部分扫描,需要在RTL中通过综合属性(如 set_scan_style 或 set_scan_element)预先标记可扫描的触发器,避免后期网表级修改带来的时序和功能风险。

4.1.3 案例拆解:某AI加速芯片的扫描策略决策

某AI加速芯片设计,工艺7nm,工作频率1.2GHz,包含约200万个触发器。初始方案采用全扫描,但综合后时序分析发现,有约3%的路径(主要分布在高速SRAM接口和AI计算阵列的关键路径)时序余量不足,无法满足1.2GHz目标。

分析过程:团队对比了两种方案:方案A,全扫描+关键路径优化(增加流水线级数);方案B,部分扫描(仅将非关键路径的约85%触发器纳入扫描链)。方案A需要修改RTL架构,项目周期延长6周;方案B只需在综合时设置例外约束,但预期覆盖率从98%降至91%。

决策与结果:最终选择方案A的变体——全扫描,但对关键路径上的触发器使用低开销扫描单元(如无多路选择器的扫描输出型触发器),同时优化时钟树综合以补偿延迟。最终实现1.18GHz频率,覆盖率97.8%,测试向量数量比部分扫描方案少40%。

风险提示:部分扫描并非“免费午餐”。它会导致ATPG工具需要处理非扫描触发器的状态初始化问题,可能产生大量无效向量,反而增加测试时间。此外,部分扫描的故障诊断难度显著高于全扫描,因为故障可能隐藏在非扫描逻辑中。

4.2 扫描链插入流程:从RTL到网表的工程化实施

4.2.1 标准插入流程

扫描链插入通常在逻辑综合阶段完成,主流EDA工具(如Synopsys DFT Compiler、Cadence Genus)支持以下标准流程:

  1. RTL分析与扫描就绪检查:检查RTL中是否存在不可扫描的时序单元(如异步置位/复位的触发器、门控时钟等),并生成扫描就绪报告。
  2. 扫描单元替换:将普通D触发器替换为扫描触发器(如SDFF、SDFFR),并保留原始功能逻辑。
  3. 扫描链配置:定义扫描链数量、扫描输入/输出端口、链的起始和结束触发器。
  4. 扫描链连接:将扫描触发器按指定顺序串联,形成完整的扫描链。
  5. 扫描链验证:通过形式验证(Formal Verification)确认扫描替换后的网表功能与原网表一致(在测试模式下)。
  6. ATPG就绪输出:生成包含扫描链信息的网表文件(如Verilog网表)和DFT约束文件(如SDC中的 set_scan_chain 约束)。

4.2.2 关键操作细节

在扫描链插入过程中,以下操作细节直接影响后续ATPG效果:

  • 扫描链数量选择:扫描链数量越多,每条链长度越短,测试时间越短,但需要更多扫描端口(或通过压缩技术减少端口)。典型设计每500-2000个触发器配置一条扫描链。
  • 扫描端口复用:扫描输入/输出通常复用功能IO端口,通过测试模式信号(如 test_mode)进行切换。需要确保复用端口在功能模式下不受影响。
  • 扫描时钟处理:扫描移位时使用移位时钟(通常与功能时钟同源或独立),需要确保时钟在扫描模式下正确切换,避免时钟毛刺。
  • 异步信号处理:所有异步置位/复位信号在扫描模式下必须被强制无效(通过测试模式信号控制),否则会导致扫描移位时状态不确定。
// 扫描链插入后的网表示例(Verilog片段)
module top_scan (
  input  wire clk, rst_n, test_mode,
  input  wire scan_in_0, scan_in_1,
  output wire scan_out_0, scan_out_1,
  // ... 功能端口
);
  // 扫描触发器实例化
  SDFFRX1 ff_0 (.D(data_0), .SI(scan_in_0), .SE(test_mode), 
                .CK(clk), .RN(rst_n), .Q(q_0), .QN(qn_0));
  SDFFRX1 ff_1 (.D(data_1), .SI(q_0), .SE(test_mode), 
                .CK(clk), .RN(rst_n), .Q(q_1), .QN(qn_1));
  // ... 链继续连接
  assign scan_out_0 = q_1;  // 链0输出
endmodule

4.2.3 案例拆解:扫描链插入中的时钟域交叉问题

某通信芯片设计包含3个时钟域(1.2GHz核心域、400MHz外设域、32kHz低功耗域),共150万触发器。在扫描链插入时,工程师最初将所有触发器按功能时钟域分组,形成3条长扫描链。但ATPG仿真发现,跨时钟域的扫描链路径存在保持时间违例。

分析:由于不同时钟域的时钟树延迟差异较大(最大偏差达2.1ns),扫描移位时跨域路径的保持时间无法满足。解决方案是:将扫描链按时钟域完全隔离,每个时钟域独立成链,并在跨域路径上插入扫描专用延迟缓冲器(Scan Delay Buffer)。

实施与结果:重新配置为5条扫描链(核心域2条、外设域2条、低功耗域1条),每条链长度控制在30万触发器以内。在跨域路径上插入约200个延迟缓冲器,保持时间违例全部修复。最终测试覆盖率从94.2%提升至97.1%,测试时间缩短35%。

工程要点:扫描链插入不是简单的“串联触发器”,必须考虑时钟域、异步信号、复位策略、功耗分布等多维因素。建议在扫描链插入前,先完成时钟树综合的初步评估,确保扫描链路径的时序可行性。

4.3 扫描链平衡与优化:提升测试效率的关键

4.3.1 扫描链平衡的核心原理

扫描链平衡是指多条扫描链的长度尽量一致,以最小化测试时间。测试时间与最长扫描链的长度成正比(假设并行移位),因此链长差异过大会导致测试时间浪费。理想情况下,所有扫描链长度差异应控制在10%以内。

扫描链优化还包括以下维度:

  • 时序优化:确保扫描路径(SI→Q)的建立时间和保持时间满足要求,避免在扫描移位时出现时序违例。
  • 功耗优化:扫描移位时大量触发器同时翻转,导致动态功耗激增。可通过分组移位(不同链在不同时间移位)或降低移位频率来缓解。
  • 布线优化:扫描链连接应尽量短,减少布线拥塞和信号延迟。EDA工具通常支持基于物理信息的扫描链重构。

4.3.2 优化方法与操作流程

优化目标方法工具支持注意事项
链长均衡按触发器数量平均分配;按物理位置分组DFT Compiler set_scan_chain 的 -balance 选项避免跨时钟域链
时序收敛插入扫描缓冲器;调整链顺序PrimeTime 时序分析缓冲器增加面积
功耗降低链分组移位;门控扫描时钟PowerArtist 功耗分析增加控制逻辑复杂度
布线优化物理感知扫描链重构ICC2 / Innovus 的 scan reorder需在布局布线阶段执行

4.3.3 案例拆解:扫描链平衡的完整调优过程

某汽车电子MCU芯片,包含80万触发器,初始配置为4条扫描链,链长分别为:链0=25万、链1=22万、链2=18万、链3=15万。测试向量数量为12000个,每个向量需要最长链的移位周期数(25万)加上捕获周期,总测试时间为:12000 × (250000 + 2) ≈ 3×10^9 个时钟周期。

优化目标:将测试时间缩短至2×10^9周期以内。

操作步骤:

  1. 使用 set_scan_chain -balance true 重新配置,将触发器按物理区域重新分配,形成5条链,每条约16万触发器。
  2. 对跨区域的长连线路径插入扫描缓冲器(共约350个),修复保持时间违例。
  3. 将5条链分为两组,组间使用不同的移位时钟相位(相差180°),降低瞬时功耗。

结果对比:优化后最长链为16.5万触发器,测试时间降至 12000 × (165000 + 2) ≈ 1.98×10^9 周期,满足目标。面积增加约0.3%(缓冲器开销),功耗峰值降低22%。

风险说明:扫描链平衡优化可能引入额外的测试模式时序约束。在优化后必须重新运行ATPG向量生成和仿真验证,确保新扫描链结构下故障覆盖率不下降。此外,物理感知的扫描链重构需要在布局布线后再次进行时序签核。

4.4 扫描链诊断:定位故障的工程利器

4.4.1 扫描链故障类型与诊断原理

扫描链本身也可能存在制造缺陷,常见的扫描链故障包括:

  • 固定故障(Stuck-at Fault):扫描链中某个节点的信号固定为0或1,导致移位数据无法正确传递。
  • 转换故障(Transition Fault):扫描触发器无法在时钟沿正确捕获数据,通常由时序问题引起。
  • 桥接故障(Bridging Fault):扫描链相邻信号线短路,导致逻辑错误。
  • 时钟故障:扫描时钟信号异常,导致部分触发器无法移位。

扫描链诊断的基本方法是:通过扫描链测试模式(如简单的移位模式 1010... 或 0101...),观察扫描输出数据与期望数据的差异,结合故障字典或逻辑推理,定位故障发生的具体触发器位置。

4.4.2 诊断流程与工具支持

  1. 链测试(Chain Test):加载简单的移位向量,检查扫描链完整性。如果输出与期望不符,则链存在故障。
  2. 故障定位:使用ATPG工具(如Tessent Diagnosis)分析失败日志,通过故障字典匹配或基于路径追踪的算法,确定故障触发器。
  3. 物理分析:将逻辑定位结果映射到物理版图,结合良率分析数据,确认故障根因(如金属桥接、接触孔失效等)。

4.4.3 案例拆解:扫描链诊断的完整闭环

某5nm工艺的GPU芯片在量产测试中,发现约0.3%的芯片在扫描链测试阶段失败。失效模式为:扫描链2的输出在移位第1024个周期后出现数据错误。

诊断过程:

  • 使用Tessent Diagnosis对100颗失效芯片进行诊断,所有芯片的故障都定位在扫描链2的第1024-1026个触发器附近。
  • 物理版图分析发现,该区域存在一条长距离的扫描链布线(约800μm),且与相邻的电源线平行走线。
  • 进一步分析确认,该处存在金属层桥接风险(设计规则检查DRC通过,但工艺偏差导致桥接)。

解决方案:修改扫描链布线,将该段走线改为更高金属层并增加间距;同时在该区域增加冗余通孔。修改后,量产良率提升0.25%,扫描链测试失效率降至0.02%以下。

复盘经验:扫描链诊断不仅是测试环节的“排障工具”,更是工艺良率提升的重要反馈渠道。建议在量产测试中保留扫描链测试模式,并建立诊断数据库,持续监控扫描链故障的分布趋势,及时发现工艺或设计的系统性问题。

4.5 本章总结与工程实践建议

扫描链插入是DFT流程中最具工程挑战性的环节之一。本章的核心要点可归纳为:

  • 策略选择:优先采用全扫描,仅在极端时序或面积约束下考虑部分扫描,且需充分评估ATGP复杂度和覆盖率损失。
  • 流程规范:严格遵循“RTL检查→扫描替换→链配置→验证”的标准流程,特别关注时钟域隔离和异步信号处理。
  • 平衡优化:链长均衡是测试时间优化的关键,同时要兼顾时序、功耗和布线质量。
  • 诊断能力:建立完善的扫描链诊断机制,将测试数据转化为设计和工艺改进的 actionable insights。

在实际项目中,建议在RTL设计阶段就引入DFT工程师参与架构评审,提前规划扫描链结构。在综合阶段,通过多次迭代优化扫描链配置,并在布局布线后再次验证扫描链时序。只有将扫描链设计作为一项系统工程来对待,才能为后续ATPG向量生成奠定坚实基础,实现高覆盖率、低测试成本的目标。