首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

FPGA测试方法和流程探讨

作者:付浩 秦浩 来源:科技风

摘要:FPGA(Field Programmable Gate Array,现场可编程门阵列)在开发过程除了包含传统软件开发过程中的需求分析、设计、编码实现过程外,由于其自身特点,还包括逻辑综合、布局布线并生成位流文件后固化到FPGA芯片的过程,进而得到了能够完成系统功能的数字电路硬件。本文根据FPGA的开发流程和特点,针对测试方法进行探讨,并找出与之相适应的测试流程并进行优化,对流程的比对测试表明,优化后的测试流程在保持原有流程问题挖掘能力的同时,在静态时序分析发现问题的情况下能够极大的提高测试工作效率。

关键词:FPGA测试(FPGA test);测试方法(test method);静态测试(static test);动态测试(dynamic test);仿真测试(simulation test);板级测试(board level test)

现今的FPGA器件内含大量的等效逻辑门,高速I/O,嵌入微处理器和RAM、高速时钟处理等模块,使用方便、灵活,可以使系统工程师以最快时间来实现系统原型设计、调试、快速查错和升级等任务。通过编程可以很方便地把一个通用的FPGA芯片配置成用户需要的硬件数字电路,因而大大加快电子产品的研发周期,降低研发成本,缩短产品上市时间。由于具有密度高、功耗低、可靠性高以及开发周期短、开发软件投入少、芯片价格低等优点,FPGA器件广泛应用于航天、通信、计算机硬件系统、程序控制、数字系统的测试诊断等方面。伴随着FPGA设计规模的不断增大和廣泛应用,其重要性和复杂程度也日益提高,因此对FPGA进行测试的需求变得尤为迫切[1,2]。本文从FPGA的开发和应用特点来进行研究,对测试方法进行探讨,找出与之相适应的测试流程。

1 FPGA开发过程概述

一般来说,FPGA的开发阶段要经历需求分析、设计、编码实现、逻辑综合、布局布线、烧写等过程。

需求分析:开发方与用户就FPGA所要完成的系统级功能需求、性能需求、接口需求、可靠性需求、出错处理机制等,将用户需求转化为需求规格说明、接口需求规格说明等文档形式的系统级描述。

设计:根据需求分析结果所确定的相应需求来设计FPGA的整体结构、划分功能模块、确定每个功能模块的接口方式和实现方式,以设计说明等文档形式对FPGA进行行为级描述。

编码实现:以硬件描述语言(HDL)的形式对FPGA进行RTL级(Register Transfer Level,寄存器传输级)描述,该过程编码人员通过编写HDL代码来得以实现,目前主流使用VHDL和Verilog两种语言。该过程还要根据FPGA的应用要求,以约束文件的形式来指明布局布线过程中的约束条件。

逻辑综合:使用综合工具将编码实现所得到的RTL级描述转化成最基本的与、或、非门,RAM,触发器等基本逻辑单元组成的逻辑连接,形成FPGA的门级逻辑网表文件。

布局布线:根据所选FPGA芯片的型号,将逻辑综合过程输出的逻辑适配到具体的FPGA芯片上。其实现过程是按照编码实现阶段生成的约束条件要求,将逻辑单元合理地进行布局,适配到FPGA内部的固有硬件结构上,然后根据布局的拓扑结构,利用FPGA内部的各种连线资源,合理正确地连接各个逻辑单元。在该过程加入了器件位置信息以及延迟信息,形成逻辑网表文件和标准时延文件相结合的FPGA门级描述,并输出用于烧写目标FPGA芯片的位流文件。由于生成了基于目标FPGA的时延文件,该阶段生成的逻辑网表文件比综合阶段输出的逻辑网表文件更为接近实际工作情况。

烧写:将布局布线生成的位流文件固化到FPGA芯片中对FPGA进行配置,使其能够正确实现用户需求,其最终形式为数字电路硬件。

FPGA的开发流程见图1。

开发过程中所生成的工作产品形式包括开发文档、HDL代码、约束文件、网表文件、时延文件、位流文件、数字电路硬件。针对不同的工作产品,应该使用与之相匹配的测试方法。

开发文档:包括需求规格说明、接口需求规格说明、设计说明等,其作用是将用户需求转化为开发人员易于从技术角度去理解的文档形式,可以使用文档审查的方式来发现此过程中所引入的错误。审查的内容至少应包括需求描述的正确性和无二义性、对用户需求覆盖的充分性、需求内容的可测试性等方面。

HDL代码:HDL代码是将开发文档所描述的上层需求转化为计算机能够理解的形式,对HDL代码的测试手段包括静态分析、跨时钟域分析、代码审查和功能仿真。

约束文件:约束内容包括位置约束、区域约束和时序约束,用于约束EDA设计工具在布局布线阶段尽量按照文件中的要求来完成逻辑资源的映射和连线,可采用代码审查的方式确认所编写的约束文件满足上层需求要求。

网表文件:该文件用于描述与、或、非门,RAM,触发器等基本逻辑单元的连接关系,针对逻辑综合过程生成的网表文件可使用门级仿真的方式进行测试,针对布局布线过程生成的网表文件的测试则需要与时延文件一起进行时序仿真,需要分别对最大工况、典型工况和最小工况3种情况进行测试。

时延文件:该文件中包括目标FPGA芯片中内部逻辑单元的门延时信息和逻辑单元之间进行互连的布线延时,可采用静态时序分析的方式来验证是否满足时序约束要求。

位流文件:该文件采用二进制数据的方式,将目标FPGA芯片内的全部逻辑资源配置成最终的数字电路硬件,从而使得目标FPGA能够完成所要求的功能,因此直接对最终的数字电路硬件进行测试。

数字电路硬件:是FPGA设计的最终工作产品,采用板级测试的方式来验证它是否正确实现了用户需求。

根据上述描述形成了各开发过程所需要使用的测试方法见图2。

2 FPGA测试流程探讨

按照FPGA开发流程,依据各阶段所需要使用的测试方法,并结合测试过程中对可能发现问题的更改以及回归测试,形成的测试流程见图3。

通过对各阶段能够使用的测试方法进行分析,使用的静态测试方式包括文档审查、静态分析、跨时钟域分析、代码审查、静态时序分析,动态测试方式包括功能仿真、门级仿真、时序仿真和板级测试。在图3右侧所示的测试流程中,静态测试与动态测试交叉进行,又由于测试阶段的功能仿真和门级仿真均耗时较长;而在开发过程中,从完成编码实现后主要还是依赖EDA设计工具自动完成逻辑综合以及布局布线过程[6],该阶段在整个开发过程中的耗时基本可忽略不计。若在静态时序分析时发现问题,待更改代码后再次进行功能仿真和门级仿真的回归测试,会严重影响整个开发工作的进度,鉴于此,可将静态时序分析移至功能仿真测试前进行,即使在静态时序分析中发现问题,对该类问题的更改在功能仿真的首轮测试工作中就能够得到验证,能够大大节省开发时间。基于上述原因,将图3的测试流程进行优化后得到的测试流程见图4。

3 應用情况

分别采用未优化的测试流程(图3)和优化后的测试流程(图4)对4个FPGA测试项目进行了比对测试,对表1所示的比对测试结果进行分析可知,两种测试流程在发现问题的能力方面差别不大;在无静态时序分析问题时,两种测试流程的测试耗时基本一致;在有静态时序分析问题时,使用优化流程能够节省近1/3的测试时间。

4 结论

使用优化后的测试流程进行FPGA测试,在保持了原有问题挖掘能力的同时,在静态时序分析发现问题的情况下能够极大的提高测试工作效率,从而达到提高整个FPGA产品的质量,降低开发成本,缩短开发周期的目的。

参考文献:

[1]朱明程,熊元娇.Actel数字系统现场集成技术[M].北京:清华大学出版社,2004.

[2]刘子宜,刘畅,郑军.基于软件测试技术的FPGA测试研究.电子技术应用,2011,37(5):2834.

[3]PAYAKAPANT,LEE NI CHUNG,SHAHIN TOUTOUNCHI.A builtin self test for testing field programmable gate array(FPGAs) using partial reconfiguration[P].US,7302625,20071127.

[4]DUTTON BF,STROUD CE.Builtin selftest of configurable logic blocks in virtex5 FPGAs[C].Proc.IEEE Southeastern Symp.on System Theory,Tullahoma,2009:230234.

[5]ASADI G.TAHOORI.M.B.Soft error rate estimation and mitigation for SRAM based FPGAs[C].ACM/SIGDA international Symposium on FieldProgrammable Gate Arrays,Monterey,2005:149160.

[6]蒋昊,李哲英.基于多种EDA工具的FPGA设计流程[J].微计算机信息(嵌入式与SOC).2007,23(32):201203.

作者简介:付浩(1982),男,湖北黄冈人,工科学士,工程师,主要研究方向:FPGA测试、软件测试、软件工程。