仿真系统以及存储、读取仿真数据的方法与流程

文档序号:26590192发布日期:2021-09-10 20:39阅读:398来源:国知局
仿真系统以及存储、读取仿真数据的方法与流程

1.本公开实施例涉及逻辑系统设计技术领域,具体涉及一种仿真系统以及存储、读取仿真数据的方法。


背景技术:

2.逻辑系统设计(简称设计)是指用于asic(application specific integrated circuit,专用集成电路)、soc(system

on

chip,片上系统芯片)等电路的设计。设计一般通过专门的hdl(hardware description language,硬件描述语言)来完成。利用hdl可逐层具体化描述设计,使得设计复杂的电路结构可使用一系列的模块来表示。
3.在对设计进行硬件仿真时,硬件仿真器会生成仿真数据。此时,需要提供仿真数据存储方案,以保障仿真数据能够被完全存储。


技术实现要素:

4.有鉴于此,本公开实施例提供一种仿真系统以及存储、读取仿真数据的方法,以保障仿真数据能够被完全存储。
5.为实现上述目的,本公开实施例提供如下技术方案。
6.第一方面,本公开实施例提供一种仿真系统,包括:主机;与主机通信连接的多个硬件仿真器,该多个硬件仿真器包括第一硬件仿真器和第二硬件仿真器;以及分别与主机和该多个硬件仿真器通信连接的存储系统,其中,第一硬件仿真器被配置为:从主机获取设计的第一模块,对第一模块进行硬件仿真,以得到第一仿真数据,将第一仿真数据传输到存储系统;第二硬件仿真器被配置为:从主机获取设计的第二模块,对第二模块进行硬件仿真,以得到第二仿真数据,将第二仿真数据传输到存储系统;存储系统被配置为:接收第一仿真数据和第二仿真数据,以及将第一仿真数据和第二仿真数据存储到存储系统中的第一存储单元。
7.第二方面,本公开实施例提供一种存储仿真数据的方法,包括:
8.从主机下载设计的第一模块;
9.对第一模块进行硬件仿真,以得到第一硬件仿真器的第一仿真数据;
10.将第一仿真数据传输到与多个硬件仿真器通信连接的存储系统,以使得第一仿真数据存储到存储系统中的第一存储单元,该多个硬件仿真器包括第一硬件仿真器。
11.第三方面,本公开实施例提供一种读取仿真数据的方法,包括:
12.获取主机传输的数据读取指令,该数据读取指令用于读取第一硬件仿真器的仿真数据,该仿真数据包括第一仿真数据,该第一仿真数据存储于存储系统的第一存储单元中,该存储系统与多个硬件仿真器通信连接,且该多个硬件仿真器包括第一硬件仿真器;以及
13.响应于该数据读取指令,向存储系统传输命令,该命令至少指示存储系统将第一存储单元中的第一仿真数据传输给主机。
14.本公开实施例提供的仿真系统中设置了存储系统,且存储系统分别与主机和多个
硬件仿真器通信连接。针对多个硬件仿真器中的任意硬件仿真器,如果硬件仿真器对设计的模块进行了硬件仿真,并得到了仿真数据,则硬件仿真器可将仿真数据传输到存储系统。从而,存储系统可接收多个硬件仿真器产生的仿真数据,并将多个硬件仿真器产生的仿真数据存储到存储系统中的第一存储单元,实现对多个硬件仿真器的仿真数据进行统一存储。由于硬件仿真器自身的存储容量有限,并且受限于验证板的空间,硬件仿真器难以扩充自身的存储容量,因此硬件仿真器自身往往没有足够的容量来完全存储仿真数据,这导致硬件仿真器的仿真过程极易出现中断。本公开实施例通过设置与多个硬件仿真器通信连接的存储系统,将多个硬件仿真器产生的仿真数据统一存储到存储系统中的第一存储单元,可在硬件仿真器自身的存储容量不足以存储仿真数据时,保障硬件仿真器产生的仿真数据能够被完全存储。本公开实施例提供的仿真系统,能够保障硬件仿真过程不会因为仿真数据无法完全存储而发生中断,使得硬件仿真过程能够连续进行。
附图说明
15.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
16.图1为仿真系统的示意图。
17.图2为图1的仿真系统实现设计的硬件仿真的示意图。
18.图3为本公开实施例提供的仿真系统的示意图。
19.图4a为本公开实施例提供的实现设计的硬件仿真的示意图。
20.图4b为本公开实施例提供的实现设计的硬件仿真的另一示意图。
21.图5a为本公开实施例提供的读取仿真数据的示意图。
22.图5b为本公开实施例提供的读取仿真数据的另一示意图。
23.图5c为本公开实施例提供的读取仿真数据的再一示意图。
24.图6为本公开实施例提供的存储仿真数据的方法的流程图。
25.图7为本公开实施例提供的读取仿真数据的方法的流程图。
具体实施方式
26.为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
27.需要说明的是,除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
28.仿真设计主要分为软件仿真和硬件仿真两大类。软件仿真是在运行软件仿真工具的主机上对设计进行模拟,以验证设计的功能。硬件仿真是通过与主机连接的验证板对设
121,并且与主机110连接的验证板120可以是一个或多个。在一些实施例中,验证板120中可以设置fpga插槽,fpga 121可插接于fpga插槽中。例如,一个验证板120可以设置一个或多个fpga插槽,一个fpga插槽可插接一个fpga 121。
38.验证板120中的fpga 121可以配置为对设计的模块进行硬件仿真。一个fpga 121自身通常附带有一个存储单元123,用于存储fpga 121自身产生的仿真数据。一个fpga 121可以仿真设计的一个或多个模块。
39.通信接口122可以配置为实现fpga 121与主机110之间的通信连接。通信接口122可与主机110的网络接口113、外围接口114和总线115(例如外部总线)中的任一项相连接,以实现fpga 121与主机110的通信连接。在一些实施例中,通信接口122可以是串行通信接口(例如rs

232串行通信接口等)。
40.需要说明的是,尽管上述验证板架构仅示出了fpga 121、通信接口122和fpga中设置的存储单元123,但是在具体实施过程中,该验证板架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述验证板架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
41.在设计的硬件仿真领域,主机110可以利用编译器对设计进行编译,然后由验证板120中的fpga对设计进行硬件仿真。该编译器可以是运行在图1所示主机110上的计算机程序。
42.图2示出了仿真系统100实现设计的硬件仿真的可选示意图。结合图1和图2所示,该仿真系统100可以包括:编译器210、分割器220,fpga 230和fpga 240。编译器210和分割器220可以是运行于主机110上的计算机程序。fpga 230和fpga 240可以是设置于同一验证板120上的任意两个fpga,也可以是设置于不同验证板上的任意两个fpga。fpga 230自身附带有存储单元231,fpga 240自身附带有存储单元241。
43.编译器210可以基于待编译的计算机代码来生成目标代码。待编译的计算机代码又可以称为源代码,例如编写的设计250。通常,编写源代码的源语言是高级编程语言。高级编程语言可以例如是c++、java等软件编程语言或vhdl、verilog、systemverilog等硬件描述语言。目标代码则可以是例如汇编代码、机器码、网表等。在本公开的实施例中,目标代码以机器码为例进行描述,但是本领域技术人员应该理解本技术的实施例中的机器码可以用其他类型的目标代码代替。通常的,编译器210可以存储在图1所示的存储器112中,并且由处理器111执行,以将设计250编译为目标代码。
44.分割器220可以对编译后的设计(也就是设计的目标代码,例如网表)进行分割,得到设计的多个模块251至25n。分割器220可以存储在图1所示的存储器112中,并且由处理器111执行,以将编译后的设计分割成多个模块。
45.在分割器220将编译后的设计分割成多个模块251至25n之后,主机110可按照一定的分配策略将模块251至25n分配给多个fpga进行硬件仿真。例如,主机110可将模块251至25n随机分配给多个fpga。一个fpga可对分配的一个或多个模块进行硬件仿真。如图2所示,主机110可至少将模块251分配给fpga 230,至少将模块252分配给fpga 240。
46.fpga 230可至少对模块251进行硬件仿真。如图2所示,fpga 230可从主机110下载分配的模块251,并存储到存储单元231。基于存储单元231中存储的模块251,fpga 230可对模块251进行硬件仿真,以得到仿真数据260。fpga 230得到的仿真数据260可存储到存储单
元231。
47.fpga 240可至少对模块252进行硬件仿真。如图2所示,fpga 240可从主机110下载分配的模块252,并存储到存储单元241。基于存储单元241中存储的模块252,fpga 240可对模块252进行硬件仿真,以得到仿真数据270。fpga 240得到的仿真数据270可存储到存储单元241。
48.设计的其他模块(除模块251和252外的其他模块)在分配的fpga处的硬件仿真过程与上述图2中fpga 230仿真模块251的过程、fpga 240仿真模块252的过程同理。可以看出,仿真设计的fpga是将得到的仿真数据存储到自身附带的存储单元中(例如,fpga 230、240是将仿真数据260、270分别存储到自身附带的存储单元231和241中)。然而,fpga自身附带的存储单元的存储容量有限,并且受限于验证板的空间,fpga难以扩充自身的存储容量,这导致fpga产生数据量较大的仿真数据时(例如,fpga在调试模块时,会产生大量的波形数据),极可能出现fpga自身附带的存储单元不足以存储仿真数据的情况,致使fpga的硬件仿真过程出现中断。
49.基于上述情况,本公开实施例进一步考虑在fpga外部设置存储系统,以对多个fpga产生的仿真数据进行统一存储。图3示出了本公开实施例提供的示例性仿真系统的示意图。结合图1和图3所示,图3所示仿真系统在图1所示的仿真系统100基础上进一步包括:存储系统300。存储系统300可以包括:控制单元310、存储单元320和pci

e接口330。
50.控制单元310是存储系统300中设置的用于进行数据处理、管理的处理器件。在一些实施例中,控制单元310可以是fpga。存储系统300中的控制单元310可与验证板120中的fpga 121互相通信(例如控制单元310与fpga 121通过fpga间通信实现互相通信),实现验证板120与存储系统300之间的数据传输。
51.存储单元320为存储系统300中设置的用于存储数据的存储器件。在本公开实施例中,多个fpga产生的仿真数据可以部分地或全部地存储到存储单元320。
52.pci

e接口330是存储系统300与主机110进行通信连接的接口,可实现存储系统300与主机110之间的数据传输。
53.图3所示存储系统300可以理解为是主机110连接的本地存储系统,在存储系统300作为本地存储系统的情况下,图3所示存储系统300的架构仅是一种可选示意。本公开实施例也可支持存储系统300与主机110之间通过其他通信接口进行通信连接,而不限于pci

e接口。本公开实施例也可支持存储系统300与验证板120之间通过其他方式进行通信,而不限于fpga间通信。需要说明的是,在其他一些实施例中,本公开实施例也可支持存储系统300为网络存储系统,在存储系统300作为网络存储系统的情况下,存储系统300可通过网络通信与验证板120和主机110通信连接。
54.基于本公开实施例提供的仿真系统,图4a示出了本公开实施例提供的实现设计的硬件仿真的示例性的示意图。结合图2和图4a所示,本公开实施例实现设计的硬件仿真的过程可以如下描述。
55.针对fpga 230对模块251的硬件仿真过程而言,fpga 230可从主机110下载分配的模块251,并存储到自身附带的存储单元231中。fpga 230基于存储单元231中存储的模块251,可对模块251进行硬件仿真。基于模块的硬件仿真是连续的过程,fpga 230仿真模块251所得到的仿真数据260可以包括:仿真数据261和仿真数据262。仿真数据261可以先于仿
真数据262产生。fpga230基于存储单元231的剩余存储容量足以存储仿真数据261(例如,存储单元231的剩余存储容量不小于仿真数据261的数据量),可将仿真数据261存储到存储单元231中。在存储单元231存储仿真数据261之后,fpga 230基于存储单元231的剩余存储容量不足以存储仿真数据262,可将仿真数据262传输给存储系统300。
56.在一些实施例中,在满足特定条件时,fpga 230可以将仿真数据262传输给存储系统300。该特定条件可以是存储单元231的剩余存储容量小于仿真数据262的数据量,或者,存储单元231的数据存储量达到存储容量上限,或者,存储单元231的数据存储量达到一定百分比的存储容量上限(例如80%、90%等的存储容量上限)。
57.存储系统300接收fpga 230传输的仿真数据262之后,存储系统300中的控制单元310可确定fpga 230在存储单元320中对应的存储分区321,将仿真数据262存储到存储单元320的存储分区321中。
58.在一些实施例中,存储系统300中的存储单元320可以设置多个存储分区321至32m,一个存储分区可以用于存储验证板中的一个fpga所产生的仿真数据。基于仿真设计的fpga可以包括fpga 230和240,该多个存储分区可以包括fpga 230对应的存储分区321、和fpga 240对应的存储分区322。在可选实现中,存储系统300可以设置存储分区与fpga标识的对应关系。仿真设计的一个fpga在向存储系统传输仿真数据时,可携带相应的fpga标识,以便存储系统基于携带的fpga标识,将传输的仿真数据存储到对应的存储分区中。例如,fpga 230在向存储系统传输仿真数据时,可携带fpga 230的fpga标识,以便存储系统基于fpga 230的fpga标识,将fpga 230传输的仿真数据存储到对应的存储分区321。
59.针对fpga 240对模块252的硬件仿真过程而言,fpga 240可从主机110下载分配的模块252,并存储到自身附带的存储单元241中。fpga 240基于存储单元241中存储的模块252,对模块252进行硬件仿真。fpga 240仿真模块252所得到的仿真数据270可以包括:仿真数据271和仿真数据272。仿真数据271可以先于仿真数据272产生。fpga 240基于存储单元241的剩余存储容量足以存储仿真数据271,可将仿真数据271存储到存储单元241中。在存储单元241存储仿真数据271之后,fpga 240基于存储单元241的剩余存储容量不足以存储仿真数据272,可将仿真数据272传输给存储系统300。
60.存储系统300接收fpga 240传输的仿真数据272之后,存储系统300中的控制单元310可确定fpga 240在存储单元320中对应的存储分区322,将仿真数据272存储到存储单元320的存储分区322中。
61.设计的其他模块(除模块251和252外的其他模块)在分配的fpga处的硬件仿真过程与上述图4a中fpga 230仿真模块251的过程、fpga 240仿真模块252的过程同理。可以看出,仿真设计的fpga在自身的存储单元不足以存储后续产生的仿真数据时,可将自身的存储单元无法存储的仿真数据传输到存储系统300中进行统一存储。也就是说,存储系统300可存储fpga自身无法存储的仿真数据,并对多个fpga产生的仿真数据进行统一存储。在结合存储系统300中存储的仿真数据,以及fpga自身存储的仿真数据的情况下,本公开实施例能够保障fpga产生的仿真数据能够被完全存储,保障设计的仿真过程不因仿真数据无法完全存储而中断,使得设计的硬件仿真过程能够连续进行。
62.需要说明的是,由于存储系统300位于验证板之外,并且是与主机通过通信连接,因此存储系统300中的存储单元320在扩容时并不限制于验证板的空间,存储系统300中的
存储单元320可基于数据存储需求灵活的进行扩容。
63.在一些实施例中,在仿真设计的fpga自身存储部分仿真数据的情况下(例如,fpga 230存储仿真数据260中的部分仿真数据261),为更为高效的利用fpga自身存储单元的存储空间,本公开实施例可优化主机110为fpga分配模块的手段。主机110在为fpga分配模块时,可确定各个fpga的剩余存储容量,并预估设计的各个模块产生的仿真数据的数据量;从而,主机110可按照仿真数据的数据量与fpga的剩余存储容量呈正相关的分配策略,将设计的模块分配给fpga。例如,如果fpga 230的剩余存储容量越大,则主机分配的模块251预估产生的仿真数据的数据量越大;如果fpga 230的剩余存储容量越小,则主机分配的模块251预估产生的仿真数据的数据量越小。也就是说,fpga的剩余存储容量越大,则分配的模块预估产生的仿真数据的数据量越大,从而使得fpga的剩余存储容量能够得到高效的利用。
64.图4b示出了本公开实施例提供的实现设计的硬件仿真的另一示例性的示意图。结合图2和图4b所示,本公开实施例实现设计的硬件仿真的过程可以如下描述。
65.针对fpga 230对模块251的硬件仿真过程而言,fpga 230可从主机110下载分配的模块251,并存储到自身附带的存储单元231中。fpga 230基于存储单元231中存储的模块251,对模块251进行硬件仿真,以得到仿真数据260。fpga 230可将仿真数据260直接传输给存储系统300。
66.存储系统300接收fpga 230传输的仿真数据260之后,存储系统300中的控制单元310可确定fpga 230在存储单元320中对应的存储分区321,将仿真数据260存储到存储分区321中。
67.针对fpga 240对模块252的硬件仿真过程而言,fpga 240可从主机110下载分配的模块252,并存储到自身附带的存储单元241中。fpga 240基于存储单元241中存储的模块252,对模块252进行硬件仿真,以得到的仿真数据270。fpga 240将仿真数据270直接传输给存储系统300。
68.存储系统300接收fpga 240传输的仿真数据270之后,存储系统300中的控制单元310可确定fpga 240在存储单元320中对应的存储分区322,将仿真数据270存储到存储分区322中。
69.设计的其他模块(除模块251和252外的其他模块)在分配的fpga处的硬件仿真过程与上述图4b中fpga 230仿真模块251的过程、fpga 240仿真模块252的过程同理。可以看出,仿真设计的fpga可将产生的仿真数据直接传输给存储系统300,从而存储系统300可统一存储各个fpga产生的仿真数据。也就是说,仿真设计的fpga不再使用自身的存储单元来存储仿真数据,而是将仿真数据直接传输给存储系统300进行存储,从而降低fpga自身的存储容量不足以存储仿真数据的情况发生。本公开实施例能够保障fpga产生的仿真数据能够在存储系统300中被完全存储,保障设计的仿真过程不因仿真数据无法完全存储而中断,使得设计的硬件仿真过程能够连续进行。
70.在一个或多个fpga中的一个fpga结束硬件仿真之后(例如,某一fpga对分配的模块完成硬件仿真之后),主机110可分析该fpga产生的仿真数据,此时,主机110可向该fpga传输数据读取指令,从而触发该fpga的仿真数据读取流程。在读取仿真数据的实现上,基于图4a所示的硬件仿真过程,本公开实施例还提供对应的仿真数据读取方案。图5a示出了本公开实施例提供的读取仿真数据的示例性的示意图。结合图4a和图5a所示,本公开实施例
提供的读取仿真数据的过程可以如下描述。
71.针对fpga 230的仿真数据读取过程而言,主机110可向fpga 230传输数据读取指令510。数据数据指令510用于读取fpga 230的仿真数据260。由于仿真数据260包括仿真数据261和仿真数据262,并且仿真数据261存储在fpga230自身的存储单元231、仿真数据262存储在存储系统300,因此读取fpga 230产生的仿真数据260涉及到读取存储单元231中的仿真数据261和存储系统300中的仿真数据262。
72.在本公开实施例中,fpga 230接收到主机传输的数据读取指令510之后,fpga 230可产生命令520,并将自身存储单元231中存储的仿真数据261以及命令520传输给存储系统300。在本公开实施例中,命令520用于指示存储系统300将所存储的fpga 230的仿真数据262,与当前传输的仿真数据261进行整合,并反馈给主机110。
73.存储系统300接收到仿真数据261和命令520之后,存储系统300中的控制单元310可基于命令520从存储单元320的存储分区321,读取仿真数据262。控制单元310进一步将仿真数据261和仿真数据262进行整合,然后将整合后的仿真数据260传输给主机110,以实现主机110读取fpga 230的仿真数据。在一些实施例中,控制单元310将仿真数据261和仿真数据262进行整合可以包括:将仿真数据261和仿真数据262进行数据压缩,然后对压缩后的数据进行分组,一组数据可以包括多个bit(比特)的数据(例如,一组数据可以包括8个bit的数据),多组数据对应存储单元中的一个存储单位(例如,8组数据对应存储单元中一个64bit的存储单位)。
74.在一些实施例中,控制单元310可通过pci

e接口330与主机110进行通信,从而将整合后的仿真数据260传输给主机110。
75.主机110读取fpga 240的仿真数据、读取其他fpga的仿真数据的过程与上述图5a中主机110读取fpga 230的仿真数据的过程同理。可以看出,在仿真设计的fpga自身存储部分仿真数据,并且存储系统300存储另一部分仿真数据的情况下,该fpga可将自身存储的部分仿真数据传输给存储系统300,由存储系统300整合该fpga自身存储的部分仿真数据和存储系统中存储的另一部分仿真数据,再由存储系统300将整合后的仿真数据传输给主机110,以实现主机110读取该fpga的仿真数据。
76.作为图5a的一种可选替代实现,图5b示例性的示出了本公开实施例提供的读取仿真数据的另一可选示意图。结合图4a和图5b所示,本公开实施例提供的读取仿真数据的过程可以如下描述。
77.针对fpga 230的仿真数据读取过程而言,主机110可向fpga 230传输数据读取指令510。数据数据指令510用于读取fpga 230的仿真数据260。由于仿真数据260包括仿真数据261和仿真数据262,并且仿真数据261存储在fpga230自身的存储单元231、仿真数据262存储在存储系统300,因此读取fpga 230产生的仿真数据260涉及到读取存储单元231中的仿真数据261和存储系统300中的仿真数据262。
78.在本公开实施例中,fpga230接收到主机传输的数据读取指令510之后,fpga 230可产生命令520,并将自身存储单元231中存储的仿真数据261传输给主机110,同时将命令520传输给存储系统300。在本公开实施例中,命令520用于指示存储系统300将所存储的fpga 230的仿真数据262传输给主机110。
79.存储系统300接收到命令520之后,存储系统300中的控制单元310可基于命令520
从存储单元320的存储分区321中,读取仿真数据262。控制单元310进一步将仿真数据262传输给主机110。
80.主机110接收到fpga 230传输的仿真数据261和存储系统300传输的仿真数据262之后,可将仿真数据261和仿真数据262进行整合,得到整合后的仿真数据260,从而实现读取fpga 230的仿真数据。主机整合得到仿真数据的过程可以同理参照前文相应部分描述,此处不再赘述。
81.主机110读取fpga 240的仿真数据、读取其他fpga的仿真数据的过程与上述图5b中主机110读取fpga 230的仿真数据的过程同理。可以看出,在仿真设计的fpga自身存储部分仿真数据,并且存储系统300存储另一部分仿真数据的情况下,该fpga可将自身存储的部分仿真数据直接传输给主机110,并指示存储系统300将所存储的另一部分仿真数据传输给主机110。从而,主机可将该fpga传输的部分仿真数据以及存储系统300传输的另一部分仿真数据进行整合,以实现主机110读取该fpga的仿真数据。
82.在读取仿真数据的实现上,基于图4b所示的硬件仿真过程,本公开实施例还提供对应的仿真数据读取方案。图5c示出了本公开实施例提供的读取仿真数据的再一可选示意图。结合图4b和图5c所示,本公开实施例提供的读取仿真数据的过程可以如下描述。
83.针对fpga 230的仿真数据读取过程而言,主机110可向fpga 230传输数据读取指令510。数据数据指令510用于读取fpga 230的仿真数据260。由于fpga 230的仿真数据260直接存储在存储系统300中,因此本公开实施例仅涉及到读取存储系统300中的仿真数据260。
84.在本公开实施例中,fpga230接收到主机传输的数据读取指令510之后,fpga 230可产生命令520,并将命令520传输给存储系统300。在本公开实施例中,命令520用于指示存储系统300将所存储的fpga 230的仿真数据260传输给主机110。
85.存储系统300接收到命令520之后,存储系统300中的控制单元310可基于命令520从存储单元320的存储分区321中,读取仿真数据260。控制单元310进一步将仿真数据260传输给主机110,以实现主机110读取fpga 230的仿真数据。
86.主机110读取其他fpga的仿真数据的过程与上述图5c中主机110读取fpga 230的仿真数据的过程同理。可以看出,在仿真设计的fpga不存储仿真数据,而由存储系统300直接存储该fpga的仿真数据的情况下,该fpga可指示存储系统300将所存储的仿真数据传输给主机110,以实现主机110读取该fpga的仿真数据。
87.基于上述描述的技术方案,本公开实施例提供一种仿真系统,该仿真系统可以包括:
88.主机(例如,图3所示的主机110);
89.与该主机通信连接的多个硬件仿真器,该多个硬件仿真器包括第一硬件仿真器(例如,图4a所示的fpga 230)和第二硬件仿真器(例如,图4a所示的fpga240);以及
90.分别与该主机和该多个硬件仿真器通信连接的存储系统(例如,图4a所示的存储系统300),其中,
91.该第一硬件仿真器被配置为:从主机获取设计的第一模块(例如,图4a所示的模块251),对该第一模块进行硬件仿真,以得到第一仿真数据(例如,图4a所示的仿真数据262),将该第一仿真数据传输到存储系统;
92.该第二硬件仿真器被配置为:从主机获取设计的第二模块(例如,图4a所示的模块252),对该第二模块进行硬件仿真,以得到第二仿真数据(例如,图4a所示的仿真数据272),将第二仿真数据传输到存储系统;
93.该存储系统被配置为:接收第一仿真数据和第二仿真数据,以及将第一仿真数据和第二仿真数据存储到存储系统中的第一存储单元(例如,图4a所示的存储单元320)。
94.在进一步的一些实施例中,存储系统中的第一存储单元可以包括多个存储分区(例如,图4a所示的存储分区321至32m),一个存储分区可以存储一个硬件仿真器产生的仿真数据;该多个存储分区可以包括第一存储分区(例如,图4a所示的存储分区321)和第二存储分区(例如,图4a所示的存储分区322)。该存储系统在实现将第一仿真数据和第二仿真数据存储到第一存储单元时,可进一步被配置为:将第一仿真数据(例如,图4a所示的仿真数据262)存储到第一存储分区,将第二仿真数据(例如,图4a所示的仿真数据272)存储到第二存储分区。
95.在进一步的一些实施例中,第一硬件仿真器(例如,图4a所示的fpga 230)可以包括第二存储单元(例如,图4a所示的存储单元231)。该第一硬件仿真器在实现将第一仿真数据传输到存储系统时,可进一步被配置为:响应于第二存储单元的数据存储量达到预定条件,将第一仿真数据(例如,图4a所示的仿真数据262)传输到存储系统。
96.在一些实施例中,第二存储单元的数据存储量达到预定条件包括如下任一项:
97.第二存储单元的数据存储量达到存储容量上限;
98.第二存储单元的数据存储量达到一定百分比的存储容量上限,该一定一百分比小于1;
99.第二存储单元的剩余数据容量小于第一仿真数据的数据量。
100.在进一步的一些实施例中,基于主机读取第一硬件仿真器的仿真数据(例如,图4a、图5a所示的仿真数据260),第一硬件仿真器可进一步被配置为:获取主机传输的数据读取指令(例如,图5a所示的数据数据指令510),该数据读取指令用于读取第一硬件仿真器(例如,图5a所示的fpga 230)的仿真数据;响应于该数据读取指令,向存储系统传输命令(例如,图5a所示的命令520)。
101.基于第一硬件仿真器传输的命令,该存储系统可进一步被配置为:响应于该命令,至少将第一存储单元中存储的第一仿真数据(例如,图5a所示的仿真数据262)传输给主机。
102.在进一步的一些实施例中,第一硬件仿真器仿真第一模块还得到第三仿真数据(例如,图4a、图5a所示的仿真数据261),第三仿真数据存储于第一硬件仿真器中的第二存储单元(例如,图4a、图5a所示的存储单元231),该第二存储单元还存储第一模块(例如,图4a所示的模块251)。
103.在进一步的一些实施例中,在第一硬件仿真器仿真第一模块还得到第三仿真数据的情况下,第一硬件仿真器在获取主机传输的数据读取指令时,还可进一步被配置为:响应于数据读取指令,将第二存储单元存储的第三仿真数据传输给存储系统。
104.基于第一硬件仿真器传输的第三仿真数据和命令,存储系统在实现至少将第一存储单元中存储的第一仿真数据传输给主机时,可进一步被配置为:响应于命令(例如,图5a所示的命令520),整合第一仿真数据(例如,图4a、图5a所示的仿真数据262)与第三仿真数据(例如,图4a、图5a所示的仿真数据261),将整合后的仿真数据(例如,图5a所示的仿真数
据260)传输给主机。
105.在进一步的一些实施例中,在第一硬件仿真器仿真第一模块还得到第三仿真数据的情况下,第一硬件仿真器在获取主机传输的数据读取指令时,还可进一步被配置为:响应于数据读取指令,将第二存储单元存储的第三仿真数据传输给主机。
106.基于第一硬件仿真器传输的命令,存储系统在实现至少将第一存储单元中存储的第一仿真数据传输给主机时,可直接被配置为:将第一存储单元中存储的第一仿真数据(例如,图4a、图5a所示的仿真数据262)传输给主机。
107.基于第一硬件仿真器传输的第三仿真数据,以及存储系统传输的第一仿真数据,主机可进一步被配置为:接收存储系统传输的第一仿真数据,以及第一硬件仿真器传输的第三仿真数据,整合第一仿真数据与第三仿真数据。
108.在进一步的一些实施例中,本公开实施例所指的硬件仿真器可以包括fpga(例如,图3所示的验证板120中的fpga 121),存储系统可以包括fpga(例如,图3所示的控制单元310)和pci

e接口;硬件仿真器与存储系统可通过fpga间通信,进行数据传输;存储系统与主机可通过pci

e接口进行数据传输。
109.本公开实施例提供的仿真系统中设置了存储系统,且存储系统分别与主机和多个硬件仿真器通信连接。针对多个硬件仿真器中的任意硬件仿真器,如果硬件仿真器对设计的模块进行了硬件仿真,并得到了仿真数据,则硬件仿真器可将仿真数据传输到存储系统。从而,存储系统可接收多个硬件仿真器产生的仿真数据,并将多个硬件仿真器产生的仿真数据存储到存储系统中的第一存储单元,实现对多个硬件仿真器的仿真数据进行统一存储。由于硬件仿真器自身的存储容量有限,并且受限于验证板的空间,硬件仿真器难以扩充自身的存储容量,因此硬件仿真器自身往往没有足够的容量来完全存储仿真数据,这导致硬件仿真器的仿真过程极易出现中断。本公开实施例通过设置与多个硬件仿真器通信连接的存储系统,将多个硬件仿真器产生的仿真数据统一存储到存储系统中的第一存储单元,可在硬件仿真器自身的存储容量不足以存储仿真数据时,保障硬件仿真器产生的仿真数据能够被完全存储。本公开实施例提供的仿真系统,能够保障硬件仿真过程不会因为仿真数据无法完全存储而发生中断,使得硬件仿真过程能够连续进行。
110.本公开实施例还提供一种存储仿真数据的方法。图6示出了本公开实施例提供的存储仿真数据的示例性方法600的流程图。该方法600可由用于仿真设计的硬件仿真器(例如,图4a所示的fpga 230)执行。如图6所示,该方法600可以包括如下步骤。
111.在步骤s610中,从主机(例如,图3所示的主机110)下载设计的第一模块(例如,图4a所示的模块251)。
112.在步骤s612中,对第一模块进行硬件仿真,以得到第一硬件仿真器(例如,图4a所示的fpga 230)的第一仿真数据(例如,图4a所示的仿真数据262)。
113.在步骤s614中,将第一仿真数据传输到与多个硬件仿真器通信连接的存储系统(例如,图4a所示的存储系统300),以使得第一仿真数据存储到存储系统中的第一存储单元(例如,图4a所示的存储单元320),该多个硬件仿真器包括第一硬件仿真器。
114.图6所示方法中步骤的具体实现和可扩展的步骤,可参照前文仿真系统部分的相关描述;前文关于fpga 230相关的描述均能视为是关于第一硬件仿真器的描述。
115.本公开实施例还提供一种读取仿真数据的方法。图7示出了本公开实施例提供的
读取仿真数据的示例性方法700的流程图。该方法700可由用于仿真设计的硬件仿真器(例如,图5a所示的fpga 230)执行。如图7所示,该方法700可以包括如下步骤。
116.在步骤s710中,获取主机(例如,图5a所示的主机110)传输的数据读取指令(例如,图5a所示的数据数据指令510),该数据读取指令用于读取第一硬件仿真器(例如,图5a所示的fpga 230)的仿真数据,该仿真数据包括第一仿真数据(例如,图5a所示的仿真数据262),该第一仿真数据存储于存储系统(例如,图5a所示的存储系统300)的第一存储单元(例如,图5a所示的存储单元320)中,该存储系统与多个硬件仿真器通信连接,且该多个硬件仿真器包括第一硬件仿真器。
117.在步骤s712中,响应于该数据读取指令,向存储系统传输命令(例如,图5a所示的命令520),该命令至少指示存储系统将第一存储单元中的第一仿真数据传输给主机。
118.图7所示方法中步骤的具体实现和可扩展的步骤,可参照前文仿真系统部分的相关描述;前文关于fpga 230相关的描述均能视为是关于第一硬件仿真器的描述。
119.上文描述了本公开实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本公开实施例披露、公开的实施例方案。
120.需要说明的是,本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd

rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
121.上述对本公开特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
122.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
123.另外,为简化说明和讨论,并且为了不会使本公开难以理解,在所提供的附图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明
性的而不是限制性的。
124.尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。
125.本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1