[go: up one dir, main page]

CN117113908B - 一种验证方法、装置、电子设备及可读存储介质 - Google Patents

一种验证方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN117113908B
CN117113908B CN202311345112.6A CN202311345112A CN117113908B CN 117113908 B CN117113908 B CN 117113908B CN 202311345112 A CN202311345112 A CN 202311345112A CN 117113908 B CN117113908 B CN 117113908B
Authority
CN
China
Prior art keywords
programmable logic
hardware
hardware design
design
data
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
Application number
CN202311345112.6A
Other languages
English (en)
Other versions
CN117113908A (zh
Inventor
石侃
徐烁翔
张子卿
韩英明
翁伟杰
包云岗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Open Source Chip Research Institute
Original Assignee
Beijing Open Source Chip Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Open Source Chip Research Institute filed Critical Beijing Open Source Chip Research Institute
Priority to CN202311345112.6A priority Critical patent/CN117113908B/zh
Publication of CN117113908A publication Critical patent/CN117113908A/zh
Application granted granted Critical
Publication of CN117113908B publication Critical patent/CN117113908B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/373Design optimisation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Microelectronics & Electronic Packaging (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明实施例提供一种验证方法、装置、电子设备及可读存储介质,涉及计算机技术领域,该方法包括:将软件设计下载到可编程逻辑芯片的处理系统中,将所述软件设计对应的硬件设计烧录到所述可编程逻辑芯片的可编程逻辑区域中;在所述可编程逻辑芯片中同步运行所述硬件设计和所述软件设计,并监测所述硬件设计的第一运行数据和所述软件设计的第二运行数据;在所述第一运行数据和所述第二运行数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息;将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试。本发明实施例提升了验证效率,并且保证了仿真的自由度和调试效率。

Description

一种验证方法、装置、电子设备及可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种验证方法、装置、电子设备及可读存储介质。
背景技术
在相关技术中,对于高层次综合(High-Level Synthesis,HLS)设计的验证,通常是采用软件仿真的验证方式,与FPGA原型验证、FPGA仿真等硬件仿真方法相比,基于硬件的仿真通常以数十或数百兆赫兹的速度运行,而软件仿真的速度往往较慢,以数十或数百千赫兹为单位,且波形转储或调试信息显示等调试选项会使得仿真速度进一步降低,整体验证效率较低。
发明内容
本发明实施例提供一种验证方法、装置、电子设备及可读存储介质,可以解决相关技术中硬件设计的验证效率较低问题。
为了解决上述问题,本发明实施例公开了一种验证方法,所述方法包括:
将软件设计下载到可编程逻辑芯片的处理系统中,将所述软件设计对应的硬件设计烧录到所述可编程逻辑芯片的可编程逻辑区域中;
在所述可编程逻辑芯片中同步运行所述硬件设计和所述软件设计,并监测所述硬件设计的第一运行数据和所述软件设计的第二运行数据;
在所述第一运行数据和所述第二运行数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息;
将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试。
另一方面,本发明实施例公开了一种验证装置,所述装置包括:
预处理模块,用于将软件设计下载到可编程逻辑芯片的处理系统中,将所述软件设计对应的硬件设计烧录到所述可编程逻辑芯片的可编程逻辑区域中;
监测模块,用于在所述可编程逻辑芯片中同步运行所述硬件设计和所述软件设计,并监测所述硬件设计的第一运行数据和所述软件设计的第二运行数据;
第一快照模块,用于在所述第一运行数据和所述第二运行数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息;
传输模块,用于将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试。
再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的验证方法。
本发明实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的验证方法。
本发明实施例包括以下优点:
本发明实施例提供了一种验证方法,将硬件设计加载到FPGA芯片上运行,利用FPGA加速提升了验证效率;并且,在硬件设计的第一运行数据与软件设计的第二运行数据不匹配的情况下,可以通过硬件快照快速、精准地定位错误,将快照保存的状态信息导入到仿真软件中,利用仿真软件对硬件设计进行更细粒度的调试,保证了仿真的自由度和调试效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种验证方法实施例的步骤流程图;
图2是本发明的一种验证框架的架构示意图;
图3是本发明的一种验证装置的结构框图;
图4是本发明示例提供的一种用于验证的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
方法实施例
本发明实施例提供了一种验证方法,可以将FPGA加速与软件仿相结合,在保证自由度和调试效率的同时,提升验证效率。
为了便于理解本发明提供的实施例,做出以下几点说明:
1、高层次综合(High-Level Synthesis,HLS):高层次综合是一种硬件设计方法,它允许开发者使用高级语言(如C、C++或SystemC)来描述硬件功能和行为,然后通过高层次综合工具将这些高级语言描述转换成硬件电路的RTL(Register Transfer Level)描述。这种方法消除了传统硬件设计中需要手动编写硬件描述语言(如Verilog、VHDL)的过程,使硬件设计过程更加简单和高效,加快了硬件设计的开发速度,降低了硬件设计门槛,使更多的软件开发者能够专注功能设计。但是,HLS也有其局限性,例如在某些复杂的硬件设计场景下,手动编写RTL代码仍可能比自动综合得到的电路效率更高。
不同的公司和研究机构开发了各种各样的HLS工具,目前一些主流的HLS工具包括:
i.Vitis HLS(Xilinx):Vitis HLS 是由Xilinx开发的HLS工具,它是XilinxVivado Design Suite中的一个组件。Vitis HLS的主要目标是允许硬件设计人员使用C/C++和OpenCL等高级编程语言来描述硬件功能,然后将其自动转换为优化的RTL(RegisterTransfer Level)代码,以在Xilinx FPGA和SoC平台上进行高效的硬件加速。
ii.Intel HLS Compiler(Intel FPGA):Intel HLS Compiler是Intel FPGA(前身为Altera)提供的HLS工具,支持使用C/C++语言进行高层次综合,并能够针对Intel FPGA器件生成优化的RTL代码。
iii.LegUp HLS:LegUp HLS是一款开源的HLS工具,支持将C代码转换成FPGA上的硬件电路。
2、IP(IP Core):IP核是一种预先设计和验证的硬件功能单元,可以在不同的硬件系统中重复使用。它是一种可重用的硬件模块,类似于软件开发中的代码库。片上IP可以包括各种不同的功能,从简单的逻辑门和寄存器到复杂的处理器、通信接口、图形处理单元等等。
3、RTL电路 : RTL(Register-Transfer Level,寄存器转换级)电路是一种常见的硬件描述级别。RTL电路描述了数字电路的行为和结构,并使用寄存器传输级的抽象层次表示。RTL电路描述通常使用硬件描述语言(HDL)编写,例如VHDL(VHSIC HardwareDescription Language)、Verilog HDL、SystemVerilog HDL。设计人员可以使用RTL级描述来定义和实现所需的数字电路功能,然后使用综合工具将RTL级描述转换为FPGA中的物理实现。在FPGA、芯片设计和验证领域,RTL级描述对于设计、验证和调试非常重要。它提供了一种抽象层次,使设计人员能够在较高的抽象级别上描述电路行为,并使用适当的工具进行仿真、验证和综合,最终生成可配置到FPGA芯片中的位流(bitstream)文件,以实现特定的数字电路功能。
4、FPGA:FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种可重构的集成电路芯片,具有广泛的应用领域。与传统的固定功能集成电路(ASIC)不同,FPGA可以根据用户的需求进行灵活的重新编程和重新配置,使其适应不同的应用和功能。FPGA由大量的可编程逻辑块(logic block)和可编程互连资源(interconnect resources)组成。可编程逻辑块通常由 Look-Up Tables(LUTs)、寄存器和其他逻辑元件组成,可以执行各种逻辑功能。可编程互连资源用于连接逻辑块,形成所需的电路结构。使用FPGA,设计工程师可以使用硬件描述语言描述所需的电路功能,并通过编程工具将其转化为与FPGA芯片相兼容的位流(bitstream)。位流包含了对FPGA内部逻辑和互连资源进行编程和配置的信息。FPGA的主要优势之一是其可编程性和灵活性。它允许设计工程师在硬件级别上实现自定义的功能和算法,而无需进行传统的定制集成电路设计和制造过程。这使得FPGA在原型开发、快速设计迭代中非常有用。
5、FPGA的动态部分重配置(Dynamic Partial Reconfiguration,DPR)是指在FPGA运行时,可以对部分电路进行重新配置的能力。传统的FPGA设计中,通常需要将整个电路重新编程并重新加载到FPGA中才能改变其功能。而DPR技术则允许在FPGA运行时,仅重新配置部分电路,而不影响其他正在运行的电路。动态部分重配置的主要优势在于其灵活性和资源利用率的提高。通过使用DPR,可以在FPGA中实现多个功能模块,每个模块可以根据需要进行独立的重新配置,而无需重新加载整个设计。这种灵活性使得FPGA能够适应多种应用需求,同时减少了重新编程和重新加载的时间,加快了设计迭代的速度。
6、FIFO: FIFO是“First In, First Out”的缩写,中文称为“先进先出”,它是一种常见的队列数据结构管理方式。在FIFO中,首先进入队列的元素会被最先取出,而最后进入队列的元素会被最后取出,这就好像是排在队伍前面的人会先离开队伍一样。这种数据结构可以用来模拟各种实际场景,比如排队、处理请求等。FIFO队列常常用于管理共享资源、处理任务、缓存管理等。
参照图1,示出了本发明的一种验证方法实施例的步骤流程图,所述方法具体可以包括如下步骤:
步骤101、将软件设计下载到可编程逻辑芯片的处理系统中,将所述软件设计对应的硬件设计烧录到所述可编程逻辑芯片的可编程逻辑区域中。
步骤102、在所述可编程逻辑芯片中同步运行所述硬件设计和所述软件设计,并监测所述硬件设计的第一运行数据和所述软件设计的第二运行数据。
步骤103、在所述第一运行数据和所述第二运行数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
步骤104、将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试。
需要说明的是,可编程逻辑芯片,也即FPGA芯片(或FPGA片上系统),不仅包含可编程门阵列电路,还包含一个或多个片上处理器。其中,可编程门阵列电路通常称为可编程逻辑(Programmable Logic,PL);片上处理器通常为ARM处理器,称为处理系统(ProcessingSystem,PS)。在本发明实施例中,硬件设计烧录在FPGA芯片的PL端,软件设计运行在FPGA芯片的PS端。本发明中的硬件设计主要指的是HLS设计,软件设计主要指的是HLS设计对应的C/C++设计,所述软件设计用于实现与所述硬件设计相同的功能。
在本发明实施例中,先将需要验证的硬件设计烧录到FPGA芯片的PL端,将软件设计下载到FPGA芯片的PS端,在FPGA芯片上同步运行硬件设计和软件设计。示例性的,如果要对硬件设计进行特定的功能验证,可以将对应的基准测试程序下载到FPGA的外部存储器件中,例如,双倍速率同步动态随机存储器(Double Data Rate Synchronous DynamicRandom Access Memory,DDR)。然后,运行FPGA芯片,由硬件设计和软件设计同步执行基准测试程序。基准测试程序包含了一系列程序,用于测试待测设计的性能或其正确性。在实际验证过程中,可以根据不同的验证需求生成不同的基准测试程序。
如果硬件设计的第一运行数据和软件设计的第二运行数据不匹配,就可以确定硬件设计出错。在这种情况下,可以对整个FPGA芯片进行硬件快照,以保存FPGA芯片的状态信息。最后,将保存的状态信息导入到仿真软件中进行仿真,从而对待测设计进行调试。其中,FPGA的状态信息可以包括飞拖、片上内存、DSP、外部设备等的状态信息。本发明实施例中的外部设备指的是搭载在FPGA芯片上,既不属于PL端,也不属于PS端的设备,如DDR等外部存储设备。
参照图2,示出了本发明实施例提供的一种验证框架的架构示意图。如图2所示,该验证框架包括FPGA芯片和仿真软件,仿真软件搭载在个人电脑(Personal Computer,PC)中。其中,FPGA芯片的PL端搭载有硬件设计和验证模块,验证模块用于收集硬件设计和软件设计的运行数据并对两组数据进行比较,进而判断硬件设计是否出错。软件设计运行在FPGA芯片的PS端。图2中的外部设备指的是搭载在FPGA芯片上,既不属于PL端,也不属于PS端的设备,如DDR等外部存储设备。
传统上,FPGA原型方法仅检查模块输出是否与预期结果匹配。然而,如果发现任何错误,内部信号和中间结果的可见性对于调试至关重要。使用FPGA供应商的调试工具(如SignalTap和ILA)来更改分析的信号需要重新编译,而存储更多数据会引入更多开销。在本发明实施例中,可以在原有HLS矩阵乘法的C/C++模型中添加额外的代码来采样硬件设计和软件设计的内部信号,使得后续可以直接对比内部信号。具体地,本发明实施例为硬件设计和软件设计分别配置了一个缓冲区,在运行过程中,硬件设计将其运行数据,包括中间结果、最终的输出结果,均写入硬件缓冲区中;软件设计将其运行数据写入软件缓冲区中。
验证模块可以从硬件缓冲区中读取硬件设计的第一运行数据,从软件缓冲区中读取软件设计的第二运行数据,并对读取的第一运行数据和第二运行数据进行比较,在两组数据不匹配的情况下,就可以确定硬件设计存在错误,中断硬件设计和软件设计的运行,并对FPGA芯片进行硬件快照,保存FPGA芯片的状态信息。验证模块与PC端进行交互,将保存的状态信息导入到仿真软件中,由仿真软件对硬件设计进行调试与修复。
本发明实施例将硬件设计和软件设计映射到同一片FPGA芯片上运行,利用FPGA硬件加速显著提升了仿真速度;并且,本发明实施例可以在硬件设计出错的情况下,将FPGA芯片的状态信息导入到仿真软件中进行仿真,通过软件仿真保证了仿真的自由度和调试效率。
可选地,所述可编程逻辑芯片还搭载有外部设备,所述可编程逻辑区域中还包括验证模块,所述验证模块用于对所述硬件设计进行验证;所述硬件设计在运行过程中,通过片上总线与所述外部设备和/或所述验证模块进行交互。
在本发明实施例中,可以在FPGA芯片上实现对硬件设计的系统级验证,也即硬件设计在运行过程中可以与FPGA芯片上的其他模块,如验证模块、外部设备如DDR等进行交互并产生运行数据,通过对硬件设计和软件设计的运行数据进行比对,确定硬件设计是否存在错误。
可选地,所述可编程逻辑芯片中还包括数据存储器,所述数据存储器用于存储所述硬件设计对应的输入数据,所述硬件设计在运行过程中从所述数据存储器中读取输入数据,并对所述运行数据进行处理。
本发明实施例也可以在FPGA芯片上实现对硬件设计的单元级验证,也即仅对硬件设计本身进行正确性验证,不关注硬件设计与其他模块,如验证模块、外部设备等的交互过程。
可选地,在所述第一运行数据和所述第二运行数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息之前,所述方法还包括:
在所述硬件设计在同一个迭代运算中的结果信号全部生成的情况下,将所述硬件设计的第一运行数据写入硬件缓冲区中;所述第一运行数据包括所述迭代运算中所有的结果信号。
在PL端,可以对硬件设计每次迭代运算的中间结果进行采样。由于在HLS生成的硬件中,内部的结果信号可能不会在同一时钟周期生成,因此可以对硬件设计中同一个迭代运算中的结果进行进行同步之后再写入硬件缓冲区中,也即硬件设计在同一个迭代运算中的结果信号全部生成的情况下,将迭代运算中所有的结果信号同步写入硬件缓冲区中。
示例性的,以用于实现归并排序的HLS硬件设计为例,其输出的信号可以包括地址信号和数据信号。地址信号和数据信号的输出时间存在差异,因此可以将对地址信号和数据信号进行同步,以“地址+数据”的形式写入硬件缓冲区中。
在PS端,由于软件设计的中间计算结果已在同一迭代内被识别并按顺序执行,因此无需额外的同步。
在本发明的一种可选实施例中,所述方法还包括:
步骤S11、确定所述硬件设计中第一信号的采样条件;所述第一信号为所述硬件设计中的任一信号;
步骤S12、在所述第一信号满足所述采样条件的情况下,中断所述硬件设计的运行,并对所述硬件设计进行硬件快照,以保存所述硬件设计的状态信息。
在本发明实施例中,可以对硬件设计中感兴趣的第一信号进行采样,对HLS设计本身进行正确性验证。其中,第一信号可以是硬件设计运行过程中生成的任一信号。在验证过程中,可以预先设置第一信号的采样条件,在确定满足采样条件的情况下,中断硬件设计的运行,并对硬件设计进行硬件快照。
示例性地,所述FPGA芯片的PL端还包括中断模块,在验证过程中,可以在中断模块内设置第一信号的采样条件,中断模块在确定满足采样条件的情况下,向硬件设计发送中断信号,硬件设计在接收到中断信号后,暂停运行。在硬件设计安全暂停后,中断模块仅对设计模块(包括硬件设计和硬件设计对应的功能单元)进行硬件快照,保存该设计模块的状态信息。例如,可以针对信号signal A、signal B和 signal C设置采样条件“signal A ==x&&signal B == x || signal C>x”,在满足该采样条件时中断硬件设计并对设计模块的状态信息进行快照保存。
进一步地,可以将该硬件设计的状态信息导入到仿真软件中进行仿真,从而实现对硬件设计的单元级验证,也即仅对硬件设计本身进行正确性验证,不关注硬件设计与其他模块,如验证模块、外部设备等的交互过程。
在本发明的一种可选实施例中,所述方法还包括:
步骤S21、确定所述硬件设计中第二信号的断点逻辑;所述第二信号的正确值为目标区间中的任意值,所述断点逻辑用于指示所述第二信号对应的目标区间;
步骤S22、在所述第二信号的当前值不符合所述断点逻辑的情况下,中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
可以理解的是,某些中间信号的值在一定范围内就是正确的,这种情况无法直接与PS端软件设计中的信号值进行比较。在本发明实施例中,可以为这些信号增加断点逻辑判断。具体地,如果第二信号的当前值为目标区间内的任意值,则不做任何处理,硬件设计进行运行。如果第二信号的当前值不属于目标区间内的任意值,也即该信号的当前值不符合断点逻辑,在这种情况下,就可以中断硬件设计的运行,并通过硬件快照保存FPGA芯片的状态信息。
进一步的,可以将保存的状态信息导入到仿真软件中进行仿真,从而对第二信号进行更细粒度的分析、调试。
在本发明的一种可选实施例中,所述可编程逻辑芯片的可编程逻辑区域中还包括验证模块,所述验证模块用于对所述第一运行数据和所述第二运行数据进行比较;所述在所述第一运行数据和所述第二运行数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息,包括:
步骤S31、在所述第一运行数据和/或所述第二运行数据的数据量大于或等于预设阈值的情况下,对所述第一运行数据和所述第二运行数据分别进行压缩处理,得到第一压缩数据和第二压缩数据;
步骤S32、将所述第一压缩数据和所述第二压缩数据发送至所述验证模块,通过所述验证模块对所述第一压缩数据和所述第二压缩数据进行比较;
步骤S33、在所述第一压缩数据和所述第二压缩数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
如果硬件设计和软件设计在运行过程中产生了大量的运行数据,而片上总线的通信带宽有限,传输这些数据就需要很长时间,影响验证效率。因此,在本发明实施例中,如果硬件设计的第一运行数据的数据量大于或等于预设阈值,和/或软件设计的第一运行数据的数据量大于或等于预设阈值的情况下,可以利用压缩算法对硬件设计的第一运行数据和软件设计的第二运行数据进行压缩,然后再将压缩后的第一压缩数据和第二压缩数据发送至验证模块中,从而减少因数据传输导致的延迟和资源开销。
作为一种示例,可以在FPGA芯片中为硬件设计和软件设计分配对应的缓冲区,用于记录运行数据。通常情况下,用于记录硬件设计的运行数据的硬件缓冲区和用于记录软件设计的运行数据的软件缓冲区均设置在PL端,一般在验证模块中。硬件设计和软件设计可以在数据量较大的情况下,先利用压缩算法对运行数据分别进行压缩,然后再将压缩后的数据写入对应的缓冲区中。其中,压缩算法可以包括但不限于XOR-folding、checksum和循环冗余校验(CRC)等算法。选择合适的压缩粒度可以平衡压缩率和准确性,以快速检测潜在的问题。在实际应用中,可以基于压缩粒度以及压缩准确性选择压缩算法。
综上,本发明实施例提供了一种验证方法,将硬件设计加载到FPGA芯片上运行,利用FPGA加速提升了验证效率;并且,在硬件设计的第一运行数据与软件设计的第二运行数据不匹配的情况下,可以通过硬件快照快速、精准地定位错误,将快照保存的状态信息导入到仿真软件中,利用仿真软件对硬件设计进行更细粒度的调试,保证了仿真的自由度和调试效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图3,示出了本发明的一种验证装置的结构框图,所述装置具体可以包括:
预处理模块301,用于将软件设计下载到可编程逻辑芯片的处理系统中,将所述软件设计对应的硬件设计烧录到所述可编程逻辑芯片的可编程逻辑区域中;
监测模块302,用于在所述可编程逻辑芯片中同步运行所述硬件设计和所述软件设计,并监测所述硬件设计的第一运行数据和所述软件设计的第二运行数据;
第一快照模块303,用于在所述第一运行数据和所述第二运行数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息;
传输模块304,用于将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试。
可选地,所述可编程逻辑芯片还搭载有外部设备,所述可编程逻辑区域中还包括验证模块,所述验证模块用于对所述硬件设计进行验证;所述硬件设计在运行过程中,通过片上总线与所述外部设备和/或所述验证模块进行交互。
可选地,所述可编程逻辑芯片中还包括数据存储器,所述数据存储器用于存储所述硬件设计对应的输入数据,所述硬件设计在运行过程中从所述数据存储器中读取输入数据,并对所述运行数据进行处理。
可选地,所述装置还包括:
数据写入模块,用于在所述硬件设计在同一个迭代运算中的结果信号全部生成的情况下,将所述硬件设计的第一运行数据写入硬件缓冲区中;所述第一运行数据包括所述迭代运算中所有的结果信号。
可选地,所述装置还包括:
第一确定模块,用于确定所述硬件设计中第一信号的采样条件;所述第一信号为所述硬件设计中的任一信号;
第二快照模块,用于在所述第一信号满足所述采样条件的情况下,中断所述硬件设计的运行,并对所述硬件设计进行硬件快照,以保存所述硬件设计的状态信息。
可选地,所述装置还包括:
第二确定模块,用于确定所述硬件设计中第二信号的断点逻辑;所述第二信号的正确值为目标区间中的任意值,所述断点逻辑用于指示所述第二信号对应的目标区间;
第三快照模块,用于在所述第二信号的当前值不符合所述断点逻辑的情况下,中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
可选地,所述可编程逻辑芯片的可编程逻辑区域中还包括验证模块,所述验证模块用于对所述第一运行数据和所述第二运行数据进行比较;所述第一快照模块,包括:
压缩子模块,用于在所述第一运行数据和/或所述第二运行数据的数据量大于或等于预设阈值的情况下,对所述第一运行数据和所述第二运行数据分别进行压缩处理,得到第一压缩数据和第二压缩数据;
发送子模块,用于将所述第一压缩数据和所述第二压缩数据发送至所述验证模块,通过所述验证模块对所述第一压缩数据和所述第二压缩数据进行比较;
快照子模块,用于在所述第一压缩数据和所述第二压缩数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
综上,本发明实施例提供了一种验证装置,将硬件设计加载到FPGA芯片上运行,利用FPGA加速提升了验证效率;并且,在硬件设计的第一运行数据与软件设计的第二运行数据不匹配的情况下,可以通过硬件快照快速、精准地定位错误,将快照保存的状态信息导入到仿真软件中,利用仿真软件对硬件设计进行更细粒度的调试,保证了仿真的自由度和调试效率。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的处理器,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参照图4,是本发明实施例提供的一种用于验证的电子设备的结构框图。如图4所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述实施例的验证方法。
所述处理器可以是CPU(Central Processing Unit,中央处理器),通用处理器、DSP(Digital Signal Processor,数字信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmble Gate Array,现场可编程门阵列)或者其他可编辑器件、晶体管逻辑器件、硬件部件或者其任意组合。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
所述通信总线可包括一通路,在存储器和通信接口之间传送信息。通信总线可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。所述通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
所述存储器可以是ROM(Read Only内存,只读内存)或可存储静态信息和指令的其他类型的静态存储设备、RAM(Random Access,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically Erasable Programmable ReadOnly,电可擦可编程只读内存)、CD-ROM(Compact Disa Read Only,只读光盘)、磁带、软盘和光数据存储设备等。
本发明实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备(服务器或者终端)的处理器执行时,使得处理器能够执行图1所示的验证方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种验证方法、装置、电子设备及可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (13)

1.一种验证方法,其特征在于,所述方法包括:
将软件设计下载到可编程逻辑芯片的处理系统中,将所述软件设计对应的硬件设计烧录到所述可编程逻辑芯片的可编程逻辑区域中;
在所述可编程逻辑芯片中同步运行所述硬件设计和所述软件设计,并监测所述硬件设计的第一运行数据和所述软件设计的第二运行数据;
在所述第一运行数据和所述第二运行数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息;
将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试;
其中,所述可编程逻辑芯片还搭载有外部设备,所述可编程逻辑区域中还包括验证模块,所述验证模块用于对所述硬件设计进行验证;所述硬件设计在运行过程中,通过片上总线与所述外部设备和/或所述验证模块进行交互。
2.根据权利要求1所述的方法,其特征在于,所述可编程逻辑芯片中还包括数据存储器,所述数据存储器用于存储所述硬件设计对应的输入数据,所述硬件设计在运行过程中从所述数据存储器中读取输入数据,并对所述运行数据进行处理。
3.根据权利要求1所述的方法,其特征在于,在所述第一运行数据和所述第二运行数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息之前,所述方法还包括:
在所述硬件设计在同一个迭代运算中的结果信号全部生成的情况下,将所述硬件设计的第一运行数据写入硬件缓冲区中;所述第一运行数据包括所述迭代运算中所有的结果信号。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述硬件设计中第一信号的采样条件;所述第一信号为所述硬件设计中的任一信号;
在所述第一信号满足所述采样条件的情况下,中断所述硬件设计的运行,并对所述硬件设计进行硬件快照,以保存所述硬件设计的状态信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述硬件设计中第二信号的断点逻辑;所述第二信号的正确值为目标区间中的任意值,所述断点逻辑用于指示所述第二信号对应的目标区间;
在所述第二信号的当前值不符合所述断点逻辑的情况下,中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
6.根据权利要求1所述的方法,其特征在于,所述可编程逻辑芯片的可编程逻辑区域中还包括验证模块,所述验证模块用于对所述第一运行数据和所述第二运行数据进行比较;所述在所述第一运行数据和所述第二运行数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息,包括:
在所述第一运行数据和/或所述第二运行数据的数据量大于或等于预设阈值的情况下,对所述第一运行数据和所述第二运行数据分别进行压缩处理,得到第一压缩数据和第二压缩数据;
将所述第一压缩数据和所述第二压缩数据发送至所述验证模块,通过所述验证模块对所述第一压缩数据和所述第二压缩数据进行比较;
在所述第一压缩数据和所述第二压缩数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
7.一种验证装置,其特征在于,所述装置包括:
预处理模块,用于将软件设计下载到可编程逻辑芯片的处理系统中,将所述软件设计对应的硬件设计烧录到所述可编程逻辑芯片的可编程逻辑区域中;
监测模块,用于在所述可编程逻辑芯片中同步运行所述硬件设计和所述软件设计,并监测所述硬件设计的第一运行数据和所述软件设计的第二运行数据;
第一快照模块,用于在所述第一运行数据和所述第二运行数据不匹配的情况下,对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息;
传输模块,用于将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试;
其中,所述可编程逻辑芯片还搭载有外部设备,所述可编程逻辑区域中还包括验证模块,所述验证模块用于对所述硬件设计进行验证;所述硬件设计在运行过程中,通过片上总线与所述外部设备和/或所述验证模块进行交互。
8.根据权利要求7所述的装置,其特征在于,所述可编程逻辑芯片中还包括数据存储器,所述数据存储器用于存储所述硬件设计对应的输入数据,所述硬件设计在运行过程中从所述数据存储器中读取输入数据,并对所述运行数据进行处理。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
数据写入模块,用于在所述硬件设计在同一个迭代运算中的结果信号全部生成的情况下,将所述硬件设计的第一运行数据写入硬件缓冲区中;所述第一运行数据包括所述迭代运算中所有的结果信号。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第一确定模块,用于确定所述硬件设计中第一信号的采样条件;所述第一信号为所述硬件设计中的任一信号;
第二快照模块,用于在所述第一信号满足所述采样条件的情况下,中断所述硬件设计的运行,并对所述硬件设计进行硬件快照,以保存所述硬件设计的状态信息。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于确定所述硬件设计中第二信号的断点逻辑;所述第二信号的正确值为目标区间中的任意值,所述断点逻辑用于指示所述第二信号对应的目标区间;
第三快照模块,用于在所述第二信号的当前值不符合所述断点逻辑的情况下,中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
12.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至6中任一项所述的验证方法。
13.一种可读存储介质,其特征在于,当所述可读存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至6中任一项所述的验证方法。
CN202311345112.6A 2023-10-17 2023-10-17 一种验证方法、装置、电子设备及可读存储介质 Active CN117113908B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311345112.6A CN117113908B (zh) 2023-10-17 2023-10-17 一种验证方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311345112.6A CN117113908B (zh) 2023-10-17 2023-10-17 一种验证方法、装置、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN117113908A CN117113908A (zh) 2023-11-24
CN117113908B true CN117113908B (zh) 2024-02-02

Family

ID=88800397

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311345112.6A Active CN117113908B (zh) 2023-10-17 2023-10-17 一种验证方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN117113908B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117910398A (zh) * 2024-02-02 2024-04-19 芯华章科技(深圳)有限公司 仿真逻辑系统设计的方法、电子装置和存储介质
CN118966099B (zh) * 2024-10-15 2025-02-07 北京开源芯片研究院 一种验证方法、装置、电子设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103914580A (zh) * 2012-12-31 2014-07-09 复旦大学 一种用于fpga电路位流仿真的方法
CN109543212A (zh) * 2018-10-10 2019-03-29 深圳市紫光同创电子有限公司 可编程逻辑器件的功能测试方法、装置及计算机存储介质
CN116611375A (zh) * 2023-05-26 2023-08-18 上海壁仞智能科技有限公司 软硬件协同仿真平台及软硬件测试方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9513334B2 (en) * 2013-03-15 2016-12-06 Microsemi SoC Corporation System on a chip FPGA spatial debugging using single snapshot
US9217774B2 (en) * 2013-11-01 2015-12-22 International Business Machines Corporation Cycle-accurate replay and debugging of running FPGA systems
GB201522216D0 (en) * 2015-12-16 2016-01-27 Lambda Logic Ltd System and method for the design of digital hardware

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103914580A (zh) * 2012-12-31 2014-07-09 复旦大学 一种用于fpga电路位流仿真的方法
CN109543212A (zh) * 2018-10-10 2019-03-29 深圳市紫光同创电子有限公司 可编程逻辑器件的功能测试方法、装置及计算机存储介质
CN116611375A (zh) * 2023-05-26 2023-08-18 上海壁仞智能科技有限公司 软硬件协同仿真平台及软硬件测试方法

Also Published As

Publication number Publication date
CN117113908A (zh) 2023-11-24

Similar Documents

Publication Publication Date Title
CN117113908B (zh) 一种验证方法、装置、电子设备及可读存储介质
US12001317B2 (en) Waveform based reconstruction for emulation
US8229723B2 (en) Performance software instrumentation and analysis for electronic design automation
US10657217B2 (en) Latency test in networking system-on-chip verification
US10678976B2 (en) Generic protocol analyzer for circuit design verification
US10970443B2 (en) Generation of module and system-level waveform signatures to verify, regression test and debug SoC functionality
CN117094269B (zh) 一种验证方法、装置、电子设备及可读存储介质
CN110785761B (zh) 存在时钟动态重编程时仿真时间线的压缩方法
Murali et al. Improved design debugging architecture using low power serial communication protocols for signal processing applications
US8306802B2 (en) Method for modeling an HDL design using symbolic simulation
US6725187B1 (en) Latch inference using dataflow analysis
Schirner et al. Result-oriented modeling—A novel technique for fast and accurate TLM
CN117350208A (zh) 时序逻辑元件性能检查方法及设备
US10621296B1 (en) Generating SAIF efficiently from hardware platforms
CN117077603B (zh) 一种验证方法、芯片、系统、电子设备及可读存储介质
Coussy et al. GAUT–a free and open source high-level synthesis tool
Khan et al. gNOSIS: A board-level debugging and verification tool
US9608871B1 (en) Intellectual property cores with traffic scenario data
Banerjee et al. Design aware scheduling of dynamic testbench controlled design element accesses in FPGA-based HW/SW co-simulation systems for fast functional verification
CN118917272B (zh) 用于提取芯片功耗评估波形的方法及计算设备
Nagarajan The Design and Verification of a Synchronous First-In First-Out (FIFO) Module Using System Verilog Based Universal Verification Methodology (UVM)
Xu et al. Hercules: Efficient Verification of High-Level Synthesis Designs with FPGA Acceleration
Siddiqui System-on-Chip (SoC) emulation
Habib ul Hasan Khan Automated Debugging Methodology for FPGA-based Systems
Niskanen High-level verification flow for a high-level synthesis-based digital logic design

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