浅谈FPGA测试与验证方法

发表时间:2020/6/11   来源:《基层建设》2020年第4期   作者:李晓明
[导读] 摘要:FPG在各行各业中应用越来越广泛,其在硬件电路高度集成领域的优势越来越明显,因此FPGA 软件测试验证在产品设计开发中越来越受到重视,它保证了设计的正确性和强壮性,大大提高了FPGA的产品质量。
        太原航空仪表有限公司工程技术部  山西太原  030006
        摘要:FPG在各行各业中应用越来越广泛,其在硬件电路高度集成领域的优势越来越明显,因此FPGA 软件测试验证在产品设计开发中越来越受到重视,它保证了设计的正确性和强壮性,大大提高了FPGA的产品质量。本文结合FPGA开发流程的特点,将测试验证流程嵌入进去,梳理了试验证流程,并阐述了FPGA测试验证方法。
        关键词:FPGA测试;仿真测试
        0 引言
        FPGA(现场可编程门阵列,Field- Programmable Gate Array)是在PAL、GAL、CPLD等可编程器件基础上进一步发展的产物,作为专用集成电路(ASIC)领域中的一种半定制电路而出现。随着现代电子技术的发展,对硬件电路集成度的需求越来越高,系统设计的规模也日益庞大,具备更高可集成性、可重用性、可编程设计等特点的FPGA在硬件电路设计中得到了广泛的应用。
        目前,基于HDL(硬件描述语言)的综合方法是工业界普遍采用的主流设计方法,具有模块化设计、方便移植、设计灵活等优点。随着设计需求的复杂度提高,未经验证的FPGA产品很可能提高后期硬件调试电路的复杂度,无法精确定位故障所在,潜在问题也很难发现,导致人员、时间、成本上的资源浪费。因此为了保障最终设计产品的安全性、合规性、强壮性,对FPGA软件的工程设计进行测试验证就变得尤为重要。
        1  FPGA设计开发简述
        目前,典型的FPGA设计是利用EDA工具针对FPGA芯片进行开发。一般包括设计输入、功能验证、逻辑综合、实现和布局布线、时序验证、芯片编程与调试流程。
        设计输入:分析设计需求,根据性能指标进行FPGA芯片选择,采用自顶向下或层次化的设计方法将所设计的系统划分功能模块,并将各个功能模块采用HDL语言进行行为级描述,实现FPGA设计向EDA工具输入的过程,此阶段可对设计添加约束。
        逻辑综合:所谓综合,是指将较高级抽象层次的描述转换为低层次的描述。即将行为级的代码语言描述编译成由与门、或门、非门、RAM、触发器等基本逻辑单元实例组成的逻辑连接网表,相对于行为级描述,门级描述可综合性更强,但在可读性、灵活性上较差,对设计人员的专业素养要求也更高。
        实现与布局布线:实现是将综合后生成的逻辑网表文件加载到FPGA芯片,布局将逻辑网表中的硬件原语和底层单元映射到芯片内部固有的硬件资源上。布线则是利用连线资源将布局后的拓扑结构中的各个硬件资源根据时序需求进行连接。此流程根据布局布线后的硬件结构生成逻辑网表文件以及根据硬件结构间的连线信息生成标准时延文件,因此此流程生成的逻辑网表文件相较逻辑综合流程更贴近实际工作状态。
        芯片编程与调试:将布局布线后的位数据流文件烧录固化到目标FPGA 芯片中,对目标芯片进行配置,以实现用户的功能需求。
        2  FPGA测试验证的输入文件
        一个完整的FPGA软件开发流程,从设计输入到芯片烧录实现,会形成各类的文档、HDL代码文件、工程文件以及目标实物。
        文档:一般包括设计任务书、软件需求规格说明、详细设计说明以及接口需求规格说明等,文档是设计输入的前端,用于描述所要实现电路功能需求、时序需求、接口需求、性能需求等,将用户需求转化为易于开发人员从技术角度去理解的文档形式,是代码编程的依据。
        代码文件:代码程序以功能分为多个模块,模块也可做为实例被重复调用;约束文件是对输入时序、芯片管脚位置区域等进行设计约束,现在常用的HDL语言有VHDL和Verilog。
        工程文件:包括综合后的逻辑网表文件、布局布线后的逻辑网表文件以及标准时延文件(一般EDA工具会默认最大工况下的延时,即最高温度、最低电压)、位流文件、静态时序分析报告等,。
        目标实物:指的是烧录位流文件后的目标芯片,是最后设计的目标产品。
        3  FPGA测试验证实施
        FPGA 开发流程复杂,从设计输入代码到生成可配置到芯片的位流文件,每个设计流程都是对功能实现描述的转换,这些流程中均有可能引入设计缺陷。因此, FPGA测试验证不应仅仅是进行实物测试以确认功能是否实现,而是应将测试验证嵌入到完整的设计流程中,从不同层次采用多种方法对软件功能、接口、时序、和性能进行确认,以保证FPGA测试验证的一致性,消除设计缺陷及隐患。主要测试方法有:文档审查、代码审查、跨时钟域分析、功能仿真、时序仿真、逻辑等效性检查、静态时序分析和实物验证。
        3.1  文档审查
        文档审查主要靠人工进行分析检查,在设计输入前进行,主要是对设计的需求文档、设计文档的完备性、准确性、一致性和可追踪性进行审查,审查需求描述中有无冲突、有无二义性,检查对用户需求覆盖是否充分,以及需求内容的可测试性等方面。
        3.2  代码审查
        此阶段的验证在设计输入之后和功能仿真之前进行,包括两个方面:代码规则检查和代码对功能实现的审查。


        代码规则检查主要是使用专业的编码规则检查工具,按照顶层、需求或相应规范规定的RTL编码规则集进行检查,需求不同、领域不同、侧重点不同可自定义规则集。编码规则检查内容包括设计规范、赋值语句位宽匹配检查、逻辑冗余代码检查、代码可综合性检查等多方面的综合性检查。针对工具检查后的结果,需要人工进行分析确认问题。
        代码审查则采用人工方式进行,审查对象包括HDL代码、约束文件、原理图和IP 核。此处验证主要依据需求文档和详细设计文档对代码进行逐行审查。审查代码与设计的一致性、逻辑表达的正确性、结构的合理性、可读性和可维护性、可综合性、约束文件的符合性。
        3.3  跨时钟域分析
        跨时钟域分析一般采用专业工具进行验证,当设计中有多个时钟、存在异步复位设计或分频设计时进行。随着FPGA 规模的不断提高,一个设计中存在多个时钟的情形不可避免。多个时钟会引起进程域数据交互时时序混乱,发生跨时钟域问题,引起产品工作不稳定。
        3.4  功能仿真
        功能仿真在代码审查通过之后进行,通过对输出信号仿真,观察输入信号与输出信号的逻辑关系以及内部寄存器值的变化以达到验证逻辑功能的目的。仿真前需要编制功能仿真测试向量集,依托代码搭建基于HDL语言的测试平台(TestBench)进行功能仿真,即通过Verilog语言编写测试模块实现与被测模块的交互。现在FPGA 验证发展趋势是采用面向对象的硬件设计和验证的语言SystemVerilog 来搭建基于事务的层次化的测试平台,利用其约束随机激励生成机制产生满足要求的大量测试向量,可支持断言验证。仿真时语句、分支、条件和状态机等代码覆盖率是保障测试充分性的重要指标。
        3.5  时序仿真
        时序仿真发生在布局布线之后,验证将布局布线后的标准时延信息反标注到逻辑网表中检测有无时序违规,即不满足时序约束条件或器件固有的时序规则。其实针对综合后逻辑网表有门级仿真的验证,主要检查综合结果与原设计是否一致,相较于时序仿真,门级仿真意义不大,而且可以通过逻辑等效性检查来对综合后网表文件进行验证。
        不同芯片的内部延时不一样,不同的布局布线方案延时也不一样,不同工况(最大、最小、典型)下延时也不一样。因此,布局布线后,通过时序仿真,分析信号、接口时序关系、估计系统性能以及检查和消除竞争冒险十分必要。时序仿真一般可复用功能仿真TestBench,只是三种工况下均要进行时序仿真,值得一提的是时序仿真速度较慢。
        3.6  逻辑等效性检查
        逻辑等效性检查主要验证RTL代码、逻辑综合后网表、布局布线后逻辑网表在逻辑功能上是否一致,检查它们设计各流程实现的逻辑等价性,避免逻辑综合、布局布线后引入新问题。是一种静态测试方法,无需测试向量,主要依托专业工具进行验证。
        3.7  静态时序分析
        静态时序分析,简称STA,是通过穷举法抽取整个设计电路的所有时序路径,按照时序约束文件检查电路中是否存在违反设计规则的问题。与时序仿真不同,STA着重于时序性能分析,不关注逻辑功能。在布局布线后即可通过专业工具进行。
        3.8  实物测试
        实物测试是对烧录位流文件后的目标芯片进行实物功能和时序确认,着重验证FPGA 软件与芯片的适配性。因FPGA 的大多数管脚信号在电路板中难以接出观察,实物测试通常是通过外部接口信号或飞线的方式进行验证,如可通过波形发生器、示波器等进行输入、输出信号功能逻辑验证,也可以通过逻辑分析仪等进行更全面的验证,归根结底是硬件电路调试方法。目前多家专业公司也在开发基于通用测试平台的FPGA实物测试,通过通用接口建立测试向量集,进行更充分的验证。
        4.结语
        本文主要介绍了FPGA的设计开发流程,对设计各个设计阶段的输出进行了简述,最后通过将测试验证方法嵌入到各个设计开发流程中,梳理了FPGA测试验证的流程,更高效的执行FPGA测试。随着FPGA 在安全关键领域的进一步应用和普及,FPGA 软件测试验证的显得尤为重要,FPGA 软件测试将具有更加广阔的应用前景。
        参考文献:
        [1]吕欣欣,刘淑芬.FPGA通用验证平台建立方法研究[J].微电子学与计算机,2010, 27(5):46-49.
        [2]刘子宜,刘畅,郑军.基于软件测试技术的FPGA测试研究.电子技术应用,2011,37(5):28-34.
        [3]张中前.基于FPGA设计的功能验证技术[J].机电元件,2012(3):28-31.
        [4]王丽,周明,孙正凯.FPGA软件测试模型及过程管理研究[J].计算机技术与发展,2014,24(10):140-143.
        [5]王硼,刘万和,刘锐等.基于System Verilog可重用测试平台的实现[J].电子技术应用,2015, 41 (2):61 - 64.
        [6]邱云峰,秦鲁东.FPGA可编程逻辑单元测试方法研究[J].计算机与数字工程,2015,43(01):65-69.
        [7]张莉妹,谭琪,张桥华等.基于Modelsim的自动化仿真测试在安全认证中的应用[J].科技风, 2017, (12) : 50 - 51.
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: