在一个系统中,如何划分模块,确定测试位置(即模块的边界)是关系到可测试性设计是否合理的首要问题。模块间最小相关原则和模块内最小相似原则是两个重要依据:前者保证测试可以独立进行,不需要很多其它模块的配合;后者可以使测试能正确反映被测模块的大部分工况,不至于漏测很多工作状态。
很多情况下,从被测模块的边界直接引出信号有困难,测试信号需要经过其它模块引入到被测模块上。如果作为信号路径的模块对信号特征没有改变,则称这种测试路径是透明的,路径模块必须能在旁路模式和正常工作模式之间切换,实现起来有局限性。对于硬件来说,最简单的透明路径是使用跳线。
对于简单嵌入式系统来说,测试一般包括上电自测试和人为测试。后者在故障出现时进行。对于复杂系统来说,还包括定时自动测试,比如在大型程控交换机和飞机机载电子设备的运行过程中,均定时进行自检。
可测试性设计还应考虑测试功能所使用对象的不同。产品设计人员、产品使用人员和产品维护人员对测试内容的要求是同的,需要进行分层次的可测试性设计。
对于硬件和系统的可测试性设计已有IEEE1149.1/4/5等标准可以借鉴,对于单纯的软件测试,目前尚无具体和统一的标准,只有诸如代码格式分析、白盒测试、黑盒测试、覆盖测试等测试方法。软件测试的途径有两个。一是在源代码中增加大量测试代码,使用条件编译指令来控制形成调试、测试和最终发布等不同版本。调测版本的代码规模要比最终的发布版本大很多,在问题解决后,一般将临时性测试代码通过编译开关屏蔽。另外一个软件测试途径是使用专用的测试软件(如法国Telelogic公司的LOGISCOPE测试工具),这些测试软件能完成诸如覆盖测试、代码格式分析等功能,但均是针对特定的语言和操作系统环境,使用上一些限制。
还需要说明的就是“可观测”设计的概念。可观测性和可测试性不同,不需要加入激励信号,只观察系统运行中某些内部状态,比如软件中某个重要变量的数值变化,硬件电路中某个IC引脚的信号电平等。在设计中,应该保留这些观察接口,以便需要时用它来判断和分析系统的问题。一个可测试的系统,一定是可观测的,反之则不然。设计可测试性系统的目的是为了以后修改和改进设计,而使系统具有可观测性则是为了维护系统,判断哪个是出故障的部件,以便更换。可测试性设计一般用于新产品,而可观测性设计用于成熟产品。当然,在结构、安装条件和成本允许的情况下,成熟产品也应具有可测试性。实际上,由于处理器技术和芯片的日新月异,已经不存在真正意义上的成熟产品了。
在一类产品中的可测试性设计应该具有一致性,例如,用红色LED表示电源状态,所有电路板均应采用红色LED,点亮的频率也应该一致。作为企业,应制定相关的测试接口标准,并且这些标准应符合行业习惯或者行业标准。
5 测试和调试接口标准
测试和调试接口标准:JTAG和BDM。
5.1 背景调试模式
在使用传统的ICE来调试时,使用ICE中的CPU来取代目标板中的CPU,目标板和ICE之间使用多芯扁平电缆来连接,而ICE在使用时一般还需要缩主机(一般来PC)来连接。
在一些高端微处理器内部已经包含了用于调试的微码,调试时仿真器软件和目标板上的CPU的调试微码通信,目标板 上的CPU无需取出。由于软件调试指令无需经过一段扁平电缆来控制目标板,避免了高频操作限制、交流和直流的不匹配以及调试线缆的电阻影响等问题。这种调试模式在Motorola公司产品68300系列中被称为背景调试模式BDM(Background Debug Mode)。在仿真器和目标之间使用8芯(或者10芯)的BDM接口来连接,其他公司的嵌入式处理器也有类似功能,不过叫法不同,例如AMD公司在其X86微处理器上提供“AMDebug”的调试接口。
实际上,BDM相当于将ICE仿真器软件和硬件内置在处理器,这使得我们直接使用PC机的并口来调试软件,不再需要ICE硬件,大大节约了汽油发成本。一些调试器供应商也提供这种软件产品(如XRAY)。对于用户来说,为了调试一些特定问题,可以直接使用BDM命令来调试目标系统,以弥补商业调试软件的不足。
BDM接口有8根信号线,也有为10根信号线的,如图2所示。调试软件通过4脚使CPU进入背景调试模式,调试命令的串行信号则8通过脚输入,同时4脚输入信号步时钟,而CPU中的微码在执行命令后会在10脚输出调试结果指示信号。可见,BDM接口引线由并口和PC机相连,调试命令则是通过串行方式输入的。
目前在CPU内置的调试接口和微码方面,各厂家尚无统一标准。处理器厂家、工具开发公司和仪器制造商曾于1998年组成了Nexus 5001 Forum(Nexus 5001论坛),成员包括Motorola、Infineon Technologies、日立、ETAS和惠普公司等,正致力于制定一个统一的片上通用调试接口。这方面的进一步情况可查阅http://www.nexus-standard.org/网站。
5.2 边界扫描测试技术和JTAG接口
边界扫描测试技术(Boundary-SCAN Test Architecture)属于一种可测试性设计。其基本思想是在芯片引脚和芯片内部逻辑之间(即芯片边界位置)增加串行连接的边界扫描测试单元,实现对芯片引脚状态的设定和读取,使芯片引脚状态具有可控性和可观测性。
边界扫描测试技术最初由各大半导体公司(Philips、IBM、Intel等)成立的联全测试行动小组JTAG(Join Test Action Group)于1988年提出,1990年被IEEE规定为电子产品可测试性设计的标准(IEEE1149.1/2/3)。目前,该标准已被一些大规模集成电路所采用(如DSP、CPU、FPGA等),而访问边界扫描测试电路的接口信号定义标准被称为JTAG接口,很多嵌入式处理器内置了这种测试接口。在Cygnal公司的C8051F000系列单片机中和一些FPGA芯片中,JTAG接口不仅能用于测试,也是器件的编程接口。
IEEE1149.1标准支持以下3种测试功能:
*内部测试——IC内部的逻辑测试;
*外部测试——IC间相互连接的测试;
*取样测试——IC正常运行时的数据取样测试。
图3给出了具有2个芯片的系统的边界扫描测试原理。
图3中,TCK为测试同步时钟输入,TMS为测试模式选中输入,TDI为测试数据输入,TDO为测试数据输出,由测试移位寄存器产品。图3中的小方框表示位于芯片外围的边界扫描测试逻辑单元,芯片每个引脚信号经过边界扫描单元和内部的功能单元相连接。
目前,边界扫描技术的应用主要在数字IC的测试上,这种设计思想也可用于模拟系统、板级测试甚至系统测试上。IEEE也制定了和IEEE1149.1相类似的标准IEEE P1149.4(数模混合信号测试总线标准)、IEEE 1149.5(电路板测试和维护总线标准)。