JTAG不只是调试和编程
您可能会熟悉JTAG,这因为您曾使用过带有JTAG接口的工具。处理器经常使用JTAG来为它们的调试、仿真功能提供访问,而所有的FPGA和CPLD则使用JTAG来为它们的编程功能提供访问。
JTAG不只是一项用作处理器调试、仿真的技术
JTAG不只是一项用来给FPGA、CPLD编程的技术
通常与JTAG相关的调试与编程工具只利用了其底层技术的一个方面——即四线JTAG通信协议。
这四个信号,总称测试访问端口或TAP(Test Access Port),是IEEE1149.1标准的一部分。
这个标准是为了提供一项不用针床测试所需求的物理访问程度,或者功能测试所需的定制开发数量就能测试印刷电路板装配(Printed Circuit Board Assemblies)的技术而被开发出来的。
TAP是被设计用来与设备中新加入的的寄存器相互动的,以此来实现这个测试方法。
然而,硅厂商很快就意识到使用TAP访问寄存器所提供的例如调试和编程等其他功能的益处。
用于JTAG测试而特意加入设备中的主要寄存器叫作边界扫描寄存器(Boundary Scan Register)。
正如它名字所提示的那样,这个寄存器中的单个模块,或者单元,都位于设备的边界上,在它的功能核心和与板卡相连的针脚或焊点之间——很多时候
JTAG测试被称为边界扫描。
JTAG/边界扫描是怎样被用来测试一个板卡的?
边界扫描单元(见上图)可以在两种模式中运行。在它的功能模式下,它并不影响设备的运行——这是板卡正常运行时所处在的模式。在它的测试模式下,它断开设备功能核心与针脚的连接。通过把边界扫描单元置于测试模式中,它可以被用来控制从一个被启用的设备向一个网里所驱入的值,而且还可以被用来监视那个网的值。
把对针脚的控制与被启用设备的功能断开明显地使得边界扫描测试开发比传统的功能测试更为容易,因为无论是设备置配,还是启动,都不需要使用针脚。通过提供一个从四针TAP控制和监视设备上所有被启用信号的机制,JTAG显著地减少了测试板卡所需要的物理访问。
这个边界扫描功能主要可以通过两种方式被用来测试一个板卡。第一种方式,连接测试(见下节)提供了很好的测试覆盖率,尤其是对于短路故障。它完全是基于板卡上JTAG设备的功能,连接和网,以及——在XJTAG的情况下——板卡的逻辑功能。第二种方式,就是通过使用板卡上启用JTAG的设备来与外围非JTAG的设备如DDR RAM和闪存等进行通信来扩大这个覆盖率。
什么是JTAG连接测试?
JTAG连接测试检查板卡上启用JTAG设备周围的连接是否如设计中所描述的一样。
这个测试确保在两个启用JTAG的针脚本该相连的地方,一个针脚可以被另一个所控制。在被启用的针脚本不该相连的地方,通过驱动一个针脚并且核查这些数值没有在其它的针脚上被读取出来以测试它们是否有断路故障。
缺失的提拉电阻和固定故障也可以通过连接测试找到,还包括涉及可以用真值表描述其行为的逻辑设备的故障。
基于板卡的网表和被启用设备的JTAG信息,XJTAG会自动生成运行连接测试所需要的向量。
没有启动JTAG的设备怎么办?
虽然主要的设备,比如处理器和FPGA,通常是启用JTAG的,但是在每一个设计中总有许多设备不是这样的。DDR,SDRAM,SRAM,闪存,MDIO控制的以太网PHY,SPI和I2C温度传感器,实时时钟,ADC和DAC就是一些这种设备的例子。
连接测试仍然会为连接这些非JTAG设备和启用JTAG设备的网上的短路故障提供非常好的覆盖率;可是它不能检测JTAG设备或是非JTAG设备处的开路故障。
为了增加这项开路覆盖率,从被启用设备上的边界扫描与外围设备通信是非常有必要的。如果通信能被验证,那么则不存在开路故障。这类测试既可以非常简单,例如点亮LED后再让操作员证实它被激活了,又可以更复杂,例如把数据写入RAM的内存组后再读回。
建立一个JTAG测试系统需要许多工作吗?
利用XJTAG提供的标准非JTAG器件库,您可以无需代码开发就能为您的板卡构建一系列测试,并且运行起来。库文件包含所有非JTAG设备类型的模型,从简单的电阻和缓存到复杂的设备例如DDR3。正因为边界扫描把JTAG设备的功能从其对针脚的控制中分离出来,不论是什么JTAG设备控制外部设备,同样的模型都可以被使用。
大多数板卡已经包含了编程或调试用的JTAG接口,所以不需要额外的设计要求。
我从哪里获取我设备里关于JTAG的信息呢?
想要运行任何基于边界扫描的测试,都需要了解板卡上关于JTAG在被启用的设备上如何实现的一些信息。这个信息是从这些设备的BSDL(Boundary Scan Description Language或边界扫描描述语言)文件中获得的。设备的芯片供应商必须提供BSDL文件才能符合IEEE1149.1标准。
JTAG测试仅用在生产中吗?
完全不是。JTAG控制器作为唯一所需的测试硬件是边界扫描测试的主要益处之一。其它生产测试技术例如飞针,自动光学、X光审查或者针床都需要工程师台架上没有的特殊测试仪器。
在板卡启动时使用边界扫描可以消除不确定性-硬件工程师可以在系统测试之前就能测试原型板卡的制造缺陷,甚至是在固件完成之前。在产品生命周期如此初期开发的测试系统可以很容易地被重复利用,并且扩展到生产阶段。
我为什么要用JTAG/边界扫描来测试我的板卡?
三个简单的字母——BGA
越来越多的设备是以BGA(Ball Grid Array或球栅阵列)封装的形式被提供的。板卡上的每个BGA设备对能使用传统针床或者飞针仪器进行的测试强加了严格的限制。
利用一个简单的四针接口,JTAG/边界扫描允许被启用设备上的信号不用任何直接的物理访问就能被控制和监视。
再三个字母——NRE
建设测试夹具的一次性工程(non-recurring engineering或NRE)费用可能离谱地高。在许多情况下,使用JTAG/边界扫描会消除这样一个夹具的需求,在其它情况下,则可以显著地简化夹具从而大量地节约成本。
更短的测试时间
对于低产量的板卡,总是很难证明测试夹具开发成本的合理性。在这些情况下,一个选择是飞针测试;但是这种技术的测试周期时间往往过长。JTAG、边界扫描测试提供极短的测试时间并且不需要昂贵的夹具。
更低的测试开发成本
由于不同的处理器、FPGA与外部设备交互的方式不同,传统的功能性测试需要高价的且针对于每个板卡的定制开发。JTAG、边界扫描大幅地降低了这类开发成本,因为它提供了一个简易的接口来控制用来与外围设备交互的IO针脚。这个标准接口,对于所有启用JTAG的设备都一样,意味着一套通用的测试模型可以在构建测试系统时被使用,并且重复使用。
测试、编程二合一的工具
JTAG已经经常被用作生产中的一个环节:编程。通过把JTAG也用于边界扫描测试上,很有可能减少生产流程的工序和装卸操作的数量。
适用于原型板卡的、工程师台架上的生产级别测试
传统测试技术需要非常大的和非常贵的仪器。JTAG、边界扫描测试唯一所需要的测试仪器就是一个JTAG控制器——XJTAG XJLink2控制器和一个电脑鼠标一般大小。
卓越的故障诊断
与功能测试不同,JTAG/边界扫描提供了高精度的故障信息以助于快速修复。XJTAG也提供了在板卡布局图上查看故障的物理位置,以及在原理图上浏览电路中故障存在部分的局部设计的功能。
还原连功能测试都无法运行的“死”板
如果板卡不能启动,那么传统功能测试就不能被运行;关键外围设备,例如RAM或者时钟上的简单故障都可以利用JTAG来找到,而功能测试则不能提供任何诊断信息。
资源
高级JTAG指南
了解JTAG的用途
JTAG技术指南
入门级JTAG实现
可测试性设计(DFT)指引
提高电路测试性能的建议
使用XJTAG进行JTAG测试
了解XJTAG如何扩展JTAG的潜力