4、扫描链设计基础:扫描触发器原理、扫描链结构、扫描使能信号,以及扫描链的插入流程

扫描链(Scan Chain)是可测试性设计(DFT)中最核心、最基础的架构。它的本质是将芯片内部普通的时序单元(D触发器)替换为具有测试模式的扫描触发器(Scan Flip-Flop),并在测试模式下将这些触发器首尾相连形成移位寄存器链。通过这条链,测试工程师可以像操作移位寄存器一样,将测试向量逐位“移入”芯片内部,捕获电路运行状态,再将结果“移出”芯片进行比对。本章将深入剖析扫描触发器的内部原理、扫描链的拓扑结构、扫描使能信号(Scan Enable, SE)的时序控制,以及从RTL到网表的完整扫描链插入流程。

扫描链设计核心原理与插入流程 扫描触发器内部结构 MUX D SI SE D-FF CLK Q 组合逻辑 功能路径 扫描链移位结构 FF1 FF2 FF3 SI SO 共享时钟 CLK 共享 SE 控制 扫描链插入流程(5个关键步骤) 1. RTL分析 时钟域/异步处理 2. 约束定义 SDC/DFT约束 3. 扫描替换 D-FF → Scan-FF 4. 链连接 SI/SO 首尾相连 5. 验证 DRC/仿真验证 核心目标:将不可控/不可观测的内部时序节点,转换为可通过外部引脚直接控制和观测的移位寄存器单元

上图展示了扫描链设计的三个核心维度:左侧为扫描触发器的内部电路结构(MUX-D型),中间为扫描链的移位连接方式,底部为标准的五步插入流程。在后续内容中,我们将逐一拆解这些模块的工程细节。

4.1 扫描触发器原理:从普通DFF到可控/可观测单元

扫描触发器的核心思想是在普通D触发器前增加一个2选1多路复用器(MUX)。该MUX由扫描使能信号SE控制:当SE=0时,触发器工作在功能模式,数据从D端输入;当SE=1时,触发器工作在移位模式,数据从扫描输入SI端输入。这种结构被称为MUX-D扫描触发器,是工业界最主流的实现方式。

核心原理拆解:在功能模式下,扫描触发器与普通触发器完全等价,不影响芯片的正常逻辑功能。在测试模式下,SE被拉高,所有触发器通过SI端口串联成移位寄存器。测试向量通过芯片的扫描输入引脚(Scan In)逐位送入,经过若干个时钟周期后,向量被完全装载到所有触发器中。随后SE拉低,施加一个功能时钟脉冲,捕获组合逻辑的输出结果。最后SE再次拉高,将捕获结果通过扫描输出引脚(Scan Out)逐位移出,与期望值比对。

工程要点:扫描触发器的面积开销约为10%-15%,功耗略有增加,但换来了内部节点100%的可控性和可观测性。对于高性能设计,还可采用LSSD(电平敏感扫描设计)或时钟边沿扫描等变体,但MUX-D结构因其简单性和与标准EDA流程的兼容性而占据主导地位。

扫描触发器的时序参数(如CLK-to-Q延迟、建立/保持时间)与普通触发器略有不同,因为数据路径上额外增加了MUX的延迟。在时序收敛阶段,STA工具会自动处理这一差异,但设计者需要关注扫描模式下时钟树的平衡,因为移位操作对时钟偏斜(Skew)非常敏感。

4.2 扫描链结构:单链、多链与平衡策略

扫描链的结构设计直接决定了测试时间、测试功耗和测试引脚开销。最基本的拓扑是单条扫描链,即所有扫描触发器串联成一条长链。然而,在实际工程中,几乎不会采用单链结构,而是根据芯片的IO资源、功耗预算和测试时间要求进行多链划分。

结构类型 链数量 测试时间 测试功耗 IO开销 适用场景
单条长链 1 最长 最低 2个引脚 IO极度受限的芯片
多条短链 8-32 缩短8-32倍 较高 2N个引脚 主流SoC/ASIC设计
平衡多链 动态调整 最优 可控 适中 大规模SoC,需要分频测试

链平衡设计:多链结构下,各条链的长度应尽量接近,因为测试时间由最长的那条链决定。例如,一个具有10000个触发器的设计,若分为4条链,理想情况下每条链2500个触发器;若分配不均(如3000/2000/2500/2500),则测试时间比理想情况增加20%。链平衡通常在扫描链插入阶段由工具自动优化,但设计者可以通过指定链数量、链长度上限等约束来引导工具。

风险提示:扫描链划分必须考虑物理布局。如果一条链的触发器跨越了芯片的多个电压域或时钟域,可能导致布线拥塞和时序违例。建议在floorplan阶段就与后端工程师协同确定链的物理分区。

扫描链的输入输出通常复用功能引脚(如GPIO)或使用专用测试引脚。复用功能引脚可以节省封装成本,但需要在测试模式下通过边界扫描或测试控制信号进行切换,增加了控制逻辑的复杂度。

4.3 扫描使能信号(SE)的时序控制与设计规则

扫描使能信号SE是扫描测试中最重要的控制信号。它必须在正确的时刻切换,以确保测试向量正确装载、捕获和移出。SE信号的设计需要遵循严格的时序规则,否则会导致测试失败或芯片损坏。

SE信号的三大关键时序窗口:

  1. 移位阶段(Shift Phase):SE保持高电平,每个时钟上升沿将SI数据移入触发器。此阶段需要足够的时钟周期数(等于链长度+裕量)。
  2. 捕获阶段(Capture Phase):SE从高电平切换到低电平,然后施加一个或两个功能时钟脉冲。SE的下降沿必须在时钟上升沿之前稳定,且满足触发器的建立时间要求。
  3. 捕获后恢复(Post-Capture):捕获完成后,SE再次拉高,准备移出数据。SE的上升沿同样需要满足时序约束,避免与时钟竞争。
// 典型扫描测试时序(以Verilog测试平台为例)
initial begin
  // 初始化
  SE = 1'b0;
  // 装载阶段:SE拉高,移位N个周期
  @(posedge clk);
  SE = 1'b1;
  repeat (chain_length) @(posedge clk);
  // 捕获阶段:SE拉低,施加1个功能脉冲
  @(negedge clk);
  SE = 1'b0;
  @(posedge clk);
  // 移出阶段:SE拉高,移位N个周期
  @(negedge clk);
  SE = 1'b1;
  repeat (chain_length) @(posedge clk);
end

SE信号的时钟偏斜问题:由于SE信号需要同时到达所有扫描触发器,其时钟树(实际是控制树)的偏斜必须严格控制。如果SE到达不同触发器的时刻差异过大,可能导致部分触发器提前退出移位模式,造成数据错乱。通常SE信号的偏斜要求与时钟信号相当,甚至更严格。

工程实践:在布局布线阶段,SE信号应使用与时钟信号相同的布线资源(如高层金属),并插入足够的缓冲器(Buffer)来驱动大扇出。对于超大规模设计,可采用SE分级使能策略,即先使能一组链,再使能另一组,以降低同时翻转带来的电源噪声(IR Drop)。

此外,SE信号在功能模式下必须保持稳定的低电平,且不能受到任何毛刺干扰。因此,SE信号通常由测试控制单元(TCU)或IEEE 1149.1 TAP控制器产生,并经过同步器处理后再分发到各扫描链。

4.4 扫描链插入流程:从RTL到GDSII的完整链路

扫描链插入是DFT流程中的核心步骤,通常在逻辑综合阶段或综合后由专门的DFT工具完成。标准的插入流程包含五个关键阶段,每个阶段都有明确的输入、输出和检查点。

阶段一:RTL分析与DFT规则检查。在插入扫描链之前,必须对RTL代码进行可测性分析。检查内容包括:是否存在不可复位触发器(可能导致测试状态未知)、是否存在异步时钟域交叉(需要同步器)、是否存在组合逻辑环路(可能导致测试不稳定)、三态总线是否可控等。此阶段通常使用DFT Compiler或Tessent工具进行静态检查。

阶段二:约束定义与时钟域规划。设计者需要定义扫描链的数量、每条链的最大长度、允许使用的扫描引脚、SE信号的来源等。同时,需要为每个时钟域规划独立的扫描链,避免跨时钟域的链连接。SDC约束文件中需要添加DFT相关的时序约束,如set_scan_chain、set_dft_signal等命令。

阶段三:扫描触发器替换。工具将RTL网表中的所有普通D触发器替换为扫描触发器。此过程会改变网表结构,但逻辑功能保持不变。替换后,工具会报告扫描触发器的数量、面积增加比例等信息。

阶段四:扫描链连接与优化。工具根据约束将扫描触发器连接成链。连接顺序通常基于物理位置优化,以减少布线长度。此阶段还会插入必要的测试逻辑,如链头尾的测试引脚缓冲器、SE信号的驱动树等。

阶段五:DFT验证与仿真。插入完成后,需要运行DFT DRC(设计规则检查)验证链的连接正确性,并通过仿真验证扫描链的移位功能。仿真通常使用专门的扫描测试向量,检查数据能否正确地从SI移入、捕获、再从SO移出。

流程阶段 关键输入 主要输出 质量检查项
RTL分析 RTL代码、UPF DFT规则报告 异步处理、不可控节点
约束定义 SDC、DFT约束 扫描链配置 链数量、长度平衡
扫描替换 综合后网表 扫描网表 触发器类型、面积开销
链连接 扫描网表、布局信息 最终扫描网表 物理距离、时钟域隔离
验证 扫描网表、测试向量 仿真通过报告 移位正确性、时序收敛

常见误区:许多初学者认为扫描链插入只是简单的“替换触发器+连线”,但实际上,扫描链的物理实现质量直接影响芯片的良率和测试成本。例如,如果一条链上的触发器在布局时跨越了较长的距离,可能导致时钟偏斜增大,进而引发移位时序违例。因此,扫描链插入必须与布局布线(P&R)流程紧密协同,甚至需要在布局后重新优化链的连接顺序。

另一个常见误区是忽视扫描链的测试功耗。在移位阶段,所有触发器同时翻转,产生远高于功能模式的动态功耗。如果链过长或翻转率过高,可能导致芯片局部过热或电源电压跌落,造成测试失败。解决方法是采用低功耗扫描测试技术,如门控时钟(在移位阶段关闭非必要时钟)、扫描链分组使能(每次只激活部分链)等。

4.5 实战案例:一个32位处理器的扫描链设计

假设我们设计一个32位RISC-V处理器,包含约50,000个触发器,工作频率500MHz,采用28nm工艺。芯片有48个可用IO引脚,其中可分配8个作为测试引脚。测试时间要求小于10ms。

初始约束分析:根据IO资源,我们最多可支持4条扫描链(每条链需要SI和SO各一个引脚,共8个引脚)。若采用4条链,每条链平均12,500个触发器。在500MHz测试时钟下,装载一个向量需要12,500个周期,即25μs。若测试向量总数为2000个,则总测试时间为50ms,超出10ms的要求。

优化方案:将扫描链数量增加到8条,但IO引脚不足。解决方案是采用测试引脚复用技术,通过TAP控制器在功能模式和测试模式之间切换引脚功能。这样可以使用4个物理引脚控制8条链(通过时分复用或链选择信号)。每条链长度降至6,250个触发器,装载时间缩短至12.5μs,总测试时间降至25ms。进一步优化,采用测试压缩技术(如EDT),可将测试数据量减少10倍,最终测试时间控制在5ms以内。

实施过程:在DFT Compiler中定义8条扫描链,指定链长度上限为7,000。工具自动完成触发器替换和链连接。布局后检查发现,第3条链的触发器分布过于分散,导致时钟偏斜达到80ps,超过50ps的预算。后端工程师通过调整触发器位置和插入延迟缓冲器,将偏斜降至45ps。

结果与复盘:最终设计实现了8条平衡扫描链,测试覆盖率从无扫描设计的65%提升至98.5%。面积开销为12%,功耗增加8%。测试时间满足规格要求。复盘经验:扫描链设计必须从芯片整体规划阶段介入,IO分配、时钟树综合、布局规划都需要为扫描链预留空间。

总结:扫描链设计不是孤立的DFT任务,而是与芯片架构、物理实现、测试策略紧密关联的系统工程。掌握扫描触发器原理、链结构优化、SE时序控制和标准插入流程,是成为一名合格DFT工程师的基础。在实际项目中,建议使用工业标准的DFT工具(如Synopsys DFT Compiler、Mentor Tessent)并遵循其最佳实践流程,同时保持对底层原理的深入理解,以便在遇到工具无法自动解决的复杂问题时能够手动干预和优化。