CN117217143A - 基于硬件仿真加速器和fpga芯片的混合验证方法和装置 - Google Patents

基于硬件仿真加速器和fpga芯片的混合验证方法和装置 Download PDF

Info

Publication number
CN117217143A
CN117217143A CN202311135541.0A CN202311135541A CN117217143A CN 117217143 A CN117217143 A CN 117217143A CN 202311135541 A CN202311135541 A CN 202311135541A CN 117217143 A CN117217143 A CN 117217143A
Authority
CN
China
Prior art keywords
module
fpga
hardware simulation
chip
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311135541.0A
Other languages
English (en)
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.)
Peng Cheng Laboratory
Original Assignee
Peng Cheng Laboratory
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 Peng Cheng Laboratory filed Critical Peng Cheng Laboratory
Priority to CN202311135541.0A priority Critical patent/CN117217143A/zh
Publication of CN117217143A publication Critical patent/CN117217143A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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

  • Tests Of Electronic Circuits (AREA)

Abstract

本发明提供了一种基于硬件仿真加速器和FPGA芯片的混合验证方法、装置、设备和介质,方法包括:根据目标芯片的模块架构信息将各功能模块分别确定为硬件仿真功能模块和FPGA功能模块,通过I O复用模块对硬件仿真加速器和FPGA芯片进行跨时钟域连接处理,并分别对硬件仿真功能模块和FPGA功能模块对应的模块代码进行版本编译处理,得到硬件仿真代码版本和FPGA代码版本;最终,基于多个测试用例,对硬件仿真代码版本和FPGA代码版本进行联合调试,得到目标芯片的验证测试结果,其中,本申请通过FPGA对固定、性能要求较高的模块进行验证,并通过硬件仿真加速器对新开发的或问题较多的模块进行验证,从而实现混合验证,有效提高芯片验证的效率和准确性。

Description

基于硬件仿真加速器和FPGA芯片的混合验证方法和装置
技术领域
本发明涉及芯片验证技术领域,尤其涉及一种基于硬件仿真加速器和FPGA芯片的混合验证方法、装置、设备和介质。
背景技术
当前,在芯片研发过程中,功能验证是一个重要且耗时的环节,而针对芯片验证,目前有两个主要平台被广泛使用,即硬件仿真加速器和FPGA,其中,FPGA运行速度更快,但存在调试性能差、抓取信号数量非常有限的问题,而硬件仿真加速器的调试能力虽然更强,更适合高精度验证,但存在运行速度更慢的问题。
此外,在硬件仿真加速器的应用过程中还存在以下问题:首先,硬件仿真加速器的高昂价格限制了项目能够获得的资源数量,导致验证人员必须谨慎使用有限的资源,并将其应用于能够发挥最大价值的地方;其次,硬件仿真加速器的运行频率一般较低,约为1MHz左右,用于运行涉及Linux系统的测试用例时会耗费较长时间,比如Linux系统的启动需要数个小时,这严重影响了验证的效率。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本发明实施例提供了一种基于硬件仿真加速器和FPGA芯片的混合验证方法、装置、设备和介质,旨在解决当前硬件仿真加速器验证中的资源数量有限、速度慢和FPGA调试困难的技术问题,提高芯片验证的效率和准确性。
为实现上述目的,本发明实施例的第一方面提出了一种基于硬件仿真加速器和FPGA芯片的混合验证方法,包括:
获取目标芯片的模块架构信息,根据所述模块架构信息从所述目标芯片中划分出各功能模块,并将所述功能模块分别确定为硬件仿真功能模块和FPGA功能模块;
对所述目标芯片的功能代码进行划分处理,得到所述硬件仿真功能模块和所述FPGA功能模块对应的模块代码;
通过IO复用模块对所述硬件仿真加速器和所述FPGA芯片进行跨时钟域连接处理;
分别对所述硬件仿真功能模块和所述FPGA功能模块对应的所述模块代码进行版本编译处理,得到硬件仿真代码版本和FPGA代码版本,并将所述硬件仿真代码版本配置到所述硬件仿真加速器中,将所述FPGA代码版本配置到所述FPGA芯片中;
分别根据所述硬件仿真代码版本和所述FPGA代码版本得到多个测试用例;
基于多个所述测试用例,对所述硬件仿真代码版本和所述FPGA代码版本进行联合调试,得到所述目标芯片的验证测试结果。
在一些实施例中,所述根据所述模块架构信息从所述目标芯片中划分出各功能模块,并将所述功能模块分别确定为硬件仿真功能模块和FPGA功能模块,包括:
根据所述模块架构信息划分所述目标芯片的中央处理器模块、DDR控制器模块、第一总线模块、第二总线模块、串行总线模块和网络通信模块,其中,所述中央处理器模块、所述DDR控制器模块和所述第二总线模块分别与所述第一总线模块相连,所述串行总线模块和网络通信模块分别与所述第二总线模块相连;
将所述中央处理器模块、所述DDR控制器模块和所述第一总线模块确定为FPGA功能模块;
将所述第二总线模块、串行总线模块和网络通信模块确定为硬件仿真功能模块。
在一些实施例中,所述第一总线模块上还连接有第三总线模块、启动只读存储器和直接内存访问控制器,所述第三总线模块上连接有计时器、通用异步收发传输器、串行外设接口和互连集成电路;
所述方法还包括:
将所述第三总线模块、所述计时器、所述通用异步收发传输器、所述串行外设接口、所述互连集成电路、所述启动只读存储器和所述直接内存访问控制器确定为FPGA功能模块。
在一些实施例中,所述第一总线模块具有跨时钟域转换单元,所述通过IO复用模块对所述硬件仿真加速器和所述FPGA芯片进行跨时钟域连接处理,包括:
通过IO复用模块连接所述第一总线模块和所述第二总线模块,以使所述第一总线模块部署至FPGA芯片,所述第二总线模块部署至硬件仿真加速器;其中,所述第一总线模块通过所述IO复用模块获取所述第二总线模块的慢速时钟域的信号;
通过所述第一总线模块上的所述跨时钟域转换单元对所述慢速时钟域的信号进行时钟转换处理,得到处理后的信号。
在一些实施例中,所述FPGA芯片具有AXI时钟转换模块,所述通过IO复用模块对所述硬件仿真加速器和所述FPGA芯片进行跨时钟域连接处理,包括:
通过IO复用模块和所述AXI时钟转换模块连接所述第一总线模块和所述第二总线模块,以使所述第一总线模块部署至FPGA芯片,所述第二总线模块部署至硬件仿真加速器;其中,所述AXI时钟转换模块通过所述IO复用模块获取所述第二总线模块的慢速时钟域的信号;
通过所述AXI时钟转换模块对所述慢速时钟域的信号进行时钟转换处理,并将处理后的信号发送至所述第一总线模块。
在一些实施例中,所述通过IO复用模块对所述硬件仿真加速器和所述FPGA芯片进行跨时钟域连接处理,包括:
在FPGA芯片部署异步转换模块,所述异步转换模块与所述第一总线模块相连;
通过IO复用模块连接所述异步转换模块和所述第二总线模块,以使所述第一总线模块部署至FPGA芯片,所述第二总线模块部署至硬件仿真加速器;其中,所述异步转换模块通过所述IO复用模块获取所述第二总线模块的慢速时钟域的信号;
通过所述异步转换模块对所述慢速时钟域的信号进行时钟转换处理,并将处理后的信号发送至所述第一总线模块。
在一些实施例中,所述异步转换模块包括异步先进先出存储器,所述通过所述异步转换模块对所述慢速时钟域的信号进行时钟转换处理,包括:
获取所述异步先进先出存储器的满指示位、仿真端写地址有效指示位和FPGA端写地址就绪指示位;
在所述满指示位为0,且所述仿真端写地址有效指示位为1的情况下,将所述慢速时钟域的信号写入所述异步先进先出存储器;
在所述FPGA端写地址就绪指示位为1情况下,通过所述异步先进先出存储器将所述慢速时钟域的信号发送至所述第一总线模块。
在一些实施例中,所述对所述目标芯片的功能代码进行划分处理,得到所述硬件仿真功能模块和所述FPGA功能模块对应的模块代码,包括:
对所述目标芯片的功能代码进行划分处理,得到所述硬件仿真功能模块对应的第一拆分代码以及所述FPGA功能模块对应的第二拆分代码;
对所述第一拆分代码和所述第二拆分代码进行电子设计自动化验证,得到电子设计验证结果;
根据所述电子设计验证结果将所述第一拆分代码确定为所述硬件仿真功能模块的模块代码,以及将所述第二拆分代码确定为所述FPGA功能模块的模块代码。
在一些实施例中,所述基于多个所述测试用例,对所述硬件仿真代码版本和所述FPGA代码版本进行联合调试,得到所述目标芯片的验证测试结果,包括:
通过预设的调试器将多个所述测试用例加载至所述FPGA芯片中,以使所述中央处理器模块执行多个所述测试用例;
在执行多个所述测试用例的过程中,获取所述FPGA功能模块和所述硬件仿真功能模块的测试数据;
根据所述FPGA功能模块和所述硬件仿真功能模块的测试数据,得到所述目标芯片的验证测试结果。
在一些实施例中,所述第二总线模块上连接有目标待检测功能模块,所述通过预设的调试器将多个所述测试用例加载至所述FPGA芯片中之后,还包括:
在执行多个所述测试用例的过程中,通过所述硬件仿真功能模块的触发控制机制获取所述目标待检测功能模块的波形数据;
根据所述波形数据对所述目标待检测功能模块进行功能验证处理,得到所述目标待检测功能模块的验证测试结果。
为实现上述目的,本发明实施例的第二方面提出了一种基于硬件仿真加速器和FPGA的混合验证装置,包括:
功能模块划分单元,用于获取目标芯片的模块架构信息,根据所述模块架构信息从所述目标芯片中划分出各功能模块,并将所述功能模块分别确定为硬件仿真功能模块和FPGA功能模块;
功能代码划分单元,用于对所述目标芯片的功能代码进行划分处理,得到所述硬件仿真功能模块和所述FPGA功能模块对应的模块代码;
跨时钟域连接单元,用于通过IO复用模块对所述硬件仿真加速器和所述FPGA芯片进行跨时钟域连接处理;
代码版本编译单元,用于分别对所述硬件仿真功能模块和所述FPGA功能模块对应的所述模块代码进行版本编译处理,得到硬件仿真代码版本和FPGA代码版本,并将所述硬件仿真代码版本配置到所述硬件仿真加速器中,将所述FPGA代码版本配置到所述FPGA芯片中;
测试用例生成单元,用于分别根据所述硬件仿真代码版本和所述FPGA代码版本得到多个测试用例;
联合调试单元,用于基于多个所述测试用例,对所述硬件仿真代码版本和所述FPGA代码版本进行联合调试,得到所述目标芯片的验证测试结果。
为实现上述目的,本发明实施例的第三方面提出了一种电子设备,所述电子设备包括存储器、处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。
为实现上述目的,本发明实施例的第四方面提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。
本发明提出的基于硬件仿真加速器和FPGA芯片的混合验证方法、装置、设备和介质,其通过获取目标芯片的模块架构信息,根据所述模块架构信息从所述目标芯片中划分出各功能模块,并将所述功能模块分别确定为硬件仿真功能模块和FPGA功能模块;进一步的,对所述目标芯片的功能代码进行划分处理,得到所述硬件仿真功能模块和所述FPGA功能模块对应的模块代码;进一步的,通过IO复用模块对所述硬件仿真加速器和所述FPGA芯片进行跨时钟域连接处理;进一步的,分别对所述硬件仿真功能模块和所述FPGA功能模块对应的所述模块代码进行版本编译处理,得到硬件仿真代码版本和FPGA代码版本,并将所述硬件仿真代码版本配置到所述硬件仿真加速器中,将所述FPGA代码版本配置到所述FPGA芯片中;进一步的,分别根据所述硬件仿真代码版本和所述FPGA代码版本得到多个测试用例;进一步的,基于多个所述测试用例,对所述硬件仿真代码版本和所述FPGA代码版本进行联合调试,得到所述目标芯片的验证测试结果,其中,由于FPGA可与真实外设对接,测试的精度和真实环境接近度更高,且具有更高的运行速度,故本申请借助FPGA对固定、性能要求较高的模块进行快速验证,同时,由于硬件仿真加速器能在新开发或问题较多的模块验证环节中带来清晰的内部信号可见性,使得问题诊断和解决更为便捷,故本申请借助硬件仿真加速器对新开发的或问题较多的模块进行验证,由此,使得本申请既广泛利用了FPGA的高运行速度优势,又充分发挥了硬件仿真加速器的优越调试能力,从而不仅提高了芯片验证调试时的效率,也提高了芯片验证调试时的的精准性,且在面对高昂的硬件仿真加速器成本与限制的资源时,使用本申请的混合验证方法还能够减轻硬件仿真加速器的资源压力,有效降低成本。
附图说明
图1是本发明一实施例提供的基于硬件仿真加速器和FPGA芯片的混合验证方法的流程图;
图2是本发明另一实施例提供的SoC架构图;
图3是本发明另一实施例提供的SoC拆分图;
图4是本发明另一实施例提供的时钟转换示意图;
图5是本发明另一实施例提供的另一时钟转换示意图;
图6是本发明另一实施例提供的另一时钟转换示意图;
图7是本发明另一实施例提供的异步转换模块示意图;
图8是本发明另一实施例提供的混合验证方法的示例图;
图9是本发明另一实施例提供的测试组网示意图;
图10是本发明另一实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
当前,在芯片研发过程中,功能验证是一个重要且耗时的环节,而针对芯片验证,目前有两个主要平台被广泛使用,即硬件仿真加速器和FPGA,其中,FPGA运行速度更快,但存在调试性能差、抓取信号数量非常有限的问题,而硬件仿真加速器的调试能力虽然更强,更适合高精度验证,但存在运行速度更慢的问题;此外,在硬件仿真加速器的应用过程中还存在以下问题:首先,硬件仿真加速器的高昂价格限制了项目能够获得的资源数量,导致验证人员必须谨慎使用有限的资源,并将其应用于能够发挥最大价值的地方;其次,硬件仿真加速器的运行频率一般较低,约为1MHz左右,用于运行涉及Linux系统的测试用例时会耗费较长时间,比如Linux系统的启动需要数个小时,这严重影响了验证的效率。
基于此,本发明实施例提供了一种基于硬件仿真加速器和FPGA芯片的混合验证方法、装置、设备和介质,旨在解决当前硬件仿真加速器验证中的资源数量有限、速度慢和FPGA调试困难的技术问题,提高芯片验证的效率和准确性。
本发明可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
下面结合附图,对本发明实施例作进一步描述。
图1是本发明实施例提供的基于硬件仿真加速器和FPGA芯片的混合验证方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤S110至步骤S160。
步骤S110,获取目标芯片的模块架构信息,根据模块架构信息从目标芯片中划分出各功能模块,并将功能模块分别确定为硬件仿真功能模块和FPGA功能模块;
步骤S120,对目标芯片的功能代码进行划分处理,得到硬件仿真功能模块和FPGA功能模块对应的模块代码;
步骤S130,通过IO复用模块对硬件仿真加速器和FPGA芯片进行跨时钟域连接处理;
步骤S140,分别对硬件仿真功能模块和FPGA功能模块对应的模块代码进行版本编译处理,得到硬件仿真代码版本和FPGA代码版本,并将硬件仿真代码版本配置到硬件仿真加速器中,将FPGA代码版本配置到FPGA芯片中;
步骤S150,分别根据硬件仿真代码版本和FPGA代码版本得到多个测试用例;
步骤S160,基于多个测试用例,对硬件仿真代码版本和FPGA代码版本进行联合调试,得到目标芯片的验证测试结果。
在一些实施例中,硬件仿真加速器指的是一种用于加速硬件仿真过程的硬件设备,它可以提供更高的仿真速度和效率,通过在硬件级别上模拟目标芯片的功能来验证代码的正确性,硬件仿真加速器和EDA(Electronic design automation)软件仿真相比运行速度快,可以达到1MHz左右,且和FPGA相比调试能力强,设计内部的所有信号随时可见。
在一些实施例中,FPGA芯片代表现场可编程门阵列(Field-Programmable GateArray),是一种可编程逻辑器件,可以通过编程实现不同的电路连接和功能,FPGA芯片具有运行速度快,可以和真实外设对接的优势,适用于定制电路设计和快速产品开发。
在一些实施例中,目标芯片指的是需要进行验证的特定芯片或电路设计,在本申请方案中,目标芯片是指需要进行混合验证的芯片。
在一些实施例中,模块架构信息为描述目标芯片的模块组成和结构的信息,模块架构信息用于划分功能模块,进而并决定哪些模块用于硬件仿真,哪些模块用于FPGA实现,故硬件仿真功能模块指在目标芯片中被划分并用于硬件仿真的功能模块,这些模块通过硬件仿真加速器进行仿真验证,而FPGA功能模块指在目标芯片中被划分并用于FPGA实现的功能模块,这些模块通过FPGA芯片进行验证和实际验证测试。
在一些实施例中,IO复用模块用于处理硬件仿真加速器和FPGA芯片之间的跨时钟域连接的模块,以确保不同时钟域的信号能够正确地传递和交互。
在一些实施例中,模块代码指功能模块对应的硬件描述语言编写的代码,在本申请中通过对目标芯片的功能代码进行划分处理,得到硬件仿真功能模块和FPGA功能模块对应的模块代码。
在一些实施例中,版本编译处理包括对模块代码进行编译处理,生成硬件仿真代码版本和FPGA代码版本,以使硬件仿真代码版本配置到硬件仿真加速器中,FPGA代码版本配置到FPGA芯片中。
在一些实施例中,测试用例用于验证硬件仿真代码版本和FPGA代码版本的输入数据和操作序列,多个测试用例可以覆盖不同的验证场景和功能要求。
在一些实施例中,本申请的联合调试是指通过运行多个测试用例,同时对硬件仿真代码版本和FPGA代码版本进行调试和验证,进而可以克服单独使用硬件仿真加速器时,硬件仿真加速器价格高居不下,受限于成本以至于项目可获得的资源数量非常有限,验证人员不得不精打细算把有限的资源用在最能发挥其价值的地方,且硬件仿真加速器运行频率一般在1MHz左右,用来跑Linux系统相关的用例耗时较长,一般Linux启动需要数个小时,严重影响验证效率的问题;并克服单独使用FPGA时,抓取波形非常困难(需要重新加探针、重新综合、重新布局布线生成版本文件,耗时较长),而且能抓的信号数量非常有限的问题;通过FPGA对固定、性能要求较高的模块进行验证,并通过硬件仿真加速器对新开发的或问题较多的模块进行验证,得到目标芯片的验证测试结果。
综上,通过本发明实施例所示意的步骤S110至步骤S160,本申请可以获取目标芯片的模块架构信息,根据模块架构信息从目标芯片中划分出各功能模块,并将功能模块分别确定为硬件仿真功能模块和FPGA功能模块;进一步的,对目标芯片的功能代码进行划分处理,得到硬件仿真功能模块和FPGA功能模块对应的模块代码;进一步的,通过IO复用模块对硬件仿真加速器和FPGA芯片进行跨时钟域连接处理;进一步的,分别对硬件仿真功能模块和FPGA功能模块对应的模块代码进行版本编译处理,得到硬件仿真代码版本和FPGA代码版本,并将硬件仿真代码版本配置到硬件仿真加速器中,将FPGA代码版本配置到FPGA芯片中;进一步的,分别根据硬件仿真代码版本和FPGA代码版本得到多个测试用例;进一步的,基于多个测试用例,对硬件仿真代码版本和FPGA代码版本进行联合调试,得到目标芯片的验证测试结果,其中,由于FPGA可与真实外设对接,测试的精度和真实环境接近度更高,且具有更高的运行速度,故本申请借助FPGA对固定、性能要求较高的模块进行快速验证,同时,由于硬件仿真加速器能在新开发或问题较多的模块验证环节中带来清晰的内部信号可见性,使得问题诊断和解决更为便捷,故本申请借助硬件仿真加速器对新开发的或问题较多的模块进行验证,由此,使得本申请既广泛利用了FPGA的高运行速度优势,又充分发挥了硬件仿真加速器的优越调试能力,从而不仅提高了芯片验证调试时的效率,也提高了芯片验证调试时的的精准性。
在一些实施例中,在面对高昂的硬件仿真加速器成本与限制的资源时,使用本申请的混合验证方法还能够减轻硬件仿真加速器的资源压力,充分利用性价比较高的FPGA,将其优势发挥到极致,以此更加精打细算的将有限的硬件资源用在最能发挥价值的地方;且由于采用了混合验证方法,这使得设计团队能够在早期阶段就发现并修复问题,从而提高最终芯片设计的可靠性,缩短整个芯片设计周期。
以上是对步骤S110至步骤S160的总体描述,下面分别对步骤S110至步骤S160进行详细描述。
在步骤S110中,获取目标芯片的模块架构信息,根据模块架构信息从目标芯片中划分出各功能模块,并将功能模块分别确定为硬件仿真功能模块和FPGA功能模块。
其中,由于当前芯片研发模式大都为“搭积木”的模式:购买成熟的IP(intellectual property),在此基础上再增加自己研发的特有模块;比如一般的SoC(System onChip)芯片可能会使用ARM的CPU核,也可能会使用最新的PCIE5.0等IP,然后再新开发自己特有的模块比如视频编解码等模块;由于购买的IP往往出自ARM或Synopsys等这样的大厂,它们的质量是非常可靠的、版本也是非常稳定的、验证中发现问题的概率较小,所以这些IP一般不作为验证重点,而用户新开发的模块则问题较多、版本不稳定,新开发的模块是芯片验证的重点。
故本申请尝试根据目标芯片的模块架构信息对功能模块进行划分,进而把高质量的IP模块放入FPGA芯片中,并把新开发的或问题较多的模块放入硬件仿真加速器中,请参考图2,图2是本发明另一实施例提供的SoC架构图,其中,SoC为集成所有电子系统所需的主要组件的系统芯片,对应本申请中的目标芯片,该目标芯片包括以下功能模块:
CPU(Central Processing Unit):中央处理器模块,一般是从IP供应商购买的RISC-V核或ARM核,可以是单核也可以是多核,其中,RISC-V是一种基于RISC(ReducedInstruction Set Computing,精简指令集计算)的开源指令集架构,而ARM是一种广泛应用于移动设备的RISC架构;
DDR(Double Data Rate):DDR控制器模块,是一种SDRAM(同步动态随机存取存储器)的技术,用于提高数据传输的速率;
SoC总线1(第一总线模块)、SoC总线2(第二总线模块)以及SoC总线3(第三总线模块),上述总线模块一般为AXI接口,本文以AXI4为例,其中,AXI(Advanced eXtensibleInterface)为高级可扩展接口,主要用于连接处理器与外设,AXI4是AXI的第四代接口标准,能提供更好的性能和更高的数据吞吐量;
Timer:计时器,用于测量和控制时间;
UART(Universal Asynchronous Receiver-Transmitter):通用异步收发传输器,用于串行通信;
SPI(Serial Peripheral Interface):串行外设接口,为用于短距离通信的同步串行接口;
I2C(Inter-Integrated Circuit):互连集成电路,用于作为多主设备通信的总线;
BOOTROM:启动只读存储器,用于存放引导代码,当系统上电或复位时,处理器首先执行存放在这里的代码;
DMAC(Direct Memory Access Controller):直接内存访问控制器,可以在CPU之外直接从一个内存地址传输数据到另一个地址;
USB(Universal Serial Bus):串行总线模块,用于连接计算机和其他设备,如打印机、摄像头、外部硬盘等;
GMAC(Gigabit Ethernet MAC):以太网接入控制器,对应本申请中的网络通信模块,是以太网通信中的一个重要组件,负责数据包的发送和接收;
其它模块:用户自己开发的其它模块包括连接在第二总线模块上的目标待检测功能模块。
基于上述各功能模块,请参考图3,图3是本发明另一实施例提供的SoC拆分图,FPGA部分中各模块即对应FPGA功能模块,硬件仿真加速器部分中各模块即对应硬件仿真功能模块,可以看到在FPGA部分主要包含外购的CPU、总线以及一些小型功能模块,这部分模块质量较高问题较少,而且Linux启动的需要的DDR模块也在FPGA部分,故可以无需访问硬件仿真加速器里的模块就能快速完成Linux的启动从而加速验证过程。
参考图3,在一些实施例中,根据模块架构信息从目标芯片中划分出各功能模块,并将功能模块分别确定为硬件仿真功能模块和FPGA功能模块,包括:根据模块架构信息划分目标芯片的中央处理器模块、DDR控制器模块、第一总线模块、第二总线模块、串行总线模块和网络通信模块,其中,中央处理器模块、DDR控制器模块和第二总线模块分别与第一总线模块相连,串行总线模块和网络通信模块分别与第二总线模块相连;将中央处理器模块、DDR控制器模块和第一总线模块确定为FPGA功能模块;将第二总线模块、串行总线模块和网络通信模块确定为硬件仿真功能模块。其中,该实施例通过把中央处理器模块、DDR控制器模块和第一总线模块移到FPGA中从而利用FPGA运行频率高的特点快速启动Linux,加速验证,同时上述模块均相对稳定,而对应的将可能存在较多问题的模块在硬件仿真加速器中,所以又保持了这些模块的可调试性。
在一些实施例中,第一总线模块上还连接有第三总线模块、启动只读存储器和直接内存访问控制器,第三总线模块上连接有计时器、通用异步收发传输器、串行外设接口和互连集成电路;方法还包括:将第三总线模块、计时器、通用异步收发传输器、串行外设接口、互连集成电路、启动只读存储器和直接内存访问控制器确定为FPGA功能模块,可以进一步的把上述较为稳定的模块从硬件仿真加速器移到了FPGA从而节省了宝贵的硬件仿真加速器资源。
在一些实施例中,在第二总线模块上连接有目标待检测功能模块的情况下,通过预设的调试器将多个测试用例加载至FPGA芯片中之后,还包括:在执行多个测试用例的过程中,通过硬件仿真功能模块的触发控制机制获取目标待检测功能模块的波形数据;根据波形数据对目标待检测功能模块进行功能验证处理,得到目标待检测功能模块的验证测试结果,通过上述步骤以实现对放入硬件仿真加速器中的新开发的或问题较多的模块的高可见度调试,有效保持了上述模块的可调试性。
在步骤S120中,对目标芯片的功能代码进行划分处理,得到硬件仿真功能模块和FPGA功能模块对应的模块代码;其中,在上述步骤S110根据芯片架构信息制定芯片中各功能模块的拆分方案后,可以根据硬件仿真功能模块和FPGA功能模块的拆分结果,对目标芯片的功能代码进行划分处理,得到硬件仿真功能模块和FPGA功能模块对应的模块代码,进而在后续步骤中,可以根据硬件仿真功能模块和FPGA功能模块对应的模块代码进行代码逻辑版本的生成,以配置到FPGA芯片和硬件仿真加速器中。
在步骤S130中,通过IO复用模块对硬件仿真加速器和FPGA芯片进行跨时钟域连接处理。
在一些实施例中,由于硬件仿真加速器一般运行在1MHz的频率,FPGA一般运行在几十MHz两边速率不同无法直连,而在正常操作中当然FPGA的运行频率应当尽可能的快比如40MHz,进而导致1MHz的硬件仿真加速器信号和40MHz的FPGA信号之间存在频率差无法直接互联,故硬件仿真加速器和FPGA芯片之间需要跨时钟域的转换。
参考图4,图4是本发明另一实施例提供的时钟转换示意图;在一些实施例中,第一总线模块具有跨时钟域转换单元,通过IO复用模块对硬件仿真加速器和FPGA芯片进行跨时钟域连接处理,包括:通过IO复用模块连接第一总线模块和第二总线模块,以使第一总线模块部署至FPGA芯片,第二总线模块部署至硬件仿真加速器;其中,第一总线模块通过IO复用模块获取第二总线模块的慢速时钟域的信号;通过第一总线模块上的跨时钟域转换单元对慢速时钟域的信号进行时钟转换处理,得到处理后的信号。
在上述实施例中,由于SoC总线1(第一总线模块)具有跨时钟域转换单元,跨时钟域转换单元支持不同的接口输入独立的时钟并且支持不同的接口之间的跨时钟域转换,故此时只需把硬件仿真加速器的慢速时钟输入给总线1的对应接口即可直接互联,由SoC总线1完成跨时钟域转换,以实现硬件仿真加速器和FPGA芯片进行跨时钟域连接处理。
在一些实施例中,在硬件仿真加速器和FPGA之间的信号数量较多的情况下,可以通过多个IO复用模块对硬件仿真加速器和FPGA芯片进行跨时钟域连接处理,由于IO复用模块的作用是从FPGA(FPGA芯片)->EMU(硬件仿真加速器)方向在FPGA内做信号复用,从EMU->FPGA方向在FPGA内做信号解复用。比如:可以在一根物理连线上传4bit不同的信号。不同的硬件仿真加速器提供了不同的复用机制,比如Cadence的Palladium Z1机器提供了HDDCMux机制,Mentor的Strato机器提供了IO Frame机制。上述机器都可以提供2、4、6、8等倍数的信号复用,从而可以大幅减少物理连线的数量,即能有效地减少仿真环境中所需的物理连接数,从而降低硬件成本、提高系统效率,并简化布线设计。
参考图5,图5是本发明另一实施例提供的另一时钟转换示意图;在一些实施例中,FPGA芯片具有AXI时钟转换模块,通过IO复用模块对硬件仿真加速器和FPGA芯片进行跨时钟域连接处理,包括:通过IO复用模块和AXI时钟转换模块连接第一总线模块和第二总线模块,以使第一总线模块部署至FPGA芯片,第二总线模块部署至硬件仿真加速器;其中,AXI时钟转换模块通过IO复用模块获取第二总线模块的慢速时钟域的信号;通过AXI时钟转换模块对慢速时钟域的信号进行时钟转换处理,并将处理后的信号发送至第一总线模块。
在上述实施例中,若SoC总线1不支持不同的接口单独输入时钟,但选用的FPGA芯片提供了AXI时钟转换的IP可以用FPGA的IP来实现时钟转换,即FPGA芯片具有AXI时钟转换模块,比如Xilinx的FPGA提供了AXI Clock Converter模块,该模块可以有效实现不同时钟的AXI4接口之间的跨时钟域转换,进而实现硬件仿真加速器和FPGA芯片进行跨时钟域连接处理。
参考图6,图6是本发明另一实施例提供的另一时钟转换示意图;在一些实施例中,如果选用的FPGA芯片不具有AXI时钟转换模块,可以开发异步转换模块进行信号时钟域的转换,具体的,通过IO复用模块对硬件仿真加速器和FPGA芯片进行跨时钟域连接处理,包括:在FPGA芯片部署异步转换模块,异步转换模块与第一总线模块相连;通过IO复用模块连接异步转换模块和第二总线模块,以使第一总线模块部署至FPGA芯片,第二总线模块部署至硬件仿真加速器;其中,异步转换模块通过IO复用模块获取第二总线模块的慢速时钟域的信号;通过异步转换模块对慢速时钟域的信号进行时钟转换处理,并将处理后的信号发送至第一总线模块,以实现硬件仿真加速器和FPGA芯片进行跨时钟域连接处理。
请参考图7,图7是本发明另一实施例提供的异步转换模块示意图,其中,异步转换模块内包含了异步先进先出存储器(异步FIFO);在一些实施例中,异步转换模块可以包括异步先进先出存储器,以AXI4的写地址通道(方向为从硬件仿真加速器到FPGA)为例,通过异步转换模块对慢速时钟域的信号进行时钟转换处理,包括:获取异步先进先出存储器的满指示位、仿真端写地址有效指示位和FPGA端写地址就绪指示位;在满指示位为0,且仿真端写地址有效指示位为1的情况下,将慢速时钟域的信号写入异步先进先出存储器;在FPGA端写地址就绪指示位为1情况下,用快速时钟把从异步先进先出存储器读出来的数据发送至第一总线模块,由于异步先进先出存储器的写时钟和读时钟不同,故通过上述过程可以有效实现数据时钟域的转换。
在一些实施例中,慢速时钟域的信号指的是用慢速时钟发送过来的那些信号,比如地址信号等,且在上述过程中,本申请并未将慢速时钟写入异步先进先出存储器,而是将用慢速时钟传过来的那些信号写入异步先进先出存储器。
具体的,异步转换模块包括写控制模块、异步FIFO和读控制模块,写控制模块接收慢速侧的信号包括:aclk_emu、awvalid_emu、awaddr_emu、awid_emu,产生信号包括:awready_emu,读控制模块接收快速侧的信号包括:aclk_fpga和awready_fpga,产生信号包括:awvalid_fpga、awaddr_fpga以及awid_fpga,此外,异步FIFO分别与写控制模块和读控制模块连接,以向写控制模块发送almost_full信号,和向读控制模块发送empty信号,在AXI4接口协议中,aclk_emu和aclk_fpga分别表示硬件仿真加速器方(EMU)和FPGA方的时钟域的信号,"aclk"的全称是AXI Clock;awvalid_emu和awvalid_fpga是AXI4协议中的写地址有效信号,它表示当前传送的写地址是否有效,"_emu"和"_fpga"表示信号来自硬件仿真加速器和FPGA;awaddr_emu和awaddr_fpga是AXI4协议中的写地址信号,表示当前要写入的地址,"_emu"和"_fpga"表示该地址来自硬件仿真加速器和FPGA;awid_emu和awid_fpga中的"awid"在AXI4协议中表示写通道的ID,用于区分来自不同主设备(Master)的事务请求,"_emu"和"_fpga"分别表示ID来自硬件仿真加速器和FPGA;
awready_emu和awready_fpga是AXI4协议中的写地址就绪信号,当它为1时,表示对应的设备准备好接收写地址,"_emu"和"_fpga"表示该就绪信号来自硬件仿真加速器和FPGA;almost_full信号用于告诉写控制模块,FIFO接近满状态,当FIFO快要满时,"almost_full"信号会被设置为1,这通常用于提醒写控制模块减缓或暂停向FIFO中写入数据,以防止数据溢出;empty信号用于指示读控制模块,FIFO是空的,没有数据可读,当FIFO为空时,"empty"信号会被设置为1,这通常用于告知读控制模块停止从FIFO中读取数据,直到有新数据到来。
其中,上述almost_full、awready_emu、awready_fpga分别对应上述满指示位、仿真端写地址有效指示位和FPGA端写地址就绪指示位。
基于上述异步转换模块,写侧处理过程如下:可以根据异步FIFO的almost_full(FIFO将满指示,将满门限可配置)信号来独立的产生awready_emu,即当almost_full为0时把awready_emu设置为1,almost_full为1时把awready_emu设置为0,进而在awvalid_emu和awready_emu同时为1时把写地址通道的信号采样并打包写入异步FIFO;读侧处理过程如下:当异步FIFO非空时读取FIFO中的数据并发送给FPGA侧(把awvalid_fpga设置为1,同时输出各信号的值),并根据awready_fpga信号是否为1来判断是否发送成功,如果awready_fpga为0则持续发送当前数据直到发送成功(awready_fpga为1)。如果FIFO为空则说明没有有效数据需要发送此时把awvalid_fpga设置为0即可,进而通过上述过程可以使异步FIFO实现跨时钟域的转换。
在一些实施例中,AXI4接口除了写地址通道还有写数据通道、写返回通道、读地址通道、读数据通道,其它的通道需要和写地址通道类似的进行处理从而完成跨时钟域的转换。
在步骤S140中,分别对硬件仿真功能模块和FPGA功能模块对应的模块代码进行版本编译处理,得到硬件仿真代码版本和FPGA代码版本,并将硬件仿真代码版本配置到硬件仿真加速器中,将FPGA代码版本配置到FPGA芯片中。
在一些实施例中,首先对硬件仿真功能模块和FPGA功能模块对应的模块代码进行版本编译处理,以实现将编写的硬件描述语言代码转换为相应的硬件电路。编译处理会将代码综合为逻辑门级的表示形式,可以在后续步骤中用于生成硬件或进行功能验证,在编译处理完成后,将获得硬件仿真代码版本和FPGA代码版本,硬件仿真代码版本是为了在软件仿真环境中验证设计的正确性和功能,而FPGA代码版本则是为了将设计加载到目标FPGA芯片中,并进行实际的硬件验证;之后,硬件仿真代码版本将被配置到硬件仿真加速器中,而FPGA代码版本将被配置到目标FPGA芯片中,即将所生成的代码加载到相应的硬件平台上进行后续的验证和测试。
在步骤S150中,分别根据硬件仿真代码版本和FPGA代码版本得到多个测试用例。
在一些实施例中,根据硬件仿真代码版本和FPGA代码版本,可以分别生成多个测试用例,这些测试用例是为了对设计的不同方面进行全面的验证,测试用例可能包括输入数据、预期输出和期望的行为等信息,通过生成多个测试用例,可以覆盖设计的不同功能和边界条件,以确保设计的正确性和健壮性。
在步骤S160中,基于多个测试用例,对硬件仿真代码版本和FPGA代码版本进行联合调试,得到目标芯片的验证测试结果。
在一些实施例中,基于多个测试用例,对硬件仿真代码版本和FPGA代码版本进行联合调试,以实现在整个系统级别上对目标芯片进行验证测试,通过将硬件仿真代码版本和FPGA代码版本结合起来进行调试,可以验证硬件仿真的准确性并检测任何与FPGA目标芯片相关的问题。
在一些实施例中,本申请通过在联合调试过程中,在硬件仿真环境中运行测试用例,同时监视设计的行为和性能,根据测试的结果和观察到的行为,可以识别和解决潜在的设计问题,以验证目标芯片的功能正确性、性能和稳定性,并确保它满足设计规范和要求。
综上,步骤S140至步骤S160涉及将硬件仿真功能模块和FPGA功能模块对应的代码进行编译处理、生成测试用例并进行联合调试,以验证目标芯片的设计和功能,这些步骤是验证测试流程中的关键步骤,旨在确保芯片设计的正确性和可靠性。
图8是本发明另一实施例提供的混合验证方法的示例图;在一些实施例中,本申请中的混合验证方法具体包括以下步骤:
S801:制定芯片代码拆分方案,对应上述步骤S110,基于芯片的模块架构信息,将功能模块分别确定为硬件仿真功能模块和FPGA功能模块,并后续根据功能模块的划分进行代码的拆分。
S802:实施代码拆分和逻辑开发,对应上述步骤S120和步骤S130,根据功能模块的划分进行开始实际的代码拆分工作,同时,需要开发必要的异步转换模块和IO复用模块,对硬件仿真加速器和FPGA芯片进行跨时钟域连接处理,以确保不同模块之间的正常交互。
S803:EDA仿真验证,使用EDA(Electronic Design Automation)工具对拆分后的代码进行仿真验证。这是为了确保拆分和其他设计修改没有引入新的错误。
S804:硬件仿真加速器和FPGA版本生成,对应上述步骤S140,为硬件仿真加速器和FPGA分别生成逻辑版本。FPGA的编译过程包括常规的FPGA设计流程,具体包括:建立工程、选择FPGA型号、读入代码、添加IP模块、编写管脚/时序约束、综合布局布线,以及生成bit流文件;而对于硬件仿真加速器,其编译过程和FPGA略有不同,主要是通过编写控制脚本、读取设计文件、配置时钟、约束和机器配置来进行编译实现。
S805:测试软件开发,对应上述步骤S150,根据预先制定的芯片验证计划编写测试软件,这些软件用于验证各个硬件模块的功能。比如,要验证DMAC,需要根据其功能和寄存器手册编写相应的测试用例。
S806:联合调试,对应上述步骤S160,在硬件逻辑和测试软件都准备好后,进行联合调试,确保硬件与软件之间的正确交互。
具体的,参考图9,图9是本发明另一实施例提供的测试组网示意图;测试组网包括上述硬件仿真加速器、上述FPGA芯片、劳德巴赫Jtag调试器和PC机,测试过程包括:使用Jtag调试器,如劳德巴赫,将测试用例加载到FPGA的芯片中,然后,在调试器的控制下执行测试,观察其输出和性能,并通过硬件仿真加速器更加强大和灵活的波形抓取机制捕获和分析硬件仿真加速器中的波形数据,最终测试用例软件会通过串口把测试结果打印到PC机上,以实现对新开发的或问题较多的模块进行验证,得到目标芯片的验证测试结果。
值得说明的是,在上述实施例中,本申请本文以AXI4接口(对应各总线模块)为例进行了基于硬件仿真加速器和FPGA芯片的混合验证方法的说明,该思想同样适用其它接口,本领域技术人员可以实际情况选择其他接口来实现本申请方案,以得到目标芯片的验证测试结果。
第二方面,本发明实施例还提供了一种基于硬件仿真加速器和FPGA的混合验证装置,包括:功能模块划分单元,用于获取目标芯片的模块架构信息,根据模块架构信息从目标芯片中划分出各功能模块,并将功能模块分别确定为硬件仿真功能模块和FPGA功能模块;功能代码划分单元,用于对目标芯片的功能代码进行划分处理,得到硬件仿真功能模块和FPGA功能模块对应的模块代码;跨时钟域连接单元,用于通过IO复用模块对硬件仿真加速器和FPGA芯片进行跨时钟域连接处理;代码版本编译单元,用于分别对硬件仿真功能模块和FPGA功能模块对应的模块代码进行版本编译处理,得到硬件仿真代码版本和FPGA代码版本,并将硬件仿真代码版本配置到硬件仿真加速器中,将FPGA代码版本配置到FPGA芯片中;测试用例生成单元,用于分别根据硬件仿真代码版本和FPGA代码版本得到多个测试用例;联合调试单元,用于基于多个测试用例,对硬件仿真代码版本和FPGA代码版本进行联合调试,得到目标芯片的验证测试结果。
第三方面,本发明实施例还提供了一种电子设备,电子设备包括:存储器、处理器、存储在存储器上并可在处理器上运行的程序以及用于实现处理器和存储器之间的连接通信的数据总线,程序被处理器执行时实现上述基于硬件仿真加速器和FPGA芯片的混合验证方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。
请参阅图10,图10示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器1001,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本发明实施例所提供的技术方案;
存储器1002,可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器1002可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1002中,并由处理器1001来调用执行本发明实施例的基于硬件仿真加速器和FPGA芯片的混合验证方法;
输入/输出接口1003,用于实现信息输入及输出;
通信接口1004,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线1005,在设备的各个组件(例如处理器1001、存储器1002、输入/输出接口1003和通信接口1004)之间传输信息;
其中处理器1001、存储器1002、输入/输出接口1003和通信接口1004通过总线1005实现彼此之间在设备内部的通信连接。
第四方面,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现上述基于硬件仿真加速器和FPGA芯片的混合验证方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明实施例描述的实施例是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图1中示出的技术方案并不构成对本发明实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
本发明的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、对应的系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机可读存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机可读存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
以上参照附图说明了本发明实施例的优选实施例,并非因此局限本发明实施例的权利范围。本领域技术人员不脱离本发明实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本发明实施例的权利范围之内。

Claims (13)

1.一种基于硬件仿真加速器和FPGA芯片的混合验证方法,其特征在于,包括:
获取目标芯片的模块架构信息,根据所述模块架构信息从所述目标芯片中划分出各功能模块,并将所述功能模块分别确定为硬件仿真功能模块和FPGA功能模块;
对所述目标芯片的功能代码进行划分处理,得到所述硬件仿真功能模块和所述FPGA功能模块对应的模块代码;
通过IO复用模块对所述硬件仿真加速器和所述FPGA芯片进行跨时钟域连接处理;
分别对所述硬件仿真功能模块和所述FPGA功能模块对应的所述模块代码进行版本编译处理,得到硬件仿真代码版本和FPGA代码版本,并将所述硬件仿真代码版本配置到所述硬件仿真加速器中,将所述FPGA代码版本配置到所述FPGA芯片中;
分别根据所述硬件仿真代码版本和所述FPGA代码版本得到多个测试用例;
基于多个所述测试用例,对所述硬件仿真代码版本和所述FPGA代码版本进行联合调试,得到所述目标芯片的验证测试结果。
2.根据权利要求1所述的基于硬件仿真加速器和FPGA芯片的混合验证方法,其特征在于,所述根据所述模块架构信息从所述目标芯片中划分出各功能模块,并将所述功能模块分别确定为硬件仿真功能模块和FPGA功能模块,包括:
根据所述模块架构信息划分所述目标芯片的中央处理器模块、DDR控制器模块、第一总线模块、第二总线模块、串行总线模块和网络通信模块,其中,所述中央处理器模块、所述DDR控制器模块和所述第二总线模块分别与所述第一总线模块相连,所述串行总线模块和网络通信模块分别与所述第二总线模块相连;
将所述中央处理器模块、所述DDR控制器模块和所述第一总线模块确定为FPGA功能模块;
将所述第二总线模块、串行总线模块和网络通信模块确定为硬件仿真功能模块。
3.根据权利要求2所述的基于硬件仿真加速器和FPGA芯片的混合验证方法,其特征在于,所述第一总线模块上还连接有第三总线模块、启动只读存储器和直接内存访问控制器,所述第三总线模块上连接有计时器、通用异步收发传输器、串行外设接口和互连集成电路;
所述方法还包括:
将所述第三总线模块、所述计时器、所述通用异步收发传输器、所述串行外设接口、所述互连集成电路、所述启动只读存储器和所述直接内存访问控制器确定为FPGA功能模块。
4.根据权利要求2所述的基于硬件仿真加速器和FPGA芯片的混合验证方法,其特征在于,所述第一总线模块具有跨时钟域转换单元,所述通过IO复用模块对所述硬件仿真加速器和所述FPGA芯片进行跨时钟域连接处理,包括:
通过IO复用模块连接所述第一总线模块和所述第二总线模块,以使所述第一总线模块部署至FPGA芯片,所述第二总线模块部署至硬件仿真加速器;其中,所述第一总线模块通过所述IO复用模块获取所述第二总线模块的慢速时钟域的信号;
通过所述第一总线模块上的所述跨时钟域转换单元对所述慢速时钟域的信号进行时钟转换处理,得到处理后的信号。
5.根据权利要求2所述的基于硬件仿真加速器和FPGA芯片的混合验证方法,其特征在于,所述FPGA芯片具有AXI时钟转换模块,所述通过IO复用模块对所述硬件仿真加速器和所述FPGA芯片进行跨时钟域连接处理,包括:
通过IO复用模块和所述AXI时钟转换模块连接所述第一总线模块和所述第二总线模块,以使所述第一总线模块部署至FPGA芯片,所述第二总线模块部署至硬件仿真加速器;其中,所述AXI时钟转换模块通过所述IO复用模块获取所述第二总线模块的慢速时钟域的信号;
通过所述AXI时钟转换模块对所述慢速时钟域的信号进行时钟转换处理,并将处理后的信号发送至所述第一总线模块。
6.根据权利要求2所述的基于硬件仿真加速器和FPGA芯片的混合验证方法,其特征在于,所述通过IO复用模块对所述硬件仿真加速器和所述FPGA芯片进行跨时钟域连接处理,包括:
在FPGA芯片部署异步转换模块,所述异步转换模块与所述第一总线模块相连;
通过IO复用模块连接所述异步转换模块和所述第二总线模块,以使所述第一总线模块部署至FPGA芯片,所述第二总线模块部署至硬件仿真加速器;其中,所述异步转换模块通过所述IO复用模块获取所述第二总线模块的慢速时钟域的信号;
通过所述异步转换模块对所述慢速时钟域的信号进行时钟转换处理,并将处理后的信号发送至所述第一总线模块。
7.根据权利要求6所述的基于硬件仿真加速器和FPGA芯片的混合验证方法,其特征在于,所述异步转换模块包括异步先进先出存储器,所述通过所述异步转换模块对所述慢速时钟域的信号进行时钟转换处理,包括:
获取所述异步先进先出存储器的满指示位、仿真端写地址有效指示位和FPGA端写地址就绪指示位;
在所述满指示位为0,且所述仿真端写地址有效指示位为1的情况下,将所述慢速时钟域的信号写入所述异步先进先出存储器;
在所述FPGA端写地址就绪指示位为1情况下,通过所述异步先进先出存储器将所述慢速时钟域的信号发送至所述第一总线模块。
8.根据权利要求1所述的基于硬件仿真加速器和FPGA芯片的混合验证方法,其特征在于,所述对所述目标芯片的功能代码进行划分处理,得到所述硬件仿真功能模块和所述FPGA功能模块对应的模块代码,包括:
对所述目标芯片的功能代码进行划分处理,得到所述硬件仿真功能模块对应的第一拆分代码以及所述FPGA功能模块对应的第二拆分代码;
对所述第一拆分代码和所述第二拆分代码进行电子设计自动化验证,得到电子设计验证结果;
根据所述电子设计验证结果将所述第一拆分代码确定为所述硬件仿真功能模块的模块代码,以及将所述第二拆分代码确定为所述FPGA功能模块的模块代码。
9.根据权利要求2所述的基于硬件仿真加速器和FPGA芯片的混合验证方法,其特征在于,所述基于多个所述测试用例,对所述硬件仿真代码版本和所述FPGA代码版本进行联合调试,得到所述目标芯片的验证测试结果,包括:
通过预设的调试器将多个所述测试用例加载至所述FPGA芯片中,以使所述中央处理器模块执行多个所述测试用例;
在执行多个所述测试用例的过程中,获取所述FPGA功能模块和所述硬件仿真功能模块的测试数据;
根据所述FPGA功能模块和所述硬件仿真功能模块的测试数据,得到所述目标芯片的验证测试结果。
10.根据权利要求9所述的基于硬件仿真加速器和FPGA芯片的混合验证方法,其特征在于,所述第二总线模块上连接有目标待检测功能模块,所述通过预设的调试器将多个所述测试用例加载至所述FPGA芯片中之后,还包括:
在执行多个所述测试用例的过程中,通过所述硬件仿真功能模块的触发控制机制获取所述目标待检测功能模块的波形数据;
根据所述波形数据对所述目标待检测功能模块进行功能验证处理,得到所述目标待检测功能模块的验证测试结果。
11.一种基于硬件仿真加速器和FPGA的混合验证装置,其特征在于,包括:
功能模块划分单元,用于获取目标芯片的模块架构信息,根据所述模块架构信息从所述目标芯片中划分出各功能模块,并将所述功能模块分别确定为硬件仿真功能模块和FPGA功能模块;
功能代码划分单元,用于对所述目标芯片的功能代码进行划分处理,得到所述硬件仿真功能模块和所述FPGA功能模块对应的模块代码;
跨时钟域连接单元,用于通过IO复用模块对所述硬件仿真加速器和所述FPGA芯片进行跨时钟域连接处理;
代码版本编译单元,用于分别对所述硬件仿真功能模块和所述FPGA功能模块对应的所述模块代码进行版本编译处理,得到硬件仿真代码版本和FPGA代码版本,并将所述硬件仿真代码版本配置到所述硬件仿真加速器中,将所述FPGA代码版本配置到所述FPGA芯片中;
测试用例生成单元,用于分别根据所述硬件仿真代码版本和所述FPGA代码版本得到多个测试用例;
联合调试单元,用于基于多个所述测试用例,对所述硬件仿真代码版本和所述FPGA代码版本进行联合调试,得到所述目标芯片的验证测试结果。
12.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至10中任意一项所述的基于硬件仿真加速器和FPGA芯片的混合验证方法。
13.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1至10中任意一项所述的基于硬件仿真加速器和FPGA芯片的混合验证方法。
CN202311135541.0A 2023-08-31 2023-08-31 基于硬件仿真加速器和fpga芯片的混合验证方法和装置 Pending CN117217143A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311135541.0A CN117217143A (zh) 2023-08-31 2023-08-31 基于硬件仿真加速器和fpga芯片的混合验证方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311135541.0A CN117217143A (zh) 2023-08-31 2023-08-31 基于硬件仿真加速器和fpga芯片的混合验证方法和装置

Publications (1)

Publication Number Publication Date
CN117217143A true CN117217143A (zh) 2023-12-12

Family

ID=89034607

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311135541.0A Pending CN117217143A (zh) 2023-08-31 2023-08-31 基于硬件仿真加速器和fpga芯片的混合验证方法和装置

Country Status (1)

Country Link
CN (1) CN117217143A (zh)

Similar Documents

Publication Publication Date Title
CN112580295B (zh) 多核SoC芯片的自动化验证方法、系统及装置
US10503848B2 (en) Target capture and replay in emulation
US6876941B2 (en) Testing compliance of a device with a bus protocol
US6665821B1 (en) Microcomputer, electronic equipment, and debugging system
US10180850B1 (en) Emulating applications that use hardware acceleration
US10691580B1 (en) Diagnosing applications that use hardware acceleration through emulation
CN113076227A (zh) Mcu验证方法、系统和终端设备
WO2018018978A1 (zh) 一种通用串行总线控制器验证方法、系统及设备
CN111931445A (zh) 用于调试逻辑系统设计的方法、仿真器及存储介质
CN108519889B (zh) 一种基于jtag标准的fpga程序远程升级系统及方法
CN116414526B (zh) 一种基于虚拟机的仿真装置和方法
CN115146568A (zh) 一种基于uvm的芯片验证系统及验证方法
CN114168200B (zh) 多核处理器访存一致性的验证系统及方法
CN115686655A (zh) 用于gpu ip验证的联合仿真系统
CN109684152B (zh) 一种risc-v处理器指令下载方法及其装置
US10664637B2 (en) Testbench restoration based on capture and replay
US20100274550A1 (en) Integrated development structure having virtual inputs/outputs for embedded hardware/software
CN117076337B (zh) 一种数据传输方法、装置、电子设备及可读存储介质
US20110161716A1 (en) Systems, methods, and apparatuses for providing access to real time information
CN117217143A (zh) 基于硬件仿真加速器和fpga芯片的混合验证方法和装置
CN115618800A (zh) 基于dpi的gpu联合仿真系统
CN114328045A (zh) 一种bmc的i2c调试方法、系统、装置及计算机可读存储介质
Lee et al. A low-cost SOC debug platform based on on-chip test architectures
US20110218793A1 (en) Concretization of abstracted traces
CN102662812A (zh) 基于pci总线单路接收解调器性能测试系统

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