CN116414526B - 一种基于虚拟机的仿真装置和方法 - Google Patents
一种基于虚拟机的仿真装置和方法 Download PDFInfo
- Publication number
- CN116414526B CN116414526B CN202310688763.9A CN202310688763A CN116414526B CN 116414526 B CN116414526 B CN 116414526B CN 202310688763 A CN202310688763 A CN 202310688763A CN 116414526 B CN116414526 B CN 116414526B
- Authority
- CN
- China
- Prior art keywords
- cxl
- platform
- data
- virtual
- simulation
- 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
- 238000004088 simulation Methods 0.000 title claims abstract description 124
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000006243 chemical reaction Methods 0.000 claims abstract description 44
- 238000012360 testing method Methods 0.000 claims abstract description 23
- 238000012795 verification Methods 0.000 claims abstract description 17
- 230000004044 response Effects 0.000 claims description 58
- 238000012545 processing Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 7
- 230000003993 interaction Effects 0.000 claims description 4
- 230000007704 transition Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 5
- 230000005284 excitation Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/261—Functional testing by simulating additional hardware, e.g. fault simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- 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
Abstract
本发明涉及芯片仿真领域,特别是涉及一种基于虚拟机的仿真装置和方法。主要包括:虚拟机、桥接平台和仿真平台,虚拟机通过虚拟PCIe/CXL接口和桥接平台连接,桥接平台通过数据接口和仿真平台连接;虚拟机用于承载PCIe/CXL驱动,对包含PCIe/CXL接口的主机进行模拟;桥接平台用于在虚拟机和仿真平台之间通过事务处理级建模进行数据转换;仿真平台通过PCIe/CXL VIP RC将虚拟机生成的测试数据下发至对端的PCIe/CXL设备中。本发明可以在仿真阶段完成PCIe/CXL接口的驱动和系统验证。
Description
技术领域
本发明涉及芯片仿真领域,特别是涉及一种基于虚拟机的仿真装置和方法。
背景技术
高速串行计算机扩展总线(peripheral component interconnect,简写为PCI)是一种通用数据总线,其硬件接口和数据通信规范由PCI标准协议(PCI express,简写为PCIe)进行定义。随着人工智能技术的飞速发展,对运算能力的需求不断提升,高速总线也面临着更大的挑战。因此,在PCIe 4.0发布仅仅两年后,PCI外围部件互连专业组(Peripheral Component Interconnect Special Interest Group,简写为PCI-SIG)便于2019年5月发布了PCIe 5.0规范。相比较之前PCIe 4.0的16GT/s,PCIe5.0 将信号速率翻倍到了32GT/s,x16双工带宽更是接近128GB/s。极高的信号速率,使得PCIE5.0能够更好的支持对吞吐量要求高的高性能设备,如用于AI的GPU,网络设备等等。2019年底,Intel便出货了支持PCIe 5.0的Agilex FPGA,Agilex在系统层面引入了对超路径互连(Ultra PathInterconnect,简写为UPI)、计算快速链接(compute express link,简写为CXL)以及PCIeGen4/5的硬核支持,也拉开了PCIe 5.0时代的大幕。
然而PCIe发展也推动了CXL(Compute Express Link,计算快速链接)的兴起,CXL作为缓存一致性的开放性互连协议标准,旨在提供 CPU 和专用加速器、高性能存储系统之间的高效、高速、低延时接口,以满足资源共享、内存池化和高效运算调度的需求。随着需求量的增加,同时也加大了PCIe5.0和CXL的接口IP核(Intellectual Property core,简写为IP)和集成IP的系统级芯片(System on Chip,简写为SoC)系统的设计需求。因此目前市场上迫切的亟需完整的PCIe5.0和CXL的验证解决方案。
鉴于此,如何克服现有技术所存在的缺陷,解决现有仿真验证方式的缺陷,是本技术领域待解决的问题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明解决了现有仿真验证方案无法对PCIe5.0/CXL的驱动程序和性能等进行验证的问题。
第一方面,本发明提供了一种基于虚拟机的仿真装置,具体为:包括虚拟机、桥接平台和仿真平台,具体的:虚拟机通过虚拟PCIe/CXL接口和桥接平台连接,桥接平台通过数据接口和仿真平台连接;其中,虚拟机用于承载PCIe/CXL驱动,对包含PCIe/CXL接口的主机进行模拟;桥接平台用于在虚拟机和仿真平台之间通过事务处理级建模进行数据转换;仿真平台通过PCIe/CXL VIP RC将虚拟机生成的测试数据下发至对端的PCIe/CXL设备中。
优选的,所述虚拟机包括虚拟CPU和虚拟PCIe/CXL接口,具体的:虚拟CPU和虚拟PCIe/CXL接口通过数据接口连接;其中,虚拟CPU用于向虚拟PCIe/CXL接口下发IO请求,并响应对端的PCIe/CXL设备返回的IO响应;虚拟PCIe/CXL接口用于将虚拟CPU下发的IO请求发送至桥接平台,并将接收到的对端的PCIe/CXL设备返回的IO响应发送至虚拟CPU。
优选的,所述桥接平台包括:第一转换桥接,以及第二转换桥接,具体的:第一转换桥接和虚拟机之间通过数据接口连接,第一转换桥接和第二转换桥接之间通过数据接口连接,第二转换桥接和仿真平台之间通过数据接口连接;其中,第一转换桥接用于接收虚拟CPU下发的IO请求,并将虚拟CPU下发的IO请求转换为事务处理级建模的数据;第二转换桥接用于将事务处理级建模的数据转换为直接编程接口的数据,并将直接编程接口的数据发送至仿真平台。
优选的,所述将直接编程接口的数据发送至仿真平台,具体包括:桥接平台将事务处理级建模的数据发送到直接编程接口上,并通过直接编程接口生成PCIe/CXL的测试用例,将测试用例发送至 VIP,以便仿真平台的PCIe/CXL VIP RC通过数据激励将测试用例灌入仿真平台中。
优选的,所述仿真平台包括PCIe/CXL VIP根复合体和报文日志,具体的:PCIe/CXLVIP根复合体和报文日志通过数据接口连接;PCIe/CXL VIP根复合体用于接受直接编程接口的数据,并将直接编程接口的数据通过物理层通道发送至对端的PCIe/CXL设备;报文日志用于收集PCIe/CXL VIP根复合体的工作日志,以便进行软硬件联调。
优选的,所述仿真装置还包括共享内存,具体的:所述虚拟机和共享内存之间通过数据接口连接,共享内存和桥接平台之间通过数据接口连接,以便于虚拟机和桥接平台进行数据交互。
另一方面,本发明提供了一种基于虚拟机的仿真方法,具体为:使用第一方面提出的仿真装置进行虚拟PCIe/CXL接口的仿真测试,具体的:虚拟CPU下发PCIe/CXL的IO请求至虚拟PCIe/CXL接口,并悬停虚拟CPU,以等待对端的PCIe/CXL设备的IO响应;桥接平台获取IO请求,将IO请求进行DPI转换,并通过仿真平台下发至对端的PCIe/CXL设备;桥接平台通过仿真平台获取对端的PCIe/CXL设备返回的IO响应,并将IO响应转换为直接编程接口的数据发送至虚拟CPU;虚拟CPU接收到IO响应,将悬停的状态解除,并处理IO响应。
优选的,所述桥接平台获取IO请求,具体包括:桥接平台将IO请求存入请求队列,当直接编程接口查看到请求队列中存在IO请求时,从请求队列中获取IO请求。
优选的,所述将IO请求转换为直接编程接口的数据,具体包括:桥接平台将IO请求进行DPI转换,生成system verilog的数据激励,将数据激励发送至 VIP,以便仿真平台的PCIe/CXL VIP根复合体将数据激励灌入到仿真平台中。
优选的,所述将IO响应转换为直接编程接口的数据发送至虚拟CPU,具体包括:桥接平台将IO响应进行DPI转换,并将DPI转换后的数据存入响应队列,虚拟PCIe/CXL接口从响应队列中取出DPI转换后的数据,并发送给虚拟CPU。
与现有技术相比,本发明的有益效果在于:本提供的装置通过桥接平台将虚拟机和仿真平台进行结合,在虚拟机上承载PCIe/CXL驱动,通过桥接平台完成IO请求、IO响应、事务处理级建模和直接编程接口之间的数据转换,能够在仿真阶段完成PCIe/CXL接口的驱动和系统验证。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于虚拟机的仿真装置结构示意图;
图2为本发明实施例提供的一种基于虚拟机的仿真装置中虚拟机的结构示意图;
图3为本发明实施例提供的一种基于虚拟机的仿真装置中桥接平台的结构示意图;
图4为本发明实施例提供的包含共享内存的仿真装置结构示意图;
图5为本发明实施例提供的包含报文日志的仿真装置结构示意图;
图6为本发明实施例提供的一种基于虚拟机的仿真方法流程图;
图7为本发明实施例提供的一种基于虚拟机的仿真方法中数据流程示意图;
图8为本发明实施例提供的一种基于虚拟机的仿真方法中虚拟CPU功能模块示意图;
图9为本发明实施例提供的一种基于虚拟机的仿真方法中虚拟CPU架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
在对设计进行验证时,一个可复用的IP核的完整的系统方案,需要各种兼容的应用模型,包括验证代码、驱动代码和测试文件。因此,一个完整IP的交付是需要完成软硬件系统的仿真。针对PCIe5.0/CXL IP,在仿真的阶段来看,目前还没有能模拟真实场景的系统方案,无法去执行实际的驱动程序,因此,目前市场上也亟需一种PCIe5.0/CXL IP的系统验证方法。
当前针对于PCIe5.0/CXL的硅前验证,主要依托于主流电子设计自动化(Electronic Design Automation,简写为EDA)厂商提供 IP核验证(VerificationIntellectual Property core ,简写为VIP),VIP用于对IP核进行验证,即对功能明确、接口规范、易于验证、便于重用、具有开发者自主知识产权的电路模块进行验证。通常使用超高速集成电路硬件描述语言(Very-High-Speed Integrated Circuit HardwareDescription Language,简写为VHDL)或硬件描述语言Verilog HDL 等硬件描述语言描述的功能块,但是并不涉及实现功能的具体电路元件,单纯使用VIP方式的仿真无法检查bios的枚举是否成功,是否能进入到系统中;在仿真阶段中无法验证驱动程序;软硬件系统配合的验证是不够充分,比如针对PCIe5.0 IP,无法验证中断处理以及直接内存访问(DirectMemory Access,简写为DMA)流程。
同时,也会采用现场可编程逻辑门阵列(Field Programmable Gate Array,简写为FPGA)或硬件仿真(Emulation)的方案进行PCIe5.0/CXL的硅前验证,虽然可以验证软硬件系统配合关系,也可以检查bios的枚举是否成功,但只能验证到协议层,很难达到PCIe第5代(Generation 5,简写为gen5),即PCIe5.0的速率。同时需要适配FPGA或emulation端口物理层(Physical Layer,简写为PHY),会受到资源或平台的限制,同时也无法验证性能。而且系统验证更依赖于host是否支持PCIe5.0/CXL对接,资源平台相对欠缺。
为了实现PCIe5.0和CXL软硬件系统联合仿真,提高PCIe5.0控制芯片内部逻辑和PCIe驱动的开发效率,并满足gen5 速率下IP或SoC业务性能仿真需求,以及CXL支持功能的仿真需求,本实施例提出了一种基于虚拟机的仿真装置。下文中,在无歧义和额外说明的情况下,PCIe都表示PCIe5.0。可以理解的是,也可以基于本实施例提供的原理,将本实施例提供的方法经适应性修改后应用在其它PCIe或CXL设备测试中,本发明对此不做限制。
如图1所示,本发明实施例提供的仿真装置包括虚拟机(Virtual Machine,简写为VM)、桥接(bridge)平台和仿真平台(testbench)。虚拟机通过虚拟PCIe/CXL接口和桥接平台连接,桥接平台通过数据接口和仿真平台连接。
虚拟机用于承载PCIe/CXL驱动(driver),对包含PCIe/CXL接口的主机进行模拟。在一些实施方式中,可以使用各种虚拟主机的软硬件系统作为虚拟机使用。在优选方案中,可以使用快速仿真器(Quick Emulator,简写为QEMU)作为虚拟机,QEMU是一种在GNU/Linux平台上使用广泛的仿真平台,与Bochs、PearPC等仿真系统类似。QEMU具有高速度及跨平台的特性,能够承载多平台上的PCIe driver;并且,通过特有的KQEMU加速器,能模拟至接近真实PC机或其它能够承载PCIe5.0/CXL接口的主机(Host)运行速度,能够实现对PCIedriver和性能的仿真。
如图2所示,虚拟机包括虚拟CPU和虚拟PCIe/CXL接口,虚拟CPU和虚拟PCIe/CXL接口通过数据接口连接。其中,虚拟CPU用于向虚拟PCIe/CXL接口下发IO请求,并响应对端的PCIe/CXL设备返回的IO响应。虚拟PCIe/CXL接口用于将虚拟CPU下发的IO请求发送至桥接平台,并将接收到的对端的PCIe/CXL设备返回的IO响应发送至虚拟CPU。
为了使QEMU等虚拟机和仿真平台进行数据联动,还需要加入一个桥接平台作为数据桥接方案。桥接平台用于在虚拟机和仿真平台之间通过事务处理级建模(TransactionLevel Modeling,简写为TLM)进行数据转换。通过TLM转换将虚拟PCIe5.0/CXL接口的功能抽象为软件建模语言表示的软硬件模型,从而实现功能仿真。
如图3所示,桥接平台包括:第一转换桥接和第二转换桥接,在一些实施方式中,第一转换桥接和虚拟机之间通过数据接口连接,第一转换桥接和第二转换桥接之间通过数据接口连接,第二转换桥接和仿真平台之间通过数据接口连接。在本发明实施例中,第一转换桥接用于接收虚拟CPU下发的IO请求,并将虚拟CPU下发的IO请求转换为事务处理级建模的数据,在图3中表示为“虚拟机和事务处理级建模转换桥接”;第二转换桥接用于将事务处理级建模的数据转换为直接编程接口(Direct Programming Interface,简写为DPI)的数据,并将直接编程接口的数据发送至仿真平台,在图3中表示为“事务处理级建模和直接编程接口转换桥接”。
可以理解的是,桥接平台的数据转换实施方案可以根据实际需要进行选择,例如,可以通过本发明实施例中提供的方法进行桥接转换。以下提供一种基于System C的数据转换方式,其它数据转换实施方案可以参考以下过程进行实现。
进行软硬件仿真时,最常见方式为使用硬件描述语言Verilog,但该仿真方式需要仿真工具支持,如VCS、modelsim等,它们都是价格昂贵的EDA工具,且使用复杂。System C是一个支持系统建模的开源C++ library,支持DPI(Direct Programming Interface)编程接口。在使用时,只需搭建一个支持C++的环境,就可以进行基于System C语法的建模和仿真,无需任何其他工具,相比其他软硬件建模语言,所需环境简单,且与其它系统兼容性高。
在软硬件设计之前,先开发抽象的System C模型,例如TLM模型。抽象模型验证通过后,硬件部门将此模型转化为寄存器传输级(register transfer level,简写为RTL)模型,用寄存器传输级的描述方式描述数字电路的数据流,以实现软硬件结合前的逻辑仿真,不加入电路时延。同时,软件部门在此抽象模型上开发软件。如此,软硬件的任何错误都能尽早被发现并修改,使软硬件开发并行进行,节省了开发时间。
为了完成虚拟机IO请求、对端的PCIe/CXL设备的IO响应和TLM模型之间的数据转换,桥接平台需要实现2组桥接转换:(1) 虚拟PCIe/CXL接口发出的IO请求数据转换为TLM;(2)TLM 转换为对端的PCIe/CXL设备使用的DPI数据。
如图4所示,为了便于虚拟机和桥接平台之间进行数据交互,本发明实施例提供的仿真装置还包括共享内存(shared memory),在一些实施方式中,所述虚拟机和共享内存之间通过数据接口连接,共享内存和桥接平台之间通过数据接口连接,以便于虚拟机和桥接平台进行数据交互。具体地,桥接平台需要实现的2组桥接转换为:(1)shared memory的数据转换为TLM;(2)TLM转换为DPI。
在一些实施方式中,仿真平台本身可以采用传统的VIP模式,不需要构造测试用例,但是需要支持DPI接口,DPI接口的将桥接平台通过DPI接口的数据转换成实际的测试用例,以便下发至对端的PCIe/CXL设备。具体地,桥接平台将事务处理级建模的数据发送到直接编程接口上,完成和仿真平台的通信,并通过直接编程接口生成PCIe/CXL的测试用例,将测试用例发送至 VIP,以便仿真平台的PCIe/CXL VIP 根复合体(Root Complex,简写为RC)将桥接平台转换后的数据灌入仿真平台中。
仿真平台通过PCIe/CXL VIP RC将虚拟机生成的测试数据下发至对端的PCIe/CXL设备中。本发明实施例提供的仿真装置中,通过PCIe/CXL VIP RC实现对端的PCIe/CXL设备的设备管理。对端的PCIe/CXL设备可以视为测试设备(Device Under Test,简写为DUT),基于仿真平台转换后的信号对虚拟机发出的IO请求进行响应,返回相应的IO响应,进行仿真时,可以根据I0响应的正确性判断当前仿真的PCIe/CXL driver和虚拟PCIe/CXL接口的功能是否正确,通过IO请求和IO响应的时间间隔判断当前仿真的PCIe/CXL driver和虚拟PCIe/CXL接口的响应速度。在一些实施方式中,对端的PCIe/CXL设备设置为终端(EndPoint,简写为EP)模式,PCIe/CXL配置头中的类型值为0,EP模式通常表示该设备为一个串行或I/O设备,设备中的PCIe/CXL控制器允许针对设备本地内存空间的直接读写操作,以便完成PCIe/CXL内存读写功能的仿真。
如图5所示,仿真平台包括PCIe/CXL VIP根复合体和传输线脉冲发生器(Transmission Line Pulse,简写为TLP)报文日志(tracker),在一些实施方式中,PCIe/CXL VIP根复合体和报文日志通过数据接口连接。PCIe/CXL VIP根复合体用于接受直接编程接口的数据,并将直接编程接口的数据通过物理层通道发送至对端的PCIe/CXL设备;报文日志用于收集PCIe/CXL VIP根复合体的工作日志,以便进行软硬件联调。在实际使用中,报文日志能够抓取PCIe/CXL的报文,并对报文进行解析,从而对仿真过程中每一个数据变化进行检测,便于进行逻辑错误定位和修改。
本实施例提供的基于虚拟机的仿真装置,将虚拟机技术和基于QEMU的PCIe5.0/CXL的仿真方案相结合,使用虚拟机模拟的CPU和内存,支持运行主流的bios和操作系统,并能够承载不同平台的驱动程序,可以实现驱动程序的仿真测试。使用桥接平台建立虚拟机和用于仿真的TLM之间的通信,将来源于驱动或操作系统的IO请求激励数据写入到仿真平台中,再由对端的PCIe/CXL设备进行响应,从而完成了软硬件系统仿真。进一步的,仿真平台同时可以采用gen5速率的PCIe/CXL VIP RC对接对端的PCIe/CXL设备,可以支持gen5速率的数据传输,能够满足gen5速率下性能仿真。同时,在PCIe/CXL VIP RC中增加各协议层的报文日志,方便收集log,这样方便软硬件系统联调时进行程序纠错。
在本实施例提供的基于虚拟机的仿真装置的基础上,本发明还提供了一种可用于实现上述方法的基于虚拟机的仿真方法,通过该方法,可以使用本实施例中提供的仿真装置完成虚拟PCIe/CXL接口的仿真测试。
如图6所示,本发明实施例提供的基于虚拟机的仿真方法具体步骤如下。
步骤101:虚拟CPU下发PCIe/CXL的IO请求至虚拟PCIe/CXL接口,并悬停虚拟CPU,以等待对端的PCIe/CXL设备的IO响应。
使用QEMU作为虚拟机的场景中,QEMU的虚拟CPU按照PCIe/CXL驱动的业务逻辑下发PCIe的IO请求,给QEMU的PCIe/CXL的虚拟设备,并悬停虚拟CPU,使虚拟CPU等待对端的PCIe/CXL设备对IO请求的响应。
步骤102:桥接平台获取IO请求,将IO请求进行DPI转换,并通过仿真平台下发至对端的PCIe/CXL设备。
桥接平台对取出的IO请求进行接转换后,转成system verilog等TLM模型使用的激励数据,发送给仿真平台的PCIe/CXL VIP RC,仿真平台再将激励数据下发到PCIe/CXLDUT。
将IO请求转换为直接编程接口的数据的具体方式为:桥接平台将IO请求进行DPI转换,生成system verilog的数据激励,将数据激励发送至 VIP,以便仿真平台的PCIe/CXLVIP根复合体将数据激励灌入到仿真平台中。
步骤103:桥接平台通过仿真平台获取对端的PCIe/CXL设备返回的IO响应,并将IO响应转换为直接编程接口的数据发送至虚拟CPU。
PCIe/CXL DUT对IO请求进行响应,生成IO响应的数据后,仿真平台的PCIe/CXLVIP RC接受PCIe/CXL DUT的IO响应,再通过桥接平台进行接转换,将IO响应转换成符合System C语法的TLM模型的数据,并发送至虚拟CPU。
步骤104:虚拟CPU接收到IO响应,将悬停的状态解除,并处理IO响应。
虚拟CPU接收到IO响应后,将虚拟CPU悬停的状态解除,并模拟真实主机按照PCIe/CXL驱动的业务逻辑对IO响应进行处理,并根据下发IO请求和接收IO响应的时间差对PCIe5.0和CXL的性能进行计算。
经过本实施例中提供的步骤101至步骤104后,即可使用本实施例中提供的仿真装置完成PCIe5.0和CXL的驱动业务逻辑、抽象为TLM模型的PCIe和CXL的业务逻辑和性能等软硬件功能进行仿真。
进一步的,在实际的仿真过程中,由于使用了软件模型进行RTL仿真,软件处理速度相对于硬件处理速度相对较慢,只有1kHz以内;但QEMU的运行速度相对较快,接近主机CPU的主频,可以达到GHz的量级;同时,System C/TLM的仿真速度也较快,可以达到100MHz的量级。
为了平衡三者的速率差别,避免RTL仿真的处理速度影响性能仿真,还需要在桥接平台中加入运行速度的转换机制。
在一些实施方式中,可以使用硬件缓存器件实现速率平衡,也可以用软件缓存队列实现速率平衡。以下提供一种使用软件缓存队列进行速率平衡的方式:桥接平台中包含对IO请求进行缓存的请求队列,以及对IO响应进行缓存的响应队列。对于IO请求,桥接平台将IO请求存入请求队列,当直接编程接口查看到请求队列中存在IO请求时,进行pop操作,从请求队列中获取IO请求。对于IO响应,桥接平台将IO响应进行DPI转换,并将DPI转换后的数据存入响应队列,虚拟PCIe/CXL接口从响应队列中取出DPI转换后的数据,并发送给虚拟CPU。
使用响应队列和请求队列的情况下,本实施例提供的方法数据处理过程如图7所示,图7的结构中,可以使用一个或多个虚拟CPU,图中以“虚拟CPUs”表示。图中箭头表示数据传输方向:1、虚拟CPUs将IO请求发送给虚拟PCIe/CXL接口;2、虚拟PCIe/CXL接口将IO请求发送至请求队列;3、桥接平台从请求队列中获取IO请求并进行桥接转换;4、桥接平台将接转换后的数据发送至仿真平台的PCIe/CXL VIP RC;5、PCIe/CXL VIP RC将IO响应传回桥接平台;6、桥接平台对IO响应进行接转换后放入响应队列;7、桥接平台将响应队列中转换后的IO响应发送至虚拟PCIe/CXL接口;8、虚拟PCIe/CXL接口将转换后的IO响应发送至虚拟CPUs,其中,上述3-6为数据的桥接转换过程。
进一步地,为了实现对PCIe/CXL驱动的承载,虚拟机中需要包含一套完整的软件系统。如图8所示,虚拟机的虚拟CPU中需要运行应用程序(Application,简写为APP)、PCIe/CXL驱动、系统内核(Kernel)和系统后台(Backend)。通过整套软件系统的配合,完成PCIe/CXL驱动业务逻辑的仿真验证,并完成IO响应数据的分析。
为了支持软件系统的运行,如图9所示,虚拟机中包括一个或多个处理器以及存储器,该处理器和存储器组合能够支持运行QEMU,并能够在系统内核的管理下对虚拟PCIe/CXL接口的中断进行响应。其中,图9中以一个处理器为例。在实际实施中,处理器和虚拟CPU可以一一对应,也可以在一个处理器中创建多个虚拟CPU进行并行仿真测试,或将多个处理器绑定在同一个虚拟CPU下视为一个整体对更高性能的处理器进行仿真。处理器和存储器可以通过总线或者其他方式连接,图9中以通过总线连接为例。
存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如应用程序、PCIe/CXL驱动、系统内核和系统后台。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而完成虚拟CPU需要进行的各种功能应用以及数据处理
存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
程序指令/模块存储在存储器中,当被一个或者多个处理器执行时,执行虚拟CPU所需运行的应用程序、PCIe/CXL驱动、系统内核和系统后台。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(Read Only Memory,简写为:ROM)、随机存取存储器(Random AccessMemory,简写为:RAM)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于虚拟机的仿真装置,其特征在于,包括虚拟机、桥接平台和仿真平台,其中:
虚拟机通过虚拟PCIe5.0/CXL接口和桥接平台连接,桥接平台通过数据接口和仿真平台连接;
其中,虚拟机用于承载PCIe5.0/CXL驱动,对包含PCIe5.0/CXL接口的主机进行模拟;
桥接平台用于在虚拟机和仿真平台之间通过事务处理级建模进行数据转换;具体的,所述桥接平台包括:第一转换桥接和第二转换桥接,其中:第一转换桥接和虚拟机之间通过数据接口连接,第一转换桥接和第二转换桥接之间通过数据接口连接,第二转换桥接和仿真平台之间通过数据接口连接;其中,第一转换桥接用于接收虚拟CPU下发的IO请求,并将虚拟CPU下发的IO请求转换为事务处理级建模的数据;第二转换桥接用于将事务处理级建模的数据转换为直接编程接口的数据,并将直接编程接口的数据发送至仿真平台;桥接平台将事务处理级建模的数据发送到直接编程接口(DPI)上,并通过直接编程接口生成PCIe5.0/CXL的测试用例,将测试用例发送至知识产权核验证(VIP),以便仿真平台的PCIe5.0/CXL VIP RC将桥接平台转换后的数据灌入仿真平台中;
仿真平台通过PCIe5.0/CXL VIP RC将虚拟机生成的测试数据下发至对端的PCIe5.0/CXL设备中。
2.根据权利要求1所述的基于虚拟机的仿真装置,其特征在于,所述虚拟机包括虚拟CPU和虚拟PCIe5.0/CXL接口,其中:
虚拟CPU和虚拟PCIe5.0/CXL接口通过数据接口连接;
其中,虚拟CPU用于向虚拟PCIe5.0/CXL接口下发IO请求,并响应对端的PCIe5.0/CXL设备返回的IO响应;
虚拟PCIe接口用于将虚拟CPU下发的IO请求发送至桥接平台,并将接收到的对端的PCIe5.0/CXL设备返回的IO响应发送至虚拟CPU。
3. 根据权利要求1所述的基于虚拟机的仿真装置,其特征在于,所述仿真平台包括PCIe5.0/CXL VIP根复合体和报文日志,其中:
PCIe5.0/CXL VIP根复合体和报文日志通过数据接口连接;
PCIe5.0/CXL VIP根复合体用于接受直接编程接口的数据,并将直接编程接口的数据通过物理层通道发送至对端的PCIe5.0/CXL设备;
报文日志用于收集PCIe5.0/CXL VIP根复合体的工作日志,以便进行软硬件联调。
4.根据权利要求1所述的基于虚拟机的仿真装置,其特征在于,所述仿真装置还包括共享内存,其中:
所述虚拟机和共享内存之间通过数据接口连接,共享内存和桥接平台之间通过数据接口连接,以便于虚拟机和桥接平台进行数据交互。
5.一种基于虚拟机的仿真方法,其特征在于,使用权利要求1至4中任一项所述的基于虚拟机的仿真装置进行虚拟PCIe5.0/CXL接口的仿真测试,具体的:
虚拟CPU下发PCIe5.0/CXL的IO请求至虚拟PCIe5.0/CXL接口,并悬停虚拟CPU,以等待对端的PCIe5.0/CXL设备的IO响应;
桥接平台获取IO请求,将IO请求进行DPI转换,并通过仿真平台下发至对端的PCIe5.0/CXL设备;
桥接平台通过仿真平台获取对端的PCIe5.0/CXL设备返回的IO响应,并将IO响应转换为DPI数据发送至虚拟CPU;
虚拟CPU接收到IO响应,将悬停的状态解除,并处理IO响应。
6.根据权利要求5所述的基于虚拟机的仿真方法,其特征在于,所述桥接平台获取IO请求包括:
桥接平台将IO请求存入请求队列,当直接编程接口查看到请求队列中存在IO请求时,从请求队列中获取IO请求。
7.根据权利要求6所述的基于虚拟机的仿真方法,其特征在于,所述将IO请求进行DPI转换包括:
桥接平台将IO请求进行DPI转换,生成system verilog的数据激励,将数据激励发送至VIP,以便仿真平台的PCIe5.0/CXL VIP根复合体将数据激励灌入到仿真平台中。
8.根据权利要求6所述的基于虚拟机的仿真方法,其特征在于,所述将IO响应转换为DPI数据发送至虚拟CPU包括:
桥接平台将IO响应进行DPI转换,并将DPI转换后的数据存入响应队列,虚拟PCIe5.0/CXL接口从响应队列中取出DPI转换后的数据,并发送给虚拟CPU。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310688763.9A CN116414526B (zh) | 2023-06-12 | 2023-06-12 | 一种基于虚拟机的仿真装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310688763.9A CN116414526B (zh) | 2023-06-12 | 2023-06-12 | 一种基于虚拟机的仿真装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116414526A CN116414526A (zh) | 2023-07-11 |
CN116414526B true CN116414526B (zh) | 2023-10-20 |
Family
ID=87054725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310688763.9A Active CN116414526B (zh) | 2023-06-12 | 2023-06-12 | 一种基于虚拟机的仿真装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116414526B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991544B (zh) * | 2023-09-26 | 2024-01-26 | 苏州元脑智能科技有限公司 | Cxl设备的模拟方法、装置、电子设备和客户机 |
CN117556754B (zh) * | 2024-01-11 | 2024-03-19 | 北京数渡信息科技有限公司 | PCIe交换机芯片硅前仿真系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499004A (zh) * | 2008-01-31 | 2009-08-05 | 株式会社日立制作所 | 连接虚拟机和用户接口的系统和方法 |
CN114880977A (zh) * | 2022-05-11 | 2022-08-09 | 北京百度网讯科技有限公司 | 软硬件联合仿真系统、方法、装置、设备和存储介质 |
CN115688676A (zh) * | 2022-11-14 | 2023-02-03 | 沐曦集成电路(上海)有限公司 | 基于tlm的gpu联合仿真系统 |
CN115951966A (zh) * | 2021-10-07 | 2023-04-11 | 三星电子株式会社 | 验证仿真的基于PCIe的存储装置的电力循环的系统和方法 |
-
2023
- 2023-06-12 CN CN202310688763.9A patent/CN116414526B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499004A (zh) * | 2008-01-31 | 2009-08-05 | 株式会社日立制作所 | 连接虚拟机和用户接口的系统和方法 |
CN115951966A (zh) * | 2021-10-07 | 2023-04-11 | 三星电子株式会社 | 验证仿真的基于PCIe的存储装置的电力循环的系统和方法 |
CN114880977A (zh) * | 2022-05-11 | 2022-08-09 | 北京百度网讯科技有限公司 | 软硬件联合仿真系统、方法、装置、设备和存储介质 |
CN115688676A (zh) * | 2022-11-14 | 2023-02-03 | 沐曦集成电路(上海)有限公司 | 基于tlm的gpu联合仿真系统 |
Non-Patent Citations (1)
Title |
---|
基于QEMU仿真平台下RTEMS应用测试技术研究;闫洋铭等;《无线电工程》;第43卷(第5期);第52-54页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116414526A (zh) | 2023-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116414526B (zh) | 一种基于虚拟机的仿真装置和方法 | |
CN112580295B (zh) | 多核SoC芯片的自动化验证方法、系统及装置 | |
CN102508753B (zh) | Ip核验证系统 | |
US8327039B2 (en) | Integrated DMA processor and PCI express switch for a hardware-based functional verification system | |
US10628548B2 (en) | Flow control in networking system-on-chip verification | |
CN100476837C (zh) | 一种支持随机指令测试的微处理器fpga验证装置 | |
US20220292248A1 (en) | Method, system and verifying platform for system on chip verification | |
US10180850B1 (en) | Emulating applications that use hardware acceleration | |
US8532975B2 (en) | System and method implementing a simulation acceleration capture buffer | |
CN115146568B (zh) | 一种基于uvm的芯片验证系统及验证方法 | |
US10664637B2 (en) | Testbench restoration based on capture and replay | |
US20050144436A1 (en) | Multitasking system level platform for HW/SW co-verification | |
CN114519316A (zh) | SoC混合验证方法 | |
Cho et al. | A full-system VM-HDL co-simulation framework for servers with PCIe-connected FPGAs | |
CN116611375A (zh) | 软硬件协同仿真平台及软硬件测试方法 | |
US7447618B2 (en) | Method and system for ASIC simulation | |
US11475199B1 (en) | Parallelizing simulation and hardware co-simulation of circuit designs through partitioning | |
US11392533B1 (en) | Systems and methods for high-speed data transfer to multiple client devices over a communication interface | |
CN113792522A (zh) | 仿真验证方法、装置及计算设备 | |
Kavianipour et al. | A high-reliability PCIe communication system for small FPGAs | |
Wang et al. | System-level development and verification framework for high-performance system accelerator | |
Lin et al. | Full system simulation and verification framework | |
AbdElSalam | NVMe solid state drive verification solution using HW emulation and virtual device technologies | |
Yeh et al. | Enabling TLM-2.0 interface on QEMU and SystemC-based virtual platform | |
CN115983172B (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 |