专利名称:基于边界扫描的可编程逻辑器件自动测试系统与方法
技术领域:
本发明属于电子技术领域,具体涉及一种可编程器件的自动测试方法。
背景技术:
现场可编程门阵列(Field Programmable Gate Array,FPGA),它是在可编程阵 列逻辑(Programmable Array Logic, PAL)、通用阵列逻辑(Generic Array Logic, GAL)、 复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)等可编程器件的基 础上进一步发展的产物。它最初作为专用集成电路(Application Specific Integrated Circuit,ASIC)原型功能验证的途径而出现,既解决了定制电路的不足,又克服了原有可编 程器件门电路数有限的缺点。由于FPGA设计周期短,上市时间快,非重复工程费用(Non-Recursive Engineering,NRE)低的特点,加之具有动态可重配置的特性,因而在民用通信、消费类电子 产品、汽车、医疗等领域中获得了广泛的应用。然而随着FPGA芯片复杂性与密度的爆发式增长,芯片测试面对的挑战也越来越 大。传统的测试方法是将芯片置于特制的开发母板上,将位流文件下载到芯片中,然后通过 信号发生器产生指定的输入信号,作用于芯片上的端口,再通过示波器探针或者母版为芯 片外接的LED灯等观察各输出引脚的信号是否符合预期,人工判断位流文件的正确性。这 种方法效率很低,不可能做批量测试,只能粗略观察有限个输出引脚的信号变化情况,且很 容易发生人为错误。第二种测试方法是使用商业的在线调试软件,如Altera公司的SignalTap和 Xilinx公司的ChipScope等。此类调试软件一般和出品公司的设计软件配套使用,能够捕 获和显示芯片系统中实时信号的状态[1],但这些调试软件只支持自己公司生产的芯片,整 个流程也必须在相应的配套设计软件中进行。这种方法通用性不高,不能用于测试自己设 计的FPGA芯片和自主的设计软件流程。第三种方法是使用商业的测试系统,如安捷伦科技公司的Agilent 93000 Pin Scale测试机[2]。这种方法具有高通用性、高准确性,但其相应的配套软件较为复杂,学习 成本较高,且配套硬件价格极为昂贵,不符合以较低成本进行快速测试的要求。为了克服以上方法的种种缺点,本发明实现了一种基于JTAG(Joint Test Action Group) [3]边界扫描技术的自动下载测试方法,满足了快速、准确的批量化测试要求。参考文献Altera,"Design Debugging Using the SignalTap II Embedded Logic Analyzer,,,2009 ;Verigy,V93000 Technical Documentation Center, "Verigy V93000 SmarTest 6.5.3 Help Documentation,,,2010 ;IEEEStandards, Piscataway, N. J. , "ANSI/IEEE Std 1149. 1-1990 Standard Test Access Port and Boundary-Scan Architecture,,, 1993。
发明内容
本发明的目的在于提供一种能满足快速、准确的批量化测试要求,且学习成本低 的可编程逻辑器件自动测试系统和方法。本发明提供的可编程逻辑器件自动测试方法,是一种基于JTAG (Joint Test Action Group)[3]边界扫描技术的自动下载测试方法。具体包括芯片配置文件的生成、下 载配置FPGA芯片、测试向量的生成和加载,以及测试结果比较等,并构建了相应的测试系 统,全部实现自动化,方便用户对设计电路进行硬件仿真,大大提高测试的效率和准确性。 具体介绍如下
1.基于JTAG边界扫描技术
JTAG测试方法提供了非常高的测试覆盖率,同时无论如何复杂的电路只需要简单的4 个端口(如果包含异步重置信号TRST则为5个端口)即可实现测试,该接口又被称作TAP (Test Access Port),这种方案大大减轻了芯片没有足够物理地址用于访问的问题。这些 TAP端口分别为测试时钟TCK (输入)、测试方式选择TMS (输入)、串行测试数据输入TDI (输入)、串行测试数据输出TDO (输出)。JTAG测试的核心部分是TAP控制器,其作用是将串行输入的TMS信号进行译 码,使边界扫描系统进入相应的工作模式,并产生该模式下所需要的各个控制信号。在 IEEEl 149. 1标准中,对TMS输入序列和TAP控制器的译码状态给出了如图1所示的状态图, 箭头边上的0或1数字表示TMS的值。系统上电后,TAP控制器进入复位(Test-Logic-Reset)状态,首先要设置JTAG的 工作模式,为此需要更新指令寄存器,具体状态转换流程如下“空闲”(Rim-Test/Idle), “选择数据寄存器”(Select-DR-Scan),“选择指令寄存器”(Select-IR-Scan),“捕获指令” (Capture-IR),“指令移位”(Shift-IR),“结束 1”(Exitl-IR),“指令生效” (Update-IR), 最后回到“空闲”状态。在上述过程中的“捕获指令”状态,旧的指令数据被加载到指令寄 存器当中;然后进入到“指令移位”状态,在该状态下,通过TCK的驱动,可以将一条新的特 定指令推送到指令寄存器当中去;再到“指令生效”状态,刚才输入到指令寄存器中的指令 将被译码并使指令正式生效,指定TDI、TD0端口与特定的数据寄存器相连接(如图2所示); 最后,进入到“空闲”状态,等待下一轮控制流程。图2所示的即为测试数据寄存器组,主要包括边界扫描寄存器(Boundary Scan Register),旁路寄存器(Bypass Register),器件标识寄存器(Identification Register),配置寄存器(Config Register)以及指令寄存器(Instruction Register)。边 界扫描寄存器是边界扫描测试中最重要的工作寄存器,它完成测试向量的输入,输出锁存 和移位等测试必需的操作(图2外围一圈寄存器即为边界扫描寄存器);旁路寄存器其实就 是一个一位寄存器,它将该芯片的边界扫描链短路起来,主要用于多芯片串联测试,也可用 于测试JTAG的基本功能是否正常;器件标识寄存器是一个32位的标准寄存器,其内容包含 该芯片的版本号、器件型号、制造厂商等信息,可用于测试芯片是否工作正常;配置寄存器 主要用于芯片的配置下载和回读,它作为32位总线数据的缓冲器,用来实现配置时的串并 转换和回读时的并串转换;指令寄存器即用来选择工作模式的寄存器,根据特定的指令码 选择上述的测试数据寄存器组之一连接在TDI和TDO之间。
要访问由特定指令选定的数据寄存器,仍需要以“空闲”为起点,依次进入“选择 数据寄存器”,“捕获数据”(Capture-DR),“数据移位”(Shift-DR),“结束1” (Exitl-DR), “数据生效”(Update-DR),最后回到“空闲”状态。以选择了边界扫描寄存器链路为例,在 上述过程中的“捕获数据”状态,当前的芯片管脚输出状态数据被捕获至数据寄存器中;然 后进入到“数据移位”状态,在该状态下,通过TCK的驱动,可以将一条新的测试向量数据推 送到数据寄存器当中去,同时旧的管脚输出状态数据从TDO端口输出;再到“数据生效”状 态,刚才输入到数据寄存器中的测试向量将通过锁存器正式加载到芯片管脚上;最后,回到 “空闲”状态,完成一轮对测试向量的加载。2.基于JTAG的可编程逻辑器件自动测试系统
为了实现上述的自动测试方法,本发明首先提出了一套用于自动测试的系统。系统组 成如图3所示,分为硬件和软件两大部分硬件部分包括用于运行自动测试软件的计算机, 以及待测的可编程芯片测试板;软件部分包括编译软件、测试向量生成器、串口控制软件以 及将它们整合在一起的回归测试系统。其中
所述编译软件,与待测的芯片相配套,它用于将用户的项目工程文件编译成芯片配置 文件,该文件下载至FPGA芯片便能将芯片配置成用户所需要的功能。所述测试向量生成器,使用Perl脚本语言编写,它通过在命令行环境下调用传统 的仿真软件(ModelSim工具)对用户的待测设计进行仿真,并将仿真后生成的波形记录文件 转换成所需要的测试向量格式。通过这种方式,可以准确无误地生成各种项目的测试向量, 测试向量的覆盖率也能得到有效保证。所述串口控制软件,使用C++语言编写,它使用Windows XP操作系统提供的通用 链接库控制串口,使其按一定格式发送和接收数据。由于JTAG的TAP端口共有4个,分别 为TCK、TMS、TDI、TD0,而串口输出的数据共有8位,我们规定对应关系如下
串口端口B7B6B5B4B3B2BlBOTAP 端 口TDOTMSTCKTDI
所述回归测试系统,使用平台无关的TCL脚本语言实现,可以无缝地调用上述所有测 试子系统。通过建立回归测试策略,方便用户进行多版本的系统测试,以确认各个版本的修 改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护 升级等阶段的成本。3.基于JTAG的可编程逻辑器件自动测试方法
为了完成全自动化测试的目的,本发明的具体步骤如下(如图4所示) (1).使用TCL脚本环境自动调用用于生成一系列准备文件的Perl脚本。该脚本会 调用编译软件将用户的项目源程序编译成用于下载配置FPGA芯片的位流文件;同时调用 测试向量生成器生成规定格式的测试向量文件。(2). 将PC的串口连接至FPGA的JTAG测试端口(TAP),运行串口控制软件控制 芯片的JTAG端口,改变其TAP控制器的状态,使之分别运行以下几个测试模式
a) 测试旁路。发送Bypass指令,该指令将旁路寄存器连接至TDI和TDO端口之间, 用于测试JTAG是否正常工作。具体过程为先控制JTAG状态机进入“指令移位”状态,发送Bypass指令码(测试
芯片中为“1111”),再控制状态机进入“数据移位”状态,输入固定的一组数据,再读出TDO
的输出,并用软件方法检查输入与输出结果是否一致。如果两组数据一致则表明JTAG正常工作。b)测试标识码。发送IDCode指令,该指令将器件标识寄存器连接至TDI和TDO 端口之间,用于测试芯片是否正常工作。具体过程为先控制JTAG状态机进入“指令移位”状态,发送IDCode指令码(测试 芯片中为“ 1001”),再控制状态机进入“数据移位”状态,输入随意一组32位的数据,再读出 TDO的32位输出,正常情况下输出的数据应该与芯片中预先设定的器件标识码一致。如果 两组数据一致则表明芯片正常工作。c)配置芯片。发送ConfigIn指令,该指令将配置寄存器连接至TDI和TDO端口 之间,用于下载芯片配置文件。具体过程为先控制JTAG状态机进入“指令移位”状态,发送ConfigIn指令码(测 试芯片中为“0101”),再控制状态机进入“数据移位”状态,接着读入步骤(1)生成的芯片配 置文件,通过TDI端口下载至FPGA芯片,至此芯片的功能已经配置完成。d)测试向量加载和比较。发送Extest指令,该指令将边界扫描寄存器连接至TDI 和TDO端口之间,用于按照测试向量进行测试验证。具体过程为先控制JTAG状态机进入“指令移位”状态,发送Extest指令码(测试 芯片中为“0000”),再控制状态机进入“数据移位”状态,接着读入步骤(1)生成测试向量文 件,通过TDI依次加载各组测试向量,并从TDO读取芯片的输出结果,与预期结果相比较。如 比较结果均一致,则测试通过,否则为不合格。(3).统计测试结果,生成波形比较报告。使用TCL脚本环境自动读入待测列表中的下一个项目并重复以上过程。
图 1图 2图 3图 4
IEEE标准1149. 1-1990制定的边界扫描状态机。 边界扫描寄存器组。 自动测试系统组成。 自动测试方法流程图。
具体实施例方式为了模拟用户的测试需求,我们选取了各式待测例子共计105个,其中纯组合电 路例子共计51个,时序电路例子共计56个;从功能上来看,包括简单的加法器、乘法器、比 较器、加解密逻辑,也包括复杂的唱歌、VGA端口操控、通信等应用。另外,测试板选用的一 款FPGA芯片支持JTAG边界扫描技术,并有与之配套的编译软件,满足测试要求。测试时只需要在命令行环境下输入一项命令,就能对所有105个例子进行综合、 编译、下载、测试和统计,全程无需人工操作,极大地方便用户进行重复测试。经验证,绝大 部分例子均能一次性测试通过,而测试失败的例子可以通过查看波形比较报告发现存在的 问题,人工修改源文件的相关问题,最终也能测试通过。以简单的加法器项目adder4为例,它的源程序包括adder4. ν和adder4_teSt. ν, 前者为行为级网表文件,后者为仿真文件。运行回归测试系统时,首先会调用Perl脚本自 动生成用于配置芯片的位流文件adder4. bit和测试向量文件adder4. txt。接着会调用串口控制软件进行JTAG测试,依次进行旁路测试和标识码测试后,将位流文件下载至FPGA, 读入测试向量文件并通过边界扫描链加载测试向量,读出测试的结果后与仿真出的预期结 果比较,最后得到波形比较报告文件adderf. rpt。在整个测试流程中,用户只需要简单的输入一条命令就能自动完成整个测试流 程。而如果使用老式的纯手工测试,不仅效率极低,而且极易发生各种人为错误;再相对于 Altera公司的SignalTap和Xilinx公司的ChipScope,这些工具虽然测试准确,但在测试 过程中仍然需要一定的手工操作,对于大批量的测试任务,用户仍然需要耗费大量时间和 精力进行操作,且其只适用于各自公司生产的芯片;最后对于安捷伦科技公司的Agilent 93000 Pin Scale测试机,虽然它的测试准确度、通用性和速度都极高,但也需要用户提前 准备好位流文件和测试向量,另外该机器配套的软件使用门槛极高,需要花费大量时间学 习其使用方法。在实际使用本发明提出的自动测试系统和方法时发现,这套工具不仅极大地方便 了用户对工程代码的硬件仿真测试,也能够用于对FPGA芯片本身进行硬件测试如互连遍 历测试,相当具有实用性。
权利要求
基于边界扫描的可编程逻辑器件自动测试系统,其特征在于包括硬件和软件两大部分硬件部分包括用于运行自动测试软件的计算机,以及待测的可编程芯片测试板;软件部分包括编译软件、测试向量生成器、串口控制软件以及将它们整合在一起的回归测试系统;其中所述编译软件,与待测的芯片相配套,它用于将用户的项目工程文件编译成芯片配置文件,该文件下载至FPGA芯片,将芯片配置成用户所需要的功能;所述测试向量生成器,通过在命令行环境下调用仿真软件,对用户的待测设计进行仿真,并将仿真后生成的波形记录文件转换成所需要的测试向量格式;所述串口控制软件,使用Windows XP操作系统提供的通用链接库控制串口,使其按一定格式发送和接收数据;相应于JTAG的4个TAP端口TCK、TMS、TDI、TDO,串口输出的数据共有8位,其对应关系如下串口端口B7B6B5B4B3B2B1B0TAP端口TDO TMS TCKTDI 所述回归测试系统,使用平台无关的TCL脚本语言实现,它无缝地调用上述所有测试子系统;通过建立回归测试策略,实现用户进行多版本的系统测试,以确认各个版本的修改没有引入新的错误或导致其他代码产生错误。
2.一种基于边界扫描的可编程逻辑器件自动测试方法,其特征在于具体步骤如下(1)使用TCL脚本环境自动调用用于生成一系列准备文件的Perl脚本,该脚本调用编译软件将用户的项目源程序编译成用于下载配置FPGA芯片的位流文件;同时调用测试向 量生成器生成规定格式的测试向量文件;(2 )将PC的串口连接至FPGA的JTAG测试端口,运行串口控制软件控制芯片的JTAG测 试端口,改变其TAP控制器的状态,使之分别运行以下几个测试模式a)、测试旁路发送Bypass指令,该指令将旁路寄存器连接至TDI和TDO端口之间, 用于测试JTAG是否正常工作;b)、测试标识码发送IDCode指令,该指令将器件标识寄存器连接至TDI和TDO端口 之间,用于测试芯片是否正常工作;c)、配置芯片发送ConfigIn指令,该指令将配置寄存器连接至TDI和TDO端口之 间,用于下载芯片配置文件;d)、测试向量加载和比较发送Extest指令,该指令将边界扫描寄存器连接至TDI和 TDO端口之间,用于按照测试向量进行测试验证;(3)统计测试结果,生成波形比较报告;(4)使用TCL脚本环境自动读入待测列表中的下一个项目,并重复以上过程。
3.根据权利要求2所述的方法,其特征在于所述测试旁路的具体步骤为先控制JTAG 状态机进入“指令移位”状态,发送Bypass指令码,再控制状态机进入“数据移位”状态,输 入固定的一组数据,再读出TDO的输出,并用软件方法检查输入与输出结果是否一致;如果 两组数据一致则表明JTAG正常工作。
4.根据权利要求2所述的方法,其特征在于所述测试标识码的具体步骤为先控制 JTAG状态机进入“指令移位”状态,发送IDCode指令码,再控制状态机进入“数据移位”状 态,输入随意一组32位的数据,再读出TDO的32位输出,如果该组数据与芯片内部预设的标识码一致则表明芯片正常工作。
5.根据权利要求2所述的方法,其特征在于所述配置芯片的具体步骤为先控制JTAG 状态机进入“指令移位”状态,发送ConfigIn指令码,再控制状态机进入“数据移位”状态, 接着读入步骤(1)生成的芯片配置文件,通过TDI端口下载至FPGA芯片。
6.根据权利要求2所述的方法,其特征在于所述测试向量加载和比较的具体步骤为 先控制JTAG状态机进入“指令移位”状态,发送Extest指令码,再控制状态机进入“数据移 位”状态,接着读入步骤(1)生成测试向量文件,通过TDI依次加载各组测试向量,并从TDO 读取芯片的输出结果,与预期结果相比较,如比较结果均一致,则测试通过,否则为不合格。
全文摘要
本发明属于电子技术领域,具体为一种基于边界扫描的可编程逻辑器件自动测试系统与方法。所述测试方法包括芯片配置文件的生成、下载配置FPGA芯片、测试向量的生成和加载,以及测试结果比较等,并构建了相应的测试系统,全部实现自动化。本发明由软件自动生成用户待测项目的测试向量,结合JTAG自动下载测试软件实现对用户电路的硬件功能在线测试。使用脚本化测试环境,使得一系列繁琐的人工测试操作转化为全自动的软件流程,大大提升测试的速度和准确性。
文档编号G01R31/317GK101995546SQ20101054505
公开日2011年3月30日 申请日期2010年11月16日 优先权日2010年11月16日
发明者包杰, 周学功, 王伶俐, 王颖, 童家榕 申请人:复旦大学