浅谈Boundary-Scan边界扫描技术
ICT测试仪要求每一个电路节点至少有一个测试点。但随着器件集成度增高,功能越来越强,封装越来越小,SMT元件的增多,多层板的使用,PCB板元件密度的增大,要在每一个节点放一根探针变得很困难,为增加测试点,使制造费用增高;同时为开发一个功能强大器件的测试库变得困难,开发周期延长。为此,联合测试组织(JTAG)颁布了IEEE1149.1测试标准。
一、边界扫描测试原理
边界扫描的原理是在核心逻辑电路的输入和输出端口都增加一个寄存器,通过将这些I/O上的寄存器连接起来,可以将数据串行输入被测单元,并且从相应端口串行读出。在这个过程中,它可以实现3方面的测试。
首先是芯片级测试,即可以对芯片本身进行测试和调试,使芯片工作在正常功能模式,通过输入端输入测试矢量,并通过观察串行移位的输出响应进行调试。
其次是板级测试,检测集成电路和PCB之间的互连。实现原理是将一块PCB上所有具有边界扫描的IC中的扫描寄存器连接在一起,通过一定的测试矢量,可以发现元件是否丢失或者摆放错误,同时可以检测引脚的开路和短路故障。
*后是系统级测试,在板级集成后,可以通过对板上CPLD或者Flash的在线编程,实现系统级测试。
其中,*主要的功能是进行板级芯片的互连测试,如图1所示。
图1 基于边界扫描的板级互连测试
二、IEEE 1149.1标准
边界扫描是欧美一些大公司联合成立的一个组织——联合测试行动小组(JTAG),为了解决印制电路板(PCB)上芯片与芯片之间互连测试而提出的一种解决方案。由于该方案的合理性,它于1990年被IEEE采纳而成为一个标准,即IEEE 1149.1。该标准规定了边界扫描的测试端口、测试结构和操作指令。
1.IEEE 1149.1结构
IEEE 1149.1结构如图2所示,其主要包括TAP控制器和寄存器组。其中,TAP控制器如图3所示;寄存器组包括边界扫描寄存器、旁路寄存器、标志寄存器和指令寄存器,主要端口为TCK、TMS、TDI、TDO,另外还有一个用户可选择的端口TRST。
图2 IEEE 1149.1结构
图3 TAP控制器
2.端口定义如下
(1)TCK(Test Clock)
边界扫描设计中的测试时钟是独立的,因此与原来IC或PCB上的时钟是无关的,也可以复用原来的时钟。
(2)TMS(Test Mode Select)
由于在测试过程中,需要有数据捕获、移位、暂停等不同的工作模式,因此需要有一个信号来控制。在IEEE 1149.1中,仅有这样一根控制信号,通过特定的输入序列来确定工作模式,采用有限状态机来实现。该信号在测试时钟TCK的上升沿采样。
(3)TDI(Test Data In)
以串行方式输入的数据TDI有两种。一种是指令信号,送入指令寄存器;另一种是测试数据(激励、输出响应和其他信号),它输入到相应的边界扫描寄存器中去。
(4)TDO(Test Data Out)
以串行输出的数据也有两种,一种是从指令寄存器移位出来的指令,另一种是从边界扫描寄存器移位出来的数据。
除此之外,还有一个可选端口TRST,为测试系统复位信号,作用是强制复位。
3.TAP控制器
TAP控制器的作用是将串行输入的TMS信号进行译码,使边界扫描系统进入相应的测试模式,并且产生该模式下所需的各个控制信号。IEEE 1149.1的TAP控制器由有限状态机来实现,图4所示为状态转移图。DR表示数据寄存器,IR表示指令寄存器。
图4 TAP控制器的状态转移图
4.寄存器组
(1)指令寄存器(IR,Instruction Register)
如图5所示,指令寄存器由移位寄存器和锁存器组成,长度等于指令的长度。IR可以连接在TDI和TDO的两端,经TDI串行输入指令,并且送入锁存器,保存当前指令。在这两部分中有个译码单元,负责识别当前指令。由于JTAG有3个强制指令,所以该寄存器的宽度至少为2位。
图5 指令寄存器
(2)旁路寄存器(BR,Bypass Register)
旁路寄存器也可以直接连接在TDI和TDO两端,只有1位组成。若一块PCB上有多个具有边界扫描设计的IC,可将每个IC中的边界扫描链串接起来。如果此时需要对其中的某几个IC进行测试,就可以通过BYPASS指令来旁路无须测试的IC。如图6所示,如果需要测试Chip2和Chip3,则在TDI输入110000就可以配置旁路寄存器,此时Chip1的旁路寄存器被置位,表示该芯片在测试过程中被旁路。
图6 旁路寄存器使用举例
(3)标志寄存器(IDR,Identification Register)
如图7所示,在一般的边界扫描设计中,都包含一个固化有该器件标志的寄存器,它是一个32位的标准寄存器,其内容有关于该器件的版本号、器件型号、制造厂商等信息,用途是在PCB生产线上,可以检查IC的型号和版本,以便检修和替换。
在器件标志寄存器的标准格式中,*低位(第0位)为1,用于识别标志寄存器和旁路寄存器的标志位。第1~11位为制造厂商的标识位。根据国际联合电子器件工程委员会所提出的方案,这11位共允许有2032个生产厂家的标识。第12~27位表示器件的型号,总计可以表示216=65536种不同的型号。余下的4位表示同一型号器件的不同版本。
图7 标志寄存器
(4)边界扫描寄存器
边界扫描寄存器是边界扫描中*重要的结构单元,它完成测试数据的输入、输出锁存和移位过程中必要的数据操作。其工作在多种模式,首先是满足扫描链上的串行移位模式,其次是正常模式下电路的数据捕获和更新,如图8所示。
图8 边界扫描寄存器
利用边界扫描寄存器可提供如下的主要测试功能:
▪ 对被测IC的外部电路进行测试,如可测IC之间的互连,此时可以使用外部测试指令EXTEST;
▪ 使用INTEST进行被测电路的内部自测;
▪ 对输入、输出信号进行采样和更新,此时可以完全不影响核心逻辑电路的工作状态。
5.相关指令
JTAG规定了3个强制指令:EXTEST、BYPASS、SAMPLE/PRELOAD。
(1)EXTEST:外测试指令
外测试指令主要用于测试IC和PCB之间的连线或边界扫描设计以外的逻辑电路。执行该指令的主要操作为,将测试矢量串行移位至边界扫描寄存器,以激励被测的连线或外部逻辑电路,同时该寄存器又捕获响应数据,并串行移出测试结果,以便检查。
(2)BYPASS:旁路指令
这是一条由1组成的全1指令串,它的功能是选择该IC中的旁路寄存器BR,决定该IC是否被测试。
(3)SAMPLE/PRELOAD:采样/预装指令
采样指令用于不影响核心逻辑正常工作的条件下,将边界扫描设计中的并行输入端的信号捕获至边界扫描寄存器中,在测试时,通过采样指令捕获所测试逻辑电路的响应。预装指令功能与采样基本相同,只是此时装入边界扫描寄存器的数据是编程者已知或确定的。除了上述必须的指令外,JTAG还定义了部分可选择的指令:INTEST、IDCODE、RUNBIST、CLAMP、HIGHZ。
▪ INTEST为内测试指令,用于测试核心逻辑电路。执行过程与外测试指令基本相似,只是由于被测对象的位置恰好相反,它的激励端和响应测试端正好相反。
▪ IDCODE指令用于从标志寄存器中取出标志代码。
▪ RUNBIST为运行自测试指令,用来执行被测逻辑的自测试功能,需要保证电路本身具有
▪ 自测结构。
▪ CLAMP是组件指令,有两个功能,一是使旁路寄存器为0,另一个是使边界扫描寄存器BSR的输出为一组给定的固定电平。
▪ HIGHZ是输出高阻指令,可以使IC的所有输出端都呈高阻状态,即无效状态。
三、边界扫描测试策略和相关工具
1.板级测试策略
利用边界扫描IEEE 1149.1进行板级测试的策略分以下3步。
① 根据IEEE 1149.1标准建立边界扫描的测试结构。
② 利用边界扫描测试结构,对被测部分之间的连接进行矢量输入和响应分析。这是板级测试的主要环节,也是边界扫描结构的主要应用。可以用来检测由于电气、机械和温度导致的板级集成故障。
③ 对单个核心逻辑进行测试,可以初始化该逻辑并且利用其本身的测试结构。
2.相关EDA工具
工业界主要采用的边界扫描工具为Mentor的BSDArchitect和Synopsys的BSD Compiler。以后者为例,其主要设计流程如图9所示。该流程会生成BSDL文件,该文件是边界扫描测试描述文件,该文件内容包括引脚定义和边界扫描链的组成结构。一般的ATE可以识别该文件,并自动生成相应的测试程序,完成芯片在板上的漏电流等参数的测试。
图9 边界扫描设计流程