CN109783954B - 一种ies联合fpga硬件仿真加速*** - Google Patents
一种ies联合fpga硬件仿真加速*** Download PDFInfo
- Publication number
- CN109783954B CN109783954B CN201910060694.0A CN201910060694A CN109783954B CN 109783954 B CN109783954 B CN 109783954B CN 201910060694 A CN201910060694 A CN 201910060694A CN 109783954 B CN109783954 B CN 109783954B
- Authority
- CN
- China
- Prior art keywords
- fpga
- clock
- simulation
- hardware
- tested
- 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
Classifications
-
- 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
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明提供了一种IES联合FPGA硬件仿真加速***,该***包括IES仿真模块、软硬件通信模块和FPGA硬件加速模块。IES仿真模块,按照预设的仿真时钟频率,循环提取预设时间段内被测FPGA设计的并行激励数据,将其发送到FPGA硬件加速模块;从FPGA硬件加速模块中循环提取被测FPGA设计的测试数据,按照相应的时序转换为被测FPGA设计仿真结果并显示;FPGA硬件加速模块,接收并行激励数据并存储至输入缓冲区中;产生测试激励时钟和被测FPGA设计各时钟域工作时钟,驱动输入缓冲区输出并行激励数据至被测FPGA设计;在并行激励数据的作用下,被测FPGA设计输出测试数据至输出缓冲区中。本发明降低了仿真环境的运行负担,提高了FPGA仿真的速度。
Description
技术领域
本发明涉及一种FPGA仿真加速***,特别是使用可编程逻辑仿真软件与FPGA硬件联合的方法完成FPGA设计的仿真加速,属于FPGA仿真测试技术领域。
背景技术
仿真验证是FPGA软件设计测试的必要步骤,是保障FPGA软件质量的有效手段之一。可编程逻辑门阵列(FPGA)器件使用的规模和设计复杂度节节攀升。常规的FPGA仿真软件如IES、Modelsim等,仿真环境调试和运行时间长,已经不能完全满足日益紧张的型号研制任务。因此,需要研究对于FPGA代码的仿真验证加速技术来满足应用要求。
目前仿真硬件加速的实现有两个途径,分别为基于FPGA的加速方法和基于专用加速计算结构的方法。基于专用加速计算结构的方法,需要设计专用的计算结构,研发和实验成本高,已经有相应产品应用了专业集成电路验证,但是价格居高不下,且可扩展行不强,往往应用于资金量充足的超大规模集成电路研发。基于FPGA的加速方法归功于FPGA设计灵活可以重构的特性,研发和实验成本低,可扩展性强,适用于小规模专业集成电路研发或者FPGA设计的验证。
国际商业机器公司专利CN201380017736.3公开一种基于FPGA的硬件加速器的周期精确的和周期再现的内存,包括用FPGA来仿真被测器件的操作方法。该发明在一个实例中,通过从目标内存存储阵列中分离被测设计内存接口协议,创建内存的周期精确的模型。但是,该方法对于硬件设计的要求过高,除了有FPGA外还需要在硬件上附加内存,并且受到内存大小影响,对仿真软件适应能力差。
《基于FPGA的软硬件协同仿真平台的设计》公开了一种基于FPGA的软硬件***方法,包括:使用网口进行通信、使用图形界面打开数据的操作。然而,对比文件公开的处理方式仅限于单一时钟域,应用场景也只包含对于单独算法的验证。
综上所述,现有技术存在下列问题:
(1)、硬件结构复杂,对于加速板卡有特殊要求,可重用性不强;
(2)、仿真验证软件和硬件通信机制建立不完善,不能实时控制被测设计运行,限制了仿真加速应用场景;
(3)、对硬件运行速率没有明确的控制要求,不利于FPGA布局布线操作,容易出现时序无法收敛的情况。
发明内容
本发明的技术解决问题是:克服现有技术的不足,一种IES联合FPGA硬件仿真加速***,使用简单的通用的硬件环境,完成FPGA设计的仿真加速,提高FPGA设计验证效率。
本发明的技术解决方案是:一种IES联合FPGA硬件仿真加速***,该***包括IES仿真模块、软硬件通信模块和FPGA硬件加速模块;软硬件通信模块用于实现IES仿真环境与FPGA硬件加速模块之间的通信交互;其中:
IES仿真模块,按照预设的仿真时钟频率,循环提取预设时间段内被测FPGA设计的并行激励数据,将其发送到FPGA硬件加速模块;从FPGA硬件加速模块中循环提取被测FPGA设计的测试数据,按照相应的时序转换为被测FPGA设计仿真结果,在IES仿真环境中显示;
FPGA硬件加速模块,接收并行激励数据并存储至输入缓冲区中;产生时钟树,所述时钟树包括测试激励时钟和被测FPGA设计各时钟域工作时钟,测试激励时钟用于驱动输入缓冲区输出并行激励数据至被测FPGA设计;被测FPGA设计各时钟域工作时钟连接至被测FPGA设计,用于替代被测FPGA设计中的各时钟域工作时钟信号;在并行激励数据的作用下,被测FPGA设计输出测试数据至输出缓冲区中。
所述IES仿真模块包括仿真环境、仿真环境接口模块,其中:
仿真环境,用于按照仿真时钟频率,编译被测FPGA的激励文件,产生激励信号;将激励数据和测试数据同时显示出来;
仿真环境接口模块,对预设时间段内激励信号,按照仿真时钟频率,将激励信号转换成激励数据,之后,将激励数据缓存,通过软硬件通信模块将激励数据发送给FPGA硬件加速模块,接收软硬件通信模块发送的测试数据,并按照时序转发给仿真环境。
所述FPGA硬件加速模块包括输入FIFO、控制逻辑、时钟树产生模块、输出FIFO、输出缓存RAM,其中:
输入FIFO,用于存储激励数据,并在测试激励时钟的驱动下输出激励数据至被测FPGA设计;同一时刻的激励数据存储在同一个存储单元;
控制逻辑,接收硬件接口发送的数据搬移指令,将输出FIFO中的一定数量的测试数据搬移到输出缓存RAM中;接收硬件接口发送的门控时钟开启指令,产生有效的门控时钟至时钟树产生模块;
时钟树产生模块,产生时钟树,并在门控时钟的使能控制下输出测试激励时钟和被测FPGA设计各时钟域工作时钟,测试激励时钟用于驱动输入缓冲区输出并行激励数据至被测FPGA设计;被测FPGA设计各时钟域工作时钟连接至被测FPGA设计,用于替代被测FPGA设计中各时钟域工作时钟信号;
输出FIFO,用于存储被测FPGA设计输出的测试数据,并在测试激励时钟的驱动下输出并行测试数据至被测FPGA设计;同一时刻的测试数据存储在同一个存储单元;
输出缓存RAM,用于存储被测FPGA设计输出的测试数据,供硬件接口读取。
输入FIFO的输出数据总线连接至被测FPGA设计的端口上,激励数据的比特位与被测FPGA设计的端口一一对应。
当被测FPGA设计工作时钟的最小公倍数与仿真时钟频率呈整数倍关系时,所述时钟树产生模块将其工作频率,所述时钟树产生模块将其工作频率等效为仿真时钟频率,将其工作时钟作为测试激励时钟输出至输入FIFO;将工作频率等效为根据被测FPGA设计各时钟域工作时钟的最小公倍数频率,再根据相应的分频比例分别产生被测FPGA设计各时钟域工作时钟。
所述被测FPGA设计各时钟域工作时钟的占空比为1/N,其中N为分频比例。
当被测FPGA设计工作时钟的最小公倍数与仿真时钟频率呈非整数倍关系时,所述时钟树产生模块将其工作频率等效为仿真时钟频率,将其工作时钟作为测试激励时钟输出至输入FIFO;将工作时钟作为DDS的参考时钟,将仿真时钟频率作为DSS的参考时钟频率值计算相应的频率控制字,分别产生被测FPGA设计各时钟域工作时钟。
所述软硬件通信模块包括硬件接口驱动模块和硬件接口;其中:
硬件接口驱动模块,提供硬件接口驱动程序,将IES仿真模块生成的激励数据发送至硬件接口,从硬件接口获取测试数据;
硬件接口,将激励数据发送给FPGA硬件加速模块;从FPGA硬件加速模块中读取测试数据发送至硬件接口驱动模块。
所述硬件接口为PCI总线接口。
所述硬件模块通过连接在FPGA通用IO上的PCI金手指和PCI总线接口IP核实现。
所述硬件接口驱动模块采用C语言编程,仿真环境使用IES验证平台,采用SystemVerilog编程;按照相应的bit位顺序,映射至被测FPGA的激励文件的例化端口上,通过System Verilog与C语言的DPI接口来调用硬件接口驱动模块中的C语言函数的方式,将激励数据发送给FPGA硬件加速模块,读取硬件接口驱动模块获取的测试数据。
所述硬件接口采用DMA的方式从FPGA硬件加速模块中读取测试数据。
本发明与现有技术相比的有益效果是:
(1)、本发明将激励信号转化为离散的激励数据并加载到FPGA中为FPGA设计提供测试数据源,在FPGA硬件里完成测试验证,再将测试数据读出显示,这种软硬件结合的方法充分利用了FPGA硬件的优势,降低了仿真环境的运行负担,提高了FPGA仿真的速度;
(2)、本发明提出时钟树的概念,通过对被测设计时钟树的梳理,当被测FPGA设计工作时钟的最小公倍数与仿真时钟频率呈整数倍关系时,将工作频率等效为根据被测FPGA设计各时钟域工作时钟的最小公倍数频率,再根据相应的分频比例分别产生被测FPGA设计各时钟域工作时钟,能够精确的控制仿真时间,且达到整个设计协调一致运行的效果。
(3)、本发明同一时刻的激励数据存储在输入FIFO的同一个存储单元,且输入FIFO的输出数据总线连接至被测FPGA设计的端口上,激励数据的比特位与被测FPGA设计的端口一一对应,确保快速准确地将激励数据注入FPGA设计中。
(4)、本发明所述硬件接口采用DMA的方式从FPGA硬件接口中读取测试数据,读取速度快。
附图说明
图1为本发明实施例IES联合FPGA硬件仿真加速***结构框图。
具体实施方式
以下结合附图和具体实施例对本发明进行详细说明。
FPGA作为一种可编程逻辑器件,能够正确的实现所有的逻辑运算。所有对逻辑设计的仿真本质上都是对逻辑运算的模拟,转化到FPGA中有天然优势。同时,由于验证环境编写要求相对较宽松,不可综合语句较多,适用于在计算机中运行。本发明依据所有数字器件都是对于序列的处理,采用软硬件结合的方式完成FPGA设计仿真加速任务。
如图1所示,本发明提供了一种IES联合FPGA硬件仿真加速***,该***包括IES仿真模块、软硬件通信模块和FPGA硬件加速模块;软硬件通信模块用于实现IES仿真环境与FPGA硬件加速模块之间的通信交互;其中:
IES仿真模块,按照预设的仿真时钟频率,循环提取预设时间段内被测FPGA设计的并行激励数据,将其发送到FPGA硬件加速模块;从FPGA硬件加速模块中循环提取被测FPGA设计的测试数据,按照相应的时序转换为被测FPGA设计仿真结果,在IES仿真环境中显示;
FPGA硬件加速模块,接收并行激励数据并存储至输入缓冲区中;产生时钟树,所述时钟树包括测试激励时钟和被测FPGA设计各时钟域工作时钟,测试激励时钟用于驱动输入缓冲区输出并行激励数据至被测FPGA设计;被测FPGA设计各时钟域工作时钟连接至被测FPGA设计,用于替代被测FPGA设计中的各时钟域工作时钟信号;在并行激励数据的作用下,被测FPGA设计输出测试数据至输出缓冲区中。
(1)IES仿真模块
所述IES仿真模块包括仿真环境、仿真环境接口模块,其中:
仿真环境,用于按照仿真时钟频率,编译被测FPGA的激励文件,产生激励信号;将激励数据和测试数据同时显示出来;
仿真环境接口模块,对预设时间段内激励信号,按照仿真时钟频率,将激励信号转换成激励数据,之后,将激励数据缓存,通过软硬件通信模块将激励数据发送给FPGA硬件加速模块,接收软硬件通信模块发送的测试数据,并按照时序转发给仿真环境。
(2)、软硬件通信模块
软硬件通信模块包括硬件接口驱动模块和硬件接口。其中:
硬件接口驱动模块,提供硬件接口驱动程序,将IES仿真模块生成的激励数据发送至硬件接口,从硬件接口获取测试数据;该模块采用C语言编程,仿真环境使用IES验证平台,采用System Verilog编程;按照相应的BIT位顺序,映射至被测FPGA的激励文件的例化端口上,通过System Verilog与C语言的DPI接口来调用硬件接口驱动模块中的C语言函数的方式,将激励数据发送给FPGA硬件加速模块,读取硬件接口驱动模块获取的测试数据。
硬件接口,将激励数据发送给FPGA硬件加速模块;从FPGA硬件加速模块中读取测试数据发送至硬件接口驱动模块。硬件接口可以选取为PCI总线接口。所述硬件模块通过连接在FPGA通用IO上的PCI金手指和PCI总线接口IP核实现,PCI总线接口IP核采用DMA的方式从FPGA硬件加速模块中读取测试数据。
(3)FPGA硬件加速模块
FPGA硬件加速模块包括输入FIFO、控制逻辑、时钟树产生模块、输出FIFO、输出缓存RAM,其中:
输入FIFO,用于存储激励数据,并在测试激励时钟的驱动下输出激励数据至被测FPGA设计;同一时刻的激励数据存储在同一个存储单元;输入FIFO的输出数据总线连接至被测FPGA设计的端口上,激励数据的比特位与被测FPGA设计的端口一一对应。
控制逻辑,接收硬件接口发送的数据搬移指令,将输出FIFO中的一定数量的测试数据搬移到输出缓存RAM中;接收硬件接口发送的门控时钟开启指令,产生有效的门控时钟至时钟树产生模块;
时钟树产生模块,产生时钟树,并在门控时钟的使能控制下输出测试激励时钟和被测FPGA设计各时钟域工作时钟,测试激励时钟用于驱动输入缓冲区输出并行激励数据至被测FPGA设计;被测FPGA设计各时钟域工作时钟连接至被测FPGA设计,用于替代被测FPGA设计中各时钟域工作时钟信号。
时钟树的产生分为如下两种情况:
当被测FPGA设计工作时钟的最小公倍数与仿真时钟频率呈整数倍关系时,所述时钟树产生模块将其工作频率,所述时钟树产生模块将其工作频率等效为仿真时钟频率,将其工作时钟作为测试激励时钟输出至输入FIFO;将工作频率等效为根据被测FPGA设计各时钟域工作时钟的最小公倍数频率,再根据相应的分频比例分别产生被测FPGA设计各时钟域工作时钟。所述被测FPGA设计各时钟域工作时钟的占空比为1/N,其中N为分频比例。
当被测FPGA设计工作时钟的最小公倍数与仿真时钟频率呈非整数倍关系时,所述时钟树产生模块将其工作频率等效为仿真时钟频率,将其工作时钟作为测试激励时钟输出至输入FIFO;将工作时钟作为DDS的参考时钟,将仿真时钟频率作为DSS的参考时钟频率值计算相应的频率控制字,分别产生被测FPGA设计各时钟域工作时钟。
输出FIFO,用于存储被测FPGA设计输出的测试数据,并在测试激励时钟的驱动下输出并行测试数据至被测FPGA设计;同一时刻的测试数据存储在同一个存储单元;
输出缓存RAM,用于存储被测FPGA设计输出的测试数据,供硬件接口读取。
实施例:
如图1所示,本发明的某一具体实施例分为三个部分,分别为IES仿真模块、软硬件通信模块和FPGA硬件加速模块。IES仿真模块基于SystemVerilog的仿真环境通过软硬件通信模块向FPGA硬件加速模块写入激励数据;FPGA硬件加速模块对FPGA设计进行处理,仿真环境获取测试结果,完整一帧数据的仿真。循环往复,输入到被测设计的激励数据速率对应梳理时钟树的最小公倍数速率,输出到仿真环境的数据速率同样对应最小公倍数速率。通过这一方案,能够精确的控制仿真时间并且直接利用仿真软件实现波形显示。
以下具体介绍各模块:
第一部分,FPGA硬件加速模块分三部分内容:控制逻辑、读写缓存和读写接口。读写缓存采用FIFO+双口RAM的形式。读写接口,采用PCIE3.0的DMA模式。具体如下:
控制逻辑负责接收外部写给PCIE的数据。上位机通过读写M_AXI_LITE端口来确定当前通信状态,当触发逻辑接收到外部输入的数据后,触发逻辑读取输出数据时,控制门控时钟开启,驱动被测FPGA设计按照时钟节拍工作,并且将相应时钟节拍的被测设计输出结果输出到输出接口FIFO。被测设计能够被门控时钟控制逻辑的前提是内部不存在时钟频率生成模块。为了解决这一问题,特别提出了一种对于被测设计时钟域改造的方法。该方法的基本原理是FPGA内部所有的频率生成都是相对于某一频率的整数乘法和除法,那么一定存在一个是时钟源时钟频率整数倍的频率,可以分频产生所有频率生成模块所产生的时钟。因此,可以独立产生一个分频时钟文件,用来替代信号内部所有频率生成模块生成的和源时钟信号,只要控制了主时钟是否产生就能控制其他时钟的操作,从而达到上位机可以控制被测设计操作的目的。当FPGA中的输出缓存FIFO为满时,M_AXI_LITE端口数据为32’h5555aaaa,否则,M_AXI_LITE端口数据为32’haaaa5555,用来作为数据输出握手信号。当向M_AXI_LITE端口写数据为32’h5555aaaa时,FPGA复位内部搬移ram。
FIFO使用且不限于使用XILINX IP核,其中,输出FIFO,设置深度为16384,宽度为256用于将被测设计输出信号;输入FIFO,设置深度为16384,宽度为128,用于对被测设计输入信号。双口RAM用于缓存被测设计输出的数据,从fifo搬运到双口RAM中,等待PCIE接口读取。
PCIE接口使用且不限于使用XILINX IP核,能够实现最大速率5GT/s,通信宽度为256bit。AXI Address Width设置为64,Lane Width为X8,最大链接速率为5GT/s,AXI DataWidth设置为256,AXI时钟频率设为125MHz,参考时钟为100MHz。Vendor ID为16’h10EE,Device ID为16’h7028,Revision ID为16’h00,Subsystem Vendor ID为16’h10EE,Subsystem ID为16’h0007。
第二部分,软硬件通信模块主要是完成上位机仿真软件和FPGA内部数据的通信,分为Linux***驱动层和读写数据逻辑两个部分。
Linux***驱动层采用DMA驱动方式,驱动程序接口以库函数的方式通过C语言接口调用,使操作***能够通过PCIE3.0总线通讯。PCI初始化程序必须搜索Linux***中所有的PCI总线,以便定位***中全部的PCI设备,包括PCI-PCI桥。PCI初始化程序通过PCI BIOS程序确定当前正在搜索的PCI总线中的每一个插槽是否被占用。PCI初始化程序从PCI总线0开始扫描,它首先试着读取每一个PCI插槽中可能存在的PCI设备的厂家标识符和设备标识符。如果对某一个插槽读取成功,那么说明此PCI插槽已经被占用,PCI设备驱动程序将创建一个描述此设备的数据结构pci_dev,并且将它***到已经存在的所有PCI设备的链表。PCI初始化程序如果发现设备是一个PCI-PCI桥,那么将创建一个pci_bus结构,然后将它***到pcibus结构树中。PCI初始化程序通过类别代码0x060400来确定此设备是否为PCI-PCI桥。如果是PCI-PCI桥,***内核则设置PCI-PCI桥下游的PCI总线。如果在其中再发现PCI-PCI桥,则继续设置PCI-PCI桥下游的PCI总线。只有知道了以下内容,PCI-PCI桥才能传递PCII/O,PCI内存或PCI设置地址:主总线号、从总线号、下属总线号(PCI-PCI桥的下游的所有总线的最大的总线号)、PCII/O和PCI内存窗口(PCI-PCI桥的下游地址的PCII/O和PCI内存地址空间的窗口起点和大小)。Linux***内核使用深度搜索算法搜索每一个总线号。每当找到一个PCI-PCI桥和指定它的从总线号时,同时赋给该PCI-PCI桥一个临时的下属号-0xFF,然后搜索和指定该P CI-PCI桥下游所有PCI-PCI桥的总线号。
读写数据逻辑通过打开设备名称来链接PCIE数据,通过读和写函数来对设备进行读写操作。写函数向FPGA写入输入激励数据,数据大小为128*16384bit。读函数首先查看M_AXI_LITE端口数据是否为32’h5555aaaa,如果是则对接口进行256*16384bit的读操作,读操作后通过先写入32’h5555aaaa再写入32’haaaabbbb复位数据缓存ram和搬移逻辑。数据流动从仿真环境到FPGA硬件加速模块,是将有时间序列特征的串行数据缓存、打包为数据块,128×16384bit缓存数据,为128bit位对应输入端口的16384个时间点的采样值,并且按照时间先后顺序进行缓存,在FPGA中再将数据解析为按照时间顺序排列的输入被测设计激励,供被测设计运行使用。同理,数据流动从FPGA硬件加速模块到仿真环境,是将有时间序列特征的串行数据缓存、打包为数据块,256×16384bit缓存数据,为256bit位对应输出端口的16384个时间点的采样值,并且按照时间先后顺序进行缓存,在仿真环境中再将数据解析为按照时间顺序排列的输入被测设计激励,供观测分析使用。
第三部分,IES仿真模块建立模块主要完成仿真环境改造。该仿真环境使用IES验证平台,建立在System Verilog的仿真体系中,通过System Verilog与C语言的DPI接口来调用C语言函数,实现软件仿真环境与硬件FPGA的数据交互。将输入端口与写入函数对应,将预期监测信号与读取函数对应,从而达到可以监测读写端口的目的。
软硬件通信模块通过Linux驱动访问PCIE接口。FPGA硬件加速模块根据写入的握手信号,启动被测设计时钟控制信号和接收和发送FIFO。FPGA将仿真激励数据存入输入FIFO中,同时将仿真激励进入被测设计后的输出结果返回输出给仿真环境。
除了上述设计外,本发明实施例还设计了辅助改造设计应用软件,提高工程改进效率,包括时钟树生成软件和端口自动对应软件。
时钟树生成软件研制的基本原理为所有整数倍分频时钟可以通过源时钟进行分配生成,其差别就是数据的占空比不能保证全部为1:1。***工作速率受到仿真软件工作速率的限制,整个驱动被测设计时钟频率较低,因此可以在忽略占空比产生分频时钟。不妨设计占空比为1/N,其中N为分频系数。这样,就可以设置通过将所有计数的第一个周期为高电平,其它周期为低电平。软件编写实现该功能,自动根据分频参数和时钟个数生成时钟树分频文件替代原来时钟树。
端口自动对应功能研制的基本原理是对于FPGA设计例化和端口名链接可以通过自动提取输入输出列表提取,降低仿真环境修改复杂度。端口自动对应软件需要两个数据源,分别为FPGA设计例化文件和输入输出端口名文件。软件读取例化文件和端口名文件,生成两个文件,分别为被测设计例化文件和仿真端口对应文件。被测设计例化文件用于加入设计工程文件,仿真端口对应文件用于加入到仿真环境,实现端口自动对应。
本发明具体实现步骤如下:
1、理清设计的时钟树
对于同源时钟,求出设计需要最高时钟频率的最小公倍数,假设将最小公倍数作为母钟分频,用自己产生的时钟模块替代所有时钟;对于异步时钟,使用自己产生的时钟,按照同源时钟比例,使用直接频率合成(DDS)方式产生。其中使用最高频率产生同源时钟小程序通过时钟树生成软件实现。在时钟频率输入最高工作频率,分频个数写入分频时钟个数,在分频系数中添加相应个数的分频系数,最后自动生成代码。将生成的时钟文件,加入到被测设计中替代内部的DCM产生的同源时钟。
2、被测设计适应性修改到加速设备环境
修正IP核,将所有ip核化成网表,将设计代码和ip核网表作为工程输入,导入到设计VC709设计环境。将设计中的所有差分器件、延时器件等端口对应的硬件资源改写为直接赋值或者可综合代码。
3、产生设计调用文件
以ISE设计工程为例:使用ISE打开设计工程,将工程属性改为倾向于verilog。点击查看HDL例化模板,会产生一个.tfi文件。在命令行中加入netgen-dir jiasuka-sim工程名字.ngc–ofmt verilog工程名字.v生成网表。将输入输出端口拷贝到一个新建的空白.v文件中。使用端口自动对应软件读取.tfi和.v文件,会生成portcon.sv和ini被测设计.v。portcon.sv加入环境,ini被测设计.v加入到设计工程,存放ini被测设计.v在工程文件夹,实现仿真环境和被测设计自动改造。
4、工程修改后,点击生成bit文件,程序会运行,运行中间出现错误再进行调试更改再运行。Bit文件生成后下载程序。
5、仿真环境载入:
首先,以管理员模式安装linux驱动。其次,对仿真环境增加数据交换模块来替代原设计程序。最后,直接在仿真环境上执行用例即可,注意激励的输入频率对应为最小公倍数时钟。
本说明书中未进行详细描述部分属于本领域技术人员公知常识。
Claims (10)
1.一种IES联合FPGA硬件仿真加速***,其特征在于包括IES仿真模块、软硬件通信模块和FPGA硬件加速模块;软硬件通信模块用于实现IES仿真环境与FPGA硬件加速模块之间的通信交互;其中:
IES仿真模块,按照预设的仿真时钟频率,循环提取预设时间段内被测FPGA设计的并行激励数据,将其发送到FPGA硬件加速模块;从FPGA硬件加速模块中循环提取被测FPGA设计的测试数据,按照相应的时序转换为被测FPGA设计仿真结果,在IES仿真环境中显示;
FPGA硬件加速模块,接收并行激励数据并存储至输入缓冲区中;产生时钟树,所述时钟树包括测试激励时钟和被测FPGA设计各时钟域工作时钟,测试激励时钟用于驱动输入缓冲区输出并行激励数据至被测FPGA设计;被测FPGA设计各时钟域工作时钟连接至被测FPGA设计,用于替代被测FPGA设计中的各时钟域工作时钟信号;在并行激励数据的作用下,被测FPGA设计输出测试数据至输出缓冲区中;
所述FPGA硬件加速模块包括输入FIFO、控制逻辑、时钟树产生模块、输出FIFO、输出缓存RAM,其中:
输入FIFO,用于存储激励数据,并在测试激励时钟的驱动下输出激励数据至被测FPGA设计;同一时刻的激励数据存储在同一个存储单元;
控制逻辑,接收硬件接口发送的数据搬移指令,将输出FIFO中的一定数量的测试数据搬移到输出缓存RAM中;接收硬件接口发送的门控时钟开启指令,产生有效的门控时钟至时钟树产生模块;
时钟树产生模块,产生时钟树,并在门控时钟的使能控制下输出测试激励时钟和被测FPGA设计各时钟域工作时钟,测试激励时钟用于驱动输入缓冲区输出并行激励数据至被测FPGA设计;被测FPGA设计各时钟域工作时钟连接至被测FPGA设计,用于替代被测FPGA设计中各时钟域工作时钟信号;
输出FIFO,用于存储被测FPGA设计输出的测试数据,并在测试激励时钟的驱动下输出并行测试数据至被测FPGA设计;同一时刻的测试数据存储在同一个存储单元;输入FIFO的输出数据总线连接至被测FPGA设计的端口上,激励数据的比特位与被测FPGA设计的端口一一对应;
输出缓存RAM,用于存储被测FPGA设计输出的测试数据,供硬件接口读取。
2.根据权利要求1所述的一种IES联合FPGA硬件仿真加速***,其特征在于所述IES仿真模块包括仿真环境、仿真环境接口模块,其中:
仿真环境,用于按照仿真时钟频率,编译被测FPGA的激励文件,产生激励信号;将激励数据和测试数据同时显示出来;
仿真环境接口模块,对预设时间段内激励信号,按照仿真时钟频率,将激励信号转换成激励数据,之后,将激励数据缓存,通过软硬件通信模块将激励数据发送给FPGA硬件加速模块,接收软硬件通信模块发送的测试数据,并按照时序转发给仿真环境。
3.根据权利要求1所述的一种IES联合FPGA硬件仿真加速***,其特征在于当被测FPGA设计工作时钟的最小公倍数与仿真时钟频率呈整数倍关系时,所述时钟树产生模块将其工作频率,所述时钟树产生模块将其工作频率等效为仿真时钟频率,将其工作时钟作为测试激励时钟输出至输入FIFO;将工作频率等效为根据被测FPGA设计各时钟域工作时钟的最小公倍数频率,再根据相应的分频比例分别产生被测FPGA设计各时钟域工作时钟。
4.根据权利要求3所述的一种IES联合FPGA硬件仿真加速***,其特征在于所述被测FPGA设计各时钟域工作时钟的占空比为1/N,其中N为分频比例。
5.根据权利要求1所述的一种IES联合FPGA硬件仿真加速***,其特征在于当被测FPGA设计工作时钟的最小公倍数与仿真时钟频率呈非整数倍关系时,所述时钟树产生模块将其工作频率等效为仿真时钟频率,将其工作时钟作为测试激励时钟输出至输入FIFO;将工作时钟作为DDS的参考时钟,将仿真时钟频率作为DSS的参考时钟频率值计算相应的频率控制字,分别产生被测FPGA设计各时钟域工作时钟。
6.根据权利要求1所述的一种IES联合FPGA硬件仿真加速***,其特征在于所述软硬件通信模块包括硬件接口驱动模块和硬件接口;其中:
硬件接口驱动模块,提供硬件接口驱动程序,将IES仿真模块生成的激励数据发送至硬件接口,从硬件接口获取测试数据;
硬件接口,将激励数据发送给FPGA硬件加速模块;从FPGA硬件加速模块中读取测试数据发送至硬件接口驱动模块。
7.根据权利要求1所述的一种IES联合FPGA硬件仿真加速***,其特征在于所述硬件接口为PCI总线接口。
8.根据权利要求7所述的一种IES联合FPGA硬件仿真加速***,其特征在于所述硬件接口通过连接在FPGA通用IO上的PCI金手指和PCI总线接口IP核实现。
9.根据权利要求6所述的一种IES联合FPGA硬件仿真加速***,其特征在于所述硬件接口驱动模块采用C语言编程,仿真环境使用IES验证平台,采用System Verilog编程;按照相应的bit位顺序,映射至被测FPGA的激励文件的例化端口上,通过System Verilog与C语言的DPI接口来调用硬件接口驱动模块中的C语言函数的方式,将激励数据发送给FPGA硬件加速模块,读取硬件接口驱动模块获取的测试数据。
10.根据权利要求6所述的一种IES联合FPGA硬件仿真加速***,其特征在于所述硬件接口采用DMA的方式从FPGA硬件加速模块中读取测试数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910060694.0A CN109783954B (zh) | 2019-01-23 | 2019-01-23 | 一种ies联合fpga硬件仿真加速*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910060694.0A CN109783954B (zh) | 2019-01-23 | 2019-01-23 | 一种ies联合fpga硬件仿真加速*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109783954A CN109783954A (zh) | 2019-05-21 |
CN109783954B true CN109783954B (zh) | 2023-08-29 |
Family
ID=66501189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910060694.0A Active CN109783954B (zh) | 2019-01-23 | 2019-01-23 | 一种ies联合fpga硬件仿真加速*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783954B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110765711A (zh) * | 2019-12-06 | 2020-02-07 | 国微集团(深圳)有限公司 | 数字产品的仿真信号查看方法及*** |
CN111523282A (zh) * | 2020-05-07 | 2020-08-11 | 深圳探科技术有限公司 | 集成电路仿真中数据处理的方法、模块、存储介质及*** |
JP2022049470A (ja) * | 2020-09-16 | 2022-03-29 | キオクシア株式会社 | 論理シミュレーション検証システム、論理シミュレーション検証方法、およびプログラム |
CN112364583B (zh) * | 2020-11-24 | 2023-11-17 | 北京轩宇信息技术有限公司 | 一种fpga软硬件协同仿真***及方法 |
CN112541311A (zh) * | 2020-12-02 | 2021-03-23 | 深圳市金泰克半导体有限公司 | 仿真测试方法、装置、计算机设备和存储介质 |
CN112434483A (zh) * | 2020-12-18 | 2021-03-02 | 国微集团(深圳)有限公司 | 数据传输***的生成方法和数据传输*** |
CN112861468B (zh) * | 2021-02-08 | 2022-12-06 | 山东云海国创云计算装备产业创新中心有限公司 | 一种软硬件协同仿真验证的方法、装置和介质 |
CN113051167B (zh) * | 2021-03-31 | 2023-12-22 | 北京经纬恒润科技股份有限公司 | 一种模型与模型代码的测试方法及装置 |
CN114064547B (zh) * | 2021-11-15 | 2023-06-13 | 北京邮电大学 | 一种基于PCIe的通信协议栈硬件加速架构构建方法 |
CN117521583A (zh) * | 2023-11-17 | 2024-02-06 | 中科苏州智能计算技术研究院 | 一种时钟驱动的软硬件联合仿真方法、***及存储介质 |
CN117313650B (zh) * | 2023-11-28 | 2024-03-01 | 苏州元脑智能科技有限公司 | 一种芯片测试验证方法及其应用装置 |
-
2019
- 2019-01-23 CN CN201910060694.0A patent/CN109783954B/zh active Active
Non-Patent Citations (1)
Title |
---|
基于FPGA的软硬件协同仿真平台的设计;田野;《中国优秀硕士学位论文全文数据库》;20110615;摘要,正文第2-4章 * |
Also Published As
Publication number | Publication date |
---|---|
CN109783954A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109783954B (zh) | 一种ies联合fpga硬件仿真加速*** | |
EP1489511B1 (en) | Hierarchical, Network-Based emulation System | |
US7085702B1 (en) | Method and system for modeling and automatically generating an embedded system from a system-level environment | |
US7418681B2 (en) | Simulation system, simulation method and simulation program for verifying logic behavior of a semiconductor integrated circuit | |
US7366652B2 (en) | Method of programming a co-verification system | |
Wakabayashi | C-based synthesis experiences with a behavior synthesizer,“Cyber” | |
US8868974B2 (en) | Memory-based trigger generation scheme in an emulation environment | |
US8387005B1 (en) | Generation of multi-domain code from a graphical program | |
US10311193B2 (en) | Alteration of a signal value for an FPGA at runtime | |
US7707019B1 (en) | Command buffering for hardware co-simulation | |
US9929734B2 (en) | Method for changing the configuration of a programmable logic module | |
Koczor et al. | Verification approach based on emulation technology | |
US20050144436A1 (en) | Multitasking system level platform for HW/SW co-verification | |
Sayinta et al. | A mixed abstraction level co-simulation case study using systemc for system on chip verification | |
US10318687B2 (en) | Implementing a constant in FPGA code | |
JP3212709B2 (ja) | ロジックシミュレーション装置 | |
Abbes et al. | IP integration methodology for SoC design | |
US11520531B1 (en) | Systems and methods for intercycle gap refresh and backpressure management | |
CN115964969A (zh) | 一种基于分片的数字逻辑仿真加速架构 | |
JP5729983B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
CN112883679A (zh) | 在多电压设计中加油站的自动生成 | |
WO2024049472A2 (en) | Communication link latency tolerance for hardware assisted verification systems | |
Jones et al. | autoVHDL: a domain-specific modeling language for the auto-generation of VHDL core wrappers | |
Esteves et al. | EDgAR: A Platform for Hardware/Software Codesign | |
CN112818627A (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 |