专利名称:用于原型制作片上系统设计的虚拟平台的制作方法
技术领域:
本发明的实施例涉及通过仿真硬件模型来对系统进行原型制作;更具体地,本发 明的实施例涉及由可编程逻辑设备来仿真硬件模型。
背景技术:
片上系统(SOC)设计是高度集成的复杂异质系统,其包括通用CPU和诸如加速器 内核、专用存储器以及工业标准I/O架构的知识产权(IP)块。系统设计架构师和软件开发 者一起工作以评估和最优化整个系统设计,从而使得满足功率、性能和面积约束。通常,为了验证的目的用软件来建模IP块和系统部件。也建模所述部件中的每一 个与处理器之间的交互以仿真SOC设计的行为。通过使用原型系统,基于IP块和相应的软 件的预定的使用,也可以验证IP块和相应的软件。
根据下面给出的详细的描述和本发明的各个实施例的附图可以更充分地理解本 发明的实施例,然而,其不应被用于将本发明限制到特定的实施例,而只是用于解释和理解。图1是根据本发明的一个实施例的用于原型制作片上系统(SOC)设计的虚拟平台 的框图。图2是包括两个IP块的片上系统(SOC)设计的框图。图3是在虚拟平台中将存储器访问重定向到IP块的处理的一个实施例的流程图。图4说明了与本发明的一个实施例一起使用的计算机系统图5说明了与本发明的一个实施例一起使用的点对点计算机系统。
具体实施例方式介绍了用于原型制作片上系统设计的系统的实施例。在一个实施例中,该系统包 括电子板,该电子板包括可编程来仿真系统部件的逻辑设备。该系统还包括处理器,用于执 行虚拟机监视器,该虚拟机监视器经由互连将输入/输出请求重定向到系统部件。在以下描述中,阐述了大量细节以提供对本发明的实施例的更透彻的解释。然而, 对本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实施本发明的实施 例。在其他示例中,以框图的形式而非细节的形式示出了公知的结构和设备,以避免模糊本 发明的实施例。就计算机存储器内的数据比特的操作的算法和符号表示而言,介绍了以下的详细 描述的一些部分。这些算法描述和表示是由数据处理领域的技术人员用于最有效地将他们 的工作的实质传达给本领域的其它技术人员的手段。这里的算法一般被认为是导致期望的 结果的一系列有条理的步骤。所述步骤是那些需要对物理量进行物理操作的步骤。通常,虽 然不是必须的,这些量采用电子或磁信号的形式,该电子或磁信号能够被存储、转移、组合、比较并且以别的方式被操作。已经证明,将这些信号称为比特、值、元素、符号、字符、项、数 字等有时是方便的,这主要是因为它们是常见的用法。但是,应当牢记,所有这些以及类似的术语应与合适的物理量相关联,并且仅仅是 应用到这些量的方便的标记。除非明确地声明,否则根据以下讨论显而易见的是,应该意识 到,贯穿本说明书的使用诸如“处理”或“计算”或“运算”或“确定”或“显示”等术语的讨 论指代计算机系统或类似的电子计算设备的动作和处理过程,其对表示为计算机系统的寄 存器和存储器内的物理(电子)量的数据进行操作,并将所述数据转换成类似地表示为计 算机系统存储器或寄存器或其它这种信息存储、传输或显示设备内的物理量的其它数据。本发明的实施例还涉及用于执行本文中的操作的装置。可以针对需要的目的特别 地构造一些装置,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配 置的通用计算机。可以将这种计算机程序存储在计算机可读存储介质中,例如但不限于,任 何类型的盘,其包括软盘、光盘、CD_R0M、DVD-R0M、以及磁光盘、只读存储器(ROM)、随机存取 存储器(RAM)、EPROM、EEPROM、NVRAM、磁或光卡,或适合用于存储电子指令的任何类型的介 质,并且每一个都耦合到计算机系统总线。本文介绍的算法和显示不是固有地涉及任何特定的计算机或其他装置。可以根据 本文的教导与程序一起使用各种通用系统,或者可以证明,构造更专用的装置以执行所需 要的方法步骤是方便的。下文的描述中将出现用于各种这些系统的所需要的结构。此外, 没有参照任何特定的编程语言来描述本发明的实施例。应该意识到,可以使用各种编程语 言来实现如本文描述的本发明的教导。机器可读介质包括用于存储或发送机器(例如,计算机)可读形式的信息的任何 装置。例如,机器可读介质包括只读存储器(“ROM”);随机存取存储器(“RAM”);磁盘存 储介质;光存储介质;闪速存储设备等。概述介绍了用于原型制作片上系统设计的系统的实施例。在一个实施例中,该系统包 括电子板,该电子板包括可编程来仿真系统部件的逻辑设备。该系统还包括处理器,用于执 行虚拟机监视器,该虚拟机监视器经由互连将输入/输出请求重定向到系统部件。图1是根据本发明的一个实施例的用于原型制作片上系统(SOC)设计的虚拟平台 的框图。参考图1,在一个实施例中,虚拟平台包括虚拟机监视器(VMM) 103、虚拟IP接口库 109、板驱动器110、以及电子板120。在一个实施例中,电子板120还包括桥121和IP块 122。在一个实施例中,SOC设计包括在SOC仿真器102和IP块122中仿真的模型。在一 个实施例中,SOC应用101包括作为要结合SOC设计被执行的软件栈的应用和操作系统。在一个实施例中,虚拟平台是表现出真实系统行为特点和维持在设计(即,SOC设 计)中系统的程序员视图的系统层模型。在一个实施例中,SOC设计包括执行操作系统和应用软件栈的处理器。在一个实 施例中,SOC设计还包括用于专门处理的其他IP块。这些IP块和专用的I/O端口一起提 供图形加速、视频编码/解码、和音频处理。在一个实施例中,SOC设计包括用软件建模的 部件和在现场可编程门阵列(FPGA)上原型制作的部件。在一个实施例中,SOC仿真器102包括运行虚拟机监视器的PC系统,例如,QEMU(快速仿真器)及其扩展。在一个实施例中,SOC仿真器102经由虚拟I/O接口与IP 块122进行通信。在一个实施例中,SOC仿真器102仿真处理器(例如,多核处理器)和其 它部件的模型。在一个实施例中,SOC应用101结合SOC仿真器102 —起运行。在一个实施例中, SOC应用101经由包括VMM 103和虚拟IP接口库109的虚拟I/O控制IP块122。在一个 实施例中,SOC应用101包括操作系统和应用。在一个实施例中,操作系统(S0C操作系统) 在由VMM 103创建和管理的虚拟机中以客户模式来运行。在一个实施例中,VMM 103包括虚拟化对IP块122的访问的软件的层,以使得IP 块122与SOC设计的其他部件逻辑地互连。在一个实施例中,VMM 103使得客户操作系统 能够访问虚拟平台部件。在一个实施例中,VMM 103处理主机系统和正在被仿真的虚拟SOC 平台的配置。在一个实施例中,VMM 103由支持虚拟机扩展(VMX)特征的处理器执行。在一个实施例中,VMM 103仲裁在多个操作系统之间的资源的使用以使得操作系 统能够共享单个计算系统中的资源。在一个实施例中,VMM 103支持在被称为虚拟机(VM) 的容器中运行的操作系统和应用软件栈。在一个实施例中,IP块122支持编程的I/O、存储器映射的I/O、或上述二者。在 一个实施例中,基于系统存储器地址映射或I/O地址映射将IP块122的控制寄存器映射到 计算机存储器中特定的位置。在一个实施例中,保存系统存储器地址映射以使得即使当将 驱动器被部署到物理SOC时使用IP块122的软件驱动器保持不变。在一个实施例中,同样 的软件栈在没有修改的情况下能够在物理SOC设计上运行。在一个实施例中,VMM 103监视对与IP块122相关联的地址(例如,存储器地址 和I/O地址)的访问。在一个实施例中,当在VMM 103中运行的应用软件栈与IP块122交 互时VMM 103进行检测。VMM 103捕获这些交互并且将其重定向到IP块122。在一个实施例中,VMM 103将由IP块122中的处理导致的中断事件中继到在虚拟 机中运行的软件程序。在一个实施例中,IP块122支持到处理器的中断事件以指示任务完 成或错误。在一个实施例中,桥121将中断信号转换成中断事件。然后VMM 103将该事件 传送给SOC仿真器102。在一个实施例中,IP块122是根据内部/外部源、将被用来建立参考平台的设计。 在一个实施例中,将IP块122合成并下载到电子板120上的FPGA。在一个实施例中,根据 诸如SystemC、Verilog、以及VHDL的硬件建模语言来合成IP块122。在一个实施例中,IP块122在无需修改的情况下能够通过使用桥121与PCI-E设 备进行通信。IP块122经由桥121连接到PCI-E端点,桥121将PCI-E访问转换成IP块 122支持的本地事务(例如,高级微控制器总线架构(AMBA)、定制数据存储器接口(CDMI)、 以及开放内核协议(OCP)协议族)。在一个实施例中,桥121也被称为PCI-E到SOC总线。 在一个实施例中,桥121还通过移动数据到主机系统和从主机系统移动数据来支持直接存 储器访问(DMA)传输。在一个实施例中,电子板120是经由PCI-E互连连接到主机系统的FPGA追加卡。 在一个实施例中,电子板120包括不止一个的FPGA。在一个实施例中,主机系统包括若干不 同的FPGA板(卡),在其上仿真了多个IP块。在一个实施例中,通过在不同FPGA卡上使用 来仿真不同功能的IP块。
在一个实施例中,SOC设计的IP块包括SOC仿真器102中的软件模型、通过使用 FPGA来仿真的模型、或上述二者。IP块结合虚拟IP接口库109和VMM 103彼此进行通信。在一个实施例中,虚拟平台用于软件开发、软件验证、以及SOC设计原型制作。在 一个实施例中,虚拟平台支持使用IP块122的应用软件栈的测试。图2是包括两个IP块的片上系统(SOC)设计的框图。参考图2,在一个实施例中,SOC设计包括主处理器203、桥204、以及两个IP块 (即,IP块210和IP块211)。在一个实施例中,IP块210-211经由SOC总线201耦合到主 处理器203。主处理器203经由桥204耦合到SOC总线201。在一个实施例中,SOC总线201符合互连标准,例如,高级微控制器总线架构 (AMBA)、定制数据存储器接口(CDMI)、以及开放内核协议(OCP)。在一个实施例中,桥204将SOC总线201与主处理器203互连以使得IP块210-211 只支持符合SOC总线201的通信。在一个实施例中,在FPGA上仿真IP块210-211和桥204。在一个实施例中,IP块210-211包括控制寄存器的集合以及保存要在IP块 210-211上执行的程序的本地存储器。通过分配与对应的控制寄存器和本地存储器相关联 的特定地址范围使控制寄存器和本地存储器受到主处理器203的支配。在一个实施例中, 软件层通过从地址范围读取和对地址范围写入来控制IP块210-211。在一个实施例中,系 统地址映射定义IP块210-211到系统其余部分的逻辑互连。在一个实施例中,静态地或动 态地定义地址空间。图3是在虚拟平台中将存储器访问重定向到IP块的处理的一个实施例的流程图。由可以包括硬件(电路、专用逻辑等)、软件(例如在通用计算机系统或专用机器 上运行的)、或上述二者的组合的处理逻辑来执行该处理。在一个实施例中,结合参照图1 的虚拟机监视器103来执行该处理。在一个实施例中,由参照图3的计算机系统来执行该处理。参考图3,通过处理逻辑检测被保留用于与IP块进行通信的特定存储器范围的存 储器请求来开始处理(处理框310),其中所述IP块在可编程逻辑设备上被仿真。在一个实 施例中,处理逻辑检测与IP块相关联的存储器请求或存储器地址。在一个实施例中,可编 程逻辑设备是在经由PCI-E互连连接到主机系统的电子板上的现场可编程门阵列(FPGA)。在一个实施例中,处理逻辑将这些存储器请求重定向到PCI-E互连(处理框311)。 在一个实施例中,处理逻辑结合由处理器支持的虚拟机扩展一起来执行存储器重定向。在一个实施例中,处理逻辑将PCI-E访问转换成片上系统(SOC)总线事务(处理 框 312)。在一个实施例中,IP块经由SOC总线接收存储器请求(处理框313)。在一个实施 例中,处理逻辑将由IP块引发的中断事件中继到在其上仿真了 SOC设计的主机系统。可以在各种电子设备和逻辑电路中实现本发明的实施例。此外,包括本发明的实 施例的设备或电路可以被包括在各种计算机系统中。本发明的实施例也可以被包括在其他 计算机系统拓扑和架构中。例如,图4说明了结合本发明的一个实施例的计算机系统。处理器705访问来自 1级(Li)高速缓冲存储器706、2级(U)高速缓冲存储器710、以及主存储器715的数据。 在本发明的其他实施例中,高速缓冲存储器706可以是多级高速缓冲存储器,其由Ll高速缓冲存储器以及计算机系统存储器分层中的诸如L2高速缓冲存储器的其他存储器组成, 并且高速缓冲存储器710是随后的更低级高速缓冲存储器,例如L3高速缓冲存储器或更多 级高速缓冲存储器。此外,在其他实施例中,计算机系统可以具有作为不止一个处理器内核 的共享高速缓冲存储器的高速缓冲存储器710。处理器705可以具有任意数量的处理内核。然而,可以用硬件、软件、或它们的一 些组合在系统内的其他设备中或者在分布于整个系统的其他设备中实现本发明的其他实 施例。可以在各种存储器源中,例如,动态随机存取存储器(DRAM)、硬盘驱动器 (HDD) 720、基于NVRAM技术的固态盘725,或者包含各种存储设备和技术的、经由网络接口 730或经由无线接口 740位于远离计算机系统的存储器源,实现主存储器715。高速缓冲存 储器可以位于处理器内或在与处理器接近的位置,例如在处理器的本地总线707上。此外, 高速缓冲存储器可以包含相对快的存储器单元,例如六晶体管0ΤΓ)单元、或具有大约相等 或更快的访问速度的其他存储器单元。然而,本发明的其他实施例可以存在于图4的系统中的其他电路、逻辑单元、或设 备中。此外,本发明的其他实施例可以分布于图4中说明的整个若干电路、逻辑单元、或设 备中。类似地,至少一个实施例可以实现在点对点计算机系统中。例如,图5说明了在点 对点(PtP)配置中安排的计算机系统。特别地,图5示出了在其中通过多个点对点接口使 处理器、存储器和输入/输出设备互连的系统。图5的系统还可以包括若干处理器,为了清楚起见只示出了其中的两个处理器 870,880o处理器870、880中的每一个可以包括本地存储器控制器中心(MCH)811、821以与 存储器850、851连接。处理器870、880可以使用PtP接口电路812、822经由点对点(PtP) 接口 853交换数据。处理器870、880中的每一个可以使用点对点接口电路813、823、860、 861经由各自的PtP接口 830、831与芯片组890交换数据。芯片组890也可以经由高性能 图形接口 862与高性能图形电路852交换数据。本发明的实施例可以耦合到计算机总线 (834或83 、或在芯片组890中、或耦合到数据存储设备875、或耦合到图5的存储器850。然而,本发明的其他实施例可以存在于图5的系统中的其他电路、逻辑单元、或设 备中。此外,本发明的其他实施例可以分布于图5中说明的整个若干电路、逻辑单元、或设 备中。本发明并不限于所描述的实施例,并且可以在所附权利要求的精神和范围内使用 修改和改变来进行实施。例如,应当意识到,本发明可适于与所有类型的半导体集成电路 (“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组部件、可 编程逻辑阵列(PLA)、存储器芯片、网络芯片等。此外,应当意识到,可以给出示例性的尺寸 /模型/值/范围,尽管本发明的实施例并不限定为是相同的。由于制造技术(例如,光刻 术)随着时间变得成熟,所以可以预期能够制造出更小尺寸的设备。虽然对于本领域的普通技术人员来说,在读完上述描述之后本发明的实施例的许 多改变和修改将毋庸置疑地变得显而易见,但是可以理解,以说明的方式描述和示出的任 何特定实施例决不旨在被认为是限制性的。所以,提到的各个实施例的细节并不旨在限制 权利要求的范围,其中所述权利要求只在其本身中陈述被认为对本发明是必不可少的那些特征。
权利要求
1.一种装置,包括处理器,其用于执行系统设计的第一部件的仿真;耦合到所述处理器的互连,其用于与第一可编程逻辑设备进行通信以仿真所述系统设 计的第二部件;以及虚拟机监视器,其用于经由所述互连将所述第一部件的输入/输出请求重定向到所述第二部件。
2.根据权利要求1所述的装置,其中,所述虚拟机监视器用于通过监视与所述第二部 件相关联的存储器地址来重定向与所述第二部件相关联的存储器请求。
3.根据权利要求1所述的装置,其中,所述处理器结合虚拟机扩展一起来支持所述虚 拟机监视器的执行。
4.根据权利要求1所述的装置,其中,所述第一可编程逻辑设备包括现场可编程门阵 列(FPGA)或复杂可编程逻辑设备(CPLD)。
5.根据权利要求1所述的装置,其中,所述第一可编程逻辑设备还基于硬件描述语言 (HDL)模型来仿真所述系统设计的第三部件。
6.根据权利要求1所述的装置,还包括第二可编程逻辑设备,其用于仿真所述系统设 计的多个部件。
7.根据权利要求1所述的装置,其中,所述虚拟机监视器用于接收由所述第二部件引 发的中断事件并将所述中断事件中继到所述处理器。
8.根据权利要求1所述的装置,还包括PCI-E桥,其用于支持在所述互连与由所述第 一可编程逻辑设备仿真的片上系统(SOC)总线之间的通信,其中,所述第二部件逻辑地耦 合到所述SOC总线。
9.一种系统,包括第一电子板,其耦合到互连,所述第一电子板包括第一可编程逻辑设备以仿真设计的 一个或多个部件;以及处理器,其耦合到所述互连,用于执行虚拟机监视器,其中,所述虚拟机监视器经由所 述互连将输入/输出请求重定向到所述一个或多个部件。
10.根据权利要求9所述的系统,其中,所述虚拟机监视器用于通过监视与所述一个或 多个部件相关联的存储器地址来重定向与所述一个或多个部件相关联的存储器请求。
11.根据权利要求9所述的系统,其中,所述第一可编程逻辑设备包括现场可编程门阵 列(FPGA)或复杂可编程逻辑设备(CPLD)。
12.根据权利要求9所述的系统,还包括第二电子板,其包括一个或多个可编程逻辑 设备以仿真所述设计的多个部件。
13.一种方法,包括检测访问多个存储器地址的输入/输出请求;以及由虚拟机监视器将所述输入/输出请求重定向到由可编程逻辑设备仿真的一个或多 个部件。
14.根据权利要求13所述的方法,还包括由所述虚拟机监视器接收来自所述一个或 多个部件的中断事件。
15.根据权利要求13所述的方法,其中,所述可编程逻辑设备包括现场可编程门阵列(FPGA)或复杂可编程逻辑设备(CPLD)。
16.根据权利要求13所述的方法,其中,所述多个存储器地址与所述一个或多个部件相关联。
全文摘要
介绍了一种用于原型制作片上系统设计的系统。在一个实施例中,系统包括电子板,该电子板包括可编程用于仿真系统部件的逻辑设备。系统还包括处理器,用于执行虚拟机监视器,其中所述虚拟机监视器经由互连将输入/输出请求重定向到系统部件。
文档编号G06F17/50GK102054088SQ20101029333
公开日2011年5月11日 申请日期2010年9月26日 优先权日2009年11月5日
发明者E·舒克曼, G·N·金雅, H·王 申请人:英特尔公司