CN117077603B - 一种验证方法、芯片、***、电子设备及可读存储介质 - Google Patents
一种验证方法、芯片、***、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN117077603B CN117077603B CN202311340379.6A CN202311340379A CN117077603B CN 117077603 B CN117077603 B CN 117077603B CN 202311340379 A CN202311340379 A CN 202311340379A CN 117077603 B CN117077603 B CN 117077603B
- Authority
- CN
- China
- Prior art keywords
- design
- hardware
- module
- software
- operation 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000012795 verification Methods 0.000 title claims abstract description 69
- 238000013461 design Methods 0.000 claims abstract description 269
- 238000004088 simulation Methods 0.000 claims abstract description 50
- 230000008569 process Effects 0.000 claims abstract description 34
- 230000006870 function Effects 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 21
- 238000004891 communication Methods 0.000 claims description 20
- 238000005070 sampling Methods 0.000 claims description 14
- 230000008676 import Effects 0.000 claims description 4
- 238000010200 validation analysis Methods 0.000 claims description 4
- 238000007906 compression Methods 0.000 description 27
- 230000006835 compression Effects 0.000 description 26
- 238000004422 calculation algorithm Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000015572 biosynthetic process Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 238000003786 synthesis reaction Methods 0.000 description 7
- 230000001133 acceleration Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 235000009392 Vitis Nutrition 0.000 description 3
- 241000219095 Vitis Species 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012938 design process Methods 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
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012942 design verification Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 238000011160 research 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/36—Circuit design at the analogue level
- G06F30/367—Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/36—Circuit design at the analogue level
- G06F30/373—Design optimisation
-
- 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)
- Microelectronics & Electronic Packaging (AREA)
- Test And Diagnosis Of Digital Computers (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芯片。参照图2,示出了本申请实施例提供的一种验证***的结构示意图。如图2所示,该验证***包括FPGA芯片和个人电脑(Personal Computer,PC),PC中搭载有仿真软件。FPGA芯片的可编程逻辑区域中包括设计模块、仿真模块和板载模块,所述设计模块包括硬件设计和所述硬件设计对应的功能单元;所述仿真模块包括所述设计模块和中断模块;所述板载模块包括所述仿真模块和验证模块;所述可编程逻辑芯片的处理***中运行有所述硬件设计对应的软件设计,所述软件设计用于实现与所述硬件设计相同的功能。
需要说明的是,FPGA芯片(或FPGA片上***),不仅包含可编程门阵列电路,还包含一个或多个片上处理器。其中,可编程门阵列电路通常称为可编程逻辑(ProgrammableLogic,PL);片上处理器通常为ARM处理器,称为处理***(Processing System,PS)。在本发明实施例中,设计模块、仿真模块和板载模块均烧录在FPGA芯片的PL端,软件设计运行在FPGA芯片的PS端。
本发明中的硬件设计主要指的是HLS设计,软件设计主要指的是HLS设计对应的C/C++设计。示例性的,可以通过HLS工具将C代码生成HLS。以归并排序算法为例,可以对C代码进行C/RTL协同仿真,得到相应的HLS设计。对HLS设计添加上外部需要的模块或IP,就可以得到本申请中的设计模块(Design Module)。例如,对HLS设计添加BRAM模块以存储归并排序算法所需要的数据,包括排序前的输入数据和排序后的输出数据。
仿真模块(Simulation Module)主要是在设计模块的基础上增加中断模块,中断模块用于对硬件设计进行中断控制。
板载模块(Onboard Module)主要是在仿真模块的基础上增加验证模块,该验证模块可以对硬件设计和软件设计的运行进行比较,进而判断硬件设计是否出错。
传统上,FPGA原型方法仅检查模块输出是否与预期结果匹配。然而,如果发现任何错误,内部信号和中间结果的可见性对于调试至关重要。使用FPGA供应商的调试工具(如SignalTap和ILA)来更改分析的信号需要重新编译,而存储更多数据会引入更多开销。在本发明实施例中,可以在原有HLS矩阵乘法的C/C++模型中添加额外的代码来采样硬件设计和软件设计的内部信号,使得后续可以直接对比内部信号。具体地,本发明实施例为硬件设计和软件设计分别配置了一个缓冲区,在运行过程中,硬件设计将其运行数据,包括中间结果、最终的输出结果,均写入硬件缓冲区中;软件设计将其运行数据写入软件缓冲区中。
验证模块可以从硬件缓冲区中读取硬件设计的第一运行数据,从软件缓冲区中读取软件设计的第二运行数据,并对读取的第一运行数据和第二运行数据进行比较,在两组数据不匹配的情况下,就可以确定硬件设计存在错误,中断硬件设计和软件设计的运行,并对FPGA芯片进行硬件快照,保存FPGA芯片的状态信息,如飞拖、片上内存、DSP、外部设备等的状态信息。需要说明的是,本发明实施例中的外部设备指的是搭载在FPGA芯片上,既不属于PL端,也不属于PS端的设备,如双倍速率同步动态随机存储器(Double Data RateSynchronous Dynamic Random Access Memory,DDR)等外部存储设备。
验证模块与PC端进行交互,将保存的状态信息导入到仿真软件中,由仿真软件对硬件设计进行调试与修复。
本发明实施例将硬件设计和软件设计映射到同一片FPGA芯片上运行,利用FPGA硬件加速显著提升了仿真速度;并且,本发明实施例可以在硬件设计出错的情况下,将FPGA芯片的状态信息导入到仿真软件中进行仿真,通过软件仿真保证了仿真的自由度和调试效率。
可选地,所述功能单元包括数据存储器,所述数据存储器用于存储所述硬件设计对应的输入数据,所述硬件设计在运行过程中从所述数据存储器中读取输入数据,并对所述运行数据进行处理。
基于本发明实施了提供的三层结构,可以在FPGA芯片上实现对硬件设计的单元级验证,也即仅对硬件设计本身进行正确性验证,不关注硬件设计与其他模块,如验证模块、外部设备等的交互过程。
可选地,所述可编程逻辑芯片还搭载有外部设备;所述硬件设计在运行过程中,通过片上总线与所述外部设备、所述功能单元、所述中断模块和所述验证模块中的任一项进行交互。
基于本发明实施了提供的三层结构,还可以在FPGA芯片上实现对硬件设计的***级验证,也即硬件设计在运行过程中可以与FPGA芯片上的其他模块,如验证模块、外部设备如DDR等进行交互并产生运行数据,通过对硬件设计和软件设计的运行数据进行比对,确定硬件设计是否存在错误。
可选地,所述硬件设计在运行过程中将第一运行数据写入硬件缓冲区,包括:
所述硬件设计在同一个迭代运算中的结果信号全部生成的情况下,将第一运行数据写入硬件缓冲区中;所述第一运行数据包括所述迭代运算中所有的结果信号。
在PL端,可以对硬件设计每次迭代运算的中间结果进行采样。由于在HLS生成的硬件中,内部的结果信号可能不会在同一时钟周期生成,因此可以对硬件设计中同一个迭代运算中的结果进行进行同步之后再写入硬件缓冲区中,也即硬件设计在同一个迭代运算中的结果信号全部生成的情况下,将迭代运算中所有的结果信号同步写入硬件缓冲区中。
示例性的,以用于实现归并排序的HLS硬件设计为例,其输出的信号可以包括地址信号和数据信号。地址信号和数据信号的输出时间存在差异,因此可以将对地址信号和数据信号进行同步,以“地址+数据”的形式写入硬件缓冲区中。
在PS端,由于软件设计的中间计算结果已在同一迭代内被识别并按顺序执行,因此无需额外的同步。
在本发明的一种可选实施例中,所述方法还包括:
步骤S11、所述中断模块确定第一信号的采样条件;所述第一信号为所述硬件设计中的任一信号;
步骤S12、在所述第一信号满足所述采样条件的情况下,所述中断模块向所述硬件设计发送中断信号,以中断所述硬件设计的运行;
步骤S13、所述中断模块对所述设计模块进行硬件快照,以保存所述设计模块的状态信息。
在本发明实施例中,可以通过中断模块对感兴趣的第一信号进行采样,对HLS设计本身进行正确性验证。其中,第一信号可以是硬件设计运行过程中生成的任一信号。在验证过程中,可以在中断模块内设置第一信号的采样条件,中断模块在确定满足采样条件的情况下,向硬件设计发送中断信号,硬件设计在接收到中断信号后,暂停运行。在硬件设计安全暂停后,中断模块仅对设计模块(包括硬件设计和硬件设计对应的功能单元)进行硬件快照,保存该设计模块的状态信息。例如,可以针对信号signal A、signal B和 signal C设置采样条件“signal A == x&&signal B == x || signal C>x”,在满足该采样条件时中断硬件设计并对设计模块的状态信息进行快照保存。
进一步地,可以将该设计模块的状态信息导入到仿真软件中进行仿真,从而实现对硬件设计的单元级验证,也即仅对硬件设计本身进行正确性验证,不关注硬件设计与其他模块,如验证模块、外部设备等的交互过程。
在本发明的一种可选实施例中,所述方法还包括:
步骤S21、所述中断模块确定第二信号的断点逻辑;所述第二信号的正确值为目标区间中的任意值,所述断点逻辑用于指示所述第二信号对应的目标区间;
步骤S22、在所述第二信号的当前值不符合所述断点逻辑的情况下,所述中断模块中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
可以理解的是,某些中间信号的值在一定范围内就是正确的,这种情况无法直接与PS端软件设计中的信号值进行比较。在本发明实施例中,可以在中断模块中为这些信号增加断点逻辑判断。具体地,如果第二信号的当前值为目标区间内的任意值,则中断模块不做任何处理,硬件设计进行运行。如果第二信号的当前值不属于目标区间内的任意值,也即该信号的当前值不符合断点逻辑,在这种情况下,中断模块就可以中断硬件设计的运行,并通过硬件快照保存FPGA芯片的状态信息。
进一步的,可以将保存的状态信息导入到仿真软件中进行仿真,从而对第二信号进行更细粒度的分析、调试。
在本发明的一种可选实施例中,所述硬件设计在运行过程中将第一运行数据写入硬件缓冲区,所述软件设计在运行过程中将第二运行数据写入软件缓冲区,包括:
步骤S31、在所述硬件设计的第一运行结果的数据量大于或等于预设阈值,和/或所述软件设计的第二运行结果的数据量大于或等于预设阈值的情况下,所述硬件设计对所述第一运行结果进行压缩处理,得到第一运行数据,并将所述第一运行数据写入所述硬件缓冲区中;
步骤S32、所述软件设计对所述第二运行结果进行压缩处理,得到第二运行数据,并将所述第二运行数据写入软件缓冲区中。
通常情况下,硬件缓冲区和软件缓冲区均设置在PL端,一般在验证模块中。如果硬件设计和软件设计在运行过程中产生了大量的运行数据,而片上总线的通信带宽有限,传输这些数据就需要很长时间,影响验证效率。
因此,当硬件设计和软件设计的运行数据的数据量较大的情况下,也即硬件设计的第一运行结果的数据量大于或等于预设阈值,和/或所述软件设计的第二运行结果的数据量大于或等于预设阈值的情况下,可以利用压缩算法对第一运行结果、第二运行结果进行压缩,然后再将压缩后的数据写入到对应的缓冲区中,从而减少因数据传输导致的延迟和资源开销。
作为一种示例,压缩算法可以包括但不限于XOR-folding、checksum和循环冗余校验(CRC)等算法。选择合适的压缩粒度可以平衡压缩率和准确性,以快速检测潜在的问题。在实际应用中,可以基于压缩粒度以及压缩准确性选择压缩算法。
对于压缩粒度的设置,可以引入压缩粒度选项Gc,将信号分组成Gc位的字。假设最终将采集的数据压缩为128位的数据,当需要比较N个Gc位字,并且N>128/Gc时,需要进行压缩。每个Gc位的字通过之前提到的压缩算法压缩为Bc位,其中Bc由公式(1)给出。
较大的Gc值可以使压缩算法性能更好,但也会增加准确定位错误的难度。
对于压缩算法的选择,可以针对每种算法,从64到512依次调整压缩粒度Gc,并测量每种压缩粒度对应的准确性、延迟和面积消耗。通过生成包含随机数据的数据流,使用不同的Gc值进行压缩。进一步地,还可以在原始数据流中的随机间隔***错误,并再次进行压缩。最后,将压缩前和数据和压缩后的数据进行比较,以确定压缩准确性。示例性地,可以引入压缩准确率Rca的指标来量化压缩算法的压缩准确度,如公式(2)所示。
其中,Ndb和Nab分别表示压缩后检测到的错误数量和压缩前实际错误数量。较高的Rca表示压缩算法和配置会错过较少的潜在错误。在实际应用中,可以选择压缩准确率高的压缩算法对硬件设计和软件设计的运行结果进行压缩。
可选地,所述方法还包括:
在满足中断条件的情况下,所述中断模块中断所述硬件设计的运行。
其中,所述中断条件包括以下至少一项:
所述硬件设计运行至预设断点;
所述硬件设计的运行结果出错;
所述硬件设计的硬件缓冲区已满;
所述软件设计的软件缓冲区为空。
需要说明的是,预设断点可以是测试人员自定义的一个或多个时间点,当硬件设计运行至预设断点时,中断模块就可以中断硬件设计的运行。
硬件设计的运行结果出错,包括前述各个实施例中提及的出错情况,如硬件设计的第一运行数据与软件设计的第二运行数据不匹配、第二信号的当前值不满足断点逻辑,等等。
如果硬件设计对应的硬件缓冲区已满,此时已经无法继续将待测设计的运行数据写入硬件缓冲区中了,所以需要中断硬件设计,等待硬件缓冲区释放已记录的数据。
如果软件设计对应的软件缓冲区为空,此时无法对硬件设计和软件设计的执行结果进行比较,需要中断硬件设计,等待软件设计将运行数据写入软件缓冲区中。
在本发明实施例中,中断模块可以基于中断条件自动确定何时停止硬件设计。
综上,本发明实施例提供了一种验证方法,将硬件设计加载到FPGA芯片上运行,利用FPGA加速提升了验证效率;并且,在硬件设计的第一运行数据与软件设计的第二运行数据不匹配的情况下,可以通过硬件快照快速、精准地定位错误,将快照保存的状态信息导入到仿真软件中,利用仿真软件对硬件设计进行更细粒度的调试,保证了仿真的自由度和调试效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图3,示出了本发明的一种可编程逻辑芯片的结构示意图,所述可编程逻辑芯片的可编程逻辑区域中包括设计模块、仿真模块和板载模块,所述设计模块包括硬件设计和所述硬件设计对应的功能单元;所述仿真模块包括所述设计模块和中断模块;所述板载模块包括所述仿真模块和验证模块;所述可编程逻辑芯片的处理***中运行有所述硬件设计对应的软件设计,所述软件设计用于实现与所述硬件设计相同的功能;
所述硬件设计,用于在运行过程中将第一运行数据写入硬件缓冲区;
所述软件设计,用于在运行过程中将第二运行数据写入软件缓冲区;
所述验证模块,用于从所述硬件缓冲区中读取所述第一运行数据,从所述软件缓冲区中读取所述第二运行数据,并对所述第一运行数据和所述第二运行数据进行比对;在所述第一运行数据和所述第二运行数据不匹配的情况下,中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息;将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试。
可选地,所述硬件设计具体用于:
在同一个迭代运算中的结果信号全部生成的情况下,将第一运行数据写入硬件缓冲区中;所述第一运行数据包括所述迭代运算中所有的结果信号。
可选地,所述中断模块用于:
确定第一信号的采样条件;所述第一信号为所述硬件设计中的任一信号;
在所述第一信号满足所述采样条件的情况下,向所述硬件设计发送中断信号,以中断所述硬件设计的运行;
对所述设计模块进行硬件快照,以保存所述设计模块的状态信息。
可选地,所述中断模块还用于:
确定第二信号的断点逻辑;所述第二信号的正确值为目标区间中的任意值,所述断点逻辑用于指示所述第二信号对应的目标区间;
在所述第二信号的当前值不符合所述断点逻辑的情况下,中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
可选地,所述硬件设计具体用于:
在所述硬件设计的第一运行结果的数据量大于或等于预设阈值,和/或所述软件设计的第二运行结果的数据量大于或等于预设阈值的情况下,对所述第一运行结果进行压缩处理,得到第一运行数据,并将所述第一运行数据写入所述硬件缓冲区中;
所述软件设计具体用于:
对所述第二运行结果进行压缩处理,得到第二运行数据,并将所述第二运行数据写入软件缓冲区中。
可选地,所述中断模块还用于:
在满足中断条件的情况下,中断所述硬件设计的运行;
其中,所述中断条件包括以下至少一项:
所述硬件设计运行至预设断点;
所述硬件设计的运行结果出错;
所述硬件设计的硬件缓冲区已满;
所述软件设计的软件缓冲区为空。
可选地,所述可编程逻辑芯片还搭载有外部设备;所述硬件设计在运行过程中,通过片上总线与所述外部设备、所述功能单元、所述中断模块和所述验证模块中的任一项进行交互。
可选地,所述功能单元包括数据存储器,所述数据存储器用于存储所述硬件设计对应的输入数据,所述硬件设计在运行过程中从所述数据存储器中读取输入数据,并对所述运行数据进行处理。
参照图2,示出了本发明实施例提供的一种验证***的结构示意图,如图2所示,所述***包括可编程逻辑芯片和个人电脑,所述个人电脑中搭载有仿真软件;所述可编程逻辑芯片的可编程逻辑区域中包括设计模块、仿真模块和板载模块,所述设计模块包括硬件设计和所述硬件设计对应的功能单元;所述仿真模块包括所述设计模块和中断模块;所述板载模块包括所述仿真模块和验证模块;所述可编程逻辑芯片的处理***中运行有所述硬件设计对应的软件设计,所述软件设计用于实现与所述硬件设计相同的功能;
所述硬件设计,用于在运行过程中将第一运行数据写入硬件缓冲区;
所述软件设计,用于在运行过程中将第二运行数据写入软件缓冲区;
所述验证模块,用于从所述硬件缓冲区中读取所述第一运行数据,从所述软件缓冲区中读取所述第二运行数据,并对所述第一运行数据和所述第二运行数据进行比对;在所述第一运行数据和所述第二运行数据不匹配的情况下,中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息;将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试。
可选地,所述硬件设计具体用于:
在同一个迭代运算中的结果信号全部生成的情况下,将第一运行数据写入硬件缓冲区中;所述第一运行数据包括所述迭代运算中所有的结果信号。
可选地,所述中断模块用于:
确定第一信号的采样条件;所述第一信号为所述硬件设计中的任一信号;
在所述第一信号满足所述采样条件的情况下,向所述硬件设计发送中断信号,以中断所述硬件设计的运行;
对所述设计模块进行硬件快照,以保存所述设计模块的状态信息。
可选地,所述中断模块还用于:
确定第二信号的断点逻辑;所述第二信号的正确值为目标区间中的任意值,所述断点逻辑用于指示所述第二信号对应的目标区间;
在所述第二信号的当前值不符合所述断点逻辑的情况下,中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
可选地,所述硬件设计具体用于:
在所述硬件设计的第一运行结果的数据量大于或等于预设阈值,和/或所述软件设计的第二运行结果的数据量大于或等于预设阈值的情况下,对所述第一运行结果进行压缩处理,得到第一运行数据,并将所述第一运行数据写入所述硬件缓冲区中;
所述软件设计具体用于:
对所述第二运行结果进行压缩处理,得到第二运行数据,并将所述第二运行数据写入软件缓冲区中。
可选地,所述中断模块还用于:
在满足中断条件的情况下,中断所述硬件设计的运行;
其中,所述中断条件包括以下至少一项:
所述硬件设计运行至预设断点;
所述硬件设计的运行结果出错;
所述硬件设计的硬件缓冲区已满;
所述软件设计的软件缓冲区为空。
可选地,所述可编程逻辑芯片还搭载有外部设备;所述硬件设计在运行过程中,通过片上总线与所述外部设备、所述功能单元、所述中断模块和所述验证模块中的任一项进行交互。
可选地,所述功能单元包括数据存储器,所述数据存储器用于存储所述硬件设计对应的输入数据,所述硬件设计在运行过程中从所述数据存储器中读取输入数据,并对所述运行数据进行处理。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的处理器,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参照图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.一种验证方法,其特征在于,应用于可编程逻辑芯片,所述可编程逻辑芯片的可编程逻辑区域中包括设计模块、仿真模块和板载模块,所述设计模块包括硬件设计和所述硬件设计对应的功能单元;所述仿真模块包括所述设计模块和中断模块;所述板载模块包括所述仿真模块和验证模块;所述可编程逻辑芯片的处理***中运行有所述硬件设计对应的软件设计,所述软件设计用于实现与所述硬件设计相同的功能;所述方法包括:
所述硬件设计在运行过程中将第一运行数据写入硬件缓冲区,所述软件设计在运行过程中将第二运行数据写入软件缓冲区;
所述验证模块从所述硬件缓冲区中读取所述第一运行数据,从所述软件缓冲区中读取所述第二运行数据,并对所述第一运行数据和所述第二运行数据进行比对;
在所述第一运行数据和所述第二运行数据不匹配的情况下,所述验证模块中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息;
所述验证模块将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试;
其中,所述硬件设计在运行过程中将第一运行数据写入硬件缓冲区,包括:
所述硬件设计在同一个迭代运算中的结果信号全部生成的情况下,将第一运行数据写入硬件缓冲区中;所述第一运行数据包括所述迭代运算中所有的结果信号;
所述硬件设计为高层次综合设计,所述软件设计为所述高层次综合设计对应的C/C++设计。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述中断模块确定第一信号的采样条件;所述第一信号为所述硬件设计中的任一信号;
在所述第一信号满足所述采样条件的情况下,所述中断模块向所述硬件设计发送中断信号,以中断所述硬件设计的运行;
所述中断模块对所述设计模块进行硬件快照,以保存所述设计模块的状态信息。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述中断模块确定第二信号的断点逻辑;所述第二信号的正确值为目标区间中的任意值,所述断点逻辑用于指示所述第二信号对应的目标区间;
在所述第二信号的当前值不符合所述断点逻辑的情况下,所述中断模块中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
4.根据权利要求1所述的方法,其特征在于,所述硬件设计在运行过程中将第一运行数据写入硬件缓冲区,所述软件设计在运行过程中将第二运行数据写入软件缓冲区,包括:
在所述硬件设计的第一运行结果的数据量大于或等于预设阈值,和/或所述软件设计的第二运行结果的数据量大于或等于预设阈值的情况下,所述硬件设计对所述第一运行结果进行压缩处理,得到第一运行数据,并将所述第一运行数据写入所述硬件缓冲区中;
所述软件设计对所述第二运行结果进行压缩处理,得到第二运行数据,并将所述第二运行数据写入软件缓冲区中。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在满足中断条件的情况下,所述中断模块中断所述硬件设计的运行;
其中,所述中断条件包括以下至少一项:
所述硬件设计运行至预设断点;
所述硬件设计的运行结果出错;
所述硬件设计的硬件缓冲区已满;
所述软件设计的软件缓冲区为空。
6.根据权利要求1所述的方法,其特征在于,所述可编程逻辑芯片还搭载有外部设备;所述硬件设计在运行过程中,通过片上总线与所述外部设备、所述功能单元、所述中断模块和所述验证模块中的任一项进行交互。
7.根据权利要求1所述的方法,其特征在于,所述功能单元包括数据存储器,所述数据存储器用于存储所述硬件设计对应的输入数据,所述硬件设计在运行过程中从所述数据存储器中读取输入数据,并对所述运行数据进行处理。
8.一种可编程逻辑芯片,其特征在于,所述可编程逻辑芯片的可编程逻辑区域中包括设计模块、仿真模块和板载模块,所述设计模块包括硬件设计和所述硬件设计对应的功能单元;所述仿真模块包括所述设计模块和中断模块;所述板载模块包括所述仿真模块和验证模块;所述可编程逻辑芯片的处理***中运行有所述硬件设计对应的软件设计,所述软件设计用于实现与所述硬件设计相同的功能;
所述硬件设计,用于在运行过程中将第一运行数据写入硬件缓冲区;
所述软件设计,用于在运行过程中将第二运行数据写入软件缓冲区;
所述验证模块,用于从所述硬件缓冲区中读取所述第一运行数据,从所述软件缓冲区中读取所述第二运行数据,并对所述第一运行数据和所述第二运行数据进行比对;在所述第一运行数据和所述第二运行数据不匹配的情况下,中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息;将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试;
其中,所述硬件设计具体用于:
在同一个迭代运算中的结果信号全部生成的情况下,将第一运行数据写入硬件缓冲区中;所述第一运行数据包括所述迭代运算中所有的结果信号;
所述硬件设计为高层次综合设计,所述软件设计为所述高层次综合设计对应的C/C++设计。
9.根据权利要求8所述的可编程逻辑芯片,其特征在于,所述中断模块用于:
确定第一信号的采样条件;所述第一信号为所述硬件设计中的任一信号;
在所述第一信号满足所述采样条件的情况下,向所述硬件设计发送中断信号,以中断所述硬件设计的运行;
对所述设计模块进行硬件快照,以保存所述设计模块的状态信息。
10.根据权利要求8所述的可编程逻辑芯片,其特征在于,所述中断模块还用于:
确定第二信号的断点逻辑;所述第二信号的正确值为目标区间中的任意值,所述断点逻辑用于指示所述第二信号对应的目标区间;
在所述第二信号的当前值不符合所述断点逻辑的情况下,中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息。
11.一种验证***,其特征在于,所述***包括可编程逻辑芯片和个人电脑,所述个人电脑中搭载有仿真软件;所述可编程逻辑芯片的可编程逻辑区域中包括设计模块、仿真模块和板载模块,所述设计模块包括硬件设计和所述硬件设计对应的功能单元;所述仿真模块包括所述设计模块和中断模块;所述板载模块包括所述仿真模块和验证模块;所述可编程逻辑芯片的处理***中运行有所述硬件设计对应的软件设计,所述软件设计用于实现与所述硬件设计相同的功能;
所述硬件设计,用于在运行过程中将第一运行数据写入硬件缓冲区;
所述软件设计,用于在运行过程中将第二运行数据写入软件缓冲区;
所述验证模块,用于从所述硬件缓冲区中读取所述第一运行数据,从所述软件缓冲区中读取所述第二运行数据,并对所述第一运行数据和所述第二运行数据进行比对;在所述第一运行数据和所述第二运行数据不匹配的情况下,中断所述硬件设计和所述软件设计的运行,并对所述可编程逻辑芯片进行硬件快照,以保存所述可编程逻辑芯片的状态信息;将所述状态信息导入到仿真软件中进行仿真,以对所述硬件设计进行调试;
其中,所述硬件设计具体用于:
在同一个迭代运算中的结果信号全部生成的情况下,将第一运行数据写入硬件缓冲区中;所述第一运行数据包括所述迭代运算中所有的结果信号;
所述硬件设计为高层次综合设计,所述软件设计为所述高层次综合设计对应的C/C++设计。
12.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至7中任一项所述的验证方法。
13.一种可读存储介质,其特征在于,当所述可读存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至7中任一项所述的验证方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311340379.6A CN117077603B (zh) | 2023-10-17 | 2023-10-17 | 一种验证方法、芯片、***、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311340379.6A CN117077603B (zh) | 2023-10-17 | 2023-10-17 | 一种验证方法、芯片、***、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117077603A CN117077603A (zh) | 2023-11-17 |
CN117077603B true CN117077603B (zh) | 2024-02-02 |
Family
ID=88706531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311340379.6A Active CN117077603B (zh) | 2023-10-17 | 2023-10-17 | 一种验证方法、芯片、***、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117077603B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681924A (zh) * | 2011-04-25 | 2012-09-19 | 中国电子科技集团公司第三十八研究所 | 软硬件协同验证平台 |
CN112463614A (zh) * | 2020-12-01 | 2021-03-09 | 北京计算机技术及应用研究所 | 一种基于硬件板卡接入的软件虚拟化测试环境构建方法 |
CN115080055A (zh) * | 2022-06-15 | 2022-09-20 | 东南大学 | 面向信息安全的可重构***芯片编译器、自动编译方法 |
CN115578906A (zh) * | 2022-11-01 | 2023-01-06 | 北京瑞威信通科技有限公司 | 智能化可编程计算机联锁仿真实训平台 |
CN116029242A (zh) * | 2022-12-23 | 2023-04-28 | 中国科学院计算技术研究所 | 一种云原生的硬件逻辑仿真fpga加速方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7756695B2 (en) * | 2006-08-11 | 2010-07-13 | International Business Machines Corporation | Accelerated simulation and verification of a system under test (SUT) using cache and replacement management tables |
-
2023
- 2023-10-17 CN CN202311340379.6A patent/CN117077603B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681924A (zh) * | 2011-04-25 | 2012-09-19 | 中国电子科技集团公司第三十八研究所 | 软硬件协同验证平台 |
CN112463614A (zh) * | 2020-12-01 | 2021-03-09 | 北京计算机技术及应用研究所 | 一种基于硬件板卡接入的软件虚拟化测试环境构建方法 |
CN115080055A (zh) * | 2022-06-15 | 2022-09-20 | 东南大学 | 面向信息安全的可重构***芯片编译器、自动编译方法 |
CN115578906A (zh) * | 2022-11-01 | 2023-01-06 | 北京瑞威信通科技有限公司 | 智能化可编程计算机联锁仿真实训平台 |
CN116029242A (zh) * | 2022-12-23 | 2023-04-28 | 中国科学院计算技术研究所 | 一种云原生的硬件逻辑仿真fpga加速方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN117077603A (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6336087B2 (en) | Method and apparatus for gate-level simulation of synthesized register transfer level design with source-level debugging | |
US12001317B2 (en) | Waveform based reconstruction for emulation | |
Churiwala et al. | Designing with Xilinx® FPGAs | |
US10678976B2 (en) | Generic protocol analyzer for circuit design verification | |
CN110785761B (zh) | 存在时钟动态重编程时仿真时间线的压缩方法 | |
Murali et al. | Improved design debugging architecture using low power serial communication protocols for signal processing applications | |
CN116663467B (zh) | 断言等效硬件库的构建方法、装置、电子设备及存储介质 | |
US8306802B2 (en) | Method for modeling an HDL design using symbolic simulation | |
Coussy et al. | GAUT–a free and open source high-level synthesis tool | |
KR20040063846A (ko) | 다양한 검증 플랫폼들의 통합 사용을 지원하는 검증 장치및 이를 이용한 검증 방법 | |
Schirner et al. | Result-oriented modeling—A novel technique for fast and accurate TLM | |
Cheng et al. | A run-time RTL debugging methodology for FPGA-based co-simulation | |
US20090234620A1 (en) | Verification support apparatus, verification support method, and computer product | |
US10621296B1 (en) | Generating SAIF efficiently from hardware platforms | |
CN117077603B (zh) | 一种验证方法、芯片、***、电子设备及可读存储介质 | |
Greaves | System on Chip Design and Modelling | |
CN117113908B (zh) | 一种验证方法、装置、电子设备及可读存储介质 | |
Clouté et al. | Hardware/software co-design of an avionics communication protocol interface system: an industrial case study | |
TWI427496B (zh) | 製造積體電路的模型的方法和系統 | |
US20030225559A1 (en) | Verification of multi-cycle paths | |
CN115983172B (zh) | 用于后仿真的方法和仿真平台 | |
Järviluoma | Rapid prototyping from algorithm to FPGA prototype | |
Lundkvist et al. | Accelerated simulation of modelica models using an FPGA-based approach | |
Ramaswamy et al. | The integration of systemc and hardware-assisted verification | |
Li | Implementation of the CUSUM algorithm on FPGA for transient signal detection |
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 |