CN111950219A - 用于实现模拟器的方法、装置、设备以及介质 - Google Patents
用于实现模拟器的方法、装置、设备以及介质 Download PDFInfo
- Publication number
- CN111950219A CN111950219A CN201910364810.8A CN201910364810A CN111950219A CN 111950219 A CN111950219 A CN 111950219A CN 201910364810 A CN201910364810 A CN 201910364810A CN 111950219 A CN111950219 A CN 111950219A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- simulation
- simulator
- simulation module
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/36—Circuit design at the analogue level
- G06F30/367—Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
-
- 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
-
- 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/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Quality & Reliability (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
根据本公开的示例实施例,提供了一种用于实现模拟器的方法、装置、设备以及介质。方法包括从统一存储文件读取用于模拟器中的第一模拟模块的第一数据,然后向统一存储文件写入第二数据,其中第二数据基于第一模拟模块对第一数据的处理而生成。方法还包括从统一存储文件读取用于模拟器中的第二模拟模块的第二数据,然后向统一存储文件写入第三数据,其中第三数据基于第二模拟模块对第二数据的处理而生成。根据本公开的实施例的芯片模拟器,各个模拟模块都与统一存储文件进行数据对接,而各个模块之间不进行任何数据对接,这有助于模拟模块的任意组合和执行顺序调整,由此提高芯片模拟器的开发效率。
Description
技术领域
本公开的实施例总体上涉及模拟器开发领域,并且更具体地涉及用于实现模拟器的方法、装置、设备以及计算机可读存储介质。
背景技术
模拟器通常为利用软件开发的模拟程序,其可模拟一些特定的硬件平台,常用的模拟器例如包括计算机模拟器、驾驶模拟器、飞行模拟器,等等。芯片是指包含集成电路的硅片硬件,在芯片开发过程中,通常需要提前或者同步开发其对应的功能模拟器。功能模拟器的作用主要是用来验证芯片硬件设计的正确性,探索硬件设计方案的可能性,同时还能为开发和测试人员提供软件平台,加快芯片的开发、测试和验证的速度。
为了实现开发模拟器的目标,需要模拟器和芯片的行为和能力保持尽量一致。特别是功能模拟器,通常需要做到执行结果与芯片完全相同,功能也完全相同。通常,准确的数据才能实现对芯片的验证和测试,起到绝对的参考作用。然而,要想做到功能完整和准确的功能模拟器,就必须与芯片硬件反复校对,并需要模拟器自身的反复测试,需要耗费很多的人力和时间去完成工作。此外,功能模拟器需要帮助做芯片设计方案的探索,方便设计人员和开发人员。
发明内容
根据本公开的示例实施例,提供了一种用于实现模拟器的方法、装置、电子设备以及计算机可读存储介质。
在本公开的第一方面中,提供了一种用于实现模拟器的方法。该方法包括:从统一存储文件读取用于模拟器中的第一模拟模块的第一数据,其中第一模拟模块用于模拟芯片的第一功能,并且统一存储文件用于统一存储模拟器中的模拟模块的输入数据和输出数据;向统一存储文件写入第二数据,其中第二数据基于第一模拟模块对第一数据的处理而生成;从统一存储文件读取用于模拟器中的第二模拟模块的第二数据,其中第二模拟模块用于模拟芯片的第二功能,并且第二模拟模块被配置为在第一模拟模块之后运行;以及向统一存储文件写入第三数据,其中第三数据基于第二模拟模块对第二数据的处理而生成。
在本公开的第二方面中,提供了一种用于实现模拟器的装置。该装置包括:第一读取模块,被配置为从统一存储文件读取用于模拟器中的第一模拟模块的第一数据,其中第一模拟模块用于模拟芯片的第一功能,并且统一存储文件用于统一存储模拟器中的模拟模块的输入数据和输出数据;第一写入模块,被配置为向统一存储文件写入第二数据,其中第二数据基于第一模拟模块对第一数据的处理而生成;第二读取模块,被配置为从统一存储文件读取用于模拟器中的第二模拟模块的第二数据,其中第二模拟模块用于模拟芯片的第二功能,并且第二模拟模块被配置为在第一模拟模块之后运行;以及第二写入模块,被配置为向统一存储文件写入第三数据,其中第三数据基于第二模拟模块对第二数据的处理而生成。
在本公开的第三方面中,提供了一种电子设备,其包括一个或多个处理器以及存储装置,其中存储装置用于存储一个或多个程序。一个或多个程序当被一个或多个处理器执行,使得电子设备实现根据本公开的实施例的方法或过程。
在本公开的第四方面中,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的实施例的方法或过程。
应当理解,本发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键特征或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的描述而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了传统的功能模拟器的架构的示意图;
图2示出了根据本公开的实施例的用于实现模拟器的方法的流程图;
图3示出了根据本公开的实施例的用于模拟芯片的功能模拟器的架构的示意图;
图4示出了根据本公开的实施例的用于模拟芯片的另一功能模拟器的架构的示意图;
图5示出了根据本公开的实施例的用于调整功能模拟器中的模拟模块的执行顺序的示意图;
图6示出了根据本公开的实施例的用于在功能模拟器中删除模拟模块和添加模拟模块的示意图;
图7示出了根据本公开的实施例的用于实现模拟器的装置的框图;以及
图8示出了能够实施本公开的一些实施例的电子设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中示出了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“一些实施例”应当理解为“至少一些实施例”。下文还可能包括其他明确的和隐含的定义。
图1示出了传统的功能模拟器的架构的示意图100。如图1所示,功能模拟器101包括多个模拟模块110、120、130、140以及150,这些模拟模块分别可以实现硬件芯片的某个功能。功能模拟器101能够基于接收到的输入105,通过各个模拟模块的处理,得到对应的输出155。这些模拟模块之间的数据流顺序通常是固定的,因而在各个模拟模块中定义与其交互的前后模拟模块。例如,在模拟模块120中定义其从模拟模块110接收输入数据并与模拟模块110对接;同时在模拟模块120中还需要定义其将输出数据传递到模拟模块130并也与模拟模块130对接。由此可见,在各个模拟模块中需要定义与其对接的输入数据模块和输出数据模块,而当需要对某个模拟模块的输入数据模块和/或输出数据模块进行调整时,则需要在这个模块中重新进行定义。
因此,在传统的模拟器的开发中,通常是根据芯片硬件的具体设计进行定义和开发的。例如,芯片有哪些功能模块,对应的功能模拟器也有相应的模拟模块。功能模拟器内部的各个模拟模块,通过软件程序的编程接口,紧密的连接在一起,并且各个模拟模块的数据流顺序基本是固定的,各个模拟模块之间都是通过程序接口进行连接和数据交互的。然而,这样紧密的耦合设计在每次添加、删除和/或重新排列模拟模块时,都需要修改很多模拟模块,导致功能模拟器开发的灵活度较低,调整比较繁琐,导致开发效率较低。因此,现有技术中存在用于模拟硬件芯片的芯片模拟器的开发效率较低且扩展性较差的问题。
为此,本公开的实施例提出了一种用于芯片模拟器的模块化快速开发方案。根据本公开的实施例的芯片模拟器,各个模拟模块都与统一存储文件进行数据对接,而各个模块之间不进行数据对接,这有助于模拟模块的任意组合和执行顺序调整,由此提高芯片模拟器的开发效率,并且还能提高芯片模拟器的扩展性。
此外,发明人还发现与普通的芯片相比,人工智能(AI)芯片的业务支持变化较快并且接口改动灵活。而接口改变通常会触及相关的模拟模块和数据处理流程的更改。另外,深度学习算法的变化也很快,分支也很多,在不同的处理场景下需要不同的功能模块和特定的数据通路。因此,对于AI芯片而言,功能模拟器的模块化更为亟需,并且需要达到灵活设计和开发的目标。因此,针对AI芯片的模拟器,更需要分层、分模块进行节耦合设计,从而能够快速的支持新的改动和设计要求。以下参考图2-8描述了本公开的一些实施例的示例实现。
图2示出了根据本公开的实施例的用于实现模拟器的方法200的流程图。为了便于描述图2中的方法200,参考图3的根据本公开的实施例的用于模拟芯片的功能模拟器的架构一起进行描述。
在框202,从统一存储文件读取用于模拟器中的第一模拟模块的第一数据,其中第一模拟模块用于模拟芯片的第一功能,统一存储文件用于统一存储模拟器中的各个模拟模块的输入数据和输出数据。例如,图3示出了根据本公开的实施例的用于模拟芯片的功能模拟器301的架构的示意图300,如箭头311所示,模拟模块310从统一存储文件330读取数据331,其中模拟模块310能够模拟芯片的某个功能,例如矩阵计算。在本公开的实施例中,统一存储文件330能够统一存储各个模拟模块中的输入输出数据,为各个模拟模块提供了统一的数据对接接口,由此避免各个模拟模块之间的直接数据对接。在一些实施例中,数据331可以为来自功能模拟器301外部的输入。备选地,数据331也可以为功能模拟器301中其他模拟模块(未示出)所产生的输出结果。
在框204,向统一存储文件写入第二数据,其中第二数据基于第一模拟模块对第一数据的处理而生成。例如,参考图3,模拟模块310对数据331进行处理(例如矩阵计算),生成数据332,并且将数据332发送到统一存储文件330,如箭头312所示。
在框206,从统一存储文件读取用于模拟器中的第二模拟模块的第二数据,其中第二模拟模块用于模拟芯片的第二功能,并且第二模拟模块被配置为在第一模拟模块之后运行。例如,参考图3,如箭头313所示,模拟模块320从统一存储文件330读取数据332,其中模拟模块也可以模拟芯片的某个功能,诸如激活计算。由于模拟模块320提前被配置为在模拟模块310之后执行,因而模拟模块320所读取的输入数据332是模拟模块310的输出结果(即输出数据)。此外,应当理解,第一模拟模块和第二模拟模块可以分别模拟硬件芯片中的各种功能。
在框208,向统一存储文件写入第三数据,其中第三数据基于第二模拟模块对第二数据的处理而生成。例如,参考图3,模拟模块320对数据332进行处理(诸如激活计算),生成数据333,然后将数据333发送到统一存储文件330,如箭头314所示。
因此,根据本公开的实施例的方法200,芯片模拟器中的各个模拟模块都是与统一存储文件进行数据对接,而各个模拟模块之间不进行直接的数据交互。通过这种方式,芯片模拟器中的各个模拟模块都只关心如何与统一存储文件进行对接,有助于后续的任意模块组合和模块执行顺序的调整,由此提高芯片模拟器的开发效率和扩展性。
此外,在根据本公开的实施例中,模拟模块310在完成对数据331的计算之后,是向统一存储文件330传递计算结果,而不是直接传递给下一个模拟模块320。在一些实施例中,在将数据332写入到统一存储文件330时,可以在统一存储文件330中记录数据332的类型、位置和大小等信息。
在本公开的实施例中,功能模拟器中的各个模拟模块,都对数据有处理能力,包括数据整理、数据计算和数据搬运等。每个模拟模块对数据进行处理后,都会将结果写入到统一存储文件中,并且标明数据的类型、数据的位置、数据的大小等信息。其他模拟模块在需要读取数据时,统一从存储文件中进行数据读取,根据统一存储文件的数据配置信息进行解析,获取数据到自己的功能模块中进行操作,并将计算结果再次写回到统一存储文件中,并标明数据的类型、数据的位置、数据的大小等信息。通过这种方式,各个模拟模块之间时没有任何程序对接。每个模拟模块都对接数据存储文件,而剥离与其他模拟模块的关系。
通过上述方式,各个模拟模块可以独立于其他模拟模块,只关心对统一存储文件的数据解析和读取。模拟模块从统一存储文件中读入其关心的数据,然后进行计算和处理,然后再将结果写回统一存储文件,供后续的模拟模块再次使用。每个模拟模块的开发和测试,只有一个统一存储文件作为接口,只需要关注自己模块内部的程序开发和调试,后续可以与任意模拟模块进行逻辑顺序调整和协作。
本发明的发明人认识到,目前的AI芯片设计,与常规的通用芯片有些不同。AI芯片更贴近实际的算法和软件应用,而不是为了通用的计算处理来设计的。因此,AI芯片要针对实际的业务场景,来解决具体的算法加速、应用提速的问题。AI芯片的设计和要求,就必须伴随着实际的业务发展、算法演进、市场需求,才能达到服务于应用的目的。在软件算法不断的变化和迭代的过程中,就需要底层AI芯片做出快速的设计和验证方法,进行评估和设计。在这种情况下,往往是通过AI芯片功能模拟器来实现的,这是因为硬件开发周期较长,需要软件功能模拟器进行快速开发和验证方案的可行性,以及设计方案的正确性。这就要求了软件功能模拟器也必须能够快速灵活的实现,支持实际业务场景。
根据本公开的实施例的方法,各个模拟模块的计算顺序是可以任意组合的,因而能够更好的匹配AI芯片的设计模拟需求。AI算法的变化和迭代很快,并且算法中的各个模拟模块的顺序和计算关系也可能灵活变化。本公开的实施例可以任意的配置各个功能模拟器的模拟模块,调整功能模拟器的执行顺序,满足上层应用的变化。在这个过程中,根据本公开的实施例的功能模拟器几乎是不需要改动,显著减少了开发和调试的工作量,能够快速帮助AI芯片验证设计的可行性。
在一些实施例中,本公开的实施例所模拟的芯片可以为用于执行加速计算任务的AI芯片,AI芯片中可以包括各种计算模块,例如数据整理模块、矩阵计算模块、激活计算模块以及直接存储器访问(DMA)模块等。通过这种方式,能够使用本公开的实施例的功能模拟器来验证AI芯片设计的可行性,从而有效解决AI芯片设计验证的需求。
图4示出了根据本公开的实施例的用于模拟芯片的另一功能模拟器401的架构的示意图400。如图4所示,功能模拟器401包括多个模拟模块410、420、430、440以及450、控制流配置文件460、以及统一存储文件470,其中各个模拟模块用于模拟芯片(例如AI芯片)中的某个功能。
参考图4,控制流配置文件460用于配置模拟器中的多个模拟模块之间的执行顺序,诸如执行顺序465,其指示在启动功能模拟器401后,功能模拟器401中的各个模拟模块的执行流程为:先执行模拟模块410,然后执行模拟模块420,然后执行模拟模块430,然后执行模拟模块440,然后执行模拟模块450。也就是说,功能模拟器401基于控制流配置文件460中所配置的执行顺序来顺序地执行多个模拟模块。统一存储文件470能够统一存储各个模拟模块中的输入输出数据,为各个模拟模块提供了统一的数据对接接口,避免各个模拟模块之间的数据对接。因此,在各个模拟模块的执行过程中,从统一存储文件470读取数据并将处理结果统一写入到统一存储文件470中,直至完成所有计算过程。
继续参考图4,功能模拟器接收外部的输入405,将输入存储或缓存到统一存储文件470中,然后根据执行顺序465,模拟模块410首先从统一存储文件470读取数据,并在处理完毕之后向统一存储文件470写入相应的结果。依次地,模拟模块420从统一存储文件470读取数据然后写入执行结果,模拟模块430从统一存储文件470读取数据然后写入执行结果,模拟模块440从统一存储文件470读取数据然后写入执行结果,模拟模块450从统一存储文件470读取数据然后写入执行结果。在所有的模拟模块完成处理之后,将最终的数据从统一存储文件470输出到外部,作为输出455。
图5示出了根据本公开的实施例的用于调整模拟模块的执行顺序的示意图500。例如,可以修改控制流配置文件中的执行顺序,然后基于修改后的执行顺序,调整模拟器中的多个模拟模块的处理流程。如图5所示,当需要试验新的设计而将模拟模块430和模拟模块440的执行顺序交换时,仅需在控制流配置文件460中修改执行顺序465。接下来,功能模拟器401在运行时将根据修改后的执行顺序465来执行修改后的处理流程。因此,根据本公开的实施例,在需要调整功能模拟器401中的各个模拟模块的执行顺序时,无需修改模拟模块本身的代码或接口连接,而只需要通过控制流配置文件460进行设置,就能够任意改变功能模拟器401中的模块执行顺序,显著提高芯片模拟器的开发效率。
备选地或附加地,还可以在功能模拟器中删除和/或添加模拟模块时,在控制流配置文件中修改执行顺序。图6示出了根据本公开的实施例的用于删除模拟模块和添加模拟模块的示意图600。如图6所示,与图4和图5相比,在功能模拟器401中删除了模拟模块430、440和450,同时添加了新的模拟模块530和540(例如具有新的模拟功能的新的模拟模块)。相应地,控制流配置文件460中的执行顺序465被修改。接下来,功能模拟器401将根据更新修改后的执行顺序465来执行模拟处理过程。也即,首先执行模拟模块410,然后执行模拟模块420,然后执行模拟模块530,然后执行模拟模块540。
根据本公开的实施例,功能模拟器的各个模拟模块的开发者只需要关注自身内部模块的开发和调试,各个模拟模块可以独立于其他模拟模块,开发者仅需关心对统一存储文件的数据解析和读取,各个模拟模块从统一存储文件中读取所需的数据,然后进行计算和处理,并将结果写回统一存储文件,供后续的其他模拟模块使用。而功能模拟器的架构设计者可以任意搭建模拟器整体的框架、调整计算通路和数据处理的流程。也即,在不需要修改各个模拟模块的程序代码的情况下,架构设计者可以任意搭配各个模拟模块,例如添加、替换或删除,尝试多种方法和组合。通过这种设方式,能够有效降低功能模拟器的开发和调试工作量,加速整个芯片(如AI芯片)的设计和验证。
在一些实施例中,还可以在控制流配置文件中配置模拟器中的各个模拟模块在统一存储文件中的数据读写权限。通过这种方式,可以使得各个模拟模块仅读取一部分的数据,而不能读取或操作其他数据,保证了模拟器的安全性和可靠性。
因此,根据本公开的实施例的方法,各个模拟模块的执行顺序是可以任意组合的,这可以更好的匹配AI芯片的设计探索。由于AI算法的变化和迭代很快,并且算法中的各个模拟模块的顺序和计算关系也可灵活变化。可以任意的配置各个功能模拟器的模块,调整功能模拟器的执行顺序,满足上层应用的变化。在这个过程中,本公开的实施例的功能模拟器仅需极少的改动,有效地减少了开发和调试的工作量,能够快速帮助AI芯片验证设计的可行性。
图7示出了根据本公开的实施例的用于实现模拟器的装置700的框图。如图7所示,装置700包括第一读取模块710、第一写入模块720、第二读取模块730以及第二写入模块740。第一读取模块710被配置为从统一存储文件读取用于模拟器中的第一模拟模块的第一数据,其中第一模拟模块用于模拟芯片的第一功能,并且统一存储文件用于统一存储模拟器中的模拟模块的输入数据和输出数据。第一写入模块720被配置为向统一存储文件写入第二数据,其中第二数据基于第一模拟模块对第一数据的处理而生成。第二读取模块730被配置为从统一存储文件读取用于模拟器中的第二模拟模块的第二数据,其中第二模拟模块用于模拟芯片的第二功能,并且第二模拟模块被配置为在第一模拟模块之后运行。第二写入模块740被配置为向统一存储文件写入第三数据,其中第三数据基于第二模拟模块对第二数据的处理而生成。
在一些实施例中,其中芯片可以为用于执行加速计算任务的人工智能(AI)芯片,并且第一模拟模块和第二模拟模块分别为以下中的任一项:数据整理模块、矩阵计算模块、激活计算模块以及直接存储器访问(DMA)模块,装置700还包括验证模块,其被配置为使用模拟器来验证人工智能芯片的设计的可行性。
在一些实施例中,装置700还包括:配置模块,被配置为在控制流配置文件中配置模拟器中的多个模拟模块之间的执行顺序,其中多个模拟模块至少包括第一模拟模块和第二模拟模块;以及执行模块,被配置为基于控制流配置文件中所配置的执行顺序,顺序地执行多个模拟模块。
在一些实施例中,装置700还包括:修改模块,被配置为修改控制流配置文件中的执行顺序;以及调整模块,被配置为基于修改后的执行顺序来调整模拟器中的多个模拟模块的处理流程。
在一些实施例中,其中修改模块包括:第二修改模块,被配置为响应于在模拟器中重新配置一个或多个模拟模块,修改控制流配置文件中的执行顺序,其中重新配置包括对模拟模块的添加、删除和重新排列中的至少一项。
在一些实施例中,装置700还包括:第二配置模块,被配置为在控制流配置文件中配置模拟器中的各个模拟模块在统一存储文件中的数据读写权限。
在一些实施例中,其中第一写入模块710包括:传递模块,被配置为从第一模拟模块向统一存储文件传递第二数据,而不从第一模拟模块向第二模拟模块直接对接第二数据;以及记录模块,被配置为在统一存储文件中记录第二数据的类型、位置和大小。
在一些实施例中,装置700还包括:第三读取模块,被配置为从统一存储文件读取用于模拟器中的第三模拟模块的第三数据,其中第三模拟模块用于模拟芯片的第三功能;以及第三写入模块,被配置为向统一存储文件写入第四数据,其中第四数据基于第三模拟模块对第三数据的处理而生成。
应当理解,图7中所示出的第一读取模块710、第一写入模块720、第二读取模块730以及第二写入模块740可以被包括一个或多个电子设备中。而且,应当理解,图7中所示出的模块可以执行参考本公开的实施例的方法或过程中的步骤或动作。因此,本公开的实施例在开发芯片模拟器的过程中,各个模拟模块都与统一存储文件进行数据对接,而各个模块之间不进行数据对接,这有助于模块的任意组合和执行顺序调整,由此提高芯片模拟器的开发效率。
图8示出了可以用来实施本公开的实施例的示例设备800的示意性框图。应当理解,设备800可以用于实现本公开所描述的用于实现模拟器的装置700或电子设备。如图所示,设备800包括中央处理单元(CPU)801,其可以根据被存储在只读存储器(ROM)802中的计算机程序指令或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。CPU 801、ROM802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元801执行上文所描述的各个方法和过程,例如方法200。例如,在一些实施例中,方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由CPU801执行时,可以执行上文描述的方法的一个或多个动作或步骤。备选地,在其他实施例中,CPU 801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD),等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各动作或步骤,但是这应当理解为要求这样动作或步骤以所示出的特定次序或以顺序次序执行,或者要求所有图示的动作或步骤应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本公开的实施例,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (18)
1.一种用于实现模拟器的方法,包括:
从统一存储文件读取用于模拟器中的第一模拟模块的第一数据,所述第一模拟模块用于模拟芯片的第一功能,并且所述统一存储文件用于统一存储所述模拟器中的模拟模块的输入数据和输出数据;
向所述统一存储文件写入第二数据,所述第二数据基于所述第一模拟模块对所述第一数据的处理而生成;
从所述统一存储文件读取用于所述模拟器中的第二模拟模块的所述第二数据,所述第二模拟模块用于模拟所述芯片的第二功能,并且所述第二模拟模块被配置为在所述第一模拟模块之后运行;以及
向所述统一存储文件写入第三数据,所述第三数据基于所述第二模拟模块对所述第二数据的处理而生成。
2.根据权利要求1所述的方法,其中所述芯片为用于执行加速计算任务的人工智能(AI)芯片,并且所述第一模拟模块和所述第二模拟模块分别为以下中的任一项:数据整理模块、矩阵计算模块、激活计算模块以及直接存储器访问(DMA)模块,所述方法还包括:
使用所述模拟器来验证所述人工智能芯片的设计的可行性。
3.根据权利要求1所述的方法,还包括:
在控制流配置文件中配置所述模拟器中的多个模拟模块之间的执行顺序,所述多个模拟模块至少包括所述第一模拟模块和所述第二模拟模块;以及
基于所述控制流配置文件中所配置的执行顺序,顺序地执行所述多个模拟模块。
4.根据权利要求3所述的方法,还包括:
修改所述控制流配置文件中的所述执行顺序;以及
基于修改后的执行顺序,调整所述模拟器中的多个模拟模块的处理流程。
5.根据权利要求4所述的方法,其中修改所述控制流配置文件中的所述执行顺序包括:
响应于在所述模拟器中重新配置一个或多个模拟模块,修改所述控制流配置文件中的所述执行顺序,所述重新配置包括对模拟模块的添加、删除和重新排列中的至少一项。
6.根据权利要求3所述的方法,还包括:
在所述控制流配置文件中配置所述模拟器中的各个模拟模块在所述统一存储文件中的数据读写权限。
7.根据权利要求1所述的方法,其中向所述统一存储文件写入第二数据包括:
从所述第一模拟模块向所述统一存储文件传递所述第二数据,而不从所述第一模拟模块向所述第二模拟模块直接对接所述第二数据;以及
在所述统一存储文件中记录所述第二数据的类型、位置和大小。
8.根据权利要求1所述的方法,还包括:
从所述统一存储文件读取用于所述模拟器中的第三模拟模块的所述第三数据,所述第三模拟模块用于模拟所述芯片的第三功能;以及
向所述统一存储文件写入第四数据,所述第四数据基于所述第三模拟模块对所述第三数据的处理而生成。
9.一种用于实现模拟器的装置,包括:
第一读取模块,被配置为从统一存储文件读取用于模拟器中的第一模拟模块的第一数据,所述第一模拟模块用于模拟芯片的第一功能,并且所述统一存储文件用于统一存储所述模拟器中的模拟模块的输入数据和输出数据;
第一写入模块,被配置为向所述统一存储文件写入第二数据,所述第二数据基于所述第一模拟模块对所述第一数据的处理而生成;
第二读取模块,被配置为从所述统一存储文件读取用于所述模拟器中的第二模拟模块的所述第二数据,所述第二模拟模块用于模拟所述芯片的第二功能,并且所述第二模拟模块被配置为在所述第一模拟模块之后运行;以及
第二写入模块,被配置为向所述统一存储文件写入第三数据,所述第三数据基于所述第二模拟模块对所述第二数据的处理而生成。
10.根据权利要求9所述的装置,其中所述芯片为用于执行加速计算任务的人工智能(AI)芯片,并且所述第一模拟模块和所述第二模拟模块分别为以下中的任一项:数据整理模块、矩阵计算模块、激活计算模块以及直接存储器访问(DMA)模块,所述装置还包括:
验证模块,被配置为使用所述模拟器来验证所述人工智能芯片的设计的可行性。
11.根据权利要求9所述的装置,还包括:
配置模块,被配置为在控制流配置文件中配置所述模拟器中的多个模拟模块之间的执行顺序,所述多个模拟模块至少包括所述第一模拟模块和所述第二模拟模块;以及
执行模块,被配置为基于所述控制流配置文件中所配置的执行顺序,顺序地执行所述多个模拟模块。
12.根据权利要求11所述的装置,还包括:
修改模块,被配置为修改所述控制流配置文件中的所述执行顺序;以及
调整模块,被配置为基于修改后的执行顺序来调整所述模拟器中的多个模拟模块的处理流程。
13.根据权利要求12所述的装置,其中所述修改模块包括:
第二修改模块,被配置为响应于在所述模拟器中重新配置一个或多个模拟模块,修改所述控制流配置文件中的所述执行顺序,所述重新配置包括对模拟模块的添加、删除和重新排列中的至少一项。
14.根据权利要求11所述的装置,还包括:
第二配置模块,被配置为在所述控制流配置文件中配置所述模拟器中的各个模拟模块在所述统一存储文件中的数据读写权限。
15.根据权利要求9所述的装置,其中所述第一写入模块包括:
传递模块,被配置为从所述第一模拟模块向所述统一存储文件传递所述第二数据,而不从所述第一模拟模块向所述第二模拟模块直接对接所述第二数据;以及
记录模块,被配置为在所述统一存储文件中记录所述第二数据的类型、位置和大小。
16.根据权利要求9所述的装置,还包括:
第三读取模块,被配置为从所述统一存储文件读取用于所述模拟器中的第三模拟模块的所述第三数据,所述第三模拟模块用于模拟所述芯片的第三功能;以及
第三写入模块,被配置为向所述统一存储文件写入第四数据,所述第四数据基于所述第三模拟模块对所述第三数据的处理而生成。
17.一种电子设备,所述电子设备包括:
一个或多个处理器;以及
存储装置,其用于存储一个或多个程序,所述一个或多个程序当被所述一个或多个处理器执行,使得所述电子设备实现根据权利要求1-8中任一项所述的方法。
18.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现根据权利要求1-8中任一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910364810.8A CN111950219A (zh) | 2019-04-30 | 2019-04-30 | 用于实现模拟器的方法、装置、设备以及介质 |
US16/708,931 US20200349304A1 (en) | 2019-04-30 | 2019-12-10 | Method, apparatus, device, and medium for implementing simulator |
EP19215147.0A EP3734491A1 (en) | 2019-04-30 | 2019-12-11 | Method, apparatus, device, and medium for implementing simulator |
KR1020200003283A KR102325612B1 (ko) | 2019-04-30 | 2020-01-09 | 시뮬레이터를 구현하는 방법, 장치, 기기 및 매체 |
JP2020003208A JP7101709B2 (ja) | 2019-04-30 | 2020-01-10 | シミュレータを実現するための方法、装置、デバイス及び媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910364810.8A CN111950219A (zh) | 2019-04-30 | 2019-04-30 | 用于实现模拟器的方法、装置、设备以及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111950219A true CN111950219A (zh) | 2020-11-17 |
Family
ID=69063600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910364810.8A Pending CN111950219A (zh) | 2019-04-30 | 2019-04-30 | 用于实现模拟器的方法、装置、设备以及介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20200349304A1 (zh) |
EP (1) | EP3734491A1 (zh) |
JP (1) | JP7101709B2 (zh) |
KR (1) | KR102325612B1 (zh) |
CN (1) | CN111950219A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116909487A (zh) * | 2023-09-05 | 2023-10-20 | 北京智芯微电子科技有限公司 | 数据读写方法、芯片、嵌入式微控制器和智能终端设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1040133A (ja) * | 1996-07-18 | 1998-02-13 | Mitsubishi Electric Corp | ソフトウェアシミュレータ |
US20040204892A1 (en) * | 2003-03-26 | 2004-10-14 | Sweet James D. | Testing of integrated circuits from design documentation |
WO2005050387A2 (en) * | 2003-11-13 | 2005-06-02 | Qualcomm Incorporated | Dynamic simulation in a computing device |
US20140075092A1 (en) * | 2012-09-11 | 2014-03-13 | International Business Machines Corporation | Simulating eeprom in virtual distributed switches |
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 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04363730A (ja) * | 1991-06-11 | 1992-12-16 | Hitachi Ltd | シミュレーション実行手段 |
US7231334B2 (en) * | 2002-04-18 | 2007-06-12 | International Business Machines Corporation | Coupler interface for facilitating distributed simulation of a partitioned logic design |
US20040158443A1 (en) * | 2003-02-11 | 2004-08-12 | Texas Instruments Incorporated | Functional verification using heterogeneous simulators |
JP4268830B2 (ja) * | 2003-05-14 | 2009-05-27 | 富士通株式会社 | アーキテクチャのシミュレーションシステム及びシミュレーション方法 |
GB0424501D0 (en) * | 2004-11-05 | 2004-12-08 | Ricardo Uk Ltd | Co-simulation apparatus and method |
JP2007004216A (ja) | 2005-06-21 | 2007-01-11 | Fuji Xerox Co Ltd | 情報管理装置及び情報管理方法、並びにコンピュータ・プログラム |
US8943450B1 (en) * | 2013-10-11 | 2015-01-27 | Cadence Design Systems, Inc. | Model based analog block coverage system |
WO2017009956A1 (ja) * | 2015-07-14 | 2017-01-19 | 株式会社日立製作所 | シミュレータ、半導体回路装置の設計支援システムおよび方法 |
-
2019
- 2019-04-30 CN CN201910364810.8A patent/CN111950219A/zh active Pending
- 2019-12-10 US US16/708,931 patent/US20200349304A1/en not_active Abandoned
- 2019-12-11 EP EP19215147.0A patent/EP3734491A1/en active Pending
-
2020
- 2020-01-09 KR KR1020200003283A patent/KR102325612B1/ko active IP Right Grant
- 2020-01-10 JP JP2020003208A patent/JP7101709B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1040133A (ja) * | 1996-07-18 | 1998-02-13 | Mitsubishi Electric Corp | ソフトウェアシミュレータ |
US20040204892A1 (en) * | 2003-03-26 | 2004-10-14 | Sweet James D. | Testing of integrated circuits from design documentation |
WO2005050387A2 (en) * | 2003-11-13 | 2005-06-02 | Qualcomm Incorporated | Dynamic simulation in a computing device |
US20140075092A1 (en) * | 2012-09-11 | 2014-03-13 | International Business Machines Corporation | Simulating eeprom in virtual distributed switches |
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 |
Non-Patent Citations (2)
Title |
---|
王海晟;楼文晓;: "嵌入式软件模拟测试平台的设计与实现技术", 计算机工程, no. 15 * |
路放;安虹;梁博;任建;: "OpenSMT:一个同时多线程处理器模拟器的设计和实现", 计算机科学, no. 01 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116909487A (zh) * | 2023-09-05 | 2023-10-20 | 北京智芯微电子科技有限公司 | 数据读写方法、芯片、嵌入式微控制器和智能终端设备 |
CN116909487B (zh) * | 2023-09-05 | 2024-01-23 | 北京智芯微电子科技有限公司 | 数据读写方法、芯片、嵌入式微控制器和智能终端设备 |
Also Published As
Publication number | Publication date |
---|---|
JP2020184301A (ja) | 2020-11-12 |
EP3734491A1 (en) | 2020-11-04 |
JP7101709B2 (ja) | 2022-07-15 |
US20200349304A1 (en) | 2020-11-05 |
KR102325612B1 (ko) | 2021-11-15 |
KR20200126888A (ko) | 2020-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022036889A (ja) | チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム | |
CN113032195A (zh) | 芯片仿真验证方法、系统、设备及存储介质 | |
KR20210149045A (ko) | 인공 지능 칩 검증 | |
US8108745B2 (en) | On-device constrained random verification for device development | |
US11010505B2 (en) | Simulation of virtual processors | |
US20170115969A1 (en) | System and method for automatically generating device drivers for run time environments | |
US20060130029A1 (en) | Programming language model generating apparatus for hardware verification, programming language model generating method for hardware verification, computer system, hardware simulation method, control program and computer-readable storage medium | |
US10606970B2 (en) | Selection of corners and/or margins using statistical static timing analysis of an integrated circuit | |
US9141501B2 (en) | Firmware generated register file for use in hardware validation | |
US10671785B1 (en) | Framework for reusing cores in simulation | |
CN113779912B (zh) | 一种芯片验证系统、方法、装置、电子设备及存储介质 | |
US7437282B2 (en) | Method and apparatus to provide alternative stimulus to signals internal to a model actively running on a logic simulation hardware emulator | |
CN110941934A (zh) | 一种fpga原型验证开发板分割仿真系统、方法、介质及终端 | |
US20130024178A1 (en) | Playback methodology for verification components | |
US7266791B2 (en) | High level synthesis device, method for generating a model for verifying hardware, method for verifying hardware, control program, and readable recording medium | |
CN114970411A (zh) | 一种仿真验证方法及系统 | |
CN116956790A (zh) | 一种仿真验证方法、装置、设备及介质 | |
US6879948B1 (en) | Synchronization of hardware simulation processes | |
US10929584B1 (en) | Environmental modification testing for design correctness with formal verification | |
CN111950219A (zh) | 用于实现模拟器的方法、装置、设备以及介质 | |
US10409624B1 (en) | Data array compaction in an emulation system | |
CN113204939A (zh) | 一种全芯片仿真验证方法 | |
CN110321574B (zh) | 一种打印波形的方法和装置 | |
CN115510782B (zh) | 定位验证错误的方法、电子设备和存储介质 | |
US20220300690A1 (en) | Incremental compilation for fpga-based systems |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211018 Address after: 2 / F, baidu building, 10 Shangdi 10th Street, Haidian District, Beijing 100094 Applicant after: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd. Applicant after: Kunlun core (Beijing) Technology Co.,Ltd. Address before: 2 / F, baidu building, 10 Shangdi 10th Street, Haidian District, Beijing 100094 Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd. |