CN102156774B - 建模和仿真方法 - Google Patents
建模和仿真方法 Download PDFInfo
- Publication number
- CN102156774B CN102156774B CN201110082273.1A CN201110082273A CN102156774B CN 102156774 B CN102156774 B CN 102156774B CN 201110082273 A CN201110082273 A CN 201110082273A CN 102156774 B CN102156774 B CN 102156774B
- Authority
- CN
- China
- Prior art keywords
- assembly
- instructions
- computer program
- entity
- modeling
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Abstract
一种用于对系统进行建模和仿真的方法,其中该系统包括相互联系的第一组件(X)和第二组件(Y)。该方法包括:使用第一说明书和第二说明书对所述第一组件(X)和第二组件(Y)的行为进行建模。所述第一说明书和第二说明书的每一个都包括功能说明书和相关联的仿真元件(82)。该方法进一步包括:使用所述第一说明书和第二说明书对所述第一组件和第二组件的行为进行仿真。仿真元件(82)彼此通信,以提供仿真系统。
Description
相关申请
本申请是国际申请日为2007年1月18日、于2008年8月28日进入中国国家阶段、中国申请号为200780007066.1的PCT国际专利申请的分案申请。
技术领域
本发明涉及建模和仿真方法。
背景技术
建立系统模型并使用仿真过程来证实该模型在预定条件下的行为是已知的。该系统可以包括两个或多于两个相互联系的组件。很多建模方法是公知的,并且所选择的具体方法通常由将要建模的系统需求确定的。
建模和仿真方法的一种具体应用是:在构造原型系统之前,对计算机硬件系统进行建模和仿真。由于开发原型计算机硬件系统中涉及的时间和开销,这样做是有利的。这种建模和仿真可以充分地减少在达到最终设计之前所需的设计迭代的数量。此外,由于建模和仿真能够在设计周期的早期识别出问题,所以建模和仿真可以增大最终系统按照预期进行操作的可能性。一旦建模和仿真过程证实了被建模的系统表现出了所需的行为,则计算机硬件设计者将可以确信:构建可证明与该模型相同的系统实现将得到预期结果。
已知:在设计计算机硬件系统期间,可以在各种抽象层考虑该计算机硬件系统。此外,可以在各种抽象层对计算机硬件系统进行建模和仿真。例如,建模通常开始于以自然语言(例如,英语)编写的系统说明书。随后,在此说明书的基础上创建架构和性能模型。这种模型通常通过高级计算机编程语言(例如,C++)创建。架构和性能模型用来验证系统的架构设计,以及评价各种设计特征的性能。在此建模阶段,可以根据架构和性能建模的结果对系统说明书进行修改。一旦完成此过程,便通过自然语言来创建系统各个组件的单元说明书,并且将这些单元说明书转化成以硬件描述语言(HDL)(诸如VHDL或者Verilog)编写的说明书,从而允许在较低抽象层(例如,寄存器传输层(RTL))的建模。
上述系统说明书附有根据该系统说明书创建的适当系统测试,以验证系统的行为。还是根据该系统说明书创建的单元测试被用以使用仿真过程来验证各个组件的行为。传统上,这种仿真在单个抽象层(例如RTL)处执行。由于这种仿真在对任何组件进行仿真之前都需要针对所有组件完成详细的RTL设计,所以其显然是不利的。根据上述系统说明书来生成单元说明书以及创建适当测试是手动执行的。单元说明书的这种手动生成是耗时且容易出错的。此外,在RTL处测试整个系统在创建测试数据和仿真两方面都是非常耗时的。
在试图解决这些问题的方案中,已经使用编程语言(诸如,VHDL和C++)所提供的高级特征来尝试在较高的抽象层进行建模。然而,遇到了重大问题,因为这种高层建模无法直接连接到RTL模型。在不同抽象层建模的组件之间手动创建转换器通常被证明是至少与创建较低层模型本身一样复杂并且容易出错的任务。
自动化对系统组件在不同抽象层(例如,系统层和RTL)制定的系统进行仿真的过程是已知的。公开号为EP 1,517,254的欧洲专利申请描述了一种用于对系统内相互联系的第一组件和第二组件的行为进行仿真的方法。所描述的方法包括:使用第一功能说明书和第二功能说明书对组件的行为进行建模,以及在预定的环境中对该组件进行仿真。被建模的组件可以处于不同的抽象层。
EP 1,517,254描述了这样的系统,其中组件完全通过软件进行建模。然而,在多层建模中,仿真速度受限于最低层组件的仿真速度。这是因为:由于在低层模型内包含大量细节,所以与较高行为层相比,在较低抽象层(例如,RTL)对单个组件进行仿真的计算代价很大。此外,现有仿真系统(例如,在EP 1,517,254中描述的)需要单独的仿真器来管理所有建模组件的仿真过程。尽管这代表大量计算上的开销,但是管理单独的建模组件对于计算资源的冲突需求,单独的仿真器是必要的。
使用单个组件的低层HDL模型来对可编程计算设备进行编程以便通过硬件来实现该模型是已知的。在此使用的术语“可编程计算设备”可以是单个可编程芯片。可选地,可编程计算设备可以包括多个互连的可编程芯片。此外,可编程计算设备可以包括模拟器盒(emulator box);除了一个或多个可编程芯片以外,该模拟器盒可以替代地或者附加地包括处理元件。HDL模型确定可编程计算设备的行为。可编程计算设备可以在仿真过程中使用,以加速整个系统的仿真。然而,已经证实:这仅在建模系统的所有组件是在同一低层被建模时才是有效的。这归因于在将高层软件模型与低层硬件模型对接时遇到的问题。
在建模系统中,如果某些组件在低抽象层处以硬件实现而某些组件在高抽象层处以软件实现,则需要开发高层软件模型和低层硬件模型之间的转换器。这种转换器可以通过软件实现。然而,这通常会在被仿真的系统中造成瓶颈。该瓶颈部分归因于在信息传递到在低抽象层建模的硬件组件时需要从软件向硬件传递大量信息。另外,瓶颈可能由在软件和硬件之间通信时出现的大量离散通信引起。离散通信在每次事务(transaction)的开始和结束时出现。每次事务可以跨越多个周期。即使在高层软件组件和低层硬件组件之间传输的信息总量与在这两种组件都通过软件实现时相同,对软件组件和硬件组件进行同步的开销也会降低交换信息的速度。
实现软件组件模型和硬件中的硬件组件模型之间的转换器是已知的。这种转换器实现在与硬件组件模型相同的可编程计算设备中,或者实现在与每个硬件组件模型相同的可编程计算设备中。这是有利的,因为其允许在高抽象层处在软件和硬件之间传输数据,从而减小了需要传输的数据总量。这还有利地减小了在硬件组件和软件组件之间的数据交换同步所引起的瓶颈。
硬件转换器将数据转换成低层硬件模型所需的低抽象层。然而,迄今为止,这种硬件转换器是手动实现的。这是费力且容易出错的过程。当部分系统在高层(例如,系统层)通过软件规定和建模而部分系统在低层(例如,RTL)通过硬件规定和建模时,不存在能够自动地、准确地对系统进行仿真的已知方法。
发明内容
本发明实施方式的目的在于:消除或减轻现有技术中的一个或多个问题,无论这些问题是在此处还是别处标识的。
根据本发明的第一方面,提供了一种用于对系统进行建模和仿真的方法,其中所述系统包括相互联系的第一组件和第二组件,所述方法包括:使用第一说明书和第二说明书对所述第一组件和第二组件的行为进行建模,所述第一说明书和第二说明书的每一个都包括功能说明书和相关联的仿真元件;以及使用所述第一说明书和第二说明书对所述第一组件和第二组件的所述行为进行仿真;其中所述仿真元件彼此通信以提供仿真系统。
本发明的第一方面的优势在于:仿真元件共同形成了分布式仿真系统,该分布式仿真系统控制所述硬件实现的组件的仿真。在本发明的某些实施方式中,通过使分布式仿真系统包括将要仿真的组件内的元件,不需要具有负责控制硬件实现元件的仿真的单独实体。
所述仿真系统可以管理代表所述第一组件和第二组件的所述第一说明书和第二说明书之间的通信。
所述仿真系统可以确定代表所述第一组件和第二组件的所述第一说明书和第二说明书处理事件的顺序。
所述仿真步骤可以进一步包括:将相互联系的实体的分级内的至少一个第一实体实例化,所述至少一个第一实体由所述第一功能说明书和第二功能说明书中的至少一个定义。
所述方法可以进一步包括:响应于所述或者每一个实例化的第一实体而将至少一个另外的实体实例化,所述或者每一个另外的实体由所述第一功能说明书和第二功能说明书中的至少一个定义,并且所述或者每一个另外的实体由所述仿真系统基于其与所述至少一个第一实体的分级关系来选择。
所述第一组件和第二组件可以由相互联系的实体的所述分级中的相应实体来代表,并且创建所述相应实体的实例。
所述至少一个另外的实体可以是相互联系的实体的所述分级中的、所述至少一个第一实体的父实体。可选地,所述至少一个另外的实体可以是相互联系的实体的所述分级中的、所述至少一个第一实体的子实体。
可以对所述分级内的实体进行实例化以代表在所述第一组件和第二组件之间传输的数据,并且对代表所述第一组件和第二组件的所述第一说明书和第二说明书之间的通信进行建模。
所述第一组件可以在比所述第二组件更高的抽象层处建模,并且所述方法包括:使用所述分级来提供所述第一组件和第二组件之间的所述关系的细节。
所述实体之间的分级关系可以根据所述第一功能说明书和第二功能说明书中的至少一个得出。
可以将所述第一说明书和第二说明书规定为以第一计算机编程语言编写的第一计算机程序。所述方法可以进一步包括通过第一计算机程序来规定所述第一说明书和第二说明书之间的关系。
所述方法可以进一步包括处理所述第一计算机程序,以生成第二计算机程序。所述处理将所述第一计算机程序从所述第一计算机编程语言转换成第二计算机编程语言。所述第二计算机编程语言可以是VHDL或者Verilog。
所述方法可以进一步包括:基于所述第二计算机程序通过硬件来生成所述第一组件和第二组件的实现。
所述处理可以包括:将附加的计算机代码插入所述第二计算机程序,所述附加的计算机代码实现所述或者每一个仿真元件。
所述方法可以进一步包括:处理所述第一计算机程序,以生成第二计算机程序和第三计算机程序。所述处理将所述第一计算机程序从所述第一计算机编程语言分别转换成第二计算机编程语言和第三计算机编程语言。所述第二计算机编程语言可以是VHDL或者Verilog,并且所述第三计算机编程语言可以是C或者C++。所述第一组件可以通过硬件实现,而所述第二组件可以通过软件实现。
所述方法可以进一步包括:使用至少一个另外的功能说明书对至少一个另外的组件的行为进行建模;基于所述至少一个另外的功能说明书通过软件生成所述至少一个另外的组件的实现;以及使用所述至少一个另外的功能说明书来对所述至少一个另外的组件的行为进行仿真。
所述方法可以进一步包括提供由软件实现的仿真系统的步骤,以用于管理所述第一组件和第二组件与所述至少一个另外的组件之间的通信。
所述方法可以进一步包括:代表所述第一组件和第二组件的所述第一说明书和第二说明书试图经由所述软件实现的仿真系统并经由代表其他通过硬件实现的组件的其他说明书来同时与另外的组件进行通信。
所述第二计算机程序包括有限状态机的实现,所述有限状态机被配置为:响应于所述仿真,在较低分级层的至少一个实体基础上、在较高分级层对实体进行实例化。
所述第二计算机程序包括有限状态机的实现,所述有限状态机被配置为:响应于所述仿真,在较高分级层的至少一个实体基础上、在较低分级层对实体进行实例化。
所述第二计算机程序包括有限状态机的实现,所述有限状态机被配置为:响应于所述仿真,分别在较低分级层或较高分级层的至少一个实体基础上、在较高分级层和较低分级层二者对实体进行实例化。
根据本发明第二方面,提供了一种可编程计算设备,包括:存储装置,其存储第一说明书和第二说明书,所述第一说明书和第二说明书分别对第一组件和第二组件的行为进行建模,并且所述第一说明书和第二说明书的每一个都包括功能说明书和仿真元件;处理装置,其被配置为使用所述第一说明书和第二说明书对所述第一组件和第二组件的行为进行仿真;其中所述仿真元件被配置为彼此通信以提供仿真系统。
根据本发明第三方面,提供了一种用于对系统进行建模和仿真的装置,其中所述系统包括相互联系的第一组件和第二组件,所述装置包括:建模装置,用于使用第一说明书和第二说明书对所述第一组件和第二组件的行为进行建模,所述第一说明书和第二说明书的每一个都包括功能说明书和相关联的仿真元件;以及仿真装置,用于使用所述第一说明书和第二说明书对所述第一组件和第二组件的行为进行仿真;其中所述仿真元件被配置为彼此通信以提供仿真系统。
根据本发明的第四方面,提供了一种用于对包括组件的系统进行建模和仿真的方法,所述方法包括:使用第一计算机程序中规定的说明书来对所述组件的行为进行建模,其中所述第一计算机程序以第一计算机编程语言编写;处理所述第一计算机程序以生成第二计算机程序;基于所述第二计算机程序来生成所述组件的实现;以及对实体的分级内的第一实体进行实例化,以此来使用所生成的实现对所述组件的行为进行仿真;其中所述第二计算机程序包括有限状态机的实现,所述有限状态机被配置为响应于所述仿真而在实体的所述分级内的较高层和较低层二者处对实体进行实例化。
本发明的第四方面的优势在于:通过将单个组件配置为在实体的分级内的较高层和较低层处对实体进行实例化,降低了建模和仿真系统的复杂度。
所述系统可以至少包括相互联系的第一组件和第二组件,每个说明书包括功能说明书和相关联的仿真元件,其中所述仿真元件彼此通信以提供仿真系统。
所述仿真系统可以实现所述有限状态机。
所述仿真系统可以管理代表所述第一组件和第二组件的所述第一说明书和第二说明书之间的通信。
所述仿真系统可以确定所述第一组件和第二组件处理事件的顺序。
所述方法可以进一步包括:响应于所述或者每一个实例化的第一实体而将至少一个另外的实体实例化,所述或者每一个另外的实体由所述第一功能说明书和第二功能说明书中的至少一个定义,并且所述或者每一个另外的实体由所述仿真系统基于其与所述第一实体的分级关系来选择。
所述第一组件和第二组件可以由相互联系的实体的所述分级中的相应实体代表,并且创建所述相应实体的实例。所述至少一个另外的实体可以是相互联系的实体的所述分级中的、所述至少一个第一实体的父实体。所述至少一个另外的实体可以是相互联系的实体的所述分级中的、所述至少一个第一实体的子实体。
可以将所述预定分级内的实体进行实例化以代表在代表所述第一组件和第二组件的所述第一说明书和第二说明书之间传输的数据,并且对所述第一组件和第二组件之间的通信进行建模。
所述第一组件可以在比所述第二组件更高的抽象层处建模,并且所述方法包括:使用所述分级来提供所述第一组件和第二组件之间的所述关系的细节。
所述实体之间的分级关系可以是根据所述第一功能说明书和第二功能说明书中的至少一个得出的。
所述处理可以将所述第一计算机程序从所述第一计算机编程语言转换成第二计算机编程语言。所述第二计算机编程语言可以是VHDL或者Verilog。
所述方法可以进一步包括:基于所述第二计算机程序通过硬件来生成所述第一组件和第二组件的实现。
所述处理可以包括:将附加的计算机代码插入所述第二计算机程序,所述附加的计算机代码实现所述或者每一个仿真元件。
根据本发明的第五方面,提供了一种可编程计算设备,包括:存储装置,其存储说明书,所述说明书对组件的行为进行建模,并且所述说明书在第一计算机程序中规定;第一处理装置,其被配置为处理所述第一计算机程序以生成第二计算机程序;生成装置,其被配置为基于所述第二计算机程序来生成所述组件的实现;以及第二处理装置,其被配置为对实体的分级内的第一实体进行实例化,以此来使用所生成的实现对所述组件的行为进行仿真;其中所述第二计算机程序包括有限状态机的实现,所述有限状态机被配置为响应于所述仿真而在实体的所述分级内的较高层和较低层二者处对实体进行实例化。
根据本发明的第六方面,提供了一种用于对包含组件的系统进行建模和仿真的装置,所述装置包括:建模装置,用于使用第一计算机程序中规定的说明书来对所述组件的行为进行建模,其中所述第一计算机程序以第一计算机编程语言编写;处理装置,用于处理所述第一计算机程序以生成第二计算机程序;生成装置,用于基于所述第二计算机程序来生成所述组件的实现;以及仿真装置,用于对实体的分级内的第一实体进行实例化,以此来使用所生成的实现对所述组件的行为进行仿真;其中所述第二计算机程序包括有限状态机的实现,所述有限状态机被配置为响应于所述仿真而在实体的所述分级内的较高层和较低层二者处对实体进行实例化。
根据本发明的第七方面,提供了一种用于对系统进行建模和仿真的方法,其中所述系统包括相互联系的第一组件和第二组件,所述方法包括:使用第一计算机编程语言的计算机程序中所规定的第一说明书和第二说明书来对所述第一组件和第二组件的行为进行建模;处理所述计算机程序,以分别生成第二计算机编程语言的第二计算机程序和第三计算机编程语言的第三计算机程序;基于所述第二计算机程序,通过硬件来生成所述第一组件的实现;基于所述第三计算机程序,通过软件生成所述第二组件的实现;以及分别使用所述第一组件的所生成的实现和所述第二组件的所生成的实现来对所述第一组件和第二组件的行为进行仿真。
本发明的第七方面的优势在于:通过以硬件和软件生成组件的实现以及在第一编程语言的单个计算机程序中规定组件,可以提高第一计算机程序的仿真速度。这是因为,通过以硬件来实现系统的某些组件,仿真速度可以提高,而不需要将这些组件与通过软件实现的系统其余部分分开规定。
所述第一说明书可以包括功能说明书和相关联的仿真元件,并且其中所述仿真元件被布置为彼此通信以提供仿真系统,所述方法进一步包括提供软件实现的仿真系统,以用于管理代表所述第二组件的所述说明书和至少一个另外的组件之间的通信。
所述仿真系统可以管理代表所述第一组件和第二组件的所述第一说明书和第二说明书之间的通信。
所述仿真系统可以确定代表所述第一组件和第二组件的所述第一说明书和第二说明书处理事件的顺序。
所述仿真可以进一步包括:将相互联系的实体的分级内的至少一个第一实体实例化,所述至少一个第一实体由所述第一功能说明书和第二功能说明书中的至少一个定义。
所述方法可以进一步包括:响应于所述或者每一个实例化的第一实体而将至少一个另外的实体实例化,所述或者每一个另外的实体由所述第一功能说明书和第二功能说明书中的至少一个定义,并且所述或者每一个另外的实体由所述仿真系统基于其与所述至少一个第一实体的分级关系来选择。
所述第一组件和第二组件由相互联系的实体的所述分级中的相应实体代表,并且创建所述相应实体的实例。
所述至少一个另外的实体可以是相互联系的所述实体的分级中的、所述至少一个第一实体的父实体。可选地,所述至少一个另外的实体可以是相互联系的实体的所述分级中的、所述至少一个第一实体的子实体。
可以对所述分级内的实体进行实例化以代表在代表所述第一组件和第二组件的所述第一说明书和第二说明书之间传输的数据,并且对所述第一组件和第二组件之间的通信进行建模。
所述第一组件可以在比所述第二组件更高的抽象层处建模,并且所述方法包括:使用所述分级来提供所述第一组件和第二组件之间的所述关系的细节。
所述实体之间的分级关系可以根据所述第一说明书和第二说明书中的至少一个得出。
所述处理可以包括:将附加的计算机代码插入所述第二计算机程序和第三计算机程序,所述附加的计算机代码实现所述或者每一个仿真元件。
所述第二计算机编程语言可以是VHDL或者Verilog,并且所述第三计算机编程语言可以是C或者C++。
根据本发明的第八方面,提供了一种可编程计算设备,包括:存储装置,其存储第一说明书和第二说明书,所述第一说明书和第二说明书分别对第一组件和第二组件的行为进行建模,所述第一说明书和第二说明书在第一计算机编程语言的计算机程序中规定;处理装置,其被配置用于处理所述计算机程序,以分别生成第二计算机编程语言的第二计算机程序和第三计算机编程语言的第三计算机程序;第一生成装置,其被配置用于基于所述第二计算机程序通过硬件来生成所述第一组件的实现;第二生成装置,其被配置用于基于所述第三计算机程序通过软件生成所述第二组件的实现;以及仿真装置,其被配置用于分别使用所述第一组件的所生成的实现和所述第二组件的所生成的实现来对所述第一组件和第二组件的行为进行仿真。
根据本发明的第九方面,提供了一种用于对包含多个组件的系统进行建模和仿真的装置,所述装置包括:建模装置,用于使用第一计算机编程语言的计算机程序中所规定的第一说明书和第二说明书来对第一组件和第二组件的行为进行建模;处理装置,用于处理所述计算机程序,以分别生成第二计算机编程语言的第二计算机程序和第三计算机编程语言的第三计算机程序;第一生成装置,用于基于所述第二计算机程序通过硬件来生成所述第一组件的实现;第二生成装置,用于基于所述第三计算机程序在通过软件生成所述第二组件的实现;以及仿真装置,用于分别使用所述第一组件的所生成的实现和所述第二组件的所生成的实现来对所述第一组件和第二组件的行为进行仿真。
根据本发明的第十方面,提供了一种承载介质,其承载用于控制计算机来执行上述任意方法的计算机可读代码。
根据本发明的第十一方面,提供了一种用于对系统进行建模和仿真的计算机装置,所述装置包括:程序存储器,其存储处理器可读的指令;以及处理器,其被配置为读取并执行存储在所述程序存储器中的指令;其中所述处理器可读指令包括控制所述处理器来执行上述任意方法的指令。
此处使用的术语“通过硬件实现”意在表示使用组件的HDL模型来对可编程计算设备进行编程。此处使用的术语“通过软件实现”表示在计算机装置上运行的软件中的通过计算机编程语言编写的模块实现。
附图说明
现在将参照附图仅通过示例的方式来描述本发明的实施方式,其中:
图1示意性地描述了现有技术中用于在不同抽象层对系统的组件进行建模的建模过程;
图2示意性地描述了适用于在本发明的实施方式中使用的协议树;
图3示意性地描述了根据本发明实施方式的用于建模和仿真方法的编译过程;
图4示意性地描述了根据本发明实施方式的适于在建模和仿真系统中使用的抽象层的简化分级;
图5示意性地描述了根据本发明实施方式的适于在不同抽象层对相互联系的组件进行建模的建模和仿真系统;
图6示意性地描述了根据本发明实施方式的适于对通过硬件和软件实现的相互联系的组件进行建模的建模和仿真系统;
图7示意性地描述了根据本发明另一实施方式的适用于对通过硬件和软件实现的相互联系的组件进行建模的建模和仿真系统;
图8示意性地描述了根据本发明实施方式的通过硬件和软件实现的被建模组件之间的差别;
图9示意性地描述了根据本发明实施方式的通过硬件实现的两个相互联系的组件;
图10示意性地描述了根据本发明实施方式的建模和仿真系统;
图11示意性地描述了根据本发明另一实施方式的建模和仿真系统。
具体实施方式
参照图1,示出了本领域中已知的建模过程,其中不同的系统组件在不同的抽象层规定。通过公知为CY的编程语言在相对较高的层规定系统模型1。尽管现有技术和本发明的实施方式使用CY进行描述,但是对于本领域技术人员而言,可以按照类似的方式使用可选的编程语言。系统的其他组件在较低的抽象层规定。例如,分别使用系统C和VHDL将两个组件规定为行为模型2和行为模型3。类似地,分别使用VHDL和Verilog在RTL处规定两个另外的组件4和5。应当理解,每种编程语言都可以由可选的编程语言来替换。
图1由此包含了处于不同抽象层的大量模型。这些模型被同时仿真。模型之间的交互由接口6、7和8来定义,这些接口也由计算机语言CY规定。
在图1中描述的现有技术的建模和仿真方法中,通过CY规定了多层模型。此CY模型继而被编译成可以被仿真的格式。编译器将CY代码转换成能够被传递到仿真器的形式的C++。仿真过程可以用来在不同抽象层对组件进行建模。图1的建模和仿真方法完全通过软件实现。
如上所述,期望能够在不同的抽象层对系统的不同组件进行仿真,其中某些组件通过软件来建模和实现,而某些组件通过硬件来建模和实现。
协议树涉及不同抽象层的对象的相关方式。图2中示出了适于按照本发明的实施方式使用的协议树,其包括在该协议树中规定的关系。每个对象A、B、W、X、Y和Z可以表示所建模的系统组件、组件之间传递的数据、组件完成的动作或者任何其他类型的信息。所示对象A有两个孩子,W和X。反之,A是W和X的父亲。对象A是处于相对较高抽象层的组件模型。W和X是处于相对较低抽象层的组件模型。W和X一起完整地定义了组件A。也即,在操作中,W和X提供了其父亲的所有功能。类似地,组件B有两个孩子Y和Z(B是Y和Z二者的父亲)。
现在参照图3,其描述根据本发明实施方式的用于建模和仿真方法的编译过程。以编程语言CY创建模型说明书30。该说明书30通过编译器31,该编译器31将CY代码转换成至少一个另外的编程语言。另外的编程语言取决于独立的组件是通过硬件还是通过软件来建模和实现。经过编译的代码基本上包括五个组件。
第一组件32包括功能算法,这些功能算法定义了被建模的组件如何操作。功能算法32定义了被建模的系统内的模型功能。此功能可以通过CY源代码规定,或者可选地,该CY源代码可以简单地提供头文件,该头文件指示在哪找到该功能。功能算法32是根据单元说明书中提供的定义创建的。
第二组件33,即模型形状,从所建模的组件以及它们如何彼此相关的方面定义了所建模的系统的形状。模型形状33规定了哪些组件与哪些其他组件相通信,以及通过哪些接口来通信。这可以由编译器31从CY代码中得出。
第三组件34是协议树,其规定了处于不同抽象层的组件之间的关系。返回参照图2,它是这种协议树的示例。
第四组件35包括生成算法,其用于从较高层的对象生成相对较低层的对象。
最后,第五组件36包括识别算法,其用于从一个或多个较低层对象识别出相对较高层的对象。
假设,系统的所有组件都使用共同语言CY进行建模,编译器31进而使用该共同语言CY来通过适当的计算语言生成另外的计算机程序,随后图3中示出的建模和仿真过程可以用来在不同的抽象层对系统内的组件进行建模。
根据本发明的某些实施方式,以CY编写的单个模型说明书30在编译器31中被编译成以两种或多于两种的计算语言编写的两个或多于两个的计算机程序。具体地,在本发明的某些实施方式中,所建模的系统内相互联系的组件分别通过软件和硬件来实现。编译器负责确定哪些组件通过硬件实现,哪些通过软件实现。编译器31负责获取CY源代码,并将规定了将要通过软件实现的组件的CY代码转换成适于通过软件实现的计算机代码(例如,C++)。编译器还获取规定了将通过硬件实现的组件的CY源代码,并将该CY代码转换成适于通过硬件实现的计算机代码(诸如,VHDL或者Verilog)。
生成算法和识别算法是从CY源代码30编译而来的。根据本发明的实施方式,对于所建模的系统的通过硬件实现的组件,生成算法和识别算法可以由从CY语言被编译成例如Verilog的单个代码块来实现。此单个组合的生成和识别算法是依赖于上下文的。也即,是否进行生成或识别依赖于传递给生成/识别算法的输入。
参照图2,如果生成/识别算法的输入是单个组件(例如,组件A),则生成/识别算法知道此组件有两个孩子,因此,该算法生成组件W和X的实例。即,当生成A时,可以得出:还必须生成低层的W和X。反之,如果生成/识别算法的输入是组件W和X,则生成/识别算法识别这两个组件的父亲是组件A,而且因此对实例A进行实例化。
这样,组件A和B处于比组件W、X、Y和Z高的抽象层。如上所述,组件可以通过硬件或软件来实现。图2示出了一种可行的拆分,由此较高层的组件(A和B)通过软件来实现,而较低层的组件(W、X、Y和Z)通过硬件来实现。然而,本发明并不限于此。在本发明的某些实施方式中,任何组件或者组件的任何群组可以通过硬件或软件来实现。在本发明的其他实施方式中,通过硬件来实现某些组件是不可能的或不切实际的。在这些实施方式中,编译器31在确定哪些组件在硬件中实现时将这些因素考虑在内。
对于通过软件来建模的组件,每个组件可以在任何抽象层处建模。在通过软件建模的系统中,可以存在在不同层建模的任意数目的组件。然而,对于在根据本发明实施方式的建模和仿真系统中的通过软件来建模和实现的组件,限制抽象层的数目是有利的。
现在参照图4,其示意性地表示出了适于在通过硬件建模和实现的系统组件中使用的抽象层标准化系列。期望将抽象层的数目标准化,因为这将有助于在所建模系统的不同组件上独立工作的开发者在标准化抽象层生成建模组件。然而,对于本领域技术人员而言显而易见的是:抽象层的准确数目可以不同。
图4示出了四个抽象层,各个组件可以在这些抽象层处建模。另外,为了完整,示出了算法层和门层,尽管本发明并不涉及在这些层建模组件。示意性地示出了每个抽象层,并且通过括号示出了邻近抽象层之间的关系,这些括号使一个抽象层或抽象层的一部分与下一抽象层相关。
在算法层(AL),系统由一系列功能表示。在各个功能之间没有通信,相反,这些功能被示意性地描述为一个接一个的执行。没有考虑执行每个功能花费的时间。
第一建模抽象层是程序员视图(PV)。PV层包括一系列未时序化的功能,然而,考虑了不同功能之间的通信。每个功能被认为是离散事件。而且,在PV层,功能或者功能群组可以并行地进行操作。在AL层的功能与PV层的功能之间可能不是一对一映射(如图4所示)。PV层更接近于程序员将如何理解构成以例如C++的高级编程语言编写的程序的事件序列。
第二建模抽象层是带时序的程序员视图(PVT)。PVT层将时序因素引入了来自于PV层的每个功能。例如,功能40被示出为与同功能40并行的、顺序执行的功能41和42需要同样的时间。PVT层的时序是近似的。
第三建模抽象层是即时响应周期(Cycle Callable,CC)。在CC层,时序基于每个功能花费的时钟周期数目。也即,对于每个功能,开始时间和结束时间是已知的。每个功能执行n个时钟周期。图4示意性地描述了将PVT层的功能40建模为CC层的一系列功能43。在CC层,每个功能期间并不知道何时生成输出。
第四建模抽象层是周期精确/寄存器传输层(CA/RTL)。在CA/RTL层,来自于CC层的每个功能或者功能的子群组由顺序执行的功能序列表示,每个功能执行一个时钟周期。这样,来自于每个功能的输出的精确时序对于最近的时钟周期是已知的。
最后,图4描述了门层(GL)。GL层将来自于CA/RTL的每个功能或者功能的子群组描述为通过硬件(如逻辑门或逻辑门序列)实现。本发明并不涉及在GL层对系统进行建模。
现在参照图5,其示意性地示出了建模和仿真系统。该系统被示为两个相互联系的组件50和51,它们分别在PV层和CA层通过软件建模。同样通过软件实现的转换器52对处于PV层的组件50与处于CA/RTL层的组件51之间传递的数据进行转换。当在第一方向传递时(箭头53所示),转换器将高层事务转换成低层激励(stimuli),其继而被传递到组件51。当在第二方向传递时(箭头54所示),转换器将来自于组件51的低层结果转换成用于组件50的高层事务。转换器52最初是通过编程语言CY编写的。组件50和51也是通过CY编写的。可选地,组件50和51可以通过一种或多种其他计算机编程语言来编写。
图6描述了根据本发明实施方式的建模和仿真系统。与之前一样,系统被示为两个相互联系的组件60和61,它们分别在PV层和CA层被建模。然而,组件60通过软件来建模和实现,而组件61通过硬件来建模和实现。
如之前的介绍中所述,当部分系统在高层(例如,系统层)通过软件规定和建模而部分系统在低层(例如,RTL)通过硬件规定和建模时,不存在能够自动地、准确地对系统进行仿真的已知方法。本发明的一些实施方式的目的在于:使通过软件实现的RTL模型和测试能够以有效的方式与通过硬件实现的模型进行通信。对于软件模型和硬件模型之间的通信,将已知的标准协同仿真建模接口(SCE-MI)用于在软件组件和硬件组件之间传输数据。
用于在硬件组件和软件组件之间传递数据的转换器在两个半部中实现,并且在仿真系统的软件部分和仿真系统的硬件模拟器部分之间分开。转换器的第一半部62通过软件实现。由于信息从软件(经由SCE-MI接口)传递到处于PV层的硬件,所以转换器的软件半部62不需要将软件的信息转换成低于PV层的抽象层。因此,转换器的软件半部62只包括PV层。转换器的第二半部63通过硬件实现。由于转换器的硬件半部63负责将来自组件60的高层事务转换成低层激励(这些激励被传递到组件61),所以在从PV到CA/RTL的所有层处都示出转换器的硬件半部。转换器的硬件半部63将来自于组件61的低层结果转换成用于组件60的高层事务。
对于图5,在将每个半部分转换成适当的其他编程语言(诸如用于软件实现的半部的C++和用于硬件实现的半部的Verilog)之前,转换器62、63最初是通过CY编写的。
将在转换器的部分之间的通信描述为在PV层处发生,然而,该通信同样可以在任何其它层发生。期望转换器的软件部分62与转换器的硬件部分63之间的通信在尽可能高的层发生,以便最小化传输的数据总量以及由于硬件组件和软件组件之间的数据交换的同步所引起的瓶颈。经由转换器62、63连接的组件可以在任何抽象层处建模和实现。在本发明的某些实施方式中,组件61在CA/RTL层实现。通过以硬件实现在CA/RTL层建模的组件,系统的仿真速度可以提高。
图7描绘了与图6类似的仿真系统,其中该系统被示为两个相互联系的组件70和71,它们分别在CC层和CA层建模。然而,组件70通过软件建模并实现,而组件71通过硬件建模并实现。与图6类似,由于信息是从软件(经由SCE-MI接口)传递到CC层的硬件,所以转换器的软件半部72不需要将软件的信息转换成低于CC层的抽象层。然而,高于CC层的抽象层在转换器的软件半部72中是需要的,以便允许对转换器所传递的在组件的协议树中较高的组件(诸如消息和数据)进行识别。因此,转换器的软件半部72仅包括高于CC层的抽象层。转换器的第二半部73通过硬件实现。在从PV到CA/RTL的所有层处示出了转换器的硬件半部。对于转换器的软件半部72,高于CC层的进行数据交换的抽象层是允许识别所需的。转换器的硬件半部63负责将来自于组件60的高层事务转换成较低激励,该激励被传递至组件61。转换器的硬件半部73将来自于组件61的低层结果转换成用于组件72的高层事务。
转换器的第一半部72由软件实现。转换器的第二半部73由硬件实现。SCE-MI接口用来在CC层处在转换器的两个半部72和73之间进行通信。
转换器的部分之间的通信被描述为发生在CC层。由于组件70在CC层实现,所以转换器的软件部分72并不需要在将数据传递到转换器的硬件部分73之前将数据转换到不同的抽象层。转换器的硬件部分73负责将CC层数据转换成CA/TRL数据,反之亦然(如箭头74所示)。
现在参照图8,其示出了根据本发明实施方式的通过软件实现的被建模组件与通过硬件实现的被建模组件之间的差别。
组件A通过软件实现。组件A包括有限状态机(FSM)。组件A内的FSM具有输入80和输出81,该输入和输出分别允许FSM从其他组件接收数据以及向其他组件发送数据。对于由软件实现的组件,存在负责管理仿真的独立的仿真器实体(图8中未示出)。软件实现的组件彼此并不直接通信,而是经由仿真器来通信。事件发生的顺序以及组件执行仿真活动的顺序由仿真器确定。如果运行时组件A需要服务,则组件A向仿真器发送请求,该仿真器将任务分配给处理器。
组件X由硬件实现。除了具有FSM外,组件X还具有仿真实体82。每个由硬件实现的被建模组件的仿真实体彼此通信,以共同提供分布式仿真系统(DSS)。DSS负责确定事件发生的顺序以及组件执行仿真活动的顺序。
DSS由用于该组件的由CY(图3中的CY源代码30)编写的模型说明书来定义。针对每个组件的CY代码包括组件说明书。针对每个组件的说明书包括功能说明书以及相关联的仿真元件。功能说明书定义组件的操作、定义用于该组件的FSM,并且在仿真系统内使用以便对组件操作进行仿真。仿真元件定义了DSS的操作,以及组件如何与其他组件进行通信。
根据本发明的实施方式,每个组件的DSS元件的CY源代码由编译器内的模板代码提供。该编译器被布置为在编译所建模的系统时插入对于DSS元件适当的CY代码。
组件X中的DSS元件82负责处理与来自FSM的其他组件的所有通信。输入83和输出84连接至DSS 82,DSS 82进而经由FSM输入85和FSM输出86分别将数据传递到FSM。每个DSS元件负责资源管理、该组件内的通信以及与其他组件的通信。由于硬件的固有并行性,每个由硬件实现的组件都能够独立于其他组件地处理活动。
分布式仿真系统包括六个组件。DSS的第一组件处理生成触发。DSS包括双向多路复用器,其中来自其他组件的多个输入和去往其他组件的多个输出被多路复用到通往FSM的减少数目的通信链路上。当接收到生成触发时,该生成触发被传递到FSM,并且被用来响应于高抽象层处父组件的生成或者来自软件实现的组件的触发而触发该组件实例的生成。一旦第一组件的DSS元件接收到生成触发,便发生生成事件。当生成完成时,将完成的指示传递到发起项目。如果接收到多个生成触发,则这些触发被分发至适当的资源。如果没有足够的资源可用,则对生成触发进行排队,直到资源变得可用为止。
DSS的第二组件处理识别触发。当生成了或识别出组件的所有孩子时,DSS提供识别触发,其指明:需要父组件的实例。可选地,可以在生成了或识别出组件的任何孩子时提供识别触发。对于将要发生的识别事件,其可能需要等待,直到一系列事件发生为止,也即,已经生成或识别出了所有子组件。因此,DSS与FSM一起记录已经发生的事件序列,以便标识何时触发识别事件。另外,在试图识别较低层组件时,此识别的指示通过组件的分级向上传递,以便维护所建模系统的状态。然而,实际上,仅在对较低层组件进行实例化时(也即,其被生成或者自识别时),较高层组件才能被识别。
DSS的第三组件为参数块。其负责处理在已生成和已识别组件的操作期间在这些组件之间传递的参数。该参数块还负责确保这些参数被正确地存储在该组件中。在生成事件期间,所生成的子组件的参数块可以利用参数立即进行填充。然而,对于识别事件,所识别的父块的参数块在一段时间内进行填充,在这段时间内,子组件被生成或者自识别。当组件完成时,其参数的副本被传递到其生成父组件或者识别子组件,使得其资源可以立即得到重新使用(例如使用这些资源来生成或识别另一组件)。
DSS的第四组件负责关于其他对象的时序。组件的开始时间和结束时间由直接低于该组件的元件分级来确定。开始时间和结束时间被传递给分级上较高层硬件实现的组件。组件的分级由协议树34定义。开始时间和结束时间随后传递给软件实现的组件,使得硬件和软件实现的组件之间的组件时序一致。
DSS的第五组件负责将硬件组件何时完成操作通知给软件实现的组件。
DSS的第六组件负责由硬件实现的仿真器部分(即,DSS)和由软件实现的仿真器部分之间的仿真时间的同步。其从仿真器的软件部分接收消息以推进仿真的硬件部分,并且控制应用于硬件实现的组件的时钟。一旦硬件组件完成了其任务的处理或者需要发送某些其他消息(例如,另一组件完成,所以需要通知软件),DSS的第六组件便将消息发送回仿真器的软件部分。由于DSS的第六组件负责硬件实现的组件与软件实现的组件之间的仿真时序的同步这一事实,所以仅有DSS第六组件的一个实例。这样,DSS的第六元件位于每个硬件实现的组件之外。出于内部定时目的,各个硬件实现的组件可以包括未受控制的时钟。DSS的第六组件未在图9-图11中明确示出。
对于软件和硬件实现的组件二者,有限状态机(FSM)负责实现该组件的功能。另外,FSM定义协议树的分级结构,包括可选的协议元素(也即,在一个实例化中,项目可以由两个孩子组成,而在另一实例化中,项目可以由三个孩子组成)和元素之间的时序关系。
参照图9,其示意性地示出了两个组件X和Y,二者均由硬件实现。X和Y二者都包含DSS元件82。DSS元件82被示为具有多个双向输入和输出。这些通信链路被分成用于(经由软件仿真器)与软件组件进行通信的那些链路以及用于与其他硬件实现的组件进行通信的那些链路。如图9所示,硬件实现的组件可以经由分布式仿真系统直接与其他硬件实现的组件通信。
现在参照图10,其示出了根据本发明实施方式的建模和仿真系统。示出该系统具有四个相互联系的组件。A和B两个组件都由软件实现。A和B经由软件仿真器100彼此通信并与其他组件通信。其他两个组件X和Y由硬件实现。X和Y可以彼此直接通信,如线101所示。为了与组件A和B通信,组件X和Y与软件仿真器100通信。由此,X和Y的通信形式取决于与之通信的其他组件是硬件实现的组件还是软件实现的组件。相反,对于A和B,由于A和B仅经由仿真器发送数据,所以通信的模式总是相同的。
针对第一硬件组件的模型规定了第一组件能够感知的其他组件。例如,对于图10的系统,针对组件X的模型包括关于组件Y的信息。组件X知道组件Y是由硬件实现的。这样,如果组件X需要与组件Y通信,则其仅经由链路101来发送数据。类似地,组件X知道组件A是由软件实现的。因此,为了与组件A通信,组件X将仅经由到软件仿真器的链路102发送数据。然而,针对X的模型并不包括组件B的知识。因此,如果组件X需要与组件B通信,则其通过到软件仿真器的链路102和到其他硬件组件(在这种情况下,仅是组件Y)的链路101二者发送请求。组件X随后仅得到来自于一个链路的响应。当组件X试图与组件B通信时,组件X将继续与软件仿真器和其他硬件组件二者相通信。根据本发明的可选实施方式,组件X能够可选地仅试图经由其与其他硬件组件的链路来与组件B通信。
图11示出了与图10类似的系统,其区别在于图11中有四个硬件实现的组件。图11示出了每对硬件实现的组件之间存在直接通信链路。
在不脱离所附权利要求范围的前提下,其他改进和优点对于本领域技术人员而言是显而易见的。
Claims (34)
1.一种用于对包含组件的系统进行建模和仿真的方法,所述方法包括:
使用第一计算机程序中规定的说明书来对所述组件的行为进行建模,其中所述第一计算机程序以第一计算机编程语言编写;
处理所述第一计算机程序,以生成第二计算机程序;
基于所述第二计算机程序,生成所述组件的实现;以及
对实体的分级内的第一实体进行实例化,以此来使用所生成的实现对所述组件的行为进行仿真;
其中所述第二计算机程序包括有限状态机的实现,所述有限状态机被配置为:响应于所述仿真,在实体的所述分级内的较高层和较低层二者处对实体进行实例化。
2.根据权利要求1所述的方法,其中所述系统至少包括相互联系的第一组件和第二组件,其中所述第一组件和所述第二组件的行为分别由第一说明书和第二说明书建模,其中所述第一说明书包括第一功能说明书和相关联的仿真元件,并且所述第二说明书包括第二功能说明书和相关联的仿真元件,并且其中与所述第一说明书和所述第二说明书相关联的所述仿真元件彼此通信以提供仿真系统。
3.根据权利要求2所述的方法,其中所述仿真系统实现所述有限状态机。
4.根据权利要求2或3所述的方法,其中所述仿真系统管理代表所述第一组件和第二组件的所述第一说明书和第二说明书之间的通信。
5.根据权利要求2或3所述的方法,其中所述仿真系统确定所述第一组件和第二组件处理事件的顺序。
6.根据权利要求2或3所述的方法,进一步包括:响应于所述实例化的第一实体而将至少一个另外的实体实例化,所述至少一个另外的实体由第一功能说明书和第二功能说明书中的至少一个定 义,并且响应于所述仿真而被实例化的所述至少一个另外的实体由所述仿真系统基于其与所述第一实体的分级关系来选择。
7.根据权利要求6所述的方法,其中所述第一组件和第二组件由相互联系的实体的所述分级中的相应实体代表,并且创建所述相应实体的实例。
8.根据权利要求6所述的方法,其中所述至少一个另外的实体是相互联系的实体的所述分级中的、所述至少一个第一实体的父实体。
9.根据权利要求6所述的方法,其中所述至少一个另外的实体是相互联系的实体的所述分级中的、所述至少一个第一实体的子实体。
10.根据权利要求6所述的方法,其中对预定分级内的实体进行实例化以代表在代表所述第一组件和第二组件的所述第一说明书和第二说明书之间传输的数据,并且对所述第一组件和第二组件之间的通信进行建模。
11.根据权利要求6所述的方法,其中所述第一组件在比所述第二组件更高的抽象层处建模,并且所述方法包括:使用所述分级来提供所述第一组件和第二组件之间的所述关系的细节。
12.根据权利要求6所述的方法,其中所述实体之间的分级关系根据所述第一功能说明书和第二功能说明书中的至少一个得出。
13.根据权利要求1至3中任一权利要求所述的方法,其中所述处理将所述第一计算机程序从所述第一计算机编程语言转换成第二计算机编程语言。
14.根据权利要求13所述的方法,其中所述第二计算机编程语言是VHDL或者Verilog。
15.根据权利要求2或3所述的方法,进一步包括:
基于所述第二计算机程序,通过硬件生成所述第一组件和第二组件的实现。
16.根据权利要求2所述的方法,其中所述处理将所述第一计算 机程序从所述第一计算机编程语言转换为第二计算机编程语言,并且其中所述处理包括将附加的计算机代码插入所述第二计算机程序,所述附加的计算机代码实现与所述第一说明书和所述第二说明书相关联的所述仿真元件。
17.一种可编程计算设备,包括:
存储装置,其存储说明书,所述说明书对组件的行为进行建模,并且所述说明书在第一计算机程序中规定;
第一处理装置,其被配置为处理所述第一计算机程序以生成第二计算机程序;
生成装置,其被配置为基于所述第二计算机程序来生成所述组件的实现;以及
第二处理装置,其被配置为对实体的分级内的第一实体进行实例化,以此使用所生成的实现来对所述组件的行为进行仿真;
其中所述第二计算机程序包括有限状态机的实现,所述有限状态机被配置为:响应于所述仿真,在实体的所述分级内的较高层和较低层二者处对实体进行实例化。
18.一种用于对包含组件的系统进行建模和仿真的装置,所述装置包括:
建模装置,用于使用第一计算机程序中规定的说明书来对所述组件的行为进行建模,其中所述第一计算机程序以第一计算机编程语言编写;
处理装置,用于处理所述第一计算机程序以生成第二计算机程序;
生成装置,用于基于所述第二计算机程序来生成所述组件的实现;以及
仿真装置,用于对实体的分级内的第一实体进行实例化,以此使用所生成的实现来对所述组件的行为进行仿真;
其中所述第二计算机程序包括有限状态机的实现,所述有限状态机被配置为:响应于所述仿真,在实体的所述分级内的较高层和较 低层二者处对实体进行实例化。
19.一种用于对系统进行建模和仿真的方法,其中所述系统包括相互联系的第一组件和第二组件,所述方法包括:
使用第一计算机编程语言的计算机程序中所规定的第一说明书和第二说明书来对所述第一组件和第二组件的行为进行建模;
处理所述计算机程序,以分别生成第二计算机编程语言的第二计算机程序和第三计算机编程语言的第三计算机程序;
基于所述第二计算机程序,通过硬件生成所述第一组件的实现;
基于所述第三计算机程序,通过软件生成所述第二组件的实现;以及
分别使用所述第一组件的所生成的实现和所述第二组件的所生成的实现来对所述第一组件和第二组件的行为进行仿真。
20.根据权利要求19所述的方法,其中所述第一说明书包括第一功能说明书和相关联的仿真元件,并且所述第二说明书包括第二功能说明书和相关联的仿真元件,并且其中与所述第一说明书和所述第二说明书相关联的所述仿真元件被布置为彼此通信以提供仿真系统,所述方法进一步包括:提供软件实现的仿真系统,以用于管理代表所述第二组件的所述第二说明书与至少一个另外的组件之间的通信。
21.根据权利要求20所述的方法,其中所述仿真系统管理代表所述第一组件和第二组件的所述第一说明书和第二说明书之间的通信。
22.根据权利要求20或21所述的方法,其中所述仿真系统确定代表所述第一组件和第二组件的所述第一说明书和第二说明书处理事件的顺序。
23.根据权利要求20或21所述的方法,其中所述仿真步骤进一步包括:对相互联系的实体的分级内的至少一个第一实体进行实例化,所述至少一个第一实体由所述第一功能说明书和第二功能说明书中的至少一个定义。
24.根据权利要求23所述的方法,进一步包括:响应于实例化的所述至少一个第一实体而将至少一个另外的实体实例化,所述至少一个另外的实体由所述第一功能说明书和第二功能说明书中的至少一个定义,并且所述至少一个另外的实体由所述仿真系统基于其与所述至少一个第一实体的分级关系来选择。
25.根据权利要求24所述的方法,其中所述第一组件和第二组件由相互联系的实体的所述分级中的相应实体代表,并且创建所述相应实体的实例。
26.根据权利要求24所述的方法,其中所述至少一个另外的实体是相互联系的实体的所述分级中的、所述至少一个第一实体的父实体。
27.根据权利要求24所述的方法,其中所述至少一个另外的实体是相互联系的实体的所述分级中的、所述至少一个第一实体的子实体。
28.根据权利要求24所述的方法,其中对所述分级内的实体进行实例化以代表在代表所述第一组件和第二组件的所述第一说明书和第二说明书之间传输的数据,并且对所述第一组件和第二组件之间的通信进行建模。
29.根据权利要求24所述的方法,其中所述第一组件在比所述第二组件更高的抽象层处建模,并且所述方法包括:使用所述分级来提供所述第一组件和第二组件之间的所述关系的细节。
30.根据权利要求24所述的方法,其中所述实体之间的分级关系根据所述第一说明书和第二说明书中的至少一个得出。
31.根据权利要求20或21所述的方法,其中所述处理包括:将附加的计算机代码插入所述第二计算机程序和第三计算机程序,所述附加的计算机代码实现与所述第一说明书和所述第二说明书相关联的所述仿真元件。
32.根据权利要求19至21中任一权利要求所述的方法,其中所述第二计算机编程语言是VHDL或者Verilog,并且所述第三计算机 编程语言是C或者C++。
33.一种可编程计算设备,包括:
存储装置,其存储第一说明书和第二说明书,所述第一说明书和第二说明书分别对第一组件和第二组件的行为进行建模,所述第一说明书和第二说明书在第一计算机编程语言的计算机程序中进行规定;
处理装置,其被配置用于处理所述计算机程序,以分别生成第二计算机编程语言的第二计算机程序和第三计算机编程语言的第三计算机程序;
第一生成装置,其被配置用于基于所述第二计算机程序通过硬件生成所述第一组件的实现;
第二生成装置,其被配置用于基于所述第三计算机程序通过软件生成所述第二组件的实现;以及
仿真装置,其被配置用于分别使用所述第一组件的所生成的实现和所述第二组件的所生成的实现来对所述第一组件和第二组件的行为进行仿真。
34.一种用于对包含多个组件的系统进行建模和仿真的装置,所述装置包括:
建模装置,用于使用第一计算机编程语言的计算机程序中所规定的第一说明书和第二说明书来对第一组件和第二组件的行为进行建模;
处理装置,用于处理所述计算机程序,以分别生成第二计算机编程语言的第二计算机程序和第三计算机编程语言的第三计算机程序;
第一生成装置,用于基于所述第二计算机程序通过硬件生成所述第一组件的实现;
第二生成装置,用于基于所述第三计算机程序通过软件生成所述第二组件的实现;以及
仿真装置,用于分别使用所述第一组件的所生成的实现和所述第 二组件的所生成的实现来对所述第一组件和第二组件的行为进行仿真。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB0601135.7A GB0601135D0 (en) | 2006-01-20 | 2006-01-20 | Modelling and simulation method |
GB0601135.7 | 2006-01-20 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800070661A Division CN101395610B (zh) | 2006-01-20 | 2007-01-18 | 用于建模和仿真的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102156774A CN102156774A (zh) | 2011-08-17 |
CN102156774B true CN102156774B (zh) | 2014-06-25 |
Family
ID=36010634
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110082273.1A Expired - Fee Related CN102156774B (zh) | 2006-01-20 | 2007-01-18 | 建模和仿真方法 |
CN2007800070661A Expired - Fee Related CN101395610B (zh) | 2006-01-20 | 2007-01-18 | 用于建模和仿真的方法和设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800070661A Expired - Fee Related CN101395610B (zh) | 2006-01-20 | 2007-01-18 | 用于建模和仿真的方法和设备 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8165865B2 (zh) |
EP (1) | EP1977355A2 (zh) |
JP (1) | JP5475996B2 (zh) |
CN (2) | CN102156774B (zh) |
GB (1) | GB0601135D0 (zh) |
WO (1) | WO2007083134A2 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8868397B2 (en) * | 2006-11-20 | 2014-10-21 | Sonics, Inc. | Transaction co-validation across abstraction layers |
US8549468B2 (en) * | 2010-02-08 | 2013-10-01 | National Tsing Hua University | Method, system and computer readable storage device for generating software transaction-level modeling (TLM) model |
US8943451B2 (en) * | 2010-06-23 | 2015-01-27 | Mentor Graphics Corporation | Hierarchical finite state machine generation for power state behavior in an electronic design |
US8845624B2 (en) | 2010-06-25 | 2014-09-30 | Alcon LexSx, Inc. | Adaptive patient interface |
US9015649B2 (en) * | 2010-07-19 | 2015-04-21 | Taiwan Semiconductor Manufacturing Co., Ltd. | Method and apparatus for electronic system model generation |
AT511334B1 (de) * | 2011-07-14 | 2012-11-15 | Fronius Int Gmbh | Schweissstromquelle und verfahren zu deren steuerung |
US9514254B2 (en) | 2012-01-24 | 2016-12-06 | The United States Of America As Represented By The Secretary Of The Navy | Modular model and simulation architecture |
KR20130091096A (ko) * | 2012-02-07 | 2013-08-16 | 한국전자통신연구원 | 하이브리드 시스템을 검증하기 위한 시뮬레이션 장치 및 방법 |
CN102609585A (zh) * | 2012-02-09 | 2012-07-25 | 北京航空航天大学 | 基于组件的航空仪表高效建模设计方法 |
CN102819218B (zh) * | 2012-07-19 | 2015-04-29 | 西安交通大学 | 基于事件控制函数的离散事件系统监控器及其控制方法 |
EP2902930A3 (en) * | 2014-02-04 | 2015-11-11 | Ingersoll-Rand Company | System and method for modeling, simulation, optimization, and/or quote creation |
KR101575133B1 (ko) * | 2014-04-11 | 2015-12-07 | 국방과학연구소 | M&s 환경에서 군집객체 구성을 위한 개체 조립 시스템 및 방법 |
KR20150134688A (ko) * | 2014-05-22 | 2015-12-02 | 삼성전자주식회사 | 트랜잭터를 자동으로 생성하는 컴퓨팅 시스템 |
US9898390B2 (en) * | 2016-03-30 | 2018-02-20 | Ca, Inc. | Virtual service localization |
CN106156424B (zh) * | 2016-07-01 | 2023-11-14 | 合肥海本蓝科技有限公司 | 一种仿真系统 |
CN117149359B (zh) * | 2023-10-27 | 2024-01-26 | 大尧信息科技(湖南)有限公司 | 一种面向数据链设备的软件定义仿真模拟开发平台及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1517254A2 (en) * | 2003-09-20 | 2005-03-23 | Spiratech Limited | Modelling and simulation method |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6132109A (en) | 1994-04-12 | 2000-10-17 | Synopsys, Inc. | Architecture and methods for a hardware description language source level debugging system |
GB2301911B (en) * | 1995-06-08 | 2000-01-12 | Advanced Risc Mach Ltd | Simulation of digital circuits |
US5870585A (en) * | 1995-10-10 | 1999-02-09 | Advanced Micro Devices, Inc. | Design for a simulation module using an object-oriented programming language |
US6240376B1 (en) | 1998-07-24 | 2001-05-29 | Mentor Graphics Corporation | Method and apparatus for gate-level simulation of synthesized register transfer level designs with source-level debugging |
US6336087B2 (en) | 1998-07-24 | 2002-01-01 | Luc M. Burgun | Method and apparatus for gate-level simulation of synthesized register transfer level design with source-level debugging |
US6601024B1 (en) * | 1998-11-12 | 2003-07-29 | Synopsys, Inc. | Code translation between hardware design languages |
JP2000215226A (ja) * | 1999-01-25 | 2000-08-04 | Mitsubishi Electric Corp | 論理検証装置 |
JP2000315222A (ja) * | 1999-04-30 | 2000-11-14 | Matsushita Electric Ind Co Ltd | 集積回路装置の設計用データベース及び集積回路装置の設計方法 |
US6823497B2 (en) * | 1999-11-30 | 2004-11-23 | Synplicity, Inc. | Method and user interface for debugging an electronic system |
US6931572B1 (en) | 1999-11-30 | 2005-08-16 | Synplicity, Inc. | Design instrumentation circuitry |
US7065481B2 (en) * | 1999-11-30 | 2006-06-20 | Synplicity, Inc. | Method and system for debugging an electronic system using instrumentation circuitry and a logic analyzer |
US7356786B2 (en) * | 1999-11-30 | 2008-04-08 | Synplicity, Inc. | Method and user interface for debugging an electronic system |
JP2002175344A (ja) * | 2000-10-17 | 2002-06-21 | Nec Corp | 電子回路と制御プログラムとのコバリデーション方法 |
US7000213B2 (en) * | 2001-01-26 | 2006-02-14 | Northwestern University | Method and apparatus for automatically generating hardware from algorithms described in MATLAB |
US6691301B2 (en) * | 2001-01-29 | 2004-02-10 | Celoxica Ltd. | System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures |
US20020152061A1 (en) * | 2001-04-06 | 2002-10-17 | Shintaro Shimogori | Data processing system and design system |
JP2003114914A (ja) * | 2001-10-04 | 2003-04-18 | Sharp Corp | ソフトウェア/ハードウェア協調設計方法 |
US7110935B1 (en) * | 2001-10-16 | 2006-09-19 | Xilinx, Inc. | Method and system for modeling and automatically generating an electronic design from a system level environment |
US7231334B2 (en) * | 2002-04-18 | 2007-06-12 | International Business Machines Corporation | Coupler interface for facilitating distributed simulation of a partitioned logic design |
JP2005084956A (ja) * | 2003-09-09 | 2005-03-31 | Nec Corp | 論理回路の検証方法および検証システム |
US7260798B2 (en) | 2003-12-29 | 2007-08-21 | Mentor Graphics Corporation | Compilation of remote procedure calls between a timed HDL model on a reconfigurable hardware platform and an untimed model on a sequential computing platform |
JP4470582B2 (ja) * | 2004-05-19 | 2010-06-02 | 日本電気株式会社 | ハードウェア/ソフトウェア協調シミュレーション方式及びその方法 |
US7657416B1 (en) * | 2005-06-10 | 2010-02-02 | Cadence Design Systems, Inc | Hierarchical system design |
US7472361B2 (en) * | 2005-12-30 | 2008-12-30 | Cadence Design Systems, Inc. | System and method for generating a plurality of models at different levels of abstraction from a single master model |
US7895560B2 (en) * | 2006-10-02 | 2011-02-22 | William Stuart Lovell | Continuous flow instant logic binary circuitry actively structured by code-generated pass transistor interconnects |
-
2006
- 2006-01-20 GB GBGB0601135.7A patent/GB0601135D0/en not_active Ceased
-
2007
- 2007-01-18 WO PCT/GB2007/000168 patent/WO2007083134A2/en active Application Filing
- 2007-01-18 EP EP07704948A patent/EP1977355A2/en not_active Withdrawn
- 2007-01-18 CN CN201110082273.1A patent/CN102156774B/zh not_active Expired - Fee Related
- 2007-01-18 CN CN2007800070661A patent/CN101395610B/zh not_active Expired - Fee Related
- 2007-01-18 US US12/161,559 patent/US8165865B2/en not_active Expired - Fee Related
- 2007-01-18 JP JP2008550846A patent/JP5475996B2/ja active Active
-
2012
- 2012-04-20 US US13/452,323 patent/US8600723B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1517254A2 (en) * | 2003-09-20 | 2005-03-23 | Spiratech Limited | Modelling and simulation method |
Non-Patent Citations (4)
Title |
---|
Mansour Amirfathi et al.Standard Co-Emulation Modeling Interface (SCE-MI) Reference Manual DRAFT Version 1.0.《accellera》.2003, * |
Wooseung Yang et al.Current Status and Challenges of SoC Verification for Embedded Systems Market.《SOC Conference,2003.Proceedings.IEEE International [Systems-on-Chip]》.2003,213-216. * |
Young-Il Kim et al.Automatic Generation of Software/Hardware Co-Emulation Interface for Transaction-Level Communication.《VISL Design,Automation and Test,2005.(VLSI-TSA-DAT).2005 IEEE VLSI-TSA International Symposium on》.2005,196-199. * |
Young-Il Kim et al.TPartition: Testbench Partitioning for Hardware-Accelerated Functional Verification.《IEEE Design & Test of Computers》.2004, * |
Also Published As
Publication number | Publication date |
---|---|
CN102156774A (zh) | 2011-08-17 |
CN101395610B (zh) | 2012-12-05 |
US20100223042A1 (en) | 2010-09-02 |
US8600723B2 (en) | 2013-12-03 |
US8165865B2 (en) | 2012-04-24 |
WO2007083134A2 (en) | 2007-07-26 |
WO2007083134A3 (en) | 2007-09-07 |
JP2009524138A (ja) | 2009-06-25 |
EP1977355A2 (en) | 2008-10-08 |
US20120259610A1 (en) | 2012-10-11 |
JP5475996B2 (ja) | 2014-04-16 |
GB0601135D0 (en) | 2006-03-01 |
CN101395610A (zh) | 2009-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102156774B (zh) | 建模和仿真方法 | |
Baldassari et al. | PROTOB: An object oriented methodology for developing discrete event dynamic systems | |
CA2218458C (en) | Method and apparatus for design verification using emulation and simulation | |
EP1323081A1 (en) | Performance level modeling and simulation of electronic systems having both hardware and software | |
Feth et al. | Virtual validation of cyber physical systems | |
Theelen et al. | Performance modelling of a network processor using POOSL | |
EP2350892A1 (en) | A method for preparing re-architected designs for sequential equivalence checking | |
Chevalier et al. | SPACE: A hardware/software SystemC modeling platform including an RTOS | |
Hasanagić et al. | Code generation for distributed embedded systems with VDM-RT | |
Li et al. | Design and implementation of a parallel verilog simulator: Pvsim | |
Drongowski et al. | A graphical hardware design language | |
Bruce et al. | Maintaining consistency between SystemC and RTL system designs | |
JP2001256048A (ja) | データ処理装置のシミュレーション | |
Abrams et al. | Linking simulation model specification and parallel execution through UNITY | |
Gerstlauer et al. | System-on-chip component models | |
Gerstlauer et al. | System-on-chip specification style guide | |
Jovanovic et al. | Integrated design tool for embedded control systems | |
Dreier et al. | Partitioning and fpga-based co-simulation of statecharts | |
Milik et al. | Block party [system modelling] | |
Milk et al. | Block party [system modelling]. | |
Courrier et al. | Microscopic modeling of support system for in-vehicle embedded systems | |
Lahti et al. | SADE: a graphical tool for VHDL-based system analysis | |
Cohen et al. | VMMing a SystemVerilog Testbench by Example | |
Zhang et al. | Communication-Driven Automatic Virtual Prototyping for Networked Embedded Systems | |
Gajski | Specfic design environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140625 Termination date: 20170118 |
|
CF01 | Termination of patent right due to non-payment of annual fee |