0 引言
随着半导体技术的发展,集成电路制程工艺从深亚微米发展到纳米级,晶体管集成度的大幅提高使得芯片复杂度增加,单个芯片的功能越来越强。二十世纪90 年代ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。采用ARM 技术知识产权( IP 核)的微处理器,即ARM 微处理器,已遍及工业控制。消费类电子产 品。通信系统。网络系统。无线系统等各类产品市场,基于ARM 技术的微处理器应用约占据了32 位RISC 微处理器七成以上的市场份额。ARM 芯片的广泛应用和发展也给测试带来了挑战,集成电路测试一般采用实际速度下的功能测试,但半导体技术的发展使得测试开发工程资源按几何规律增长,自动测试 设备(ATE)的性能赶不上日益增加的器件I/O 速度的发展,同时也越来难以满足ARM 等微处理器测试所用的时序信号高分辨率要求,因而必须不断提高自动测试设备的性能,导致测试成本不断攀升。此外,因为ARM 芯片的复杂度越来越高,为对其进行功能测试,人工编写测试向量的工作量是极其巨大的,实际上一个ARM 芯片测试向量的手工编写工作量可能达到数十人年甚至更多。本文针对ARM Cortex 内核的工作原理,提出了一种高效的测试向量产生方法,并在BC3192 测试系统上实现了对ARM Cortex-M3内核微处理器的测试。
1 微处理器测试方法
集成电路测试主要包括功能测试和直流参数的测试,微处理器的测试也包括功能和直流参数测试两项内 容。微处理器包含丰富的指令集,而且微处理器种类繁多,不同微处理器之间很难有统一的测试规范。为了使测试具有通用性,我们有必要对微处理器的测试建立一 个统一的模型,如图1 所示。芯片测试系统为被测微处理器提供电源和时钟,并能够模拟微处理器的仿真通信接口来控制微处理器工作,同时配合仿真时序施加激励向量,从而达到测试目 的。
按微处理器仿真通信接口大致分两类,一类是具有仿真接口(如JTAG)的微处理器,一类是没有仿真接口的微处理器,对于配备类似JTAG 接口的微处理器,测试仪通过仿真一个JTAG 接口对被测芯片进行功能或参数测试。没有配备仿真调试接口的芯片,可以根据芯片的外部接口和引导方式选择测试模型。
1.1 跟踪调试模式
大多数的微处理器都提供了跟踪调试接口,例如最常用的JTAG 接口,Cortex-M3 内核除了支持JTAG 调试外,还提供了专门的指令追踪单元(ITM)。JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1 兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如ARM、DSP、FPGA 器件等。标准的JTAG 接口是4 线:
TMS、TCK、TDI、TDO,分别为模式选择。时钟。数据输入和数据输出线。JTAG 最初是用来对芯片进行测试的,因此使用JTAG 接口测试微处理器具有很多优点。
用JTAG 接口对微处理器进行仿真测试,是通过测试系统用测试矢量模拟一个JTAG 接口实现对微处理器的仿真控制,其核心是状态机的模拟,图2 所示为测试系统使用的JTAG TAP 控制器的状态转换图。
通过测试仪来模拟状态转换就可以实现JTAG 通信控制。
JTAG 在物理层和数据链路层具有统一的规范,但针对不同的芯片仿真测试协议可能略有差异。为了使测试模型具有通用性,我们对测试模型的JTAG 接口做了一个抽象层,如图3 所示。图中抽象层将类型多样的控制函数转化成芯片能识别的数据流来控制被测芯片的工作状态。
1。2 引导模式/FLASH 编程模式
针对没有配备仿真调试接口的微处理器,可以利用引导功能实现对微处理器的测试。因没有配备仿真调试 功能,不能实现仿真测试。因此针对这一类的微处理器测试中,需要在芯片中加载测试代码。大多数的微处理器芯片都具有上电引导功能,可以利用引导功能将测试 代码加载到微处理器中,进而实现功能和直流参数测试。而对于内部配备FLASH 的微处理器可以先将测试代码下载到片内FLASH 中,以实现对微处理器的功能和参数测试。
为了实现对微处理器的测试控制,通常,测试系统利用微处理器的片上通信接口与片上测试程序通信,互相配合完成功能和参数测试。
2 ARM Cortex-M3 的测试
2.1 ARM Cortex-M3 内核简介
ARM Cortex-M 系列微处理器主要用于低成本和低功耗领域,如智能测量。人机接口设备。汽车和工业控制系统。大型家用电器。消费性产品和医疗器械等领域。图4 为Cortex-M 系列微处理器的简要框图。
ARM Cortex-M3 内核搭载了若干种调试相关的特性。
最主要的就是程序执行控制,包括停机(halting)。单步执行(stepping)。指令断点。数据观察点。寄存器和存储器访 问。性能速写(profiling)以及各种跟踪机制。Cortex-M3 的调试系统基于ARM 最新的CoreSight 架构,虽然内核本身不再含有JTAG 接口,但是提供了调试访问接口(DAP)的总线接口。通过DAP 可以访问芯片的寄存器,也可以访问系统存储器,并且可以在内核运行的时候访问,这就对芯片的测试提供了接口支持。集成Cortex-M3 内核的微处理器一般提供一个调试端口(DP)与DAP 相连,目前可用的调试端口包括SWJ〥P,既支持传统的JTAG 调试,也支持新的串行线调试协议。Cortex-M3 内核还能挂载一个嵌入式跟踪宏单元(ETM)。ETM 可以不断地发出跟踪信息,这些信息通过跟踪端口接口单元(TPIU)送到内核的外部,对于外部集成再跟踪信息分析仪的ARM 芯片,可把TIPU 输出的已执行指令信息捕捉到,并且送给芯片测试系统。
2.2 测试向量生成
用自动测试设备(ATE)测试ARM 芯片是一种传统的测试技术,其优点是可以灵活编制测试向量,专注于应用相关的功能模块和参数。但是由于ARM 芯片的功能与应用有相当的复杂性,因此对测试系统所具有的能力也要求较高。这就要求测试设备本身必须要具备测试各种不同功能模块的能力,包含对逻辑。模 拟。内存。高速或高频电路的测试能力等等。同时测试系统最好是每个测试通道都有自己的独立测试能力,避免采用资源共享的方式,以便能够灵活运用在各种不同 的测试功能上。所以常规的ARM 芯片测试设备往往要求相当高的配置才能应对测试需求。
测试的含义非常广泛,就ARM 芯片测试而言,可以定义多种类型的测试,不同类型的测试需要产生不同类型的测试向量。而测试向量生成的方法,虽然可以人工编制,但多数情况需要由测试向量 生成工具(ATPG)生成,才能产生比较完备的测试集。本文介绍的ARM 芯片测试方法,借助对应的ARM 芯片开发工具产生测试代码,再由专用的测试向量生成工具生成测试向量。这种方法的优点是能针对ARM 芯片应用开发人员关心的测试集合产生测试向量,因而比较高效,测试成本也能控制在比较低的水平上。此外,可以借助大量的ARM 芯片应用软件来转码,能大幅减少工作量。缺点是不容易用算法来实现自动生成完备的测试代码。
图5 为ARM 芯片测试向量生成器。测试代码一般可以从ARM 芯片开发例程中获得,测试向量通过编译器编译成ARM 芯片可执行代码,然后与激励向量和期望向量混合生成完整的ARM 芯片测试向量。ARM 芯片测试向量生成工具通过时间参数来确定测试代码。激励向量与期望向量之间的时序关系,ARM 芯片时间参数可从芯片手册中获得。测试向量生成后,通过BC3192 集成开发环境下载到测试系统图形卡中,启动测试程序,激励向量依序施加到被测ARM 芯片的输入端口,同时对输出端进行监测比较获得测试结果。综上,测试向量的产生是ARM 芯片测试的核心,本文所述测试向量生成器通过输入ARM 芯片可执行代码和芯片时间参数来产生测试逻辑,具有易用。高效的特点,现已用于多个ARMCortex 内核微处理器的测试中。
3 结论
本文通过分析ARM Cortex-M3 内核的工作原理和跟踪调试方法,利用通用的ARM 集成开发环境,结合BC3192V50 测试系统的测试向量生成器,能够快速高效产生基于ARM Cortex-M3 内核的微处理器测试向量,进而完成功能和直流参数测试。本案所述方法同样适于其他微处理器的测试。