CN114880977A - 软硬件联合仿真系统、方法、装置、设备和存储介质 - Google Patents

软硬件联合仿真系统、方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN114880977A
CN114880977A CN202210510941.4A CN202210510941A CN114880977A CN 114880977 A CN114880977 A CN 114880977A CN 202210510941 A CN202210510941 A CN 202210510941A CN 114880977 A CN114880977 A CN 114880977A
Authority
CN
China
Prior art keywords
read
hardware
real
software
simulator
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.)
Granted
Application number
CN202210510941.4A
Other languages
English (en)
Other versions
CN114880977B (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 Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202210510941.4A priority Critical patent/CN114880977B/zh
Publication of CN114880977A publication Critical patent/CN114880977A/zh
Application granted granted Critical
Publication of CN114880977B publication Critical patent/CN114880977B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/08HW-SW co-design, e.g. HW-SW partitioning
    • 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)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了一种软硬件联合仿真系统、方法、装置、设备和存储介质,涉及计算机技术领域,具体涉及芯片、仿真验证、云计算等技术领域。软硬件联合仿真方法包括:软件仿真器,用于仿真真实软件的真实运行平台,以生成虚拟运行平台;以及,在所述虚拟运行平台上运行所述真实软件;硬件仿真器,用于仿真真实硬件,以生成虚拟硬件;虚拟连接器,用于仿真所述真实运行平台与所述真实硬件之间的真实连接设备;以及,基于所述软件仿真器或所述硬件仿真器产生的读取请求数据执行读写操作。本公开可以提高仿真准确度,提升软硬件开发效率。

Description

软硬件联合仿真系统、方法、装置、设备和存储介质
技术领域
本公开涉及计算机技术领域,具体涉及芯片等技术领域,尤其涉及一种软硬件联合仿真系统、方法、装置、设备和存储介质。
背景技术
现场可编程门阵列(Field Programmable Gate Array,FPGA)芯片是一种可编程器件。FPGA开发可以包括软件开发和硬件开发,硬件开发是通过硬件描述语言(HardwareDescription Language,HDL)进行电路设计,软件开发是指开发与硬件配合使用的软件,软件可以是驱动程序和/或应用程序(Application,APP)。
为了确保正确性,FPGA在使用之前一般都需要对电路设计所对应的硬件电路和与FPGA配合使用的软件进行仿真,分别称为硬件仿真和软件仿真。硬件仿真和软件仿真分别模拟硬件电路或软件的所有可能输入情况并验证其输出是否符合预期。为了提高仿真效率,出现了软硬件联合仿真(Co-simulation)方案。
发明内容
本公开提供了一种软硬件联合仿真系统、方法、装置、设备和存储介质。
根据本公开的一方面,提供了一种软硬件联合仿真系统,包括:软件仿真器,用于仿真真实软件的真实运行平台,以生成虚拟运行平台;以及,在所述虚拟运行平台上运行所述真实软件;硬件仿真器,用于仿真真实硬件,以生成虚拟硬件;虚拟连接器,用于仿真所述真实运行平台与所述真实硬件之间的真实连接设备;以及,基于所述软件仿真器或所述硬件仿真器产生的读取请求数据执行读写操作。
根据本公开的另一方面,提供了一种软硬件联合仿真方法,所述方法应用于虚拟连接器,所述虚拟连接器用于仿真真实软件的真实运行平台与真实硬件之间的真实连接设备,所述方法包括:接收发起方发送的读写请求数据;基于所述读写请求数据,对响应方执行读写操作;其中,所述发起方和所述响应方分别为软件仿真器和硬件仿真器中的一方;所述软件仿真器用于仿真真实软件的真实运行平台,以生成虚拟运行平台,以及,在所述虚拟运行平台上运行所述真实软件;所述硬件仿真器用于仿真所述真实硬件,以生成虚拟硬件。
根据本公开的另一方面,提供了一种软硬件联合仿真装置,所述装置应用于虚拟连接器,所述虚拟连接器用于仿真真实软件的真实运行平台与真实硬件之间的真实连接设备,所述装置包括:第一接收模块,用于接收发起方发送的读写请求数据;处理模块,用于基于所述读写请求数据,对响应方执行读写操作;其中,所述发起方和所述响应方分别为软件仿真器和硬件仿真器中的一方;所述软件仿真器用于仿真真实软件的真实运行平台,以生成虚拟运行平台,以及,在所述虚拟运行平台上运行所述真实软件;所述硬件仿真器用于仿真所述真实硬件,以生成虚拟硬件。
根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述任一方面的任一项所述的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据上述任一方面的任一项所述的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据上述任一方面的任一项所述的方法。
根据本公开的技术方案,可以提高仿真准确度,提升软硬件开发效率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开第一实施例的示意图;
图2是本公开实施例提供的软硬件联合仿真方法所要仿真的真实运行场景的示意图;
图3是根据本公开第二实施例的示意图;
图4是根据本公开第三实施例的示意图;
图5a是根据本公开第四实施例的示意图;
图5b是根据本公开第五实施例的示意图;
图6a是根据本公开第六实施例的示意图;
图6b是根据本公开第七实施例的示意图
图7是根据本公开第八实施例的示意图;
图8是用来实现本公开实施例的软硬件联合仿真方法的电子设备的示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
相关技术中,存在一些软硬件联合仿真方案,例如,在软件仿真部分采用软件测试代码验证硬件功能,此时,软件仿真部分采用的测试代码与真实软件的代码不一致,由于两者的软件代码不一致,难以仿真真实软件的真实行为,影响仿真准确度。
为了提高软硬件联合仿真准确度,本公开提供如下实施例。
图1是根据本公开第一实施例的示意图,本实施例提供一种软硬件联合仿真系统。
如图1所示,软硬件联合仿真系统100包括:软件仿真器101、硬件仿真器102和虚拟连接器103。
软件仿真器101用于仿真真实软件的真实运行平台,以生成虚拟运行平台;以及,在所述虚拟运行平台上运行所述真实软件;硬件仿真器102用于仿真真实硬件,以生成虚拟硬件;虚拟连接器103用于仿真所述真实运行平台与所述真实硬件之间的真实连接设备;以及,基于所述软件仿真器或所述硬件仿真器产生的读取请求数据执行读写操作。
其中,真实软件和真实硬件是真实运行时需要配合的软件和硬件,也是待联合仿真的软件和硬件。
真实运行平台是软件真实运行时所在的平台,相应地,经过仿真获得的运行平台可以称为虚拟运行平台。
虚拟硬件,与真实硬件对应,是对真实硬件进行仿真后获得的。
虚拟连接设备,与真实连接设备对应,是对真实连接设备进行仿真后获得的。
仿真过程,是对真实过程的模拟过程,真实过程中,真实软件与真实硬件之间可以进行交互,交互可以是一方发起请求,另一方基于请求进行响应。
为了模拟真实过程,软件仿真器或者硬件仿真器可以产生读取请求数据,虚拟连接器可以基于读取请求数据执行读写操作。
虚拟连接器执行读写操作时,可以是将发起方发送的读写请求数据发送给响应方,触发响应方基于读取请求数据执行读写操作;或者,虚拟连接器可以基于读写请求数据直接对响应方进行读写操作。
本实施例中,软件仿真器上运行真实软件,由于采用了真实软件而不是软件测试代码,可以保证仿真准确度,进而可以提升软硬件开发效率;并且,虚拟连接器仿真了真实软件的真实运行平台与真实硬件之间的真实连接设备,可以适用于真实环境下的真实运行平台与真实硬件之间通过较为复杂的总线进行连接的场景,由于真实环境下的高性能设备中的真实运行平台通常是采用复杂总线连接真实硬件,因此,可以满足真实环境下的高性能设备的仿真需求。
为了便于对本公开实施例的理解,下面对本公开实施例的应用场景进行说明。本实施例中,以运行在服务器上的软件与服务器的外设硬件交互为例。
服务器是构建云计算的基础设备。服务器的主板(Mother Board或Main Board,MB)上配置有中央处理器(Central Processing Unit,CPU)等电子元件。服务器内的CPU一般提供高速接口,例如,外设部件互连扩展(Peripheral Component Interconnectexpress,PCIe)接口,PCIe是一种高速串行计算机扩展总线标准,属于片外总线。服务器内一般还配置有板卡,板卡上配置有PCIe插槽(slot),通过PCIe插槽可以插接网卡、显卡、存储卡等外设。FPGA芯片由于其优良性能,可以作为服务器的一种外设,例如,基于FPGA实现的网卡。
因此,真实应用场景下,高性能设备,例如高性能服务器中,如图2所示,CPU 201与FPGA芯片202之间可以通过PCIe总线连接。
本实施例以处理器是CPU为例,可以理解的是,还可以是其他处理器,例如,图形处理器(Graphics Processing Unit,GPU)、张量处理器(Tensor Processing Unit,TPU)、神经网络处理器(Neural network Processing Unit,NPU)等。
本实施例以硬件是FPGA芯片为例,可以理解的是,还可以是其他硬件,例如,可编程阵列逻辑(Programmable Array Logic,PAL)芯片、通用阵列逻辑器件(Generic ArrayLogic,GAL)、复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)等。
本实施例以片外总线是PCIe总线为例,可以理解的是,基于不同的应用场景,片外总线还可以是其他总线,例如,串行高技术配置(Serial Advanced TechnologyAttachment,SATA)总线、串行连接SCSI(Serial Attached SCSI,SAS)总线等,SCSI是指小型计算机系统接口(Small Computer System Interface)。
CPU上可以运行软件,软件例如可以是FPGA的驱动程序,还可以是应用开发人员所设计的应用程序(Application,APP),本实施例以APP为例。
不论是软件开发还是硬件开发,在生产之前一般都需要经过仿真处理,通过软件仿真可以验证软件功能,通过硬件仿真可以验证硬件功能。传统方案中,软件仿真和硬件仿真可以分开执行,但是,为了提高仿真效率,可以执行软硬件联合仿真。
以真实软件是APP,真实硬件是FPGA芯片为例,软硬件联合仿真,就是仿真APP与FPGA芯片的真实交互(或称为通信)过程。
PCIe架构所涉及的设备可以包括:CPU、PCIe根复合体(Root Complex,PCIe RC)、开关(Switch)、桥接器(Bridge)和终端设备(End Point,EP)。
其中,PCIe RC是CPU与PCIe总线拓扑结构之间的接口,可以包含一个或多个组件,一个或多个芯片等。
EP是PCIe总线拓扑结构中的末端节点。EP可以直接与PCIe RC连接,或者,通过Switch或Bridge与PCIe RC连接。
PCIe RC通过开关或桥接器或直接与EP通信时,采用事务层数据包(TransactionLayer Packet,TLP)报文进行数据交互。
基于上述FPGA芯片与CPU通信的示例,FPGA芯片是上述PCIe架构中的EP。
基于PCIe架构,在真实环境下,真实CPU与真实EP之间至少通过真实PCIe RC进行通信,相应地,在仿真环境下,虚拟连接器可以用于仿真真实PCIe RC,可以称为虚拟PCIeRC。
本实施例中,由于高性能设备中的真实处理器通常是采用片外总线与作为外设的真实硬件连接的,因此,采用虚拟连接器仿真片外总线对应的真实连接设备可以满足于高性能设备的仿真需求。
进一步地,片外总线以PCIe总线为例,虚拟连接器以虚拟PCIe RC为例,可以支持PCIe总线场景下的软硬件联合仿真,由于真实的服务器场景下,PCIe总线是普遍采用的,可以提高普适性。
针对硬件仿真,可以采用硬件描述语言(Hardware Description Language,HDL)仿真器,仿真真实硬件,例如仿真FPGA。HDL具体可以为Verilog,或者,超高速集成电路硬件描述语言(Very-High-Speed Integrated Circuit Hardware Description Language,VHDL)。HDL仿真器可以采用成熟的商用仿真器,例如Siemens EDA Questa、Synopsys VCS、Cadence Incisive等,或者,也可以是开源仿真器,例如,Icarus verilog或者verilator等。上述的商用仿真器和开源仿真器的具体形式都是软件代码。
针对软件仿真,可以采用虚拟机,仿真真实软件的真实运行平台,例如仿真APP所在的CPU,以生成虚拟CPU,真实的APP可以运行在虚拟CPU上。虚拟机例如可以是基于内核虚拟机(Kernel Virtual Machine,KVM)的快速仿真器(Quick Emulator,QEMU)。QEMU是一套用于模拟处理器的软件代码。
本实施例中,软件仿真器采用虚拟机,硬件仿真器采用HDL仿真器,可以利用已有的软件仿真器和硬件仿真器,降低仿真难度。
基于上述应用场景,本公开还提供一种软硬件联合仿真系统。
图3是根据本公开第二实施例的示意图,本实施例提供一种软硬件联合仿真系统。
如图3所示,软硬件联合仿真系统包括:虚拟机301、HDL仿真器302和虚拟PCIe RC303。
虚拟机301用于仿真CPU,以生成虚拟CPU,以及,在虚拟CPU上运行真实APP。
所仿真的CPU可以是服务器的CPU,例如,可以是x86 CPU或高性能RISC机器(Advanced RISC Machine,ARM)CPU,RISC是指精简指令集计算机(Reduced InstructionSet Computer)。
HDL仿真器302用于仿真FPGA芯片,可以采用各种相关的商用仿真器或开源仿真器。具体可以包括调度器和硬件描述程序,硬件描述程序是用于描述FPGA的硬件功能的程序,具体可以采用硬件编程语言(verilog或VHDL)进行描述。
虚拟PCIe RC 303用于仿真真实PCIe RC。
虚拟PCIe RC可以基于软件编程语言实现,与verilog、VHDL等硬件编程语言实现的不同。
进一步地,如图3所示,软件编程语言可以是高级软件语言,例如,python、C、C++、Java等。
虚拟PCIe RC的功能可以包括:TLP报文组装与解析、内存读写、时序信号生成与解析、接口调用等功能。
本实施例中,虚拟PCIe RC基于软件编程语言实现,相对于硬件编程语言,软件编程语言具备很高的灵活性和跨平台能力,可以便捷地适配各种软件运行平台、硬件、硬件仿真器等场景。
具体仿真过程中,上述的虚拟机、HDL仿真器和虚拟PCIe RC可以是仿真平台上的三个进程,通过进程间通信方式实现相互之间的通信。
具体地,HDL仿真器提供对外通信接口,例如,Verilog过程接口(VerilogProcedural Interface,VPI)或VHDL过程接口(VHDL Procedural Interface,VHPI)接口,因此,虚拟PCIe RC与HDL仿真器可以通过VPI或VHPI(VPI/VHPI)接口进行通信。
虚拟机和虚拟PCIe RC可以通过消息队列、共享内存、套接字(socket)中的一项或多项进行通信。图3中示出了消息队列和共享内存的方式。
进一步地,针对消息队列可以分为请求消息队列和响应消息队列,请求消息队列用于存储请求消息,响应消息队列用于存储响应消息。
针对共享内存方式,虚拟PCIe RC可以对虚拟机的共享内存进行直接内存读写,针对消息队列方式,虚拟PCIe RC可以通过消息队列(请求消息队列和/或响应消息队列)与虚拟机交互。
本实施例中,通过消息队列、共享内存、套接字可以实现软件仿真器与虚拟PCIeRC之间的通信,进一步地,基于消息队列可以实现简单,基于共享内存,可以减少数据拷贝操作,提高仿真效率。
软件与硬件的交互过程可以分为:软件发起、硬件响应;或者,硬件发起,软件响应。基于不同的发起方及响应方,虚拟PCIe RC可以执行不同的操作。
虚拟PCIe RC可以具体执行:在请求消息队列中,获取所述软件仿真器存入的读写请求消息;基于所述读写请求消息,生成第一TLP报文;基于所述真实硬件的时序规则,将所述第一TLP报文转换为读取请求信号;将所述读写请求信号发送至所述硬件仿真器,所述读写请求信号用于触发所述硬件仿真器执行读写操作;以及,若接收到所述硬件仿真器发送的读响应信号,基于所述时序规则,将所述读响应信号转换为第二TLP报文;基于所述第二TLP报文,生成读响应消息;将所述读响应消息存入响应消息队列,所述软件仿真器用于从所述响应消息队列获取所述读响应消息;和/或,接收所述硬件仿真器发送的所述读写请求信号;基于所述真实硬件的时序规则,将所述读写请求信号转换为第三TLP报文;基于所述第三TLP报文,对所述软件仿真器提供的共享内存进行读写操作;以及,若从所述共享内存读取到读响应数据,将所述读响应数据封装为第四TLP报文;基于所述时序规则,将所述第四TLP报文转换为读响应信号;将所述读响应信号发送至所述硬件仿真器。
关于上述的数据处理过程,可以详见后续的软硬件联合仿真方法的实施例。
本实施例中,通过上述的数据处理过程,可以实现不同发起方发起的仿真交互过程。
图4是根据本公开第三实施例的示意图,本实施例提供一种软硬件联合仿真方法。
本实施例的方法可以应用于虚拟连接器,所述虚拟连接器用于仿真真实软件的真实运行平台与真实硬件之间的真实连接设备。
如图4所示,本实施例提供的方法包括:
401、接收发起方发送的读写请求数据。
402、基于所述读写请求数据,对响应方执行读写操作。
其中,所述发起方和所述响应方分别为软件仿真器和硬件仿真器中的一方;所述软件仿真器用于仿真真实软件的真实运行平台,以生成虚拟运行平台,以及,在所述虚拟运行平台上运行所述真实软件;所述硬件仿真器用于仿真所述真实硬件,以生成虚拟硬件。
真实环境中,真实软件和真实硬件可以相互通信,真实连接器,例如,真实RC可以基于一方发送的读写请求数据对另一种执行读写操作。
相应地,仿真过程中,虚拟连接器也可以仿真真实环境中的上述读写操作过程。
虚拟运行平台是软件仿真器提供的,虚拟硬件是硬件仿真器提供的,因此,仿真交互过程是软件仿真器与硬件仿真器之间的交互过程,相应地,发起方可以是软件仿真器,相应的响应方是硬件仿真器;或者,发起方是硬件仿真器,相应的响应方是软件仿真器。
本实施例中,软件仿真器上运行真实软件,由于采用了真实软件而不是软件测试代码,可以保证仿真准确度;并且,虚拟连接器仿真了真实软件的真实运行平台与真实硬件之间的真实连接设备,可以适用于真实环境下的真实运行平台与真实硬件之间通过较为复杂的总线进行连接的场景,由于真实环境下的高性能设备中的真实运行平台通常是采用复杂总线连接真实硬件,因此,可以满足真实环境下的高性能设备的仿真需求。
以真实环境下,真实软件是运行在CPU上的APP,真实硬件是FPGA,CPU与FPGA之间通过PCIe总线通信为例,参考上述的系统实施例,软件仿真器可以是虚拟机,硬件仿真器可以是HDL仿真器,虚拟连接器可以是虚拟PCIe RC。
真实环境下,软件与硬件的交互过程可以分为软件发起,硬件响应;或者,硬件发起,软件响应;相应地,仿真过程中,也可以分别仿真上述两种不同发起方的交互过程。
图5a是根据本公开第四实施例的示意图,本实施例提供一种软硬件联合仿真方法。本实施例对软件发起、硬件响应的交互过程进行仿真。
如图5a所示,本实施例提供的方法包括:
501、虚拟机将读写请求消息,存入请求消息队列。
其中,软件发起时,运行在虚拟CPU上的真实APP可以产生读写请求指令,虚拟机的虚拟硬件驱动可以将读写请求指令转化为读取请求消息。其中,虚拟硬件驱动可以基于虚拟机提供的接口函数实现,用以实现指令到消息的转换。
其中,参考后续描述,由于写操作可以不进行响应,针对写请求消息,可以直接向虚拟机返回完成即可。针对读请求消息,可以采用阻塞方式,等待读请求消息对应的响应消息返回后,再存入新的请求消息。
502、虚拟PCIe RC从请求消息队列中,获取读写请求消息。
503、虚拟PCIe RC,基于所述读写请求消息生成第一TLP报文。
其中,虚拟机产生的读写请求消息的格式与TLP报文的格式可能不同,而虚拟RC传输的数据通常是TLP报文格式,因此,虚拟RC可以先将消息转换为TLP,为了区分,读取请求消息转换成的TLP报文可以称为第一TLP报文。
具体地,可以预先配置两者之间的格式关系,基于该关系将消息转换为TLP报文。
可以理解的是,如果读写请求消息与TLP报文的格式一致,则可以不需要转换,将读写请求消息作为第一TLP报文。
504、虚拟PCIe RC,基于FPGA的时序规则,将所述第一TLP报文转换为第一读写请求信号。
其中,为了区分,第一TLP转换成的信号可以称为第一读写请求信号。
其中,FPGA的输入数据和输出数据通常是时序信号形式,因此,为了使得FPGA可以对相关数据进行处理,需要将TLP报文转换为时序信号,第一TLP报文转换成的信号可以称为读写请求信号。
TLP报文与FPGA的输入/输出信号之间存在的关系可以称为时序规则,该时序规则可以预先配置在虚拟PCIe RC内,从而虚拟PCIe RC可以基于该时序规则将TLP报文转换为FPGA对应的信号。
其中,TLP报文整体上可以包括头部、数据段和校验段,时序规则中可以定义FPGA的信号中的哪个或哪些比特(bit)对应TLP报文的头部、数据段或校验段,因此,基于该时序规则可以进行TLP报文与FPGA的输入/输出信号之间的转换。
针对真实FPGA,真实FPGA的PCIe硬核内也遵循相同的时序规则。
505、虚拟PCIe RC,将所述第一读写请求信号发送至HDL仿真器。
其中,虚拟PCIe RC可以通过VPI/VHPI接口,将读写请求信号发送至HDL仿真器。
506、HDL仿真器,响应于所述第一读写请求信号,执行读写操作。
其中,读写请求可以分为读请求和写请求,相应的读写操作为读操作和写操作。
本实施例中,虚拟PCIe RC接收读取请求消息,并将其转换为TLP报文,以及将TLP报文转换为读写请求信号,将读写请求信号发送至HDL仿真器,触发HDL仿真器基于读取请求信号执行读写操作,可以实现针对软件发起、硬件响应的真实交互过程的仿真,进而可以联合验证软件功能和硬件功能。通过上述的消息、TLP报文以及信号的转换,可以仿真真实环境的通信数据的交互过程。虚拟机与虚拟PCIe RC之间的通信通过采用消息队列进行,实现简单。
针对写操作,可以不反馈响应数据,执行写操作即可。
针对读操作,需要反馈响应数据,由于FPGA对应读请求信号,因此此时的响应数据可以称为读响应信号。
因此,针对读操作,如图5b所示,软硬件联合仿真方法还可以包括:
507、HDL仿真器,将执行读操作产生的第一读响应信号发送至虚拟RC。
其中,为了区分,HDL仿真器执行读操作后产生的响应信号可以称为第一读响应信号。
其中,HDL仿真器可以通过VPI/VHPI接口,将第一读响应信号发送至虚拟RC。
508、虚拟PCIe RC,基于所述时序规则,将所述第一读响应信号转换为第二TLP报文。
509、虚拟PCIe RC,基于所述第二TLP报文,生成读响应消息。
其中,TLP报文与信号之间的转换,以及TLP报文与消息之间的转换,可以参见上一实施例的相关描述。
510、虚拟PCIe RC,将所述读响应消息存入响应消息队列。
511、虚拟机从所述响应消息队列获取所述读响应消息。
本实施例中,针对读操作,HDL仿真器可以通过虚拟PCIe RC向虚拟机反馈响应数据,由于读操作通常是需要响应的,可以仿真完整的交互过程,保证仿真过程的完整性。
图6a是根据本公开第六实施例的示意图,本实施例提供一种软硬件联合仿真方法。本实施例对硬件发起、软件响应的交互过程进行仿真。
如图6a所示,本实施例提供的方法包括:
601、HDL仿真器,将第二读写请求信号发送至虚拟PCIe RC。
其中,硬件发起时,HDL仿真器产生读写请求信号。
为了区分,此处的读写请求信号可以称为第二读写请求信号。
HDL仿真器可以通过VPI/VHPI接口,将读写请求信号发送至虚拟RC。
602、虚拟PCIe RC,基于FPGA的时序规则,将所述第二读写请求信号转换为第三TLP报文。
其中,为了区分,读写请求信号转换成的TLP报文可以称为第三TLP报文。关于信号与TLP报文之间的转换过程可以上述实施例的相关描述。
603、虚拟PCIe RC,基于所述第三TLP报文,对虚拟机提供的共享内存进行读写操作。
其中,虚拟PCIe RC可以采用共享内存的方式与虚拟机进行通信。
例如,虚拟机和虚拟PCIe RC共享一部分内存,虚拟PCIe RC可以对第三TLP报文进行解析,基于解析结果对该地址指示的共享内存进行读写操作。其中,解析结果可以表明是读操作还是写操作,读取哪些数据,写入哪些数据等。
本实施例中,虚拟PCIe RC接收读取请求信号,并将其转换为TLP报文,以及基于TLP报文,对与虚拟机共享的内存执行读写操作,可以实现针对硬件发起、软件响应的真实交互过程的仿真,进而可以联合验证软件功能和硬件功能。通过上述的TLP报文以及信号的转换,可以仿真真实环境的通信数据的交互过程。通过采用共享内存方式进行虚拟机与虚拟RC之间的通信,可以降低数据拷贝操作的次数,提高仿真效率。
针对写操作,可以不反馈响应数据,执行写操作即可。
针对读操作,需要反馈响应数据。
因此,针对读操作,如图6b所示,软硬件联合仿真方法还可以包括:
604、虚拟PCIe RC,将所述读操作读取的读响应数据,封装为第四TLP报文。
其中,虚拟PCIe RC执行读操作后,可以从共享内存中读取到对应的数据,该数据可以称为读响应数据。之后,可以按照TLP报文的格式要求,将读响应数据封装为TLP报文,该TLP报文可以称为第四TLP报文。
605、虚拟PCIe RC,基于所述时序规则,将所述第四TLP报文转换为第二读响应信号。
其中,TLP报文与信号之间的转换可以参见上述实施例的相关描述。
为了区分,第四TLP报文转换成的信号可以称为第二读响应信号。
606、虚拟PCIe RC,将所述第二读响应信号发送至HDL仿真器。
其中,虚拟PCIe RC可以通过VPI/VHPI接口,将第二读响应信号发送至HDL仿真器。
本实施例中,针对读操作,虚拟PCIe RC可以向HDL仿真器反馈响应数据,由于读操作通常是需要响应的,可以仿真完整的交互过程,保证仿真过程的完整性。
图7是根据本公开第八实施例的示意图,本实施例提供一种软硬件联合仿真装置,该装置700包括:第一接收模块701和处理模块702。
所述装置应用于虚拟连接器,所述虚拟连接器用于仿真真实软件的真实运行平台与真实硬件之间的真实连接设备。
第一接收模块701用于接收发起方发送的读写请求数据;处理模块702用于基于所述读写请求数据,对响应方执行读写操作;其中,所述发起方和所述响应方分别为软件仿真器和硬件仿真器中的一方;所述软件仿真器用于仿真真实软件的真实运行平台,以生成虚拟运行平台,以及,在所述虚拟运行平台上运行所述真实软件;所述硬件仿真器用于仿真所述真实硬件,以生成虚拟硬件。
本实施例中,软件仿真器上运行真实软件,由于采用了真实软件而不是软件测试代码,可以保证仿真准确度;并且,虚拟连接器仿真了真实软件的真实运行平台与真实硬件之间的真实连接设备,可以适用于真实环境下的真实运行平台与真实硬件之间通过较为复杂的总线进行连接的场景,由于真实环境下的高性能设备中的真实运行平台通常是采用复杂总线连接真实硬件,因此,可以满足真实环境下的高性能设备的仿真需求。
一些实施例中,所述真实运行平台与所述真实硬件基于PCIe总线连接,相应地,所述虚拟连接器是虚拟PCIe RC;所述发起方为所述软件仿真器,相应地,所述读写请求数据为读写请求消息;所述第一接收模块701进一步用于:在请求消息队列中,获取所述软件仿真器存入的所述读写请求消息;和/或,所述处理模块702进一步用于:基于所述读写请求消息,生成第一TLP报文;基于所述真实硬件的时序规则,将所述第一TLP报文转换为第一读取请求信号;将所述第一读写请求信号发送至所述硬件仿真器,所述第一读写请求信号用于触发所述硬件仿真器执行读写操作。
本实施例中,虚拟PCIe RC接收读取请求消息,并将其转换为TLP报文,以及将TLP报文转换为读写请求信号,将读写请求信号发送至HDL仿真器,触发HDL仿真器基于读取请求信号执行读写操作,可以实现针对软件发起、硬件响应的真实交互过程的仿真,进而可以联合验证软件功能和硬件功能。通过上述的消息、TLP报文以及信号的转换,可以仿真真实环境的通信数据的交互过程。虚拟机与虚拟PCIe RC之间通过采用消息队列方式进行通信,实现简单。
一些实施例中,所述读写请求消息为读请求消息,相应地,所述读写操作是读操作;所述装置还包括:第二接收模块,用于接收所述硬件仿真器发送的第一读响应信号,所述第一读响应信号是所述硬件仿真器执行所述读操作后生成的;第一转换模块,用于基于所述时序规则,将所述第一读响应信号转换为第二TLP报文;第一生成模块,用于基于所述第二TLP报文,生成读响应消息;第一发送模块,用于将所述读响应消息存入响应消息队列,所述软件仿真器用于从所述响应消息队列获取所述读响应消息。
本实施例中,针对读操作,HDL仿真器可以通过虚拟PCIe RC向虚拟机反馈响应数据,由于读操作通常是需要响应的,可以仿真完整的交互过程,保证仿真过程的完整性。
一些实施例中,所述真实运行平台与所述真实硬件基于PCIe总线连接,相应地,所述虚拟连接器是虚拟PCIe RC;所述发起方为所述硬件仿真器,相应地,所述读写请求数据为第二读写请求信号;所述第一接收模块701进一步用于:接收所述硬件仿真器发送的所述第二读写请求信号;所述处理模块702进一步用于:基于所述真实硬件的时序规则,将所述第二读写请求信号转换为第三TLP报文;基于所述第三TLP报文,对所述软件仿真器提供的共享内存进行读写操作。
本实施例中,虚拟PCIe RC接收读取请求信号,并将其转换为TLP报文,以及基于TLP报文,对虚拟机的共享内存执行读写操作,可以实现针对硬件发起、软件响应的真实交互过程的仿真,进而可以联合验证软件功能和硬件功能。通过上述的TLP报文以及信号的转换,可以仿真真实环境的通信数据的交互过程。通过采用共享内存方式进行虚拟机与虚拟RC之间的通信,可以降低数据拷贝操作的次数,提高仿真效率。
一些实施例中,所述第二读写请求信号为读请求信号,相应地,所述读写操作是读操作;所述装置还包括:第二生成模块,用于将所述读操作读取的读响应数据,封装为第四TLP报文;第二转换模块,用于基于所述时序规则,将所述第四TLP报文转换为第二读响应信号;第二发送模块,用于将所述第二读响应信号发送至所述硬件仿真器。
本实施例中,针对读操作,虚拟PCIe RC可以向HDL仿真器反馈响应数据,由于读操作通常是需要响应的,可以仿真完整的交互过程,保证仿真过程的完整性。
可以理解的是,本公开实施例中,不同实施例中的相同或相似内容可以相互参考。
可以理解的是,本公开实施例中的“第一”、“第二”等只是用于区分,不表示重要程度高低、时序先后等。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备800旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备800还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储电子设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
电子设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如软硬件联合仿真方法。例如,在一些实施例中,软硬件联合仿真方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到电子设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的软硬件联合仿真方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行软硬件联合仿真方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程软硬件联合仿真装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (20)

1.一种软硬件联合仿真系统,包括:
软件仿真器,用于仿真真实软件的真实运行平台,以生成虚拟运行平台;以及,在所述虚拟运行平台上运行所述真实软件;
硬件仿真器,用于仿真真实硬件,以生成虚拟硬件;
虚拟连接器,用于仿真所述真实运行平台与所述真实硬件之间的真实连接设备;以及,基于所述软件仿真器或所述硬件仿真器产生的读取请求数据执行读写操作。
2.根据权利要求1所述的系统,其中,
所述真实运行平台为真实处理器;
所述真实处理器与所述真实硬件之间采用片外总线连接;
所述虚拟连接器具体用于仿真所述片外总线对应的真实连接设备。
3.根据权利要求2所述的系统,其中,
所述片外总线为PCIe总线;
所述虚拟连接器是虚拟PCIe RC,所述虚拟PCIe RC用于仿真所述PCIe总线对应的真实PCIe RC。
4.根据权利要求1-3任一项所述的系统,其中,
所述虚拟连接器基于软件编程语言实现。
5.根据权利要求1-3任一项所述的系统,其中,
所述软件仿真器为虚拟机;和/或,
所述硬件仿真器为HDL仿真器。
6.根据权利要求1-3任一项所述的系统,其中,所述软件仿真器与所述虚拟连接器之间通过如下方式中的至少一项相互通信:
消息队列,共享内存,套接字。
7.根据权利要求1-3任一项所述的系统,其中,所述虚拟连接器进一步用于:
在请求消息队列中,获取所述软件仿真器存入的读写请求消息;基于所述读写请求消息,生成第一TLP报文;基于所述真实硬件的时序规则,将所述第一TLP报文转换为读写请求信号;将所述读写请求信号发送至所述硬件仿真器,所述读写请求信号用于触发所述硬件仿真器执行读写操作;以及,若接收到所述硬件仿真器发送的读响应信号,基于所述时序规则,将所述读响应信号转换为第二TLP报文;基于所述第二TLP报文,生成读响应消息;将所述读响应消息存入响应消息队列,所述软件仿真器用于从所述响应消息队列获取所述读响应消息;
和/或,
接收所述硬件仿真器发送的所述读写请求信号;基于所述真实硬件的时序规则,将所述读写请求信号转换为第三TLP报文;基于所述第三TLP报文,对所述软件仿真器提供的共享内存进行读写操作;以及,若从所述共享内存读取到读响应数据,将所述读响应数据封装为第四TLP报文;基于所述时序规则,将所述第四TLP报文转换为读响应信号;将所述读响应信号发送至所述硬件仿真器。
8.一种软硬件联合仿真方法,所述方法应用于虚拟连接器,所述虚拟连接器用于仿真真实软件的真实运行平台与真实硬件之间的真实连接设备,所述方法包括:
接收发起方发送的读写请求数据;
基于所述读写请求数据,对响应方执行读写操作;
其中,所述发起方和所述响应方分别为软件仿真器和硬件仿真器中的一方;所述软件仿真器用于仿真真实软件的真实运行平台,以生成虚拟运行平台,以及,在所述虚拟运行平台上运行所述真实软件;所述硬件仿真器用于仿真所述真实硬件,以生成虚拟硬件。
9.根据权利要求8所述的方法,其中,
所述真实运行平台与所述真实硬件基于PCIe总线连接,相应地,所述虚拟连接器是虚拟PCIe RC;
所述发起方为所述软件仿真器,相应地,所述读写请求数据为读写请求消息;
所述接收发起方发送的读写请求数据,包括:
在请求消息队列中,获取所述软件仿真器存入的所述读写请求消息;
和/或,
所述基于所述读写请求数据,对响应方执行读写操作,包括:
基于所述读写请求消息,生成第一TLP报文;
基于所述真实硬件的时序规则,将所述第一TLP报文转换为第一读取请求信号;
将所述第一读写请求信号发送至所述硬件仿真器,所述第一读写请求信号用于触发所述硬件仿真器执行读写操作。
10.根据权利要求9所述的方法,其中,
所述读写请求消息为读请求消息,相应地,所述读写操作是读操作;
所述方法还包括:
接收所述硬件仿真器发送的第一读响应信号,所述第一读响应信号是所述硬件仿真器执行所述读操作后生成的;
基于所述时序规则,将所述第一读响应信号转换为第二TLP报文;
基于所述第二TLP报文,生成读响应消息;
将所述读响应消息存入响应消息队列,所述软件仿真器用于从所述响应消息队列获取所述读响应消息。
11.根据权利要求8所述的方法,其中,
所述真实运行平台与所述真实硬件基于PCIe总线连接,相应地,所述虚拟连接器是虚拟PCIe RC;
所述发起方为所述硬件仿真器,相应地,所述读写请求数据为第二读写请求信号;
所述接收发起方发送的读写请求数据,包括:
接收所述硬件仿真器发送的所述第二读写请求信号;
和/或,
所述基于所述读写请求数据,对响应方执行读写操作,包括:
基于所述真实硬件的时序规则,将所述第二读写请求信号转换为第三TLP报文;
基于所述第三TLP报文,对所述软件仿真器提供的共享内存进行读写操作。
12.根据权利要求11所述的方法,其中,
所述第二读写请求信号为读请求信号,相应地,所述读写操作是读操作;
所述方法还包括:
将所述读操作读取的读响应数据,封装为第四TLP报文;
基于所述时序规则,将所述第四TLP报文转换为第二读响应信号;
将所述第二读响应信号发送至所述硬件仿真器。
13.一种软硬件联合仿真装置,所述装置应用于虚拟连接器,所述虚拟连接器用于仿真真实软件的真实运行平台与真实硬件之间的真实连接设备,所述装置包括:
第一接收模块,用于接收发起方发送的读写请求数据;
处理模块,用于基于所述读写请求数据,对响应方执行读写操作;
其中,所述发起方和所述响应方分别为软件仿真器和硬件仿真器中的一方;所述软件仿真器用于仿真真实软件的真实运行平台,以生成虚拟运行平台,以及,在所述虚拟运行平台上运行所述真实软件;所述硬件仿真器用于仿真所述真实硬件,以生成虚拟硬件。
14.根据权利要求13所述的装置,其中,
所述真实运行平台与所述真实硬件基于PCIe总线连接,相应地,所述虚拟连接器是虚拟PCIe RC;
所述发起方为所述软件仿真器,相应地,所述读写请求数据为读写请求消息;
所述第一接收模块进一步用于:
在请求消息队列中,获取所述软件仿真器存入的所述读写请求消息;
和/或,
所述处理模块进一步用于:
基于所述读写请求消息,生成第一TLP报文;
基于所述真实硬件的时序规则,将所述第一TLP报文转换为第一读取请求信号;
将所述第一读写请求信号发送至所述硬件仿真器,所述第一读写请求信号用于触发所述硬件仿真器执行读写操作。
15.根据权利要求14所述的装置,其中,
所述读写请求消息为读请求消息,相应地,所述读写操作是读操作;
所述装置还包括:
第二接收模块,用于接收所述硬件仿真器发送的第一读响应信号,所述第一读响应信号是所述硬件仿真器执行所述读操作后生成的;
第一转换模块,用于基于所述时序规则,将所述第一读响应信号转换为第二TLP报文;
第一生成模块,用于基于所述第二TLP报文,生成读响应消息;
第一发送模块,用于将所述读响应消息存入响应消息队列,所述软件仿真器用于从所述响应消息队列获取所述读响应消息。
16.根据权利要求13所述的装置,其中,
所述真实运行平台与所述真实硬件基于PCIe总线连接,相应地,所述虚拟连接器是虚拟PCIe RC;
所述发起方为所述硬件仿真器,相应地,所述读写请求数据为第二读写请求信号;
所述第一接收模块进一步用于:
接收所述硬件仿真器发送的所述第二读写请求信号;
所述处理模块进一步用于:
基于所述真实硬件的时序规则,将所述第二读写请求信号转换为第三TLP报文;
基于所述第三TLP报文,对所述软件仿真器提供的共享内存进行读写操作。
17.根据权利要求16所述的装置,其中,
所述第二读写请求信号为读请求信号,相应地,所述读写操作是读操作;
所述装置还包括:
第二生成模块,用于将所述读操作读取的读响应数据,封装为第四TLP报文;
第二转换模块,用于基于所述时序规则,将所述第四TLP报文转换为第二读响应信号;
第二发送模块,用于将所述第二读响应信号发送至所述硬件仿真器。
18.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求8-12中任一项所述的方法。
19.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求8-12中任一项所述的方法。
20.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求8-12中任一项所述的方法。
CN202210510941.4A 2022-05-11 2022-05-11 软硬件联合仿真系统、方法、装置、设备和存储介质 Active CN114880977B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210510941.4A CN114880977B (zh) 2022-05-11 2022-05-11 软硬件联合仿真系统、方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210510941.4A CN114880977B (zh) 2022-05-11 2022-05-11 软硬件联合仿真系统、方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN114880977A true CN114880977A (zh) 2022-08-09
CN114880977B CN114880977B (zh) 2023-04-25

Family

ID=82675885

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210510941.4A Active CN114880977B (zh) 2022-05-11 2022-05-11 软硬件联合仿真系统、方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN114880977B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116028292A (zh) * 2023-02-28 2023-04-28 珠海星云智联科技有限公司 用于远程直接内存访问仿真验证的仿真验证系统及方法
CN116414526A (zh) * 2023-06-12 2023-07-11 芯动微电子科技(珠海)有限公司 一种基于虚拟机的仿真装置和方法
CN117251381A (zh) * 2023-11-15 2023-12-19 宁波润华全芯微电子设备有限公司 用于匀胶显影系统的软件虚拟系统、调试方法及存储介质
CN117556754A (zh) * 2024-01-11 2024-02-13 北京数渡信息科技有限公司 PCIe交换机芯片硅前仿真系统
CN117591462A (zh) * 2024-01-19 2024-02-23 成都大征创智科技有限公司 一种数字化处理机中基于pcie协议的外设连接方法
CN117709253A (zh) * 2024-02-01 2024-03-15 北京开源芯片研究院 芯片测试方法、装置、电子设备及可读存储介质
WO2024060593A1 (zh) * 2022-09-22 2024-03-28 济南新语软件科技有限公司 一种SoC芯片分布式仿真验证平台和方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521444A (zh) * 2011-12-08 2012-06-27 青岛海信信芯科技有限公司 软硬件协同仿真/验证方法及装置
US20130136031A1 (en) * 2011-11-30 2013-05-30 Adi Schmidek Field aware virtual connection discovery
US8725919B1 (en) * 2011-06-20 2014-05-13 Netlogic Microsystems, Inc. Device configuration for multiprocessor systems
US9026966B1 (en) * 2014-03-13 2015-05-05 Cadence Design Systems, Inc. Co-simulation methodology to address performance and runtime challenges of gate level simulations with, SDF timing using emulators
US20150188788A1 (en) * 2014-01-02 2015-07-02 Red Hat Israel, Ltd. External service provider
CN207096986U (zh) * 2017-08-24 2018-03-13 航天中认软件测评科技(北京)有限责任公司 软硬件协同仿真的系统
CN110825670A (zh) * 2018-08-08 2020-02-21 马维尔国际贸易有限公司 基于NVMe协议的主机与固态驱动器(SSD)之间的受管理交换
CN112511537A (zh) * 2020-11-30 2021-03-16 国微集团(深圳)有限公司 一种sce-mi协议桥及仿真系统
CN113312143A (zh) * 2021-03-03 2021-08-27 阿里巴巴新加坡控股有限公司 云计算系统、命令处理方法及虚拟化仿真装置
CN113868174A (zh) * 2021-10-11 2021-12-31 摩尔线程智能科技(北京)有限责任公司 验证平台搭建方法、装置及存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8725919B1 (en) * 2011-06-20 2014-05-13 Netlogic Microsystems, Inc. Device configuration for multiprocessor systems
US20130136031A1 (en) * 2011-11-30 2013-05-30 Adi Schmidek Field aware virtual connection discovery
CN102521444A (zh) * 2011-12-08 2012-06-27 青岛海信信芯科技有限公司 软硬件协同仿真/验证方法及装置
US20150188788A1 (en) * 2014-01-02 2015-07-02 Red Hat Israel, Ltd. External service provider
US9026966B1 (en) * 2014-03-13 2015-05-05 Cadence Design Systems, Inc. Co-simulation methodology to address performance and runtime challenges of gate level simulations with, SDF timing using emulators
CN207096986U (zh) * 2017-08-24 2018-03-13 航天中认软件测评科技(北京)有限责任公司 软硬件协同仿真的系统
CN110825670A (zh) * 2018-08-08 2020-02-21 马维尔国际贸易有限公司 基于NVMe协议的主机与固态驱动器(SSD)之间的受管理交换
CN112511537A (zh) * 2020-11-30 2021-03-16 国微集团(深圳)有限公司 一种sce-mi协议桥及仿真系统
CN113312143A (zh) * 2021-03-03 2021-08-27 阿里巴巴新加坡控股有限公司 云计算系统、命令处理方法及虚拟化仿真装置
CN113868174A (zh) * 2021-10-11 2021-12-31 摩尔线程智能科技(北京)有限责任公司 验证平台搭建方法、装置及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
鲍颖力: "基于虚拟机QEMU的嵌入式全系统仿真测试环境的研究与实现", 《航空电子技术》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024060593A1 (zh) * 2022-09-22 2024-03-28 济南新语软件科技有限公司 一种SoC芯片分布式仿真验证平台和方法
CN116028292A (zh) * 2023-02-28 2023-04-28 珠海星云智联科技有限公司 用于远程直接内存访问仿真验证的仿真验证系统及方法
CN116028292B (zh) * 2023-02-28 2023-06-06 珠海星云智联科技有限公司 用于远程直接内存访问仿真验证的仿真验证系统及方法
CN116414526A (zh) * 2023-06-12 2023-07-11 芯动微电子科技(珠海)有限公司 一种基于虚拟机的仿真装置和方法
CN116414526B (zh) * 2023-06-12 2023-10-20 芯动微电子科技(珠海)有限公司 一种基于虚拟机的仿真装置和方法
CN117251381A (zh) * 2023-11-15 2023-12-19 宁波润华全芯微电子设备有限公司 用于匀胶显影系统的软件虚拟系统、调试方法及存储介质
CN117251381B (zh) * 2023-11-15 2024-03-15 宁波润华全芯微电子设备有限公司 用于匀胶显影系统的软件虚拟系统、调试方法及存储介质
CN117556754A (zh) * 2024-01-11 2024-02-13 北京数渡信息科技有限公司 PCIe交换机芯片硅前仿真系统
CN117556754B (zh) * 2024-01-11 2024-03-19 北京数渡信息科技有限公司 PCIe交换机芯片硅前仿真系统
CN117591462A (zh) * 2024-01-19 2024-02-23 成都大征创智科技有限公司 一种数字化处理机中基于pcie协议的外设连接方法
CN117709253A (zh) * 2024-02-01 2024-03-15 北京开源芯片研究院 芯片测试方法、装置、电子设备及可读存储介质
CN117709253B (zh) * 2024-02-01 2024-04-26 北京开源芯片研究院 芯片测试方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN114880977B (zh) 2023-04-25

Similar Documents

Publication Publication Date Title
CN114880977B (zh) 软硬件联合仿真系统、方法、装置、设备和存储介质
CN107247859B (zh) 逻辑电路设计的验证方法、装置、电子设备及存储介质
KR101035832B1 (ko) 집적 종단점 장치와, 집적 pci 익스프레스 종단점 장치및 pci 익스프레스 통신 시스템
US10180850B1 (en) Emulating applications that use hardware acceleration
CN113656227A (zh) 一种芯片验证方法、装置、电子设备及存储介质
US20190034318A1 (en) Hardware-Software Co-Verification for Debugging Firmware on a Hardware Simulator
CN113342583B (zh) 芯片验证系统、方法、装置、设备和存储介质
CN102480467B (zh) 一种基于网络通讯协议的soc软硬件协同仿真验证方法
CN114818599A (zh) 芯片仿真验证系统
US9710575B2 (en) Hybrid platform-dependent simulation interface
JP2023017825A (ja) ネットワーク機器のテスト方法及びその装置
CN116028292A (zh) 用于远程直接内存访问仿真验证的仿真验证系统及方法
CN116401984A (zh) 基于虚拟机的片上系统仿真方法及系统
CN103809112A (zh) 从命令行测试集成电路的系统、方法和计算机程序产品
CN116681013B (zh) 网络芯片的仿真验证方法、平台、装置、设备及介质
US20090216517A1 (en) Dedicated simulator for testing a usb host solution
CN110737900B (zh) 网页功能测试方法及装置、服务器和计算机可读存储介质
CN114743586B (zh) 存储器模型的镜像存储实现方法、装置及存储介质
CN116611375A (zh) 软硬件协同仿真平台及软硬件测试方法
US7447618B2 (en) Method and system for ASIC simulation
CN114328045A (zh) 一种bmc的i2c调试方法、系统、装置及计算机可读存储介质
US11630935B1 (en) Data traffic injection for simulation of circuit designs
CN115658413B (zh) 一种激励发生器和激励发生方法
CN115658411B (zh) 一种激励发生器以及激励发生方法
CN115600323B (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