中国科技核心期刊      中国指挥与控制学会会刊     军事装备类重点期刊
工程实践

基于VCD波形的FPGA验证平台*

  • 朱岩岩 ,
  • 方建勇 ,
  • 许寿全
展开
  • 江苏自动化研究所, 江苏 连云港 222061

朱岩岩(1992—),男,安徽亳州人,硕士研究生,研究方向为FPGA验证技术。

方建勇(1982—),男,高级工程师。

Copy editor: 胡前进

收稿日期: 2018-12-12

  修回日期: 2019-02-12

  网络出版日期: 2022-05-09

基金资助

* 国防基础科研计划资助项目(JCKY2016207C-D38)

版权

版权所有,未经授权,不得转载、摘编本刊文章,不得使用本刊的版式设计。

FPGA Verification Platform Based on VCD Waveform

  • ZHU Yan-yan ,
  • FANG Jian-yong ,
  • XU Shou-quan
Expand
  • Jiangsu Automation Research Institute, Lianyungang 222061, China

Received date: 2018-12-12

  Revised date: 2019-02-12

  Online published: 2022-05-09

Copyright

Copyright reserved © 2019

摘要

提出一种基于VCD波形的FPGA验证平台的设计方案。首先,简要分析使用VCD波形进行验证的特点,介绍了FPGA验证平台和其软件架构;然后,分别对时钟域的划分、数据缓冲的处理以及异构解算方法等关键技术进行了详细的分析;最后,在FPGA验证平台进行实验验证。验证结果表明,该FPGA验证平台能较好完成基于VCD波形的验证。

本文引用格式

朱岩岩 , 方建勇 , 许寿全 . 基于VCD波形的FPGA验证平台*[J]. 指挥控制与仿真, 2019 , 41(5) : 121 -125 . DOI: 10.3969/j.issn.1673-3819.2019.05.025

Abstract

A design scheme of FPGA verification platform based on VCD waveform is proposed. Firstly, the characteristics of verifying using VCD waveform are briefly analyzed, and the FPGA verification platform and its software architecture are introduced. Then, the key technologies such as clock domain division, data buffer processing and heterogeneous solution method are analyzed in detail. Finally, an experiment is performed on the FPGA verification platform. The verified results show that the FPGA verification platform can complete the verification based on VCD waveform.

物理原型验证方法是一种即耗时又昂贵[1]的ASIC验证方法。对于每一种芯片,物理原型验证要求要有独立的原型设计,并且在对这些芯片进行实时验证时,要考虑所有可能的测试向量输入,这是一项十分棘手的工作。
近年来, 随着现场可编程门阵列(Field Programmable Gate Array,FPGA)技术的快速发展,FPGA以其高灵活性、高集成度、高速度、低功耗和低成本[2]的优势,成为物理原型验证方法的良好载体。基于FPGA的物理原型验证方法在ASIC验证领域得到了越来越广泛的应用。这种方法一方面可使设计者可以较好把握硬件设计的物理特性[3],另一方面可以获得相比较于传统RTL仿真工具1000倍以上的仿真速度[4]
目前, 国外许多半导体厂商已经使用FPGA完成物理原型验证。如飞思卡尔半导体应用基于FPGA的IC原型验证技术, 加速了芯片开发速度、降低了成本、提高了流片成功率[5]。而我国ASIC验证起步较晚,与发达国家还存在较大差异,随着芯片验证的需求不断增加,国内对FPGA物理原型验证方法的研究也日益重视。VCD(Value Change Dump)波形文件是 Verilog HDL语言标准的一部分,它记录了仿真过程中的输入输出引脚变化信息[6]。在ASIC验证中,VCD波形文件被广泛应用于功能验证,如ATE(Automatic Test Equipment)测试设备[7]等。考虑到FPGA技术不断进步的优势,针对中小规模的ASIC设计,将VCD波形与FPGA原型验证相结合,实现基于VCD波形的FPGA原型验证平台,能够替代昂贵的测试设备,有效降低成本,且具有较好的灵活性。
基于此种背景,本文研究开发了一套基于FPGA的硬件和相应软件组成的物理原型验证平台。验证平台的输入使用了VCD仿真波形文件。在本验证平台中,验证平台首先对VCD波形进行预处理,将其下载到FPGA中,并进一步应用到实时环境中。而从被测对象(DUT)返回的响应数据经验证平台验证后被传回上位机,上位机软件可显示该验证结果。验证人员或设计人员可以分析验证结果,找到设计的问题所在。本研究所开发的验证平台提供了一个易于使用,验证成本低廉的验证环境,弥补了模拟仿真与硬件验证之间的不足。

1 VCD仿真波形

VCD仿真波形文件包含的时序信息十分丰富。在将VCD波形文件作为验证平台的输入时,要对VCD波形文件进行处理,提取其内部的有效信息。处理VCD波形文件的方法是先对VCD文件进行周期化切割,测试时序中的定时沿,最后进行向量编译[8]。本研究对VCD波形的处理正是采用了这种方法,将VCD波形文件按照其特定格式以时间周期切割成比特流,测定其定时沿后,以报文形式编译为测试向量。
VCD波形文件的处理只是对其内容信息的提取,使用VCD波形文件作为验证平台的输入时需要另外注意一些问题。一般来说, 这些问题包括[9]:
1) 每次对数据进行处理时,数据大小是不同的,另外,所有信号的时钟频率也不尽相同,单独操纵它们无疑会使硬件设计变得非常复杂;
2) 每个接口信号都需要存储,这增加了存储的需求;
3) 验证平台需要存储每个时间的变化以及该时间点所对应的逻辑值;另一方面,由于时序信息比较丰富,比对这些值需要耗费较长的时间。
由于使用VCD波形文件会面对这些问题,硬件平台的搭建过程要充分考虑VCD仿真波形文件的特点。本研究正基于此对验证平台进行了设计,提出了合理的硬件结构和具体可行的设计方案。

2 FPGA验证平台

2.1 验证平台架构

FPGA能够提供功能验证所需的速度,I/O[10]和可伸缩性[11]。本验证平台使用的FPGA芯片是XILINX Virtex-7系列芯片(XC7V585T)。该芯片提供了丰富的I/O口和可用于存储测试向量和响应数据的28 Mbit的RAM。FPGA验证平台架构如图1所示。其中包括了COMe模块、FPGA模块、DDR3模块、PCIe总线和FMC接口等。
图1 FPGA验证平台架构
在工作流程上,COMe模块对VCD波形进行处理生成测试向量,测试向量在FPGA转化为测试激励,测试激励经FMC接口传到DUT上。读取响应过程则相反,FPGA通过FMC读取DUT的响应数据,并将其与预期值进行比对,最后将验证结果返回PC端进行显示。

2.2 软件架构

FPGA验证辅助软件用于连接模拟器和硬件环境。该软件的体系结构如图2所示,该软件独立于任何计算机辅助设计(CAD)环境,并能运行于Windows操作系统中。它需要一个VCD波形文件作为输入,该软件读取输入并将其转换为一组兼容的Test Pattern。
图2 FPGA验证辅助软件架构
软件首先对输入进行处理生成Test Pattern,接着将Test Pattern输出到验证平台。验证的结果从验证平台传回,再通过软件处理存储为标准VCD文件。

3 关键技术分析

3.1 时钟域的划分

由于待测对象的接口信号属于多个时钟域,如果以时钟域的形式将接口信号划分为多个组,每个组分别对应不同的时钟,那么硬件设计上不仅会变得更为简单,还可以解决多时钟接口信号的问题。
本研究基于FPGA验证平台将时钟域划分为相互独立的4个组,每组的接口信号均包含input、output和inout信号。对于验证平台,同样以时钟域将Test Pattern复制划分为4个组,每组Pattern对应于时钟域接口信号的驱动。时钟域的划分方法如下:
1) 根据时钟域将Pattern划分为4个子Pattern,如Pattern-1, Pattern-2, Pattern-3, Pattern-4,每个Pattern对应一组验证接口信号,Pattern之间相互独立,每个Pattern具有完整的帧结构;
2) 主机依次load这几个Pattern,等待所有Pattern完成加载后才可以开始验证;
3) 根据时钟域通过Pin-ctrl模块将Pattern加载和存储,将此过程划分为对应不同时钟域的几个组,如Group1,Group2,Group3,Group4;
4) 每个Group均包含若干个PIN-DRIVE, PIN-CAPTURE, PIN-INOUT信号;
5) CLK模块提供多个时钟,分别对应于划分的多个Pattern,如clk1,clk2,clk3,clk4;
6) 配置寄存器,定义每个group选用哪个时钟。如果都处于不同时钟域,可以是Group1选clk1,Group2选clk2,Group3选clk3,Group4选clk4;如果某两个或多个Group处于同一时钟域,可以是Group1/2/3都选clk1,Group4选clk4。

3.2 数据缓冲

VCD文件中含有丰富的接口信号信息,在验证过程中,FPGA需要对这些接口信号进行不断处理,但 FPGA上的片上资源有限,不能满足所有数据的处理需求。为解决此问题,验证平台引入了存储器来缓冲数据。
验证平台在FPGA上外挂两个2 G的DDR3存储器,分别用于缓冲来自CPU的测试向量和来自FPGA的响应数据。在验证过程中,CPU产生的测试向量先写入到一块DDR3上,FPGA以读方式读取此块DDR3的测试向量;FPGA产生的响应数据以写方式写入另一块DDR3,CPU从这块DDR3上读取响应数据。其工作原理图如图3所示。
图3 数据缓冲原理图
存储器的引入相当于在CPU与FPGA之间插入一个缓冲器,用来解决数据流量过大引起的存储问题,减轻了FPGA的负担。这种设计方法同时也改善了CPU与FPGA的数据传输速度不匹配的问题,使得FPGA可以实现更灵活的程序设计。

3.3 异构解算

本验证平台采用了CPU+FPGA的架构,其中CPU负责生成测试向量,FPGA担任协处理器,主要用于测试向量注入的解算和验证结果对比的解算。
在注入解算上,使用FPGA片上Block RAM搭建双端口DPRAM组(图4中a1-an)来存储测试向量文件。DPRAM一端接受来自Pattern-load-ctrl块写入的数据;另一端读出数据给Pin-ctrl。其中,Pattern-load-ctrl用于承载测试向量并进行DPRAM的分配,Pin-ctrl能够控制PIN的驱动和获取,并选择对应的接口。图4中的b1-bn代表这些接口。测试向量注入解算的流程如图4所示。
图4 测试向量注入解算过程
响应数据的接收与测试向量注入解算过程相反,这里不再赘述。
在对比解算上,同样使用FPGA片上RAM。响应数据被暂存在一组RAM上(图5中的m1-mn),期望值数据被暂存在另一组RAM上(图5中的n1-nn),根据响应数据中的每条行头标记对应的描述行序号,将两组RAM进行匹配,分别同时进行对比。其解算过程如图5所示。
图5 验证结果对比解算过程
注入解算和对比解算利用了FPGA并行的特点。CPU只负责测试向量的生成与响应数据的读取,而FPGA将数据进行分组,以其并行计算的优势,在较短的时间内同时处理大量接口信号的信息,进而缩短了验证时间。

4 实验验证

FPGA验证平台采用子板加母板架构,用户可根据子板功能对子板进行预先设计,免除了对母板的频繁修改,FPGA验证平台实物如图6所示。
为测试基于VCD波形的FPGA验证平台能否正常工作,本文对一个已验证好的芯片子板进行验证。其结构框图如下图7所示。
图7 实验验证结构框图
其中,DUT为包含Counter模块芯片的被测子板,FPGA验证平台中设计了用于与子板通信的三类接口:DRIVE-PINS-CLK、DRIVE-PINS和CAPTURE-PINS。
启动验证过程中,VCD波形首先被转化为测试向量,测试向量文件如图8所示。
图8 测试向量文件
在本次实验验证中,测试向量格式被定义如下:
1) 测试向量.txt文件由若干行组成,每行96 bit数字,取值1,0或z;行数与记录的时钟周期数有关;
2) [95]:reserve,保留位;
3) [94:80]:ptn-line-num,测试向量文件行号,从零开始递增;
4) [79]:检查使能;
5) [78:64]:ptn-hold-num,表示该行测试向量延续多少个时钟周期;
6) [63:23]:drive-pins的记录值,FPGA验证平台根据该值驱动drv-pins,1为高电平,0为低电平,z为高阻;
7) [31:0]:cap-pins,FPGA验证平台将cap-pins作为待测FPGA设计输出信号的期望值,1为高电平,0位低电平,z表示不关心。
在测试向量文件中,为了验证FPGA验证平台能否正常运行,通过修改mem[4]、mem[6],注入错误行,在Vivado上观察前后波形变化:
测试向量未注入错误行时,图9中cap-error-valid信号一直为低电平,无错误发生。测试向量注入错误行后时,图10中cap-error-valid信号有两处高电平,标记出两处错误,第一个错误期望值为0x00,真实值为0x02;第二个错误期望值为0x03,真实值为0x01。波形图表明,FPGA验证平台能检测出VCD转化的测试向量出现的错误,验证结果能够正确显示出来。
图9 注入错误行前波形
图10 注入错误行后波形
通过本次验证,检验了基于VCD波形的FPGA验证平台的整个工作流程。实验结果证明,基于VCD波形的FPGA验证平台各功能模块能够正常运行,FPGA验证平台能够正常工作。

5 结束语

本文在VCD波形文件处理的基础上,通过分析VCD波形文件特点,合理设计了FPGA硬件平台,包括时钟域的划分,数据缓冲的实现以及异构解算处理方法等。这些方法对ASIC验证有一定借鉴意义。如果进一步扩展,未来验证平台将用于验证小型系统。可以考虑在待验板上集成多个FPGA或ASIC形成DUT,这将更适用于实际的工程应用。
[1]
罗文涛. 基于FPGA的100Gbps光传输数字信号处理器验证平台设计[D]. 西安:西安电子科技大学, 2016.

[2]
彭金龙. 基于SIFT算法的图像匹配处理模块的芯片设计研究[D]. 南京:东南大学, 2016.

[3]
虞致国, 魏敬和. 基于FPGA的ARM SoC原型验证平台设计[J]. 电子与封装, 2007(5):25-28.

[4]
杨滔. 软硬件协同仿真平台关键技术的研究与实现[D]. 合肥:合肥工业大学, 2016.

[5]
戴丽华, 王奔. 基于FPGA平台的IC原型验证技术研究[J]. 轻工科技, 2014, 30(11):62-64.

[6]
张骅, 邓倩妮. 用网格实现大规模集成电路仿真文件模式编译的研究[J]. 计算机应用研究, 2006(8):225-227.

[7]
唐丽, 邹映涛, 唐昱. VCD仿真文件到93000 ATE测试文件转换分析[J]. 电子测试, 2016(18):33-35.

[8]
陈辉, 姚若河, 王晓晗, 等. 一种ATE测试向量时序优化算法[J]. 微电子学, 2011, 41(2):310-314.

[9]
Wani P W, Mehta R, Talware R S, et al. Optimisation of VCD Format and Testbench Reuse in Implementation of ASIC Tester[J]. IETE Journal of Research, 2008, 54(1):13-21.

DOI

[10]
苗露. 高速多通道数字波束形成系统设计与实现[D]. 西安:西安电子科技大学, 2017.

[11]
柴镇. FPGA可重构计算的规模可伸缩性研究及实现[D]. 无锡:江南大学, 2017.

文章导航

/