传统的设计过程和测试过程是分开的,而且测试往往只在设计阶段的后期才被考虑。近年来,测试越来越早地被考虑并出现在设计过程中,被称为“可测性设计”。可测性设计的主要思路就是在设计之初就考虑关于测试方面的设计,并在设计阶段着手解决测试问题,它主要通过调整复用芯片原有的部分逻辑或者加入一些不影响芯片功能的逻辑电路,从而降低芯片的测试难度。
可测性用来描述制造出的芯片被全面测试的难易程度,它包括可控性和可观测性两个方面:
- 可控性:衡量对待测电路内部测试点进行置位的控制能力
- 可观测性:衡量获取待测电路测试点当前状态的能力
可测性设计的目标就是提高可测性和可控性,使待测电路对测试者透明。要实现实时观测电路的运行状态,并在特定的时候人为去掌控整个电路的状态完成测试。对于可测性设计技术,有以下两个评价方向:
- 应用该技术后的电路应该能够得到较高的可测性:要求该技术应该使电路的可控制性和可观测性得到最大的提高,这也是应用可测性设计技术的初衷;
- 应用该技术应该尽可能低地产生额外性能消耗和面积上的增加:因为仅在对电路进行测试时才会用到可测性设计产生的电路,它实际上对完成测试后的芯片来说是一种冗余,所以要努力减少这些冗余,使芯片在正常工作情况下由于这些电路引起的面积以及性能消耗降到最低。
在实际设计过程中,所设计的可测性设计电路结构应该能够使加入该结构后的电路具有较高的可测性,同时要兼顾产生的额外冗余最低。这两个指标往往是相悖的,想要得到较高的可测性就要求加入更多的测试电路,而这无疑将增加面积;想降低额外消耗和面积,那就要牺牲可测性,所以,一个好的可测性设计技术就是要合理权衡这两个指标,目前业界常用的几种可测试性设计技术,主要有扫描技术、边界扫描技术和内建自测试技术等。
一、扫描技术
时序电路的直接测试往往是难以实现的,扫描设计通常能很好地解决这一问题。
扫描设计的主要思想就是把难以进行测试的电路转化为可测的电路。要实现这一目标,需要把电路中原有的一般触发器用可观测可控制的扫描触发器进行代替,这些扫描触发器串接到一起形成扫描链(Scan Chain,SC),这样,在测试模式下,就可以通过扫描链来串行移入移出测试数据,实现对整个电路的控制和观测。单个扫描触发器代替一般触发器的例子如图:
可以看到,扫描触发器在原始触发器的基础上在数据输入端D 增加了一个多路选择器,用以实现对输入数据的选择,其中Scan_in 是扫描数据输入端口,Scan_enable 是输入选择控制端,Scan_out 复用原始输出端Q。常见的扫描触发器的工作模式有正常工作模式和扫描移位模式两种:
(1) 正常工作模式:Scan_enable 为0 时,此时为正常工作模式,D 输入端选通,Q 作为输出端,数据从D 输入,从Q 输出;
(2) 扫描移位模式:Scan_enable 为1 时,此时为扫描移位模式,Scan_in输入端选通,Scan_out 作为扫描输出,测试数据由Scan_in 输入,由Scan_out 输出。
将扫描触发器单元连接在一起,就构成了扫描设计的基本结构。根据是否所有的寄存器都是扫描单元并已连接到扫描链,可以将扫描设计分为全扫描和部分扫描。
通常为了提高电路的性能,我们往往排除那些不符合可测性设计规则的寄存器,这样设计得到的电路一般介于全扫描和部分扫描之间。
对加入扫描设计后的电路进行测试时,我们首先设置模式选择端sc_en 为1,电路处于扫描移位模式,向扫描输入端口sc_in 打入测试向量,比如101,通过扫描链传至每个扫描寄存器;然后我们设置sc_en 端口为0,电路进入正常工作模式,并行向三个原始输入端口A,B,C 打入激励;从输出端口Q 捕获响应数据,分析响应数据就可以达到测试目的。
二、边界扫描(JTAG)技术
边界扫描技术是由联合测试行动小组(Joint Test Action Group,JTAG)提出的一种旨在解决PCB板间测试问题的解决方案,又称为JTAG 标准。边界扫描设计大大提高了板级测试效率,简化了测试和诊断过程,是可测性设计中的关键技术。
边界扫描技术与前文所述的扫描设计的不同之处在于:边界扫描技术是在电路的输入输出引脚与内部逻辑电路之间增加边界扫描单元(Boundary Scan Cell,BSC),并将他们连成扫描通路,
而后者是将电路中的原有的普通时序修改复用成具有扫描功能的单元,然后连成通路。
边界扫描技术的主要实现思路是在芯片每个输入输出引脚和芯片内部逻辑之间插入边界扫描单元,并将他们以串行形式连接到一起形成一条扫描路径。这样,通过边界扫描单元既可以捕捉到引脚的输入数据和内部逻辑电路的输出数据,又可以人为可控的将外部测试数据施加到内部逻辑电路。
边界扫描设计可以实现三个方面的测试:
(1) 芯片级测试,也就是可以对芯片本身进行测试和调试。测试时,使芯片工作在测试模式,通过芯片输入引脚输入测试数据,并观察串行移位的输出响应达到测试目的,必要时也可进行调试;
(2) 板级测试,即检测PCB 板和集成电路之间的互连情况。其原理是将PCB板上具有边界扫描功能的芯片中的扫描寄存器连接起来,通过合适的测试向量,可以发现元件是否存在丢失或者摆放错误,以及检测引脚的开路和短路故障。
(3) 系统级测试,在板级集成后,可以通过对板上可编程逻辑器件或者Flash的在线编程,实现系统级测试。
边界扫描设计结构遵循IEEE1149.1 标准设计,一般包括具有4 或5 个引脚的测试存取通道(Test Access Port,TAP),一组边界扫描寄存器(Boundary ScanRighter,BSR),指令寄存器(Instruction Register,IR),可选的数据寄存器(DataRegister,DR),旁路寄存器(Bypass Register,BR)和一个TAP 控制器(TAPController)。
IEEE1149.1 标准规定TAP 必须有4 个标准信号和一个可选信号,它们分别是TCK,TMS,TDI,TDO,TRST:
- TCK 是JTAG 的时钟信号,
- TDI是测试数据输入信号,
- TDO 是测试数据输出信号,
- TRST 是测试复位信号,低电平有效,
- TMS(Test Mode Select)是测试模式选择信号,由于测试过程中需要通过TAP 控制器产生移位,读数据,写数据等各种状态,所以需要设置一个模式选择信号来控制TAP 控制器产生相应的控制信号。
边界扫描寄存器是边界扫描中最重要的结构单元,它可以存储从内部电路中捕获的数据,也可以存储从外部电路输入的数据,这些数据可以被串行移到扫描路径上的下一个扫描寄存器,也可以被直接输入到内部电路。
指令寄存器由移位寄存器和锁存器两部分组成,当经过TDI 串行输入指令,指令被送入锁存器,保存当前指令,并通过译码单元识别当前指令。当执行某些指令时,解码所得信号将控制相应的数据寄存器对电路的运行状态进行配置。
数据寄存器包括两种,一种是设备ID 寄存器,用于存放设备的ID 号;另一种是对应于相应指令的边界扫描寄存器,允许设置电路进入某些特定状态,比如MBIST 寄存器。
旁路寄存器用于跳过不需要测试的电路,使TDI 和TDO 直连,使输入输出之间的扫描路径最短化,缩短测试路径,提高测试效率。
AP 控制器是一个具有16 种状态的有限状态机,它受模式选择信号TMS 和时钟信号TCK 控制,产生各种控制信号,控制待测电路进入相应状态。
边界扫描技术提供了5个对外接口,可以实现人为可控的向内部电路输入数据,从而设置内部电路的作状态,是很多测试技术的基础。边界扫描技术降低了对测试设备的要求,减少了对测试引脚的占用,但是边界扫描技术的实现需要增加少量测试电路,对芯片的工作速度有一定影响。
三、内建自测试(BIST)技术
内建自测试是一种可测性设计技术,其特点是测试产生与测试应用是通过内建的硬件电路完成的。其基本原理是把测试电路嵌入到待测电路内部,仅需要外部必要的控制信号就能在电路内部产生测试激励并得到测试响应,通过测试响应和期望响应确定电路是否存在故障。
将测试电路移植到待测电路内部,使内建自测试技术具有其它测试技术所不具备的很多优点:简化了测试步骤,不需要大量的测试图形产生,减少了测试时间,减少了输入输出引脚,降低了测试成本。另外,测试电路建立在待测电路所在的芯片上,使得测试电路可以在电路工作时钟频率下进行测试,这种测试称为全速测试(at_speed testing),但是它增加了芯片设计的复杂性。
一般由以下几个部分组成:
- 测试控制器: 控制测试的进程, 保证测试的顺利进行。
- 激励生成器: 产生测试所需要的激励, 在测试控制器的控制下, 输入被测电路(DUT)。芯片的测试向量对于测试的完整性具有很大的影响。激励生成器要产生测试需要的激励, 常见的测试激励或者是一个存有测试向量的ROM, 或者是线性反馈移位寄存器(LFSR)等。
- 输出响应分析电路: 收集被测电路的输出, 分析被测电路的功能是否正确。比较典型的输出响应分析电路是存有预期响应的比较器。被测电路的输出与预期的响应相比较, 即可判断被测电路的对错。
- 输入选通电路: 当系统正常工作的情况下, 输入选通电路选通系统信号, 接到被测电路, 当进行测试时, 输入选通电路选通BIST电路产生的信号, 进行DUT测试。