CN112364583B - 一种fpga软硬件协同仿真系统及方法 - Google Patents
一种fpga软硬件协同仿真系统及方法 Download PDFInfo
- Publication number
- CN112364583B CN112364583B CN202011334416.9A CN202011334416A CN112364583B CN 112364583 B CN112364583 B CN 112364583B CN 202011334416 A CN202011334416 A CN 202011334416A CN 112364583 B CN112364583 B CN 112364583B
- Authority
- CN
- China
- Prior art keywords
- data
- simulation
- unit
- ddr3
- buffer
- 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.)
- Active
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 229
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000004891 communication Methods 0.000 claims abstract description 131
- 230000005284 excitation Effects 0.000 claims abstract description 108
- 238000013461 design Methods 0.000 claims abstract description 60
- 238000003860 storage Methods 0.000 claims description 21
- 230000003139 buffering effect Effects 0.000 claims description 18
- 238000013500 data storage Methods 0.000 claims description 16
- 238000012360 testing method Methods 0.000 abstract description 25
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 238000012795 verification Methods 0.000 description 3
- 239000005441 aurora Substances 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/02—CAD in a network environment, e.g. collaborative CAD or distributed simulation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种FPGA软硬件协同仿真系统及方法,该系统包括:上位机和FPGA板卡;其中,上位机,包括仿真软件单元和第一通信单元;所述仿真软件单元,用于根据预设的仿真时钟频率循环提取预设时间段内的仿真激励数据以及接收并显示所述FPGA板卡反馈的仿真结果数据;所述第一通信单元,用于将所述仿真激励数据发送给所述FPGA板卡,以及接收所述FPGA板卡基于所述仿真激励数据反馈的仿真结果数据;FPGA板卡,与所述仿真软件单元连接,用于装载被测FPGA设计工程,并根据所述仿真激励数据进行仿真运算得到所述仿真结果数据。本申请解决了现有技术中仿真测试的效率较低的技术问题。
Description
技术领域
本申请涉及FPGA仿真技术领域,尤其涉及一种FPGA软硬件协同仿真系统及方法。
背景技术
随着FPGA技术的迅猛发展,FPGA芯片被广泛应用于多个领域。为了保障FPGA芯片的正常运行,在FPGA芯片设计过程中,对FPGA芯片测试是必要的步骤,也是保障FPGA芯片设计质量的有效手段之一。随着应用环境越来越复杂,FPGA芯片仿真难度也在日益快速增长。因此,如何加快FPGA芯片的开发速度,缩短FPGA芯片验证的周期是FPGA技术中的一个重要环节。
目前,主要采用FPGA软硬件协同仿真系统对FPGA进行仿真。现有的FPGA软硬件协同仿真系统主要包括设置于用户PC端中的软件系统部分和对集成电路芯片进行模拟的硬件系统部分。在FPGA仿真测试过程中,软件系统部分用于生成测试激励信号以及处理部分被测FPGA设计,硬件系统部分用于对其他部分被测FPGA设计进行测试得到测试数据。由于现有的FPGA软硬件协同仿真系统在对FPGA进行仿真时是对部分被测FPGA设计工程,而不能对全部的被测FPGA设计工程进行测试,导致仿真测试的效率较低。
发明内容
本申请解决的技术问题是:针对现有技术中仿真测试的效率较低的问题,本申请提供了一种FPGA软硬件协同仿真系统及方法,本申请实施例所提供的方案中,将被测FPGA设计工程整体装载到FPGA板卡,能够在FPGA板卡中对被测FPGA设计工程整体进行仿真验证,避免现有技术中对部分被测FPGA设计进行验证,所导致仿真测试的效率较低的问题。
第一方面,本申请实施例提供一种FPGA软硬件协同仿真系统,该系统包括:上位机和FPGA板卡;其中,
所述上位机,包括仿真软件单元和第一通信单元;所述仿真软件单元,用于根据预设的仿真时钟频率循环提取预设时间段内的仿真激励数据以及接收并显示所述FPGA板卡反馈的仿真结果数据;所述第一通信单元,用于将从所述仿真软件单元接收的所述仿真激励数据发送给所述FPGA板卡,以及将从所述FPGA板卡接收的所述仿真结果数据发送给所述仿真软件单元;
所述FPGA板卡,与所述仿真软件单元连接,用于装载被测FPGA设计工程,并根据所述仿真激励数据进行仿真运算得到所述仿真结果数据。
可选地,所述FPGA板卡包括主FPGA模块和从FPGA模块;其中,
所述主FPGA模块,与所述仿真软件单元以及所述从FPGA模块连接,用于将所述仿真激励数据发送给所述从FPGA模块,以及将从所述从FPGA模块接收的所述仿真结果数据发送给所述仿真软件单元;
所述从FPGA模块,用于加载所述被测FPGA设计工程,并根据所述仿真激励数据进行仿真运算得到所述仿真结果数据。
可选地,所述主FPGA模块,包括:第二通信单元、DDR3读写仲裁单元、DDR3数据缓存器以及第三通信单元;其中,
所述DDR3数据缓存器,包括激励数据存储区和仿真结果数据存储区,所述激励数据存储区用于缓存所述仿真激励数据,所述仿真结果数据存储区用于缓存所述仿真结果数据;
所述第二通信单元;与所述第一通信单元连接,用于从所述第一通信单元接收所述仿真激励数据并将所述仿真激励数据发送给所述DDR3数据缓存器,以及当所述第二存储空间存储量达到第一预设阈值时从所述DDR3数据缓存器中读取所述仿真结果数据;
所述第三通信单元,用于将所述从FPGA模块接收所述仿真结果数据并将所述仿真结果数据发送给所述DDR3数据缓存器,以及当所述第一存储空间存储量达到第二预设阈值时从所述DDR3数据缓存器中读取所述仿真激励数据;
所述DDR3读写仲裁单元,用于控制所述第二通信单元或所述第三通信单元从所述DDR3数据缓存器读写所述仿真激励数据和所述仿真结果数据。
可选地,所述主FPGA模块,还包括:两个WFIFO缓存单元和两个RFIFO缓存单元;其中,
所述两个WFIFO缓存单元,包括设置于所述第二通信单元和所述DDR3读写仲裁单元之间的第一WFIFO缓存单元,以及设置于所述DDR3读写仲裁单元和所述第三通信单元之间第二WFIFO缓存单元,所述第一WFIFO缓存单元用于写缓存所述仿真激励数据,所述第二WFIFO缓存单元用于写缓存所述仿真结果数据;
所述两个RFIFO缓存单元,分别设置于所述第二通信单元和所述DDR3读写仲裁单元之间的第一RFIFO缓存单元,以及设置于所述DDR3读写仲裁单元和所述第三通信单元之间第二RFIFO缓存单元,所述第一RFIFO缓存单元用于读缓存所述仿真结果数据,所述第二RFIFO缓存单元用于读缓存所述仿真激励数据;
所述DDR3读写仲裁单元,还用于实时判断所述第一WFIFO缓存单元中缓存数据量是否达到第三预设阈值;若达到,则控制所述DDR3数据缓存器启动一次写操作,读取所述第一WFIFO缓存单元中数据并存储到所述DDR3数据缓存器中;以及确定所述DDR3数据缓存器不进行写操作时,从所述DDR3数据缓存器中读取预设大小的数据缓存到所述DDR3读写仲裁单元和所述第三通信单元之间的第二RFIFO缓存单元中。
可选地,所述从FPGA模块,包括:第四通信单元、被测设计DUT单元、DUT控制逻辑单元以及异步缓存器;其中,
所述第四通信单元,与所述第三通信单元连接,用于从所述第三通信单元获取所述仿真激励数据,以及将所述仿真结果数据发送给所述第三通信单元;
所述被测设计DUT单元,用于装载所述被测FPGA设计工程,以及根据所述仿真激励数据进行仿真运算得到所述仿真结果数据;
所述DUT控制逻辑单元,与所述被测设计DUT单元连接,用于控制被测设计DUT单元中被测FPGA设计仿真时钟的工作状态以及被测FPGA设计接口数据的读写;
所述异步缓存器,设置于所述第四通信单元和所述被测设计DUT单元之间,用于缓存所述仿真激励数据或所述仿真结果数据。
可选地,所述第一通信单元和第二通信单元均为PCIE通信单元,所述第三通信单元以及所述第四通信单元均为GTX通信单元。
第二方面,本申请实施例提供了一种FPGA软硬件协同仿真方法,应用于第一方面所述的系统,该方法包括:
根据预设下发激励数据的大小将所述被测FPGA设计工程对应的仿真激励数据通过DMA写操作下发到所述FPGA板卡中;
接收所述FPGA板卡基于所述仿真激励数据反馈的仿真结果数据。
可选地,接收所述FPGA板卡基于所述仿真激励数据反馈的仿真结果数据,包括:
当所有仿真结果数据都存储到主FPGA模块的DDR数据缓存器中时,接收所述主FPGA模块生成的中断指令;
根据所述中断指令从所述DDR数据缓存器读取所述仿真结果数据,并将所述仿真结果数据进行显示。
可选地,根据所述中断指令从所述DDR数据缓存器读取所述仿真结果数据,包括:
根据所述中断指令采用循环执行DMA读操作方式从所述DDR数据缓存器读取所述仿真结果数据。
与现有技术相比,本申请实施例所提供的方案具有如下有益效果:
1、本申请实施例所提供的方案中,将被测FPGA设计工程整体装载到FPGA板卡,然后通过上位机将被测FPGA设计工程对应的激励数据发送给FPGA板卡,FPGA板卡根据激励数据进行仿真得到仿真结果数据,并将该仿真结果数据发送给上位机,以便上位机根据仿真结果数据对被测FPGA设计工程进行验证。因此,将被测FPGA设计工程整体装载到FPGA板卡,能够在FPGA板卡中对被测FPGA设计工程整体进行仿真验证,避免现有技术中对部分被测FPGA设计进行验证,所导致仿真测试的效率较低的问题。
2、在本申请实施例所提供的方案中,从FPGA模块和主FPGA模块通过第三通信单元和第四通信单元进行通信连接,即通过GTX通信单元进行连接,然后再通过主FPGA模块与上位机连接,即在本申请实施例所提供的方案中,从FPGA模块不直接通过PCIE通信单元与上位机连接,不仅能根据实际需求对从FPGA模块的被测设计进行实时更新,提高系统灵活性;还避免当对从FPGA模块的被测设计进行实时更新时,引起上位机因PCIE识别问题引起的系统崩溃,导致系统无法工作的情况。
3、在本申请实施例所提供的方案中,通过DDR3数据缓存器对激励数据和仿真结果数据进行缓存,当激励数据存储数据量达到预设第二阈值时集中读取激励数据,以及当仿真结果数据存储数据量达到预设第一阈值时集中读取仿真结果数据;由于DDR3块读写速度快和大容量缓存的优点,通过DDR3数据缓存器进行集中读取激励数据和仿真结果数据,减少了上位机对激励数据和仿真结果数据读写的轮询时间,进而提高了仿真效率和实时性,以及增大数据仿真的吞吐率。
附图说明
图1为本申请实施例所提供的一种FPGA软硬件协同仿真系统的结构示意图;
图2为本申请实施例所提供的一种主FPGA模块的结构示意图;
图3为本申请实施例所提供的一种主FPGA模块逻辑架构图;
图4为本申请实施例所提供的一种DDR3读写仲裁单元的控制逻辑示意图;
图5为本申请实施例所提供的一种从FPGA模块逻辑架构图;
图6为本申请实施例所提供的一种FPGA软硬件协同仿真方法的流程示意图;
图7为本申请实施例所提供的一种FPGA软硬件协同仿真方法的流程示意图。
具体实施方式
本申请实施例提供的方案中,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
参见图1,本申请实施例提供的一种FPGA软硬件协同仿真系统,该系统包括:上位机1和FPGA板卡2;其中,
所述上位机1,包括仿真软件单元11和第一通信单元12;所述仿真软件单元11,用于根据预设的仿真时钟频率循环提取预设时间段内的仿真激励数据以及接收并显示所述FPGA板卡反馈的仿真结果数据;所述第一通信单元12,用于将从所述仿真软件单元11接收的所述仿真激励数据发送给所述FPGA板卡2,以及将从所述FPGA板卡2接收的所述仿真结果数据发送给所述仿真软件单元11;
所述FPGA板卡2,与所述仿真软件单元11连接,用于装载被测FPGA设计工程,并根据所述仿真激励数据进行仿真运算得到所述仿真结果数据。
具体的,上位机1中仿真软件单元11运行于Linux操作系统,软件仿真单元11包含软件仿真环境和软件接口单元,其中软件仿真环境可以完成对仿真软件IES的仿真控制,采用System Verilog编程,按照相应的bit位序产生被测设计仿真的激励数据和回读仿真结果数据,并在IES软件界面上进行实时显示激励数据波形和仿真结果数据波形;软件接口单元采用C语言编程,完成PCIEXDMA通信的DMA读、DMA写、寄存器读、寄存器写等子函数的封装以及功能调度等程序,可以通过System Verilog的DPI接口实现与软件仿真环境IES进行数据接口交互。
进一步,仿真软件单元11可以按照预设的仿真时钟频率,循环产生预设时间片段内被测设计的并行激励数据,然后通过第一通信单元12快速高效的传送至FPGA板卡2,然后在FPGA板卡2进行被测设计的仿真验证,并把产生的中间仿真结果数据按照相应的位序转换为被测FPGA设计仿真结果。
进一步,在得到被测FPGA设计仿真结果之后,FPGA板卡2产生中断通知上位机1,然后上位机PC端的仿真软件单元11再通过第一通信单元12读取FPGA板卡2中缓存的测试结果,并在仿真软件IES界面上进行显示,同时上位机1可以启动下一个仿真时间片段的被测设计功能仿真验证。
进一步,在一种可能实现的方式中,所述FPGA板卡2包括主FPGA模块21和从FPGA模块22;其中,
所述主FPGA模块21,与所述仿真软件单元11以及所述从FPGA模块22连接,用于将所述仿真激励数据发送给所述从FPGA模块22,以及将从所述从FPGA模块22接收的所述仿真结果数据发送给所述仿真软件单元11;
所述从FPGA模块22,用于加载所述被测FPGA设计工程,并根据所述仿真激励数据进行仿真运算得到所述仿真结果数据。
具体的,在本申请实施例所提供的方案中,主FPGA模块21上电工作时需要读取外部已经固化在flash芯片中的程序,加载配置流;从FPGA模块22外部不连接flash,因此上电后,用户可以根据实际需求通过JTAG实时烧写配置流bit文件。当对从FPGA模块22内的被测设计的控制逻辑进行更改,重新进行仿真时,用户仅仅通过JTAG重新烧写从FPGA模块22的bit文件即可。为了便于理解下面分别对主FPGA模块21和从FPGA模块22的结构和工作过程进行简要介绍。
一、主FPGA模块21
在一种可能实现的方式中,所述主FPGA模块21,包括:DDR3数据缓存器211、第二通信单元212、第三通信单元213以及DDR3读写仲裁单元214;其中,
所述DDR3数据缓存器211,包括激励数据存储区和仿真结果数据存储区,所述激励数据存储区用于缓存所述仿真激励数据,所述仿真结果数据存储区用于缓存所述仿真结果数据;
所述第二通信单元212;与所述第一通信单元11连接,用于从所述第一通信单元11接收所述仿真激励数据并将所述仿真激励数据发送给所述DDR3数据缓存器,以及当所述第二存储空间存储量达到第一预设阈值时从所述DDR3数据缓存器211中读取所述仿真结果数据;
所述第三通信单元213,用于将所述从FPGA模块接收所述仿真结果数据并将所述仿真结果数据发送给所述DDR3数据缓存器211,以及当所述第一存储空间存储量达到第二预设阈值时从所述DDR3数据缓存器211中读取所述仿真激励数据;
所述DDR3读写仲裁单元214,用于控制所述第二通信单元212或所述第三通信单元213从所述DDR3数据缓存器211读写所述仿真激励数据和所述仿真结果数据。
在一种可能实现的方式中,所述主FPGA模块21,还包括:所述主FPGA模块,还包括:两个WFIFO缓存单元215和两个RFIFO缓存单元216;其中,
所述两个WFIFO缓存单元215,包括设置于所述第二通信单元和所述DDR3读写仲裁单元之间的第一WFIFO缓存单元,以及设置于所述DDR3读写仲裁单元和所述第三通信单元之间第二WFIFO缓存单元,所述第一WFIFO缓存单元用于写缓存所述仿真激励数据,所述第二WFIFO缓存单元用于写缓存所述仿真结果数据;
所述两个RFIFO缓存单元216,分别设置于所述第二通信单元和所述DDR3读写仲裁单元之间的第一RFIFO缓存单元,以及设置于所述DDR3读写仲裁单元和所述第三通信单元之间第二RFIFO缓存单元,所述第一RFIFO缓存单元用于读缓存所述仿真结果数据,所述第二RFIFO缓存单元用于读缓存所述仿真激励数据;
所述DDR3读写仲裁单元214,还用于实时判断所述第一WFIFO缓存单元中缓存数据量是否达到第三预设阈值;若达到,则控制所述DDR3数据缓存器启动一次写操作,读取所述第一WFIFO缓存单元中数据并存储到所述DDR3数据缓存器中;以及确定所述DDR3数据缓存器不进行写操作时,从所述DDR3数据缓存器中读取预设大小的数据缓存到所述DDR3读写仲裁单元和所述第三通信单元之间的第二RFIFO缓存单元中。
具体的,参见图2,为本申请实施例提供的一种主FPGA模块的结构示意图。在图2中,主FPGA模块21包括DDR3数据缓存器211、第二通信单元212、第三通信单元213以及DDR3读写仲裁单元214功能单元,其中,DDR3读写仲裁单元214分别与DDR3数据缓存器211、第二通信单元212以及第三通信单元213连接,各逻辑单元间采用FIFO进行数据缓存。在仿真过程中,主FPGA模块21接收来自第一通信单元11的激励数据,经DDR3数据缓存器211后,通过第三通信单元213发送至从FPGA模块22;同时,通过第三通信单元213接收来自从FPGA模块22的被测FPGA设计仿真结果,经DDR3数据缓存器211后,通过第二通信单元212发送至第一通信单元11。为了便于理解下面对主FPGA模块21中各单元的功能进行详细说明。
1)DDR3数据缓存器211
具体的,将接收的第二通信单元212的激励数据存储在DDR3数据存储器211指定的预设的第一存储空间,当存入的数据量达到指定的数据量时,通过第三通信单元213将激励数据写入被测设计及控制单元;同理,通过第三通信单元接213收来自被测设计及控制单元的测试数据,存入DDR3数据存储器211指定的预设的第二存储空间,当存入的数据量达到指定的数据量时,通知上位机1进行PCIE DMA读操作,将所有存储的测试数据送入第一通信单元11。
2)第二通信单元212
具体的,在本申请实施例所提供的方案中,第二通信单元212为PCIE XDMA通信逻辑单元,XDMA是Xilinx封装好的PCIE DMA传输IP,可以很方便的把PCIE总线上的数据传输事务映射到AXI总线上面,实现上位机直接对AXI总线进行读写,并且自动对PCIE本身TLP的组包和解包。参见图3所示,该单元主要实现上位机1与FPGA的高速串行互联,包括上位机1对FPGA逻辑的寄存器读/写控制、H2C写通道控制和C2H读通道控制,上位机1通过第一通信单元11与FPGA的XDMA IP进行激励数据和测试数据的交互。上位机1每次启动DMA读、写操作的数据量最大不超过1MB,如果超过1MB,则分多次读写操作。
3)第三通信单元213
具体的,在本申请实施例所提供的方案中,Xilinx提供的Aurora协议的IP核主要是基于GTX传输器作为物理层,根据协议形成实现链路层功能,并以AXI4_Stream协议接口与发送端和接收端实现用户数据交互。本申请实施例所提供的方案中通过Xilinx提供的Aurora 64B/66B IP来实现高速光纤通信,通道速率达到10.3125Gb/s,完成全双工作模式。
4)DDR3读写仲裁单元214
具体的,参见图4所示,上位机1或从FPGA模块22对DDR3数据缓存器211进行读写操作时,读时序与写时序不能同时进行,因为读写共用一套数据总线。为了防止读写冲突,DDR3数据缓存器211的读写优先级采用写优先模式。PCIE用户工作时钟为125MHz,DDR3数据缓存器211用户时钟为100MHz,上位机1下发的数据包缓存在异步WFIFO中,DDR3的控制逻辑实时判断该WFIFO存入的数据量是否达到了4KB,如果满足要求则启动一次DDR3写操作,读取WFIFO中的4KB数据量存于DDR3中,同时如果写操作不忙的时候,读取4KB的数据量存入RFIFO中。
在本申请实施例所提供的方案中,通过DDR3数据缓存器211对激励数据和仿真结果数据进行缓存,当激励数据存储数据量达到预设第二阈值时集中读取激励数据,以及当仿真结果数据存储数据量达到预设第一阈值时集中读取仿真结果数据;由于DDR3块读写速度快和大容量缓存的优点,通过DDR3数据缓存器211进行集中读取激励数据和仿真结果数据,减少了上位机对激励数据和仿真结果数据读写的轮询时间,进而提高了仿真效率和实时性,以及增大数据仿真的吞吐率。
二、从FPGA模块22
在一种可能实现的方式中,所述从FPGA模块22,包括:第四通信单元221、被测设计DUT单元222、DUT控制逻辑单元223以及异步缓存器224;其中,
所述第四通信单元221,与所述第三通信单元213连接,用于从所述第三通信单元213获取所述仿真激励数据,以及将所述仿真结果数据发送给所述第三通信单元213;
所述被测设计DUT单元222,用于装载所述被测FPGA设计工程,以及根据所述仿真激励数据进行仿真运算得到所述仿真结果数据;
所述DUT控制逻辑单元223,与所述被测设计DUT单元222连接,用于控制被测设计DUT单元222中被测FPGA设计仿真时钟的工作状态以及被测FPGA设计接口数据的读写;
所述异步缓存器224,设置于所述第四通信单元221和所述被测设计DUT单元222之间,用于缓存所述仿真激励数据或所述仿真结果数据。
进一步,在一种可能实现的方式中,所述第一通信单元11和第二通信单元212均为PCIE通信单元,所述第三通信单元213以及所述第四通信单元221均为GTX通信单元。
在本申请实施例所提供的方案中,从FPGA模块22和主FPGA模块21通过第三通信单元213和第四通信单元221进行通信连接,即通过GTX通信单元进行连接,然后再通过主FPGA模块21与上位机1连接,即在本申请实施例所提供的方案中,从FPGA模块22不直接通过PCIE通信单元与上位机1连接,不仅能根据实际需求对从FPGA模块22的被测设计进行实时更新,提高系统灵活性;还避免当对从FPGA模块22的被测设计进行实时更新时,不会引起上位机1因PCIE识别问题引起的系统崩溃,导致系统无法工作的情况。
具体的,参见图5,为本申请实施例提供的一种从FPGA模块的结构示意图。在图5中,从FPGA模块22包括第四通信单元221、被测设计DUT单元222、DUT控制逻辑单元223以及异步缓存器224,其中,被测设计DUT单元222与DUT控制逻辑单元223以及异步缓存器224连接,异步缓存器224与第四通信单元221连接。为了便于理解下面对从FPGA模块22中的各功能单元的功能进行简要介绍。
1)第四通信单元221
具体的,在本申请实施例所提供的方案中,第四通信单元221与主FPGA模块中第三通信单元213的功能一致,在此不做赘述。
2)被测设计DUT单元222
具体的,被测设计DUT单元222用于将需要仿真加速的被测FPGA设计工程整体装载到从FPGA模块22的逻辑结构中,进行综合布局布线生成bit文件后,通过JTAG下载线加载到从FPGA模块22,即可进行被测设计的硬件仿真测试。
3)DUT控制逻辑单元223
具体的,该单元完成从FPGA的工作调度,主要控制被测设计仿真时钟树的工作状态和控制被测设计接口数据的读写等。通过IN_FIFO缓存激励数据,并输出激励数据至被测FPGA设计;通过OUT_FIFO缓存被测FPGA设计输出的测试数据,并将测试数据通过第四通信单元221发送给主FPGA模块22,进而传递到上位机1软件进行波形显示。
4)异步缓存器224
具体的,在本申请实施例所提供的方案中,异步缓存器224包括IN_FIFO以及OUT_FIFO,其中,IN_FIFO以及OUT_FIFO均为异步fifo,与被测设计DUT的接口宽度分别为128bits和256bits。
本申请实施例所提供的方案中,将被测FPGA设计工程整体装载到FPGA板卡2,然后通过上位机将被测FPGA设计工程对应的激励数据发送给FPGA板卡2,FPGA板卡2根据激励数据进行仿真得到仿真结果数据,并将该仿真结果数据发送给上位机1,以便上位机1根据仿真结果数据对被测FPGA设计工程进行验证。因此,将被测FPGA设计工程整体装载到FPGA板卡2,能够在FPGA板卡2中对被测FPGA设计工程整体进行仿真验证,避免现有技术中对部分被测FPGA设计进行验证,所导致仿真测试的效率较低的问题。
参见图6,本申请实施例提供的一种FPGA软硬件协同仿真方法,应用于图1所述的系统,该方法包括:
步骤601,根据预设下发激励数据的大小将所述被测FPGA设计工程对应的仿真激励数据通过DMA写操作下发到所述FPGA板卡中。
步骤602,接收所述FPGA板卡基于所述仿真激励数据反馈的仿真结果数据。
在一种可能实现的方式中,接收所述FPGA板卡基于所述仿真激励数据反馈的仿真结果数据,包括:
当所有仿真结果数据都存储到主FPGA模块的DDR数据缓存器中时,接收所述主FPGA模块生成的中断指令;
根据所述中断指令从所述DDR数据缓存器读取所述仿真结果数据,并将所述仿真结果数据进行显示。
在一种可能实现的方式中,根据所述中断指令从所述DDR数据缓存器读取所述仿真结果数据,包括:根据所述中断指令采用循环执行DMA读操作方式从所述DDR数据缓存器读取所述仿真结果数据。
为了便于理解下面对FPGA软硬件协同仿真方法过程进行简要介绍。参见图7,具体过程步骤如下所示:
1)判断DDR3、GTX收发链路状态是否正常:上位机进行DMA写操作时,要求FPGA链路必须正常,即DDR3初始化正常、主从FPGA模块间的串行高速GTX通信链路正常。
2)下发激励数据的大小的单位4KB:被测设计的激励数据由上位机通过DMA写,最终全部存储于DDR3中,此处分配的DDR3空间为256MB,因此上位机启动一次仿真测试,总共下发的激励数据最大包含256MB字节。由于上位机下发的实际激励数据最小单位是4KB的数据量,不足4KB需要补零填充。
3)上位机DMA写激励数据:上位机把待测试的激励数据打包下发至主FPGA模块,每次DMA的数据量最大不超过1MB,超过1MB则分多次下发,下发最小单位为4KB,不足4KB则补零填充。
4)输出波形数据是否全部完成:上位机下发激励数据完成后,主FPGA模块会启动从FPGA模块内被测设计的仿真工作,等到输出波形数据全部回传到主FPGA模块,并存储于DDR3后(最大空间为512MB),主FPGA模块产生中断通知上位机。
5)单次DMA读使能及配置dma_len:上位机收到主FPGA模块产生的仿真完成中断后,通过DMA读的方式把输出波形数据读到上位机仿真软件IES进行显示。上位机单次DMA读操作最大不超过1MB。
6)上位机启动单次DMA读:上位机启动单次DMA读使能后,根据dma_len长度启动DMA读操作,
7)是否继续DMA读操作:因为单次仿真完成后所得输出波形数据位宽为256bit,激励数据位宽为128bits,所以最终输出的测试数据量最大为512MB。每次DMA读操作最大不超过1MB,上位机需要循环执行DMA读操作,直至读空输出波形数据。
8)清除完成标志:上位机把输出波形数据全部读走后,需要清除完成标志位。
9)是否继续仿真:如果需要仿真的激励数据很多,超过256MB,则需要多次执行板卡仿真加速处理,即上位机重新下发激励数据包,每次最大处理激励数据为256MB。否则退出该处理流程。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (6)
1.一种FPGA软硬件协同仿真系统,其特征在于,包括:上位机和FPGA板卡;其中,
所述上位机,包括仿真软件单元和第一通信单元;所述仿真软件单元,用于根据预设的仿真时钟频率循环提取预设时间段内的仿真激励数据以及接收并显示所述FPGA板卡反馈的仿真结果数据;所述第一通信单元,用于将从所述仿真软件单元接收的所述仿真激励数据发送给所述FPGA板卡,以及将从所述FPGA板卡接收的所述仿真结果数据发送给所述仿真软件单元;
所述FPGA板卡,与所述仿真软件单元连接,用于装载被测FPGA设计工程,并根据所述仿真激励数据进行仿真运算得到所述仿真结果数据;
具体的,所述FPGA板卡包括主FPGA模块和从FPGA模块;其中,
所述主FPGA模块,与所述仿真软件单元以及所述从FPGA模块连接,用于将所述仿真激励数据发送给所述从FPGA模块,以及将从所述从FPGA模块接收的所述仿真结果数据发送给所述仿真软件单元;
所述从FPGA模块,用于加载所述被测FPGA设计工程,并根据所述仿真激励数据进行仿真运算得到所述仿真结果数据;
所述主FPGA模块,包括:第二通信单元、DDR3读写仲裁单元、DDR3数据缓存器、第三通信单元、两个WFIFO缓存单元和两个RFIFO缓存单元;其中,
所述DDR3数据缓存器,包括激励数据存储区和仿真结果数据存储区,所述激励数据存储区用于缓存所述仿真激励数据,所述仿真结果数据存储区用于缓存所述仿真结果数据;
所述第二通信单元;与所述第一通信单元连接,用于从所述第一通信单元接收所述仿真激励数据并将所述仿真激励数据发送给所述DDR3数据缓存器,以及当所述第二存储空间存储量达到第一预设阈值时从所述DDR3数据缓存器中读取所述仿真结果数据;
所述第三通信单元,用于将所述从FPGA模块接收所述仿真结果数据并将所述仿真结果数据发送给所述DDR3数据缓存器,以及当所述第一存储空间存储量达到第二预设阈值时从所述DDR3数据缓存器中读取所述仿真激励数据;
所述DDR3读写仲裁单元,用于控制所述第二通信单元或所述第三通信单元从所述DDR3数据缓存器读写所述仿真激励数据和所述仿真结果数据;
所述两个WFIFO缓存单元,包括设置于所述第二通信单元和所述DDR3读写仲裁单元之间的第一WFIFO缓存单元,以及设置于所述DDR3读写仲裁单元和所述第三通信单元之间第二WFIFO缓存单元,所述第一WFIFO缓存单元用于写缓存所述仿真激励数据,所述第二WFIFO缓存单元用于写缓存所述仿真结果数据;
所述两个RFIFO缓存单元,分别设置于所述第二通信单元和所述DDR3读写仲裁单元之间的第一RFIFO缓存单元,以及设置于所述DDR3读写仲裁单元和所述第三通信单元之间第二RFIFO缓存单元,所述第一RFIFO缓存单元用于读缓存所述仿真结果数据,所述第二RFIFO缓存单元用于读缓存所述仿真激励数据;
所述DDR3读写仲裁单元,还用于实时判断所述第一WFIFO缓存单元中缓存数据量是否达到第三预设阈值;若达到,则控制所述DDR3数据缓存器启动一次写操作,读取所述第一WFIFO缓存单元中数据并存储到所述DDR3数据缓存器中;以及确定所述DDR3数据缓存器不进行写操作时,从所述DDR3数据缓存器中读取预设大小的数据缓存到所述DDR3读写仲裁单元和所述第三通信单元之间的第二RFIFO缓存单元中。
2.如权利要求1所述的系统,其特征在于,所述从FPGA模块,包括:第四通信单元、被测设计DUT单元、DUT控制逻辑单元以及异步缓存器;其中,
所述第四通信单元,与所述第三通信单元连接,用于从所述第三通信单元获取所述仿真激励数据,以及将所述仿真结果数据发送给所述第三通信单元;
所述被测设计DUT单元,用于装载所述被测FPGA设计工程,以及根据所述仿真激励数据进行仿真运算得到所述仿真结果数据;
所述DUT控制逻辑单元,与所述被测设计DUT单元连接,用于控制被测设计DUT单元中被测FPGA设计仿真时钟的工作状态以及被测FPGA设计接口数据的读写;
所述异步缓存器,设置于所述第四通信单元和所述被测设计DUT单元之间,用于缓存所述仿真激励数据或所述仿真结果数据。
3.如权利要求2所述的系统,其特征在于,所述第一通信单元和第二通信单元均为PCIE通信单元,所述第三通信单元以及所述第四通信单元均为GTX通信单元。
4.一种FPGA软硬件协同仿真方法,应用于如权利要求1-3任一项所述的系统,其特征在于,包括:
根据预设下发激励数据的大小将所述被测FPGA设计工程对应的仿真激励数据通过DMA写操作下发到所述FPGA板卡中;
接收所述FPGA板卡基于所述仿真激励数据反馈的仿真结果数据;
其中,所述FPGA板卡包括主FPGA模块和从FPGA模块;
所述主FPGA模块,与仿真软件单元以及所述从FPGA模块连接,用于将所述仿真激励数据发送给所述从FPGA模块,以及将从所述从FPGA模块接收的所述仿真结果数据发送给仿真软件单元;
所述从FPGA模块,用于加载所述被测FPGA设计工程,并根据所述仿真激励数据进行仿真运算得到所述仿真结果数据;
所述主FPGA模块,包括:第二通信单元、DDR3读写仲裁单元、DDR3数据缓存器、第三通信单元、两个WFIFO缓存单元和两个RFIFO缓存单元;其中,
所述DDR3数据缓存器,包括激励数据存储区和仿真结果数据存储区,所述激励数据存储区用于缓存所述仿真激励数据,所述仿真结果数据存储区用于缓存所述仿真结果数据;
所述第二通信单元;与所述第一通信单元连接,用于从所述第一通信单元接收所述仿真激励数据并将所述仿真激励数据发送给所述DDR3数据缓存器,以及当所述第二存储空间存储量达到第一预设阈值时从所述DDR3数据缓存器中读取所述仿真结果数据;
所述第三通信单元,用于将所述从FPGA模块接收所述仿真结果数据并将所述仿真结果数据发送给所述DDR3数据缓存器,以及当所述第一存储空间存储量达到第二预设阈值时从所述DDR3数据缓存器中读取所述仿真激励数据;
所述DDR3读写仲裁单元,用于控制所述第二通信单元或所述第三通信单元从所述DDR3数据缓存器读写所述仿真激励数据和所述仿真结果数据;
所述两个WFIFO缓存单元,包括设置于所述第二通信单元和所述DDR3读写仲裁单元之间的第一WFIFO缓存单元,以及设置于所述DDR3读写仲裁单元和所述第三通信单元之间第二WFIFO缓存单元,所述第一WFIFO缓存单元用于写缓存所述仿真激励数据,所述第二WFIFO缓存单元用于写缓存所述仿真结果数据;
所述两个RFIFO缓存单元,分别设置于所述第二通信单元和所述DDR3读写仲裁单元之间的第一RFIFO缓存单元,以及设置于所述DDR3读写仲裁单元和所述第三通信单元之间第二RFIFO缓存单元,所述第一RFIFO缓存单元用于读缓存所述仿真结果数据,所述第二RFIFO缓存单元用于读缓存所述仿真激励数据;
所述DDR3读写仲裁单元,还用于实时判断所述第一WFIFO缓存单元中缓存数据量是否达到第三预设阈值;若达到,则控制所述DDR3数据缓存器启动一次写操作,读取所述第一WFIFO缓存单元中数据并存储到所述DDR3数据缓存器中;以及确定所述DDR3数据缓存器不进行写操作时,从所述DDR3数据缓存器中读取预设大小的数据缓存到所述DDR3读写仲裁单元和所述第三通信单元之间的第二RFIFO缓存单元中。
5.如权利要求4所述的方法,其特征在于,接收所述FPGA板卡基于所述仿真激励数据反馈的仿真结果数据,包括:
当所有仿真结果数据都存储到主FPGA模块的DDR3数据缓存器中时,接收所述主FPGA模块生成的中断指令;
根据所述中断指令从所述DDR3数据缓存器读取所述仿真结果数据,并将所述仿真结果数据进行显示。
6.如权利要求5所述的方法,其特征在于,根据所述中断指令从所述DDR3数据缓存器读取所述仿真结果数据,包括:
根据所述中断指令采用循环执行DMA读操作方式从所述DDR数据缓存器读取所述仿真结果数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011334416.9A CN112364583B (zh) | 2020-11-24 | 2020-11-24 | 一种fpga软硬件协同仿真系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011334416.9A CN112364583B (zh) | 2020-11-24 | 2020-11-24 | 一种fpga软硬件协同仿真系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112364583A CN112364583A (zh) | 2021-02-12 |
CN112364583B true CN112364583B (zh) | 2023-11-17 |
Family
ID=74533661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011334416.9A Active CN112364583B (zh) | 2020-11-24 | 2020-11-24 | 一种fpga软硬件协同仿真系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112364583B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546917B (zh) * | 2022-01-29 | 2024-06-14 | 山东云海国创云计算装备产业创新中心有限公司 | 一种fpga侧辅助ip系统 |
CN114968169B (zh) * | 2022-05-17 | 2023-10-10 | 赵浩然 | 一种fpga控制的ddr映射多个ddr_fifo实现系统及方法 |
CN116594830B (zh) * | 2023-03-17 | 2024-03-01 | 芯华章科技(北京)有限公司 | 硬件仿真工具、调试方法和存储介质 |
CN117313814B (zh) * | 2023-11-28 | 2024-02-13 | 中国科学院自动化研究所 | 无人机智能决策算力加速系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN207352610U (zh) * | 2017-10-09 | 2018-05-11 | 无锡十月中宸科技有限公司 | 一种基于PCI Express总线架构的FPGA数据处理卡 |
CN109783954A (zh) * | 2019-01-23 | 2019-05-21 | 北京轩宇信息技术有限公司 | 一种ies联合fpga硬件仿真加速系统 |
-
2020
- 2020-11-24 CN CN202011334416.9A patent/CN112364583B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN207352610U (zh) * | 2017-10-09 | 2018-05-11 | 无锡十月中宸科技有限公司 | 一种基于PCI Express总线架构的FPGA数据处理卡 |
CN109783954A (zh) * | 2019-01-23 | 2019-05-21 | 北京轩宇信息技术有限公司 | 一种ies联合fpga硬件仿真加速系统 |
Non-Patent Citations (3)
Title |
---|
FPGA设计验证中的软硬件协同仿真测试方法;孙秀睿;;南通大学学报(自然科学版)(第03期);45-48+70 * |
基于FPGA的软硬件协同仿真平台的设计;田野;《中国优秀硕士学位论文全文数据库 信息科技辑》;I135-215 * |
基于FPGA的高速大容量异步FIFO的实现;滕明晖;杨瑞峰;;电子测试(第09期);51-54 * |
Also Published As
Publication number | Publication date |
---|---|
CN112364583A (zh) | 2021-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112364583B (zh) | 一种fpga软硬件协同仿真系统及方法 | |
CN100487709C (zh) | Soc软硬件一体化设计验证方法 | |
CN109783954B (zh) | 一种ies联合fpga硬件仿真加速系统 | |
CN114297962A (zh) | 一种自适应接口fpga软硬件协同仿真加速系统 | |
CN106104698B (zh) | 用于产生具有可编程延迟的动态随机存取存储器(dram)命令的存储器物理层接口逻辑 | |
US20110307847A1 (en) | Hybrid system combining TLM simulators and HW accelerators | |
CN105008943A (zh) | 对在fpga块内分组创建加速的测试仪 | |
US8914566B2 (en) | Managing interrupts | |
US8532975B2 (en) | System and method implementing a simulation acceleration capture buffer | |
CN111563059B (zh) | 一种基于PCIe的多FPGA动态配置装置及方法 | |
CN101436171B (zh) | 模块化通信控制系统 | |
CN112861468B (zh) | 一种软硬件协同仿真验证的方法、装置和介质 | |
CN105335548B (zh) | 一种用于ice的mcu仿真方法 | |
US8943240B1 (en) | Direct memory access and relative addressing | |
CN111427794A (zh) | 一种用于加速存储部件网表仿真的方法、系统及介质 | |
CN110109626A (zh) | 一种基于FPGA的NVMe SSD命令处理方法 | |
CN113270137B (zh) | 一种基于fpga嵌入式软核的ddr2测试方法 | |
CN111931442A (zh) | Fpga内嵌flash控制器及电子装置 | |
CN115146568A (zh) | 一种基于uvm的芯片验证系统及验证方法 | |
CN104200846A (zh) | 一种嵌入式prom测试系统及实现方法 | |
CN108228127A (zh) | 用于产生spi接口图形信号的装置及图形信号发生器 | |
US10664637B2 (en) | Testbench restoration based on capture and replay | |
CN109522194A (zh) | 针对axi协议从设备接口的自动化压力测试系统及方法 | |
Peng et al. | A high speed dma transaction method for pci express devices | |
CN116306426A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |