CN114297962A - 一种自适应接口fpga软硬件协同仿真加速系统 - Google Patents
一种自适应接口fpga软硬件协同仿真加速系统 Download PDFInfo
- Publication number
- CN114297962A CN114297962A CN202111491603.2A CN202111491603A CN114297962A CN 114297962 A CN114297962 A CN 114297962A CN 202111491603 A CN202111491603 A CN 202111491603A CN 114297962 A CN114297962 A CN 114297962A
- Authority
- CN
- China
- Prior art keywords
- simulation
- unit
- fpga
- data
- communication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种自适应接口FPGA软硬件协同仿真加速系统。该系统包括:上位机和硬件板卡端,上位机包括仿真软件单元和通信单元,硬件板卡端包括主FPGA单元和从FPGA单元,仿真软件单元在运行仿真之前控制被测设计的配置流bit文件加载至从FPGA单元,并向主FPGA单元写入激励数据;通信单元负责仿真激励数据、仿真测试数据及被测设计配置数据的传输通信,根据用户测试需求选择PCIE XDMA或USB GPIF II其中一种通信方式;主FPGA单元接收被测FPGA设计仿真结果,并发送至通信单元;从FPGA单元根据激励数据对被测设计进行仿真测试,得到测试数据。本发明可以提高FPGA设计仿真验证的效率。
Description
技术领域
本发明涉及FPGA仿真测试技术领域,特别是一种自适应接口FPGA软硬件协同仿真加速系统。
背景技术
FPGA(Field-Programmable Gate Array,可编程门阵列)仿真验证是FPGA设计测试的必要步骤,是保障FPGA设计质量的有效手段之一。在可编程逻辑器件设计中,对电路进行功能仿真时,现有的传统方法都是纯软件仿真,例如IES、Modelsim、Questasim、NC_Sim、Active-HDL等软件,都是在计算机或服务器上进行软件仿真。随着系统设计的复杂性不断增加,可编程逻辑门阵列(FPGA)器件使用的规模和设计复杂度增长迅猛,特别是针对大规模FPGA逻辑设计时,仿真运行时间长、效率低,尤其是在设计后期,需要进行回归测试时,电路规模庞大,仿真场景众多,用传统的软件仿真时会耗费数个小时、数天甚至数周的时间,从而导致测试周期大大延长,研发成本也相应剧增,最终降低了产品的市场竞争力。因此,需要发明一种针对FPGA设计的仿真验证的加速手段来满足实际应用需求。
目前,常用的FPGA软硬件协同仿真系统主要包括设置于用户PC端中的软件系统部分和对FPGA进行模拟的硬件系统部分。在FPGA仿真测试过程中,软件系统部分用于生成测试激励信号以及处理部分被测FPGA设计,硬件系统部分用于对其他部分被测FPGA设计进行测试得到测试数据。目前公开发表的FPGA软硬件协同仿真系统通信接口单一,且被测设计的加载均需采用下载线手动加载,并且在对FPGA进行仿真时是针对部分被测FPGA设计工程的仿真加速,而不能对整体的被测FPGA设计工程进行加速测试,导致仿真测试的效率较低且系统适应性不强。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供了一种自适应接口FPGA软硬件协同仿真加速系统。
为了解决上述技术问题,本发明实施例提供的一种自适应接口FPGA软硬件协同仿真加速系统,所述系统包括:上位机和硬件板卡端,所述上位机包括:仿真软件单元和通信单元,所述硬件板卡端包括:主FPGA单元和从FPGA单元,其中,
所述仿真软件单元,被配置为产生被测设计仿真的激励数据通过DMA写函数向所述主FPGA单元写入激励数据,并通过DMA读函数回读仿真测试数据,在运行仿真之前控制被测设计的配置流bit文件通过所述通信单元和所述主FPGA单元加载至所述从FPGA单元,同时控制仿真软件进行波形显示;
所述通信单元,被配置为仿真激励数据、仿真测试数据以及被测设计配置数据的传输通信;
所述主FPGA单元,被配置为接收所述激励数据,经缓存后,通过通信接口发送至所述从FPGA单元,并通过所述通信接口接收来自所述从FPGA单元的被测FPGA设计仿真结果,经缓存后,通过通信接口发送至所述通信单元,并在仿真开始前接收来自通信模块的从FPGA配置文件完成对从FPGA单元的配置加载;
所述从FPGA单元,被配置为缓存所述激励数据,根据所述激励数据对被测设计进行仿真测试,得到测试数据,并将所述测试数据发送至所述主FPGA单元。
可选地,所述仿真软件单元包括:软件仿真环境、软件接口模块和自动加载控制模块,其中,
所述软件仿真环境,被配置为对仿真软件进行仿真控制,按照预设bit位序产生被测设计仿真的激励数据和回读仿真测试数据,并在所述仿真软件的软件界面上进行实时显示激励数据波形和仿真测试数据波形;
所述软件接口模块,被配置为采用C语言编程,完成设定子函数的封装以及功能调度程序,并通过预设接口与所述软件仿真环境进行数据接口交互;
所述自动加载控制模块,被配置为在运行仿真之前,控制被测设计的配置流bit文件通过所述通信单元和所述主FPGA单元加载至所述从FPGA,以进行被测设计的自动加载。
可选地,所述通信单元包括:PCIE通信模块和USB通信模块,其中,
所述PCIE通信模块,被配置为将所述激励数据通过PCIE发送至硬件板卡端,并从所述硬件板卡端读取仿真测试数据通过PCIE传送至所述仿真软件单元;
所述USB通信模块,被配置为将所述激励数据通过USB发送至硬件板卡端,并从所述硬件板卡端读取仿真测试数据通过USB传送至所述仿真软件单元。
可选地,所述PCIE通信模块包括:PCIE驱动程序接口和PCIE插槽接口,其中,
所述PCIE驱动程序接口以库函数的方式通过C语言接口调用,使上位机程序能够通过PCIE总线与主FPGA单元进行通讯;
所述仿真软件单元生成的激励数据经过PCIE应用程序对应的驱动程序函数接口发送至所述PCIE插槽接口,并从所述PCIE插槽接口获取仿真测试数据;
所述PCIE插槽接口为PC主板自带的X16的金手指插槽,以将激励数据发送给硬件板卡端,并从所述硬件板卡端读取仿真测试数据并传送至所述仿真软件单元程序。
可选地,所述USB通信模块包括:USB3.0控制器FX3以及USB3.0数据线,
所述仿真软件单元通过所述USB3.0数据线与所述主FPGA单元通信连接,通过所述USB3.0控制器FX3芯片与所述主FPGA单元进行高速数据通信。
可选地,所述主FPGA单元包括:XDMA通信/GPIF II通信逻辑模块、DDR3缓存逻辑模块、DDR3读写仲裁逻辑模块、GTX通信逻辑模块和从FPGA配置逻辑模块。
可选地,所述从FPGA单元包括:被测设计DUT逻辑模块、DUT控制逻辑模块和GTX通信逻辑模块,其中,
所述被测设计DUT逻辑模块,被配置为装载被测设计,将需要仿真加速的被测设计工程整体加载到从FPGA单元逻辑框架中,在仿真开始前,仿真软件单元首先将从FPGA单元设计的配置流文件通过通信单元送入主FPGA单元中,对从FPGA单元进行自动配置,随后即可进行被测设计的硬件仿真测试;
所述DUT控制逻辑模块,被配置为控制被测设计仿真时钟树的工作状态和控制被测设计接口数据的读写;缓存激励数据,并输出激励数据至被测FPGA设计;缓存被测FPGA设计输出的测试数据,并将测试数据通过GTX通信模块发送给主FPGA单元;
所述GTX通信逻辑模块,被配置为根据协议形成实现链路层功能,并以AXI4_Stream协议接口与发送端和接收端实现用户数据交互。
本发明与现有技术相比具有以下有益效果:
1、本发明通过软硬件联合的方式完成被测FPGA设计的测试验证,将传统的在软件平台实现的仿真测试移植到软硬件结合的平台上,将被测FPGA设计加载到硬件FPGA芯片运行,充分利用了FPGA硬件加速的优势,降低了仿真环境的运行负担,提高了FPGA仿真的速度;
2、本发明将被测设计的配置流bit文件通过仿真软件单元发送给主FPGA缓存,实现对从FPGA完成自动加载配置,此种设计无需手动配置,降低了该平台使用的复杂度,提高了平台应用的灵活性,针对不同的被测设计,替换配置流bit文件即可,提高了工作效率;
3、本发明采用了PCIE和USB双通信模式,用户可根据测试硬件条件选择其中任意一种通信模式,仿真软件单元即可通过用户的选择进行通信模式的自动适配,使该平台具有更强的适应性,满足用户的不同测试需求。
附图说明
图1为本发明实施例提供的一种自适应接口FPGA软硬件协同仿真加速系统的结构示意图;
图2为本发明实施例提供的一种主FPGA单元的逻辑架构图;
图3为本发明实施例提供的一种PCIE XDMA通信模块的逻辑架构图;
图4为本发明实施例提供的一种USB3.0通信模块的逻辑架构图;
图5为本发明实施例提供的一种DDR3缓存控制的逻辑架构图;
图6为本发明实施例提供的一种从FPGA自动配置的逻辑框图;
图7为本发明实施例提供的一种从FPGA自动配置流程的示意图;
图8为本发明实施例提供的一种从FPGA单元的逻辑架构图。
具体实施方式
实施例一
参照图1,示出了本发明实施例提供的一种自适应接口FPGA软硬件协同仿真加速系统的结构示意图,如图1所示,该系统可以包括:上位机和硬件板卡端,所述上位机包括:仿真软件单元101和通信单元102,所述硬件板卡端包括:主FPGA单元103和从FPGA单元104,其中,
仿真软件单元可以被配置为产生被测设计仿真的激励数据通过DMA写函数向所述主FPGA单元写入激励数据,并通过DMA读函数回读仿真测试数据,在运行仿真之前控制被测设计的配置流bit文件通过所述通信单元和所述主FPGA单元加载至所述从FPGA单元,同时控制仿真软件进行波形显示;
通信单元可以被配置为仿真激励数据、仿真测试数据以及被测设计配置数据的传输通信;
主FPGA单元可以被配置为接收所述激励数据,经缓存后,通过通信接口发送至所述从FPGA单元,并通过所述通信接口接收来自所述从FPGA单元的被测FPGA设计仿真结果,经缓存后,通过通信接口发送至所述通信单元,并在仿真开始前接收来自通信模块的从FPGA配置文件完成从FPGA单元的配置加载;
从FPGA单元可以被配置为缓存所述激励数据,根据所述激励数据对被测设计进行仿真测试,得到测试数据,并将所述测试数据发送至所述主FPGA单元。
在本发明实施例中,PC端包括仿真软件单元和通信单元,硬件板卡端包括主FPGA单元和从FPGA单元,平台可通过软件和硬件联合的仿真方式提高FPGA设计的仿真验证效率,具有高速运算、易于维护、易于操作、适应性强等优点。
PC端的仿真软件单元运行于Windows操作系统,按照预设的仿真时钟频率,循环产生预设时间片段内被测设计的并行激励数据,通过通信单元快速高效的传送至硬件板卡端的主FPGA单元,完成待测大量激励数据的缓存功能,然后再把激励数据经过高速串行接口GTX发送至从FPGA单元,完成被测设计的仿真验证,并把产生的中间仿真测试数据按照相应的位序转换为被测FPGA设计仿真结果,通过高速串行接口GTX回传到主FPGA单元进行数据缓存,本次时间片段仿真结束后,主FPGA单元产生中断通知仿真软件单元,然后PC端的仿真软件单元再通过通信单元读取主FPGA缓存的测试结果,并在仿真软件界面上进行显示,同时仿真软件单元可以启动下一个仿真时间片段的被测设计功能仿真验证。
在本发明的另一种具体实现方式中,所述仿真软件单元包括:软件仿真环境、软件接口模块和自动加载控制模块,其中,
所述软件仿真环境,被配置为对仿真软件进行仿真控制,按照预设bit位序产生被测设计仿真的激励数据和回读仿真测试数据,并在所述仿真软件的软件界面上进行实时显示激励数据波形和仿真测试数据波形;
所述软件接口模块,被配置为采用C语言编程,完成设定子函数的封装以及功能调度程序,并通过预设接口与所述软件仿真环境进行数据接口交互;
所述自动加载控制模块,被配置为在运行仿真之前,控制被测设计的配置流bit文件通过所述通信单元和所述主FPGA单元加载至所述从FPGA单元,以进行被测设计的自动加载。
在本发明的另一种具体实现方式中,所述通信单元包括:PCIE通信模块和USB通信模块,其中,
所述PCIE通信模块,被配置为将所述激励数据通过PCIE发送至硬件板卡端,并从所述硬件板卡端读取仿真测试数据通过PCIE传送至所述仿真软件单元;
所述USB通信模块,被配置为将所述激励数据通过USB发送至硬件板卡端,并从所述硬件板卡端读取仿真测试数据通过USB传送至所述仿真软件单元。
在本发明的另一种具体实现方式中,所述PCIE通信模块包括:PCIE驱动程序接口和PCIE插槽接口,其中,
所述PCIE驱动程序接口以库函数的方式通过C语言接口调用,使上位机程序能够通过PCIE总线与主FPGA单元进行通讯;
所述仿真软件单元生成的激励数据经过PCIE应用程序对应的驱动程序函数接口发送至所述PCIE插槽接口,并从所述PCIE插槽接口获取仿真测试数据;
所述PCIE插槽接口为PC主板自带的X16的金手指插槽,以将激励数据发送给硬件板卡端,并从所述硬件板卡端读取仿真测试数据并传送至所述仿真软件单元程序。
在本发明的另一种具体实现方式中,所述USB通信模块包括:USB3.0控制器FX3以及USB3.0数据线。
所述仿真软件单元通过所述USB3.0数据线与所述主FPGA通信连接,通过所述USB3.0控制器FX3芯片与所述主FPGA进行高速数据通信。
在本发明的另一种具体实现方式中,所述主FPGA单元包括:XDMA通信/GPIF II通信逻辑模块、DDR3缓存逻辑模块、DDR3读写仲裁逻辑模块、GTX通信逻辑模块和从FPGA配置逻辑模块。
在本发明的另一种具体实现方式中,所述从FPGA单元包括:被测设计DUT逻辑模块、DUT控制逻辑模块和GTX通信逻辑模块,其中,
所述被测设计DUT逻辑模块,被配置为装载被测设计,将需要仿真加速的被测设计工程整体加载到从FPGA单元逻辑框架中,在仿真开始前,仿真软件单元首先将从FPGA单元设计的配置流文件通过通信单元送入主FPGA单元中,对从FPGA单元进行自动配置,随后即可进行被测设计的硬件仿真测试;
所述DUT控制逻辑模块,被配置为控制被测设计仿真时钟树的工作状态和控制被测设计接口数据的读写;缓存激励数据,并输出激励数据至被测FPGA设计;缓存被测FPGA设计输出的测试数据,并将测试数据通过GTX通信模块发送给主FPGA单元;
所述GTX通信逻辑模块,被配置为根据协议形成实现链路层功能,并以AXI4_Stream协议接口与发送端和接收端实现用户数据交互。
在本发明实施例中,对于仿真软件单元、通信单元、主FPGA单元和从FPGA单元进行如下详细描述。
第一、仿真软件单元
软件仿真单元包含软件仿真环境、软件接口模块和自动加载控制模块,其中软件仿真环境可以完成对仿真软件的仿真控制,采用System Verilog编程,按照相应的bit位序产生被测设计仿真的激励数据和回读仿真测试数据,并在仿真软件界面上进行实时显示激励数据波形和仿真测试数据波形;软件接口模块采用C语言编程,完成PCIE XDMA通道或者USB GPIF II通道的DMA读、DMA写、寄存器读、寄存器写等子函数的封装以及功能调度等程序,可以通过System Verilog的DPI接口实现与仿真软件环境进行数据接口交互;自动加载控制模块能够在运行仿真之前,控制被测设计的配置流bit文件通过通信单元和主FPGA单元加载到从FPGA中,从而实现被测设计的自动加载。
仿真软件单元通过DMA写函数向主FPGA单元写入激励数据,PCIE通信模式最小单位为4KB,USB通信模式最小单位为1KB,执行一次仿真加速,最大处理激励数据包为256MB,仿真软件单元每次启动DMA读写最大不超过1MB。如果激励数据包大于256MB,则分多次执行仿真加速处理,如果最终数据不足4KB(1KB),需要补零填充。
下表给出了仿真软件单元与主FPGA交互时的相关寄存器配置定义,仿真软件单元以查询的方式判断相关寄存器,从而实现对从FPGA的自动配置、USB或PCIE通信模式的选择以及对加速板卡相应的读写控制。
表1、FPGA与仿真软件单元交互寄存器列表
USB/PCIE通信模式自适应实现
仿真软件单元的软件接口模块默认的通信模式为PCIE通信,此时Usb_work寄存器配置为0。当用户选用PCIE通信时,仿真软件单元无需进行Usb_work寄存器的配置;当用户选用USB3.0通信时,仿真软件单元首先需要将主FPGA单元用户逻辑寄存器模块的Usb_work寄存器配置为1,当退出USB3.0通信时,需要将Usb_work寄存器配置为0,恢复成默认模式。
从FPGA自动配置加载实现
仿真软件单元的应用函数分别实现从FPGA的配置和被测设计的硬件仿真,两者相互独立,各自执行main函数文件。
提取被测设计文件并加载到从FPGA中,综合编译得到bit文件,仿真软件单元通过DMA写的方式写入主FPGA,并存储于DDR3中,然后主FPGA通过Slave selectMap方式对从FPGA进行配置。
在仿真开始之前,仿真软件单元的自动加载控制模块首先自动读取从FPGA的配置bit文件,将从FPGA配置使能信号S_fpga_config置1,通知主FPGA进行从FPGA配置准备,并告知主FPGA配置文件的数据量Config_data_len,待主FPGA成功完成从FPGA的配置后,向自动加载控制模块发送FPGA状态寄存器告知其从FPGA的配置状态,1为配置成功,0为配置失败。
第二、通信单元
为了增加该仿真加速平台的灵活易用性,仿真软件单元与FPGA通信方式有两种,一种是PCIE通信,另一种是USB3.0通信,USB3.0高速数据通信的功能与PCIE XDMA通信功能相似,在windows系统场景下,用户可以根据实际测试需求选择使用PCIE XDMA或USB3.0GPIF II的通信方式与硬件板卡主FPGA进行通信。
通信单元包括PCIE通信模块和USB通信模块。
PCIE通信模块包含Windows系统下的PCIE驱动程序接口和PCIE插槽接口。Windows系统下的PCIE驱动程序接口以库函数的方式通过C语言接口调用,使上位机程序能够通过PCIE总线与硬件FPGA板卡进行通讯。仿真软件单元生成的激励数据经过PCIE应用程序对应的驱动程序函数接口发送至PCIE插槽接口,同时也可以从PCIE插槽接口获取仿真测试数据;PCIE插槽接口是PC主板自带的X16的金手指插槽,可以将激励数据发送给硬件板卡端;同时也可以从硬件板卡端读取仿真测试数据并传送至仿真软件单元程序。
USB通信模块主要包括USB3.0控制器FX3以及USB3.0数据线,仿真软件单元通过USB3.0控制器FX3芯片完成与主FPGA的高速数据通信。本平台使用的固件代码采用Cypress官方提供的SF_loopback.img,可以实现激励数据和仿真测试数据的双工通信。USB3.0和PCIE采用同一套寄存器地址列表,详见表1。由于USB通信协议只是数据的串行传输,并无特定的通信协议,本发明设计了读写通信协议,具体见表2~表6。
仿真软件单元下发写指令长度为1KB的数据,最终由主FPGA提取寄存器的写配置信息,包括寄存器地址和配置数据。
表2、寄存器写指令
Head(4byte) | R/W(4byte) | Addr(4byte) | Data(4byte) | 填充数据(1020byte) |
帧头 | 1:写指令 | 寄存器地址 | 寄存器配置数据 | 0 |
仿真软件单元下发的寄存器读指令长度为1KB的数据,最终由主FPGA提取寄存器的配置信息,仅仅包括寄存器地址。该指令完成后,仿真软件单元需要启动DMA读指令,完成1KB的数据获取。
表3、寄存器读指令
Head(4byte) | R/W(4byte) | Addr(4byte) | Data(4byte) | 填充数据(1020byte) |
帧头 | 2:读指令 | 寄存器地址 | 0(忽略) | 0 |
仿真软件单元下发寄存器读指令后,再启动DMA读指令,完成1KB的数据获取。仿真软件单元最终读取的实际有效的寄存器值为1KB数据帧的前4个字节,填充数据为无效值。
表4、DMA读:(获取寄存器值)
Data(4byte) | 填充数据(1023byte) |
读取的寄存器值 | 0 |
由于单次DMA写的长度为1KB,因此仿真软件单元下发的激励数据的量为1KB的倍数。
表5、单次DMA写:(激励数据)
激励数据(1024byte) |
Data |
仿真软件单元单次DMA读的长度为1KB,最终的仿真数据量是激励数据量的两倍。
表6、单次DMA读:(仿真结果数据)
仿真数据(1024byte) |
Data |
本发明的硬件板卡端包含两个FPGA,主FPGA单元和从FPGA单元,主FPGA单元上电工作时需要读取外部已经固化在flash芯片中的程序,加载配置流;从FPGA单元外部不连接flash,因此开始仿真之前,仿真软件单元通过PCIE或者USB DMA写的方式写入主FPGA,然后主FPGA通过Slave selectMap方式对从FPGA进行配置完成从FPGA配置流的自动加载。具体介绍如下:
第三、主FPGA单元
主FPGA单元逻辑功能主要包括XDMA通信/GPIF II通信、DDR3数据缓存、DDR3读写仲裁、高速串行GTX通信和从FPGA配置逻辑,其逻辑架构如图2所示,各逻辑模块间采用FIFO进行数据缓存。主FPGA单元接收来自XDMA通信/GPIF II通信模块的激励数据,经DDR3缓存后,通过GTX通信接口发送至从FPGA单元;同时,通过GTX通信接口接收来自从FPGA单元的被测FPGA设计仿真结果,经DDR3缓存后,通过PCIE XDMA/USB3.0通信接口发送至通信单元。各逻辑模块功能详细说明如下:
XDMA通信/GPIF II通信逻辑模块:两种通信模式逻辑的选择是根据仿真软件单元发送的Usb_work寄存器配置情况确定的,Usb_work寄存器配置为1时选择GPIF II通信逻辑,为0时选择XDMA通信逻辑,默认为XDMA通信模式。
XDMA通信逻辑:XDMA是Xilinx封装好的PCIE DMA传输IP,可以很方便的把PCIE总线上的数据传输事务映射到AXI总线上面,实现上位机直接对AXI总线进行读写,并且自动对PCIE本身TLP的组包和解包。如图3所示,该模块主要实现仿真软件单元与主FPGA的高速串行互联,包括仿真软件单元对主FPGA逻辑的寄存器读/写控制、H2C写通道控制和C2H读通道控制,仿真软件单元通过通信单元与主FPGA的XDMA IP进行激励数据和测试数据的交互。仿真软件单元每次启动DMA读、写操作的数据量最大不超过1MB,如果超过1MB,则分多次读写操作。
GPIF II通信逻辑:如图4所示,GPIF II时序采用了STREAMIN和STREAMOUT传输两种模式,单次数据流大小为1KB,该逻辑包括指令数据解析及功能控制模块、DMA读写模块和寄存器读写控制模块。其中,指令数据解析及功能控制模块对仿真软件单元下发的指令进行解析,指令包括寄存器写、寄存器读、DMA写和DMA读,主FPGA对接收到的相应的指令完成相应的操作。仿真软件单元通过USB3.0 DMA写通道下发激励数据到主FPGA,单包数据流大小为1KB,先将激励数据进行缓存后传送到DDR3,完成大量数据缓存。仿真软件单元通过DMA读通道读取FPGA寄存器值或者读取仿真数据时,可以通过读取缓存的形式将单位为1KB的数据流进行上传,根据仿真软件单元下发的寄存器读指令或DMA读指令来选择寄存器或仿真数据的读取。
DDR3缓存逻辑模块:将来自XDMA通信/GPIF II通信模块的激励数据存储在DDR3指定的空间,当存入的数据量达到指定的数据量时,通过GTX通信模块将激励数据写入被测设计及控制模块;同理,通过GTX通信模块接收来自被测设计及控制模块的测试数据,存入DDR3指定的空间,当存入的数据量达到指定的数据量时,通知仿真软件单元进行PCIE或者GPIF II DMA读操作,将所有存储的测试数据送入通信单元。
本发明中DDR3存储空间为1GB,主要用于存储激励数据、测试结果数据和从FPGA配置流文件数据,为了防止数据存储混乱,因此对DDR3的空间主要进行了3部分的空间划分。
表7、DDR3空间划分
DDR3读写仲裁逻辑模块:如图5所示,对DDR3芯片进行读写操作时,读时序与写时序不能同时进行,因为读写共用一套数据总线。为了防止读写冲突,DDR3的读写优先级采用写优先模式。PCIE用户工作时钟为125MHz,DDR3用户时钟为100MHz,仿真软件单元下发的激励数据包缓存在异步WFIFO中,DDR3的控制逻辑实时判断该WFIFO存入的数据量是否达到了4KB,如果满足要求则启动一次DDR3写操作,读取WFIFO中的4KB数据量存于DDR3中,同时如果写操作不忙的时候,读取4KB的数据量存入RFIFO中。
GTX通信逻辑模块:Xilinx提供的Aurora协议的IP核主要是基于GTX传输器作为物理层,根据协议形成实现链路层功能,并以AXI4_Stream协议接口与发送端和接收端实现用户数据交互。本发明通过Xilinx提供的Aurora64B/66B IP来实现高速光纤通信,通道速率达到10.3125Gb/s,完成全双工作模式。
从FPGA配置逻辑模块:该模块通过PCIE完成仿真软件单元对从FPGA的逻辑配置,仿真软件单元把配置流文件通过PCIE存储在主FPGA的DDR3中,然后由主FPGA完成对从FPGA的配置,配置时钟为5MHz。如图6所示,该模块主要包括配置状态检测和数据缓存功能。通过配置接口与从FPGA连接,当主FPGA接收到仿真软件单元发送的从FPGA配置指令时,通过与从FPGA配置信号的接口发送PROGRAM_B信号,等待从FPGA初始化完成,将缓存的从FPGA配置BIT流发送给从FPGA完成对从FPGA的配置;通过状态接口与从FPGA连接,负责从FPGA配置整个过程的控制,完成从FPGA配置程序的写入;将存储在DDR3的配置文件读出进行缓存,由于DDR3读写的数据位宽为256bits,而对从FPGA配置的Slave SelectMAP16模式数据位宽为16bits,因此为了两者数据位宽的匹配,需要把256bits的数据转换为16bits的数据。
图7为从FPGA的配置流程,具体为:
1、等待仿真软件单元配置使能信号,若配置使能信号为高,则向从FPGA发送PROGRAM_B置低信号,并继续执行a);
2、等待从FPGA初始化完成,若返回INIT_B置低信号,则继续执行c),若INIT_B信号不拉低,输出错误状态给仿真软件单元;
3、启动读取DDR3内缓存的从FPGA配置数据,经缓存后通过配置数据线依次发送给从FPGA;
4、配置数据发送完成后,检测从FPGA返回的DONE信号是否变高,变高,代表配置操作成功,新数据生效;若为低电平,代表配置操作失败,输出错误状态给仿真软件单元。
5、用户逻辑寄存器模块:该模块主要实现仿真软件单元与主FPGA交互时的相关寄存器配置,仿真软件单元以查询的方式判断相关寄存器,从而实现对加速板卡相应的读写控制。
第四、从FPGA单元
从FPGA单元逻辑功能主要包括被测设计DUT、DUT控制逻辑、高速串行GTX通信,其逻辑架构如图8所示。各逻辑模块功能详细说明如下:
被测设计DUT逻辑模块:用于装载被测设计,将需要仿真加速的被测设计工程整体加载到从FPGA单元逻辑框架中,进行综合布局布线生成bit文件后,在仿真开始前,仿真软件单元首先将从FPGA设计的配置流文件通过通信单元送入主FPGA中,对从FPGA进行自动配置,随后即可进行被测设计的硬件仿真测试。
DUT控制逻辑模块:该模块完成从FPGA的工作调度,主要控制被测设计仿真时钟树的工作状态和控制被测设计接口数据的读写等。缓存激励数据,并输出激励数据至被测FPGA设计;缓存被测FPGA设计输出的测试数据,并将测试数据通过GTX通信模块发送给主FPGA单元,进而传递到仿真软件单元进行波形显示。
GTX通信逻辑模块:与主FPGA单元GTX通信模块功能一致。
本申请所述具体实施方式可以使本领域的技术人员更全面地理解本申请,但不以任何方式限制本申请。因此,本领域技术人员应当理解,仍然对本申请进行修改或者等同替换;而一切不脱离本申请的精神和技术实质的技术方案及其改进,均应涵盖在本申请专利的保护范围中。
本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
Claims (7)
1.一种自适应接口FPGA软硬件协同仿真加速系统,其特征在于,所述系统包括:上位机和硬件板卡端,所述上位机包括:仿真软件单元和通信单元,所述硬件板卡端包括:主FPGA单元和从FPGA单元,其中,
所述仿真软件单元,被配置为产生被测设计仿真的激励数据通过DMA写函数向所述主FPGA单元写入激励数据,并通过DMA读函数回读仿真测试数据,并在运行仿真之前控制被测设计的配置流bit文件通过所述通信单元和所述主FPGA单元加载至所述从FPGA单元,同时控制仿真软件进行波形显示;
所述通信单元,被配置为仿真激励数据、仿真测试数据以及被测设计配置数据的传输通信;
所述主FPGA单元,被配置为接收所述激励数据,经缓存后,通过通信接口发送至所述从FPGA单元,并通过所述通信接口接收来自所述从FPGA单元的被测FPGA设计仿真结果,经缓存后,通过通信接口发送至所述通信单元,并在仿真开始前接收来自通信模块的从FPGA配置文件完成对从FPGA单元的配置加载;
所述从FPGA单元,被配置为缓存所述激励数据,根据所述激励数据对被测设计进行仿真测试,得到测试数据,并将所述测试数据发送至所述主FPGA单元。
2.根据权利要求1所述的系统,其特征在于,所述仿真软件单元包括:软件仿真环境、软件接口模块和自动加载控制模块,其中,
所述软件仿真环境,被配置为对仿真软件进行仿真控制,按照预设bit位序产生被测设计仿真的激励数据和回读仿真测试数据,并在所述仿真软件的软件界面上进行实时显示激励数据波形和仿真测试数据波形;
所述软件接口模块,被配置为采用C语言编程,完成设定子函数的封装以及功能调度程序,并通过预设接口与所述软件仿真环境进行数据接口交互;
所述自动加载控制模块,被配置为在运行仿真之前,控制被测设计的配置流bit文件通过所述通信单元和所述主FPGA单元加载至所述从FPGA单元,以进行被测设计的自动加载。
3.根据权利要求1所述的系统,其特征在于,所述通信单元包括:PCIE通信模块和USB通信模块,其中,
所述PCIE通信模块,被配置为将所述激励数据通过PCIE发送至硬件板卡端,并从所述硬件板卡端读取仿真测试数据通过PCIE传送至所述仿真软件单元;
所述USB通信模块,被配置为将所述激励数据通过USB发送至硬件板卡端,并从所述硬件板卡端读取仿真测试数据通过USB传送至所述仿真软件单元。
4.根据权利要求3所述的系统,其特征在于,所述PCIE通信模块包括:PCIE驱动程序接口和PCIE插槽接口,其中,
所述PCIE驱动程序接口以库函数的方式通过C语言接口调用,使上位机程序能够通过PCIE总线与主FPGA单元进行通讯;
所述仿真软件单元生成的激励数据经过PCIE应用程序对应的驱动程序函数接口发送至所述PCIE插槽接口,并从所述PCIE插槽接口获取仿真测试数据;
所述PCIE插槽接口为PC主板自带的X16的金手指插槽,以将激励数据发送给硬件板卡端,并从所述硬件板卡端读取仿真测试数据并传送至所述仿真软件单元程序。
5.根据权利要求3所述的系统,其特征在于,所述USB通信模块包括:USB3.0控制器FX3以及USB3.0数据线,
所述仿真软件单元通过所述USB3.0数据线与所述主FPGA单元通信连接,通过所述USB3.0控制器FX3芯片与所述主FPGA单元进行高速数据通信。
6.根据权利要求1所述的系统,其特征在于,所述主FPGA单元包括:XDMA通信/GPIF II通信逻辑模块、DDR3缓存逻辑模块、DDR3读写仲裁逻辑模块、GTX通信逻辑模块和从FPGA配置逻辑模块。
7.根据权利要求1所述的系统,其特征在于,所述从FPGA单元包括:被测设计DUT逻辑模块、DUT控制逻辑模块和GTX通信逻辑模块,其中,
所述被测设计DUT逻辑模块,被配置为装载被测设计,将需要仿真加速的被测设计工程整体加载到从FPGA单元逻辑框架中,在仿真开始前,仿真软件单元首先将从FPGA单元设计的配置流文件通过通信单元送入主FPGA单元中,对从FPGA单元进行自动配置,随后即可进行被测设计的硬件仿真测试;
所述DUT控制逻辑模块,被配置为控制被测设计仿真时钟树的工作状态和控制被测设计接口数据的读写;缓存激励数据,并输出激励数据至被测FPGA设计;缓存被测FPGA设计输出的测试数据,并将测试数据通过GTX通信模块发送给主FPGA单元;
所述GTX通信逻辑模块,被配置为根据协议形成实现链路层功能,并以AXI4_Stream协议接口与发送端和接收端实现用户数据交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111491603.2A CN114297962A (zh) | 2021-12-08 | 2021-12-08 | 一种自适应接口fpga软硬件协同仿真加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111491603.2A CN114297962A (zh) | 2021-12-08 | 2021-12-08 | 一种自适应接口fpga软硬件协同仿真加速系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114297962A true CN114297962A (zh) | 2022-04-08 |
Family
ID=80966284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111491603.2A Pending CN114297962A (zh) | 2021-12-08 | 2021-12-08 | 一种自适应接口fpga软硬件协同仿真加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114297962A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115659885A (zh) * | 2022-12-29 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 仿真测试的系统和方法 |
CN115935876A (zh) * | 2023-03-10 | 2023-04-07 | 杭州朗迅科技股份有限公司 | 一种fpga电路模拟仿真的方法及装置 |
CN116090372A (zh) * | 2023-03-23 | 2023-05-09 | 湖南泛联新安信息科技有限公司 | 一种基于fpga的芯片仿真加速方法和系统 |
-
2021
- 2021-12-08 CN CN202111491603.2A patent/CN114297962A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115659885A (zh) * | 2022-12-29 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 仿真测试的系统和方法 |
CN115935876A (zh) * | 2023-03-10 | 2023-04-07 | 杭州朗迅科技股份有限公司 | 一种fpga电路模拟仿真的方法及装置 |
CN116090372A (zh) * | 2023-03-23 | 2023-05-09 | 湖南泛联新安信息科技有限公司 | 一种基于fpga的芯片仿真加速方法和系统 |
CN116090372B (zh) * | 2023-03-23 | 2023-06-27 | 湖南泛联新安信息科技有限公司 | 一种基于fpga的芯片仿真加速方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114297962A (zh) | 一种自适应接口fpga软硬件协同仿真加速系统 | |
CN112364583B (zh) | 一种fpga软硬件协同仿真系统及方法 | |
CN112286746B (zh) | 针对axi从设备接口的通用验证平台及方法 | |
CN109783954B (zh) | 一种ies联合fpga硬件仿真加速系统 | |
US20040054864A1 (en) | Memory controller | |
US8532975B2 (en) | System and method implementing a simulation acceleration capture buffer | |
WO2018018978A1 (zh) | 一种通用串行总线控制器验证方法、系统及设备 | |
CN111563059B (zh) | 一种基于PCIe的多FPGA动态配置装置及方法 | |
CN111931442A (zh) | Fpga内嵌flash控制器及电子装置 | |
CN108268414A (zh) | 基于spi模式的sd卡驱动器及其控制方法 | |
CN109669729A (zh) | 一种处理器的启动引导方法 | |
US11237832B2 (en) | Module with a serialization unit and improved compatibility with deserialization units of different series | |
CN111314641B (zh) | 一种高帧频图像的采集存储显示系统及方法 | |
CN113270137A (zh) | 一种基于fpga嵌入式软核的ddr2测试方法 | |
CN113868039A (zh) | 一种测试方法、装置及相关设备 | |
CN116225992A (zh) | 一种支持虚拟化仿真设备的NVMe验证平台及方法 | |
CN113961505A (zh) | 一种高性能硬件加速和算法验证系统及方法 | |
US7228513B2 (en) | Circuit operation verification device and method | |
CN116306426A (zh) | 一种基于事务的数字逻辑仿真系统 | |
US7395197B2 (en) | Verification method and system for logic circuit | |
CN114660383A (zh) | 一种通用载荷管理器地检测试板卡 | |
CN114328342B (zh) | 一种用于PCIe异构加速卡的新型程控配置方法 | |
CN110704349B (zh) | 一种用于数据可靠传输的SpaceWire节点装置 | |
CN107870885A (zh) | 通信系统、装置及方法 | |
CN114416019A (zh) | 一种数据管理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |