3、可测试性设计基础:扫描链设计、BIST(内建自测试)、边界扫描(JTAG)等传统DFT技术概览

在深入IEEE 1500与1687标准之前,必须先建立对传统DFT(Design for Testability,可测试性设计)技术的系统性认知。这些技术构成了现代芯片测试的基石,而1500与1687标准本质上是对这些传统方法在IP复用、芯核(Core)级测试和系统级调试场景下的扩展与规范化。本章将聚焦三大核心支柱:扫描链(Scan Chain)、内建自测试(BIST)和边界扫描(JTAG),剖析其原理、实施方法、应用场景与局限性,为后续理解1500/1687标准中“测试壳(Wrapper)”、“测试访问机制(TAM)”和“1687 IJTAG网络”等概念打下坚实的认知基础。

传统DFT技术全景与1500/1687定位 扫描链设计 (Scan) • 触发器替换为扫描单元 • 串行移位输入/输出 • 全扫描/部分扫描 • ATPG生成测试向量 • 故障覆盖率可达95%+ 内建自测试 (BIST) • 片上测试向量生成(PRPG) • 片上响应分析(MISR) • 无需ATE高速交互 • 适用于存储器/逻辑 • 现场测试/内建自修复 边界扫描 (JTAG) • IEEE 1149.1标准 • TAP控制器 + 指令寄存器 • 边界扫描单元(BSC) • 板级互连测试 • 调试/编程接口 共同基础:可观测性(Observability) + 可控性(Controllability) 通过增加测试端口和内部访问机制,打破芯片内部黑盒状态 标准演进与本章定位 IEEE 1149.1 (JTAG) 板级互连/边界扫描 IEEE 1500 (Core Test) 芯核测试壳/并行TAM IEEE 1687 (IJTAG) 可重构扫描网络/仪器访问 SoC测试 统一访问

上图展示了传统DFT三大技术的内在联系及其与IEEE 1500/1687标准的演进关系。扫描链解决芯片内部时序逻辑的测试问题,BIST解决大规模重复结构(如存储器)的测试问题,而JTAG则提供了统一的板级测试与调试接口。IEEE 1500标准将扫描链和BIST技术封装到芯核测试壳中,IEEE 1687则进一步将JTAG的TAP访问机制扩展为可重构的片上仪器网络。理解这些基础技术,是掌握后续标准细节的前提。

3.1 扫描链设计:时序逻辑的可控性与可观测性

3.1.1 核心原理:从触发器到扫描单元

扫描链设计的本质是将芯片中的普通D触发器替换为具有“移位模式”和“正常模式”双工作状态的扫描触发器(Scan Flip-Flop,SFF)。在正常模式下,SFF与普通触发器无异,完成用户逻辑功能;在测试模式下,所有SFF被串联成一条或多条移位寄存器链,通过扫描输入(Scan In,SI)端口将测试向量逐位移入,通过扫描输出(Scan Out,SO)端口将响应逐位移出。这种设计将复杂的时序逻辑测试问题转化为组合逻辑测试问题,使得ATPG(自动测试向量生成)工具能够高效地生成高覆盖率的测试向量。

对比维度普通D触发器扫描触发器(SFF)
数据输入仅功能数据D功能数据D + 扫描数据SI(通过MUX选择)
控制信号时钟CLKCLK + 扫描使能SE(Scan Enable)
测试能力无法直接控制/观测内部状态可串行移位,实现全状态可控/可观测
面积开销基准约增加10%-15%逻辑面积
测试时间极长(需功能序列)移位时钟周期 × 扫描链长度

3.1.2 操作流程:扫描设计实施五步法

  1. 扫描单元替换:使用综合工具将普通触发器替换为扫描触发器,并插入扫描使能(SE)控制信号。
  2. 扫描链配置:决定扫描链的数量和长度。通常每条链长度控制在500-2000个触发器之间,以平衡测试时间和测试引脚开销。
  3. 扫描端口规划:分配专用测试引脚(SI/SO/SE/CLK)或复用功能引脚。复用引脚需考虑功能模式与测试模式的隔离。
  4. ATPG向量生成:使用EDA工具(如Tessent、Modus)生成测试向量,目标故障模型包括固定故障(Stuck-at)、跳变故障(Transition)和路径延迟故障。
  5. 故障仿真与覆盖率分析:对生成的向量进行故障仿真,验证覆盖率是否达到目标(通常>95%),并分析未覆盖故障的原因。

实战场景:某AI芯片扫描链设计优化

某AI加速芯片包含约500万触发器,初始设计采用单条扫描链,链长达到5000个触发器。测试时发现两个问题:一是测试时间过长(单条链移位需要5000个时钟周期),二是ATPG运行时间超过48小时。通过分析,设计团队将扫描链拆分为8条并行链,每条链约625个触发器,同时为每条链配置独立的SI/SO端口。优化后,测试时间缩短至原来的1/8,ATPG运行时间降至6小时,故障覆盖率从91%提升至97.3%。代价是增加了16个测试引脚,但通过复用功能引脚(在测试模式下由测试控制器接管)解决了引脚冲突问题。

3.1.3 常见误区与总结

误区1:扫描链越长越好。长链虽然减少引脚数量,但显著增加测试时间和ATPG复杂度。建议根据芯片规模和测试时间预算合理划分链数。

误区2:忽略扫描使能(SE)信号的时钟树设计。SE信号必须在移位阶段和捕获阶段之间精确切换,若SE时钟偏斜过大,会导致捕获数据错误。通常需要单独做SE信号的时钟树综合。

误区3:未处理异步复位/置位信号。扫描触发器必须保证在测试模式下异步信号被屏蔽,否则会导致移位数据不确定。

扫描链设计是DFT的基石,它通过增加少量硬件开销换取了极高的测试可控性和可观测性。在IEEE 1500标准中,扫描链被封装在芯核测试壳内,通过Wrapper的移位寄存器(WSR)实现芯核级扫描测试的隔离与访问。

3.2 BIST(内建自测试):片上自测与现场测试

3.2.1 核心原理:让芯片自己测试自己

BIST技术通过在芯片内部集成测试向量生成器(PRPG,伪随机模式发生器)和响应分析器(MISR,多输入特征寄存器),使芯片能够在无需外部ATE(自动测试设备)的情况下完成自我测试。PRPG通常采用LFSR(线性反馈移位寄存器)产生伪随机测试向量,MISR则通过压缩测试响应生成特征签名(Signature),通过与预存签名比对判断芯片是否故障。BIST特别适用于存储器测试(MBIST)、大规模重复逻辑阵列和需要现场测试的场景。

3.2.2 判断方法:何时选择BIST而非扫描链

  • 存储器测试:SRAM、DRAM、Flash等嵌入式存储器,因其结构规则、故障模式固定(如地址译码故障、单元固定故障),BIST效率远高于扫描链。
  • 现场测试需求:汽车电子、航空航天等需要上电自检(POST)的场景,BIST可在毫秒级完成测试。
  • 测试时间敏感:大规模SoC中,若所有逻辑都采用扫描链测试,测试时间可能过长,BIST可并行执行,大幅缩短测试时间。
  • 引脚受限:BIST只需启动信号和结果信号,无需大量测试引脚。

3.2.3 案例拆解:嵌入式SRAM的MBIST实现

某MCU芯片集成512KB SRAM,采用March C-算法进行MBIST设计。测试控制器包含:地址生成器(遍历所有地址)、数据生成器(产生March元素如↑(w0);↑(r0,w1);↑(r1,w0))、比较器(实时比对读取数据)。测试流程为:CPU通过APB总线发送MBIST启动命令,测试控制器自动执行完整March序列,完成后将结果写入状态寄存器。实测512KB SRAM测试仅需约2ms,而若采用扫描链测试,仅移位就需要数百万个时钟周期。该设计还支持冗余修复(Redundancy Repair),当检测到故障单元时,自动将地址重映射到备用行/列。

经验提醒:BIST的故障覆盖率取决于测试算法。March C-算法对固定故障和转换故障覆盖率接近100%,但对耦合故障覆盖率有限。对于高可靠性应用,建议使用March C+或March SS算法,并增加数据背景(Data Background)变化。

3.2.4 常见误区与总结

误区1:BIST可以完全替代扫描链。BIST的伪随机向量对复杂时序逻辑的覆盖率通常只有70%-85%,远低于ATPG的95%+。实际设计中,BIST与扫描链互补使用。

误区2:忽略BIST的测试时间。虽然BIST无需ATE交互,但PRPG产生的向量数量可能很大(如100万次伪随机向量),测试时间可能超过扫描测试。需通过折衷分析确定PRPG种子和测试长度。

误区3:MISR特征比对过于简单。MISR存在特征混淆(Aliasing)风险,即不同故障产生相同特征。工程上通过增加MISR位宽(如32位或64位)将混淆概率降至2^-32以下。

BIST技术将测试能力内嵌于芯片,是IEEE 1500标准中芯核测试的重要补充。在1500标准中,BIST控制器被视为芯核内部测试资源,通过Wrapper的测试壳指令(WIR)进行启动和结果读取。

3.3 边界扫描(JTAG):板级互连与调试的黄金标准

3.3.1 核心原理:IEEE 1149.1标准架构

JTAG(Joint Test Action Group)边界扫描技术基于IEEE 1149.1标准,通过在芯片I/O引脚与内部逻辑之间插入边界扫描单元(BSC),形成一条环绕芯片边界的移位寄存器链。测试访问端口(TAP)包含四个必备信号:TCK(测试时钟)、TMS(测试模式选择)、TDI(测试数据输入)、TDO(测试数据输出),以及一个可选信号TRST(测试复位)。TAP控制器是一个16状态的状态机,通过TMS信号控制指令寄存器(IR)和数据寄存器(DR)的操作。JTAG最初用于板级互连测试,现已扩展为芯片调试、编程和配置的标准接口。

3.3.2 操作流程:JTAG边界扫描测试实施

  1. 硬件连接:将测试设备(如JTAG仿真器)连接到目标板的TAP接口,确保TCK、TMS、TDI、TDO信号正确连接。
  2. 指令加载:通过TMS状态机将TAP控制器置于Shift-IR状态,移入EXTEST指令(用于互连测试)或SAMPLE/PRELOAD指令(用于捕获引脚状态)。
  3. 数据移位:切换到Shift-DR状态,通过TDI移入测试向量(如0xAAAA模式),驱动输出引脚。
  4. 捕获响应:在Capture-DR状态捕获输入引脚状态,通过TDO移出响应数据。
  5. 故障分析:将响应数据与期望值比对,定位开路、短路和桥接故障。

3.3.3 案例拆解:PCB板级互连故障定位

某通信板卡包含3片FPGA、2片DSP和4片DDR3存储器,板级互连测试发现DSP与FPGA之间的数据总线存在间歇性故障。使用JTAG边界扫描测试,对DSP的BSC链移入0xAAAA模式,在FPGA端捕获响应,发现第15位数据线(D15)响应异常。进一步使用0xCCCC模式验证,确认D15存在固定开路故障。通过X-Ray检查发现D15走线在过孔处断裂。该故障若使用传统万用表排查,需逐一测量数十条走线,耗时数小时;而JTAG测试仅需3分钟即完成定位。

关键参数:TCK频率通常为10-50MHz,边界扫描链长度取决于芯片引脚数量(如FPGA的BSC链可达数千位)。测试向量生成需遵循IEEE 1149.1标准中的BSDL(边界扫描描述语言)文件。

3.3.4 常见误区与总结

误区1:JTAG只能用于板级测试。现代JTAG已广泛用于芯片内部调试(如ARM CoreSight)、Flash编程和FPGA配置,其TAP接口已成为SoC调试的标准入口。

误区2:忽略TCK信号完整性。TCK频率较高时,需考虑板级走线阻抗匹配和信号完整性,否则可能导致TAP状态机误触发。

误区3:未处理多TAP器件。当板上有多个JTAG器件时,需通过菊花链(Daisy Chain)连接或使用JTAG路由器(如TI的ScanBridge)进行管理。

JTAG边界扫描技术为IEEE 1500和1687标准提供了重要的参考架构。IEEE 1500借鉴了JTAG的TAP思想但针对芯核测试进行了并行化扩展(支持多TAM通道),而IEEE 1687则直接基于JTAG TAP构建了可重构的扫描网络(如SIB、TDB),实现了对片上多个测试仪器的灵活访问。

3.4 三大技术对比与1500/1687的衔接

技术维度扫描链BISTJTAG
测试对象内部时序逻辑存储器/重复结构板级互连/引脚状态
测试向量来源外部ATPG生成片上PRPG生成外部测试设备
测试访问方式专用SI/SO端口启动信号+结果信号TAP接口(TCK/TMS/TDI/TDO)
故障覆盖率95%+(ATPG)70%-99%(取决于算法)互连故障100%(可测范围内)
面积开销10%-15%5%-10%2%-5%(仅BSC和TAP)
测试时间中等(移位时钟×链长)短(并行执行)短(板级测试)
IEEE 1500角色封装为芯核内部扫描链作为芯核测试资源提供测试壳指令访问
IEEE 1687角色通过SIB接入扫描网络作为仪器接入IJTAGTAP作为网络主控接口

从上述对比可以看出,三大技术各有侧重,但共同构成了完整的DFT体系。IEEE 1500标准的核心贡献在于定义了芯核测试壳(Wrapper),将扫描链、BIST等芯核内部测试资源统一封装,并通过Wrapper串行端口(WSP)和Wrapper并行端口(WPP)提供灵活的测试访问。IEEE 1687标准则进一步解决了SoC中多个芯核和测试仪器的网络化访问问题,通过可重构的扫描链(如SIB、TDB)实现了对任意测试资源的动态配置和访问。

学习建议:在进入IEEE 1500/1687标准细节之前,务必熟练掌握本章三大技术的原理和操作。特别是要理解:扫描链的移位/捕获时序、BIST的PRPG/MISR工作原理、JTAG TAP状态机的状态转换。这些知识将直接映射到1500的Wrapper指令集和1687的网络描述语言(ICL/PDL)中。