专利名称:仿真装置、仿真方法和存储介质的制作方法
技术领域:
本发明涉及一种用于仿真在系统开发中处于设计阶段的系统如系统大规模集成电路(LSI)的仿真装置,更具体是涉及仿真执行时间的缩减。
背景技术:
近年来,为了满足日益增长的对于小型化高性能计算机的需求,对于其中将,例如,处理器,存储器和特定用途集成电路(ASIC)这样一些部件安装于一个芯片中的系统大规模集成电路的开发活动一直十分活跃。
通常,在系统大规模集成电路(LSI)的开发中,设计人员是用例如C语言或C++语言编写一个用于检验系统大规模集成电路(LSI)性能的具有适当抽象级的系统设计模型,并在系统大规模集成电路(LSI)装入一芯片之前,在设计阶段,将该模型在计算机上仿真。需要使用这种仿真的原因是由于在系统大规模集成电路(LSI)制作之后,如果想要改变系统设计,则需要花费昂贵的费用。
通常,使用称之为基于时钟周期仿真(cycle base simulation)的仿真方法来仿真系统大规模集成电路(LSI)。
在基于时钟周期仿真中,用多个周期(即预定的时间周期)进行仿真一个系统的运行,所述的多个周期可以是多个系统时钟周期或总线周期。
下面将用一个实例来描述这种基于时钟周期仿真。
图10是一种仿真装置的功能图,该仿真装置用来基于时钟周期仿真一个通过一共享源在两个处理器之间传递数据的系统的运行共享源。
仿真装置1000是一计算机,它具有CPU、存储器、硬盘等等,当CPU执行存储在存储器或者硬盘中的仿真程序时,该仿真装置1000实现其功能。
仿真内核(simulation kernel)1001具有这样的功能,即,在每一周期都调用基于时钟周期模型1002,并且控制基于时钟周期模型1002的执行。图10中的空点箭头表示仿真内核1001正在通过发出指令在每一周期都调用基于时钟周期模型1002。该基于时钟周期模型1002包括处理器核心模块1003、扩展寄存器模块1004、处理器模块1005、中断控制单元1006和共享源模块1007。这些模块是要在实际系统中设置的各功能模块的模型。图10中的空心箭头表示各模块之间进行的访问。
处理器核心模块1003和处理器模块1005用ISS(指令设定仿真器)来仿真处理器核心或者处理器的运行。扩展寄存器模块1004是扩展寄存器的模型。共享源模块1007是像共享存储器和总线这样的共享源的模型。
下面,参照一时序图解释如何仿真各处理器之间数据传递,其中假定处理器模块1005是主处理器,而处理器核心模块是从处理器。
图11是包括在仿真装置1000内的各模块运行的时序图。在每一周期,由仿真内核1001调用和激活基于时钟周期模型1002。
在激活基于时钟周期模型1002之后,处理器模块1005和处理器核心模块1003受到初始化(A1,A2)。
在初始化(A1)之后,处理器模块1005进入等待状态,等待来自于处理器核心模块1003的初始化完成通知。
另一方面,在初始化(A2)之后,处理器核心模块1003访问共享源模块1007,并在其中写入初始化完成通知中采用的一个参数,该通知要发送给处理器模块1005(写访问)(A3)。更具体地说,处理器核心模块1003向共享源模块1007发送写请求,并且基于收到响应,向共享源模块1007发送该参数和该参数要被写入的位置地址。
基于从共享源模块1007接收到关于参数已经写入的通知,处理器核心模块1003就将一中断请求写入扩展寄存器模块1004(A4)。之后,处理器核心模块1003进入等待状态,等待来自处理器模块1005的指令。
当中断请求写入扩展寄存器模块1004时,处理器模块1005从等待状态转为执行状态(A5),访问共享源模块1007并且读取写入其中的参数(读访问)(A6)。更具体地说,处理器模块1005向共享源模块1007发送读请求,基于收到响应,向共享源模块1007发送参数将要被写入的位置地址。基于接收到该地址,共享源模块1007就将该参数传输给处理器模块1005,该参数存储于该模块1007中指定的地址处。
基于接收到该参数,处理器模块1005就分析该参数并且确认处理器核心模块1003的初始化已经完成(A7),访问共享源模块1007,并把要发送给处理器核心模块1003的指令中采用的一个参数写入其中(写访问)(A8)。该写访问的详细过程与上述处理器核心模块1003所执行的过程一样,因此这里省略该过程的描述。然后,处理器模块1005将一中断请求写入中断控制单元1006(A9)。
当该中断请求写入中断控制单元1006时,处理器核心模块1003从等待状态转为执行状态(A10),访问共享源模块1007并且读取写入其中的参数(读访问)(A11)。该读访问的详细过程与上述处理器模块1005所执行的过程一样,因此这里省略该过程的描述。
处理器核心模块1003根据该读取的参数执行预定的处理(A12),访问共享源模块1007并且将该预定处理的结果作为一个参数写入其中(写访问)(A13)。然后,处理器核心模块1003将一中断请求写入扩展寄存器模块1004(A14)。之后,处理器核心模块1003再次进入等待状态,等待来自处理器模块1005的指令。
当该中断请求写入扩展寄存器模块1004中时,处理器模块1005从等待状态转为执行状态(A15),执行下一处理。
仿真装置1000以上述方式执行基于时钟周期仿真,用以仿真通过一共享源在两处理器之间传递数据的系统的运行。
同时,如果希望在系统LSI市场中建立某种系统产品的优势,重要的是缩短系统产品上市的时间(time-to-market),可以通过缩短开发周期来提高上市时间的缩短程度。
缩短仿真速度非常有助于缩短开发周期。这从以下事实可以很容易地想象的出来当用像RTL(寄存器传送级)模型这样的低抽象级系统设计模型来仿真时,基于时钟周期仿真就需要投入大量的时间来完成大型系统LSI的仿真。
发明内容
本发明的目的是提供一种仿真装置和仿真方法,其可用比传统的进行基于时钟周期仿真的装置更少的时间仿真一个包含使用多个周期运行的一第一电路区块和一第二电路区块的系统的运行。
上述发明目的可以通过一用于仿真一个包含使用多个周期运行的一第一电路区块和一第二电路区块的系统运行的仿真装置来实现,所述的仿真装置包括一可用于仿真第一电路区块具有时间概念运行的第一仿真单元;一可用于仿真第二电路区块没有时间概念运行的第二仿真单元;一可用于每隔一定时间激活第一仿真单元的第一控制单元;一可用于接收请求信息的接收单元,所述的请求信息是由第一仿真单元发给第二仿真单元的并与由第一电路区块发给第二电路区块的处理请求相对应;以及一可用于在接收单元接收到请求信息的情况下,激活第二仿真单元的第二控制单元。
上述本发明的目的还可以通过一用于仿真包含使用多个周期运行的一第一电路区块和一第二电路区块的系统运行的仿真方法来实现,所述的仿真方法包括如下步骤设置一可用于仿真第一电路区块具有时间概念运行的第一仿真单元;设置一可用于仿真第二电路区块没有时间概念运行的第二仿真单元;设置一可用于每隔一定时间激活第一仿真单元的第一控制单元;设置一可用于接收请求信息的接收单元,所述的请求信息是由第一仿真单元发给第二仿真单元的并与由第一电路区块发给第二电路区块的处理请求相对应;以及设置一可用于在接收单元接收到请求信息的情况下,激活第二仿真单元的第二控制单元。
上述本发明的目的还可以通过一其中存储用于仿真包含使用多个周期运行的一第一电路区块和一第二电路区块的系统运行的仿真程序的计算机可读存储介质来实现,所述的仿真程序可以使计算机实现如下的作用一可用于仿真第一电路区块具有时间概念运行的第一仿真单元;一可用于仿真第二电路区块没有时间概念运行的第二仿真单元;一可用于每隔一定时间激活第一仿真单元的第一控制单元;一可用于接收请求信息的接收单元,所述的请求信息是由第一仿真单元发给第二仿真单元的并与由第一电路区块发给第二电路区块的处理请求相对应;以及一可用于在接收单元接收到请求信息的情况下,激活第二仿真单元的第二控制单元。
这里应当指出的是,以上描述中提到的“时间概念”是指系统或总线周期中所设的系统时钟。
采用上述结构,可以使本发明的仿真装置用比传统的进行基于时钟周期仿真的装置更少的时间完成仿真,这是由于第二仿真单元仿真第二电路区块没有时间概念的运行,而传统装置是仿真基于时钟周期仿真的第一和第二电路区块。
另外,上述结构保持了系统仿真所要求的仿真精确度水平。这是由于当从每隔一定时间受到激活的第一仿真单元发出请求信息时才激活的第二仿真单元,这样,第二仿真单元就会以与第一仿真单元同步最少的方式进行仿真。
在上述的仿真装置中,当仿真装置可以还进一步包括以下各部分时,数据可以通过一共享源在第一电路区块与第二电路区块之间传输一用于仿真所述共享源的共享源仿真单元,和一用于接收第二请求信息并将该接收到的第二请求信息传送给所述的共享源仿真单元的中介处理单元,所述的第二请求信息是由第二仿真单元发给第一仿真单元的,并且其与由第二电路区块发给第一电路区块的处理请求相对应,其中,如果共享源仿真单元接收到来自中介处理单元的第二请求信息,则第一仿真单元访问共享源仿真单元并读取第二请求信息。
采用上述结构,甚至在仿真通过一共享源在第一电路区块与第二电路区块之间传输数据的系统过程中,也可以缩短仿真执行时间。
在上述的仿真装置中,在将请求信息发给第二仿真单元之后,第一仿真单元直到共享源仿真单元接收到来自中介处理单元的第二请求信息时才访问共享源仿真单元。
采用上述结构,第一仿真单元与第二仿真单元中的每一个都排他性地访问共享源仿真单元。
在上述的仿真装置中,中介单元可以包括一用于,在将第二请求信息传发给共享源仿真单元之前,将访问请求传送给共享源仿真单元的通知单元;和一用于判断是否已经接收到来自共享源仿真单元的访问请求的响应的判断单元,其中,如果判断单元判断出已经接收到访问请求的响应,则中介处理单元就将第二请求信息传送给共享源仿真单元;如果判断单元判断出没有接收到访问请求的响应,则中介处理单元就暂停将第二请求信息传送给共享源仿真单元,并且在否定判断后的一预定时间之后,指令通知单元将访问请求传送给共享源仿真单元,其中所述的共享源仿真单元包括一仲裁单元,用于在接收到来自通知单元的访问请求之后,决定是否允许访问共享源,并且仅在仲裁单元决定允许访问的情况下,传送一响应给中介处理单元。
采用上述结构,可以仿真通过系统的仲裁器来执行的在各个使用共享源的请求之间进行的仲裁,并且还可以仿真该仲裁引起的传输延迟。
在上述的仿真装置中,系统还可以进一步包括用预定的多个周期运行的第三电路区块,所述的仿真装置进一步包括一用于仿真第三电路区块没有时间概念运行的第三仿真单元,其中,接收单元进一步接收由第一仿真单元发给第三仿真单元的并与由第一电路区块发给第三电路区块的处理请求相对应的第三请求信息,如果接收单元接收到请求信息,则第二控制单元激活第二仿真单元,如果接收单元接收到第三请求信息,则激活第三仿真单元。
采用上述结构,使通过本发明的仿真装置进行的仿真需要用比传统的基于时钟周期仿真更少的时间,这是因为第一至第三电路区块中的第二电路区块和第三电路区块进行的是没有时间概念的仿真,而传统的装置是按照基于时钟周期仿真的方式仿真全部的第一至第三电路区块。
在上述的仿真装置中,该系统还可以进一步包括一使用预定的多个周期运行的第三电路区块,这时该仿真装置还可以包括一用于仿真第三电路区块没有时间概念运行的第三仿真单元,其中第二仿真单元包括一可用于激活第三仿真单元的第三控制单元。
上述结构可用于仿真这样一个系统,即其中没有从第一电路区块发送到第三电路区块的处理请求,并且第三电路区区块由第二电路区块激活。
上述的仿真装置还可以进一步包括一用于计算由第一控制单元激活第一仿真单元的激活次数的周期计算单元,其中,第一控制单元在仿真执行开始时,激活第二仿真单元,第二仿真单元预先存储一指示第二仿真单元改变仿真状态的时序的时序信息,并在由第一控制单元激活第二仿真单元时,将该时序信息传送给周期计算单元,周期计算单元基于从第二仿真单元接收到的时序信息和由周期计算单元计算出的激活次数,将第二仿真单元将被激活的时序通知给第二控制单元,第二控制单元用由周期计算单元通知的时序激活第二仿真单元。
采用上述结构,即使第一电路区块尚未将一处理请求发送给第二电路区块,也可以激活第二仿真单元,所述的第二仿真单元用以仿真第二电路区块没有时间概念的运行。
在上述的仿真装置中,共享源仿真单元还可以包括一用于记录应当详细提供的部分仿真信息说明的记录单元,一用于控制由输出单元给用户界面单元的仿真信息输出的输出控制单元,其中,用户界面单元接收来自用户的所要示出的部分仿真信息的说明,并将该接收到的来自用户的说明通知输出控制单元,输出控制单元通常指示输出单元输出按用户指定的那部分仿真信息,并且当记录单元其中记录有说明时,指示输出单元输出按记录单元中指定的那部分仿真信息。
采用上述结构,当执行仿真时,用户无需指定应当详细示出的部分仿真信息,这是因为这部分仿真信息是按记录单元中具体所指定的来示出,而通常情况下,示出的是用户指定的那部分仿真信息。而且,采用上述结构还可以抑制因仿真信息的示出而导致的仿真速度降低的问题,这是因为仿真信息通常以简单的方式示出,并且应当详细示出的一部分仿真信息是动态示出的。
以上的仿真装置还可以进一步包括一个多线程运行系统,其中,第二仿真单元和第三仿真单元分别通过该多线程运行系统中的多条线程来控制。
根据以下结合示出本发明一个具体实施例的附图进行的描述,本发明的这些和其他目的、优点以及特征将变得很明显。
这些附图中图1是实施例1中仿真装置的功能性方框图;图2是实施例1中仿真装置内所包括的各功能单元的运行时序图;图3示出变换例1的仿真装置中所设共享源模块和共享源接口单元;图4是用来处理访问请求的变换例1中共享源接口单元的运行流程图;图5是变换例2的仿真装置的功能方框图;图6是变换例3的仿真装置的功能方框图;图7是变换例4的仿真装置的功能方框图;图8是变换例5的仿真装置的功能方框图;图9是变换例6的仿真装置的功能方框图;图10是用来执行传统的基于时钟周期仿真的一种传统仿真装置的功能图;图11是这种传统仿真装置的主要部件的运行时序图。
优选实施例的详细描述以下参照附图描述本发明的仿真装置。
<结构>
图1是仿真装置1的功能方框图。
如前面本发明背景技术中描述的仿真装置1000的情况那样,仿真装置1仿真一个通过共享源在两处理器之间传递数据的系统的运行。
传统技术的仿真装置1000是使用一个基于时钟周期模型来进行仿真,而本发明的仿真装置1是用一个本地型(native-type)模型和一个基于时钟周期模型来仿真存在于一个仿真目标系统中的两个处理器。
用C或者C++编写该系统设计模型。个人计算机中使用的一种编译器如Microsoft Visual C++(注册商标)用来将(i)基于时钟周期模型的源代码和(ii)本地型模型的程序转换为仿真装置1的可执行格式。
本地型模型不同于由仿真内核在每一周期都调用和激活的基于时钟周期模型,其进行的是没有时间概念的运行,不受周期所限制。更具体地说,本地型模型进行仿真时不考虑本地型模型内部运行或者将数据传送给其他功能区块所需时间的周期。
仿真装置1包括仿真内核2、基于时钟周期模型3、本地型模型执行控制单元11和本地型模型4。
仿真装置1是一具有CPU、存储器、硬盘等的计算机,当CPU执行存储在存储器或硬盘中的仿真程序时,该仿真装置1实现其功能。
仿真内核2具有在每一周期调用基于时钟周期模型3和控制基于时钟周期模型3运行的功能,其中一个周期对应于一个系统时钟周期。图1中的空点箭头表示仿真内核2正在通过发出指令而在每一周期调用基于时钟周期模型3。
虽然图中未示,但是仿真内核2仅在仿真执行开始时调用本地型模型4。
基于时钟周期模型3包括处理器核心模块5、扩展寄存器模块6、外部接口单元7、共享源接口单元8、共享源模块9和中断控制单元10。图1中的空心箭头表示需要时间周期的各模块之间的访问。相反,实心线表示无需考虑时间周期所执行的访问(下文中,“无需考虑时间周期”称为“周期之外”)。
如传统技术中所述的那样,处理器核心模块5用一ISS来仿真系统中从处理器核心的运行。
扩展寄存器模块6是一扩展寄存器模型。共享源模块9是诸如共享存储器和总线之类共享源的模型。
外部接口单元7是一功能单元,它用于中介处理从基于时钟周期模型3到本地型模型4的中断请求的传输。外部接口单元7在每一周期都检查扩展寄存器模块6,用以查看是否有一中断请求已被写在事先寄存的预定地址处。
在确认处理器核心模块5已经把要发送给本地型模型4的一个中断请求写入扩展寄存器模块6的情况下,外部接口单元7将该中断请求传送给本地型模型执行控制单元11。
基于从外部接口单元7接收该中断请求,本地型模型执行控制单元11就激活本地型模型4。更具体地说,本地型模型执行控制单元11将一状态转变请求发送给本地型模型4中所包含的状态控制单元12。
本地型模型4是一功能单元,它用于仿真系统中主处理器的运行,且包括一状态控制单元12。
状态控制单元12是一功能单元,它利用一标志或类似物控制本地型模型4的两个状态执行状态;等待状态。基于从本地型模型执行控制单元11接收到状态转变请求,状态控制单元12就将本地型模型4从等待状态转到执行状态。当本地型模型4完成执行一个处理时,状态控制单元12将本地型模型4从执行状态转到等待状态。
共享源接口单元8是一功能单元,它用于中介处理通过本地型模型4进入基于时钟周期模型的共享源模块9的访问。
中断控制单元10是一功能单元,它用于接收和记录从本地型模型4发送给处理器核心模块5的中断请求。基于接收到中断请求,中断控制单元10就将该接收信息通知处理器核心模块5。
<运行>
下面将参照时序图说明仿真装置1的仿真运行。
图2是仿真装置1中所包括的各功能单元的运行时序图。图2中所示的黑色圆圈B1-B14表示“周期之外”的运行。也就是说,在这些黑色圆圈处执行的每一个实际仿真运行都只需要少量的时间。
在仿真开始之后,本地型模型4和处理器核心模块5受到初始化(B1,C1)。
在该初始化之后,本地型模型4进入等待状态,等待来自处理器核心模块5的初始化完成通知。
另一方面,在该初始化(C1)之后,处理器核心模块5访问共享源模块9,并且在其中写入一个参数,该参数用于要发送给本地型模型4的初始化完成通知中(写访问)(C2)。
该写访问以与本发明背景技术中所述方式相同的方式进行。也就是说,处理器核心模块5将一写请求发送给共享源模块9,并且基于收到一个响应,就将该参数和要写入该参数的位置地址发送给共享源模块9。
基于从共享源模块9接收到参数已经写入的通知,处理器核心模块5就将一中断请求写入扩展寄存器模块6(C3)。之后,处理器核心模块5进入等待状态,等待来自本地型模型4的指令。
当将中断请求写入扩展寄存器模块6时,外部接口单元7将该中断请求传输给本地型模型执行控制单元11(B2)。
一旦本地型模型执行控制单元11从外部接口单元7接收到该中断请求,它就激活本地型模型4(B3)。
本地型模型4从等待状态转为执行状态,并且访问试图读取写入共享源模块9中参数的共享源接口单元8(B4)。更具体地说,本地型模块4将共享源模块9中所写入的参数的地址发送给共享源接口单元8。
基于从本地型模型4收到该地址,共享源接口单元8就访问共享源模块9,以读取写入其中的参数(B5)。由于共享源模块9是基于时钟周期模型的一个组成部份,所以需要几个周期完全地读取该参数(C4)。
基于接收到该参数,共享源接口单元8就将该参数传输给本地型模型4(B6)。
基于接收到表示处理器核心模块5的初始化已经完成的参数,本地型模型4就向共享源接口单元8发送一个参数和要写入该参数的一个位置地址,该参数表示处理器核心模块5所要执行的一个指令(B7)。
基于接收到该参数和地址,共享源接口单元8就访问共享源模块9,以将该参数写入该具体指定的地址中(B8)。需要几个周期来完全地写入该参数(C5)。
一旦共享源接口单元8从共享源模块9接收到一写入完成通知,它就将该事实通知本地型模型4(B9)。
基于接收到该通知,本地型模型4就向中断控制单元10发送一中断请求(B10)。
共享源接口单元8接收本地型模型4发送给中断控制单元10的中断请求,并且访问中断控制单元10以将该中断请求写入其中(B11)。需要几个周期来完全地写入该中断请求(C6)。
当该中断请求写入中断控制单元10时,处理器核心模块5从等待状态转为执行状态(C7),访问共享源模块9并且读取写入其中的参数(读访问)(C8)。
以与本发明背景技术中所述相同的方式执行该读访问。也就是说,处理器核心模块5向共享源模块9发送读请求,基于接收到响应,就将该参数的地址发送给共享源模块9。共享源模块9把已经存储在该具体指定的地址上的参数发送给处理器核心模块5。
基于接收到该参数,处理器核心模块5就根据所接收到的参数执行预定处理(C9),访问共享源模块9,并且将该预定处理的结果作为一个参数写入其中(写访问)(C10)。然后,处理器核心模块5将一中断请求写入扩展寄存器模块6(C11)。之后,处理器核心模块5再次进入等待状态,等待来自本地型模型4的指令。
一旦该中断请求被写入扩展寄存器模块6,外部接口单元7就将该中断请求传送给本地型模型执行控制单元11(B12)。
一旦本地型模型执行控制单元11接收到该中断请求,它就激活本地型模型4(B13)。
本地型模型4从等待状态转为执行状态,执行下一个处理(B14)。
这里应注意的是,对处理器核心模块5进行编程,使其在将一中断请求写入扩展寄存器模块6之后,直到它接受到已经写入中断控制单元10的一个中断请求时才访问共享源模块9。因此,处理器核心模块5与本地型模型4不可能同时访问共享源模块9。
如从以上的描述很明显地看出的那样,本实施例的仿真装置1所执行的仿真比传统的基于时钟周期仿真需要的时间少,这是因为通过采用执行“周期之外”处理的本地型模型而减少了时间。而且,本实施例的仿真装置1所执行的仿真在精确度方面接近传统的基于时钟周期仿真,这是因为本地型模型是由基于时钟周期模型发出的处理请求激活的。
变换例1以下描述本发明仿真装置的一个变换例(变换例1)。
<结构>
变换例1的仿真装置具有与上述仿真装置1相同的结构,只是它在共享源模块中有一仲裁单元,并且在共享源接口单元中有一访问请求单元和一响应判断单元。这里,仅给出对这些不同之处的解释。
图3示出了变换例1的仿真装置中设置的共享源模块和共享源接口单元。
如图3所示,共享源模块9A包括仲裁单元91,而共享源接口单元8A包括访问请求单元81和响应判断单元82。
仲裁单元91是一功能单元,它仿真一个用于在使用共享源的各个请求之间进行仲裁的仲裁器。当从访问请求单元81接收到访问共享源模块9A的请求时,仲裁单元91就判断是否允许访问,只有在它判定是肯定的结果时,它才将一响应发送给共享源接口单元8A。
当从本地型模型4接收到访问共享源模块9A的请求时,访问请求单元81将该访问请求通知仲裁单元91。
响应判断单元82响应于发送给仲裁单元91的访问请求,判断是否已经从仲裁单元91传来一个响应。
<运行>
下面,说明共享源接口单元8A是如何处理访问共享源模块9A的请求的。
图4是共享源接口单元8A处理一个访问请求的操作流程图。
当从本地型模型4接收到访问共享源模块9A以将一参数写入其中的请求时,访问请求单元81将该访问请求通知仲裁单元91(步骤S1)。
响应判断单元82响应于该访问请求,判断是否已经从仲裁单元91传来一个响应(步骤S2)。如果响应判断单元82判断已经传来一个响应(步骤S2中的“是”),那么就将该参数写入共享源模块9A(步骤S3),然后该过程结束。
如果响应判断单元82判断尚未传来一个响应(步骤S2中的“否”),那么就延长一个周期来进行等待(步骤S4),然后该控制返回到步骤S1,访问请求单元81将该访问请求通知仲裁单元91(步骤S1)。
如上所述,变换例1的仿真装置可以仿真由系统的仲裁器所进行的对请求使用共享源的各请求之间的仲裁,并且该仿真装置还可以仿真仲裁引起的传输延迟。
变换例2
以下描述本发明仿真装置的另一个变换例(变换例2)。
图5是变换例2的仿真装置的功能方框图。
图5中所示仿真装置1A具有与上述仿真装置1相同的功能,只是它另外还有一本地型模型4A,并且它还有替代扩展寄存器模块6、外部接口单元7和本地型模型执行控制单元11的扩展寄存器模块6A、外部接口单元7A和本地型模型执行控制单元11A,这些部分反映出本地型模型4A的增加。
扩展寄存器模块6A分别具有两个与本地型模型4和4A对应的存储区。因此,各存储区的地址分别对应于本地型模型4和4A。处理器核心模块5将一中断请求写入一个地址上的扩展寄存器模块6A中的一个存储区内,该地址对应于中断请求要发送到的本地型模型。
外部接口单元7A在每一个周期都检查扩展寄存器模块6A,用以查看其中是否已经写入一个中断请求,如果已经写入一个中断请求,那么就将一个信息传送给本地型模型执行控制单元11A,该信息用以指定一个与已经写入该中断请求的地址相对应的本地型模型。
基于从外部接口单元7A接收到指定一本地型模型的信息,本地型模型执行控制单元11A就激活所指定的本地型模型。更具体地说,如果本地型模型执行控制单元11A接收到指定例如本地型模型4A的信息,那么它就通过将一状态变换请求传送给本地型模型4A中所包括的状态控制单元12A来激活该本地型模型4A。
应注意的是,虽然图5仅仅示出了两个本地型模型,不过本地型模型的数目并不仅限于两个,而可以是三个或者更多。
变换例3以下描述本发明仿真装置的另一个变换例(变换例3)。
图6是变换例3的仿真装置的功能方框图。
图6中所示仿真装置1B具有与上述仿真装置相同的功能,只是它具有替代本地型模型4的本地型模型4B和4C。
本地型模型4C仿真一个从处理器。本地型模型4B仿真一个DMA控制器,该控制器是从处理器的外围硬件设备。本地型模型4C对本地型模型4B执行的DMA变换进行设定。本地型模型4C包括控制DMA变换的执行状态的控制单元41,执行状态例如是开始和停止。
本地型模型4B的状态控制单元12B根据从控制单元41接收到的指令来控制本地型模型4B的状态。
采用上述结构,就可以使用一个本地型模型,象具有本地型模型4B的情况那样,通过一个中断请求或者类似命令来仿真一个基于时钟周期模型3控制激活的部件,如DMA控制器。
变换例4以下描述本发明仿真装置的另一个变换例(变换例4)。
图7是变换例4的仿真装置的功能方框图。
图7中所示仿真装置1C具有与上述仿真装置1相同的功能,只是它具有替代本地型模型4的本地型模型4D,和替代基于时钟周期模型3的基于时钟周期模型3C另外还具有一个周期计算单元13。
变换例4的本地型模型4D保持有时序信息,该信息表示本地型模型4D在执行状态与等待状态之间变换所采用的时序。当本地型模型4D在仿真执行开始时被仿真内核2调用时,本地型模型4D将该时序信息传送给周期计算单元13。
每一次仿真内核2调用基于时钟周期模型3C,周期计算单元13就计数增加一次。也就是说,周期计算单元13计算调用次数,该次数等于仿真内核2调用基于时钟周期模型3C的周期数。而且,当计数达到与时序信息表示的任意时序(即,变为执行状态的时序或者变为等待状态的时序)相对应的数目时,周期计算单元13就通过替代外部接口单元7的外部接口单元7C将一定时器中断通知传送给本地型模型执行控制单元11。
基于接收到定时器中断通知,本地型模型执行控制单元11就将一状态变换请求传送给状态控制单元12。
采用上述结构,可以用一个本地型模型来仿真一个时间事件过程,例如一实际系统的嵌入式通用实时OS(操作系统)所需的周期处理功能或者警告处理功能。
变换例5以下描述本发明仿真装置的另一个变换例(变换例5)。
图8是变换例5的仿真装置的功能方框图。
图8中所示仿真装置1D具有与上述仿真装置1相同的功能,只是它另外还有一用户界面单元17和一信息输出控制接口单元14,并且它具有替代共享源模块9的共享源模块9D。
与共享源模块9相比,共享源模块9D另外还包括信息输出单元15和信息输出控制寄存器16。
信息输出单元15是一功能单元,它输出表示共享源模块9D运行状态的仿真信息。更具体地说,信息输出单元15所输出的仿真信息包括与多个总线主控器(例如,处理器核心和处理器)访问共享源有关的信息。
信息输出控制寄存器16在共享源模块9D中映射成(map onto)一存储空间,并当运行变得很复杂时,也就是说,在需要详细分析时,在其中记录一条由处理器核心模块5或者本地型模型4传送来的仿真信息的具体说明。信息输出控制寄存器16还将这条仿真信息的具体说明通知信息输出控制接口单元14。
用户界面单元17是具有显示功能的称为GUI(图形用户界面)的部件,它能够以图形的方式显示来自信息输出控制接口单元14的一条仿真信息。用户界面单元17还从用户那里接收要显示的一条仿真信息的具体说明,并且将用户指定的这条仿真信息通知信息输出控制接口单元14。
根据(i)来自用户界面单元1 7的指定的一条仿真信息的通知和(ii)来自信息输出控制寄存器16的指定的一条仿真信息的通知,信息输出控制接口单元14将信息输出单元15输出的仿真信息传送给用户界面单元17。更具体地说,信息输出控制接口单元14通常输出用户指定的一条仿真信息,但是,当信息输出控制寄存器16在其中记录有一条仿真信息的具体说明时,信息输出控制接口单元14就输出信息输出控制寄存器16指定的一条仿真信息。
仿真的流程被写入处理器核心模块5读取和执行的程序中或者本地型模型4中所写入的程序中。因此,创建和编写系统设计模型的开发人员知道仿真运行什么时候变复杂。因此,开发人员可以编写这样的程序,以便在仿真运行变得复杂时,处理器核心模块5或者本地型模型4将一条仿真信息的具体说明发送给信息输出控制寄存器16,以使指定的这条仿真信息得以显示。
采用上述结构,可以在需要详细分析时,指定仿真流程中的一个点。而且,如果如上所述,仿真信息通常以简单的方式显示,那么可以抑制因显示该仿真信息而导致的仿真速度的降低。
变换例6以下描述本发明仿真装置的另一个变换例(变换例6)。
图9是变换例6的仿真装置的功能方框图。
图9中所示的仿真装置1E具有与上述仿真装置1相同的功能,只是它采用用于执行仿真的OS线程控制单元20,该单元是仿真装置1E的基本OS功能单元,而且该本地型模型随如图9中所示的各线程产生。基本OS可以是任意的多线程OS,例如Windows或者UNIX。
在每一个仿真执行开始时,OS把用来标识各线程的句柄(handle)分配给本地型模型4E、4F和4G。每一次执行仿真,这些句柄都改变。因此,在每一次仿真开始时,共享源接口单元8E(它替代共享源接口单元8)和本地型模型执行控制单元11E(它替代本地型模型执行控制单元11)都会创建一个表,该表显示出所分配句柄与本地型模型标识符之间的关系,处理器核心模块5利用这些标识符而将中断请求发送给各本地型模型。
根据所创建的表,本地型模型执行控制单元11E将标识与要执行的本地型模型对应的线程的句柄通知OS线程控制单元20。
在例如将WindowXP(注册商标)用作仿真装置1E的OS的情况下,OS线程控制单元20控制每一个采用API(应用程序接口)功能的线程的执行API功能“悬挂线程”,它用来暂停每一个本地型模型的线程;API功能“恢复线程”,它用来恢复线程的执行。
基于从本地型模型执行控制单元11E接收到标识一个线程的句柄,OS线程控制单元20就将所接收到的句柄标识的线程变为执行状态。
变换例6的上述结构消除了对建立标志位的需要,该标志位用以控制每一个本地型模型的执行状态。
补充说明本发明并不限于上述特征,但是包括以下特征。
(1)在共享源模块9中可能设定数量不足的参数的情况下,外部接口单元7可以保持一定数量的参数,并且根据写入扩展寄存器模块6中的一个值,可以从外部接口单元7中所保持的那些参数中选择一个参数。
(2)变换例1中所述的共享源模块9可以是一动态RAM的模型。动态RAM每隔一定时间执行刷新操作。因此,这种情况下,仲裁单元91可以用作一接口单元。当从共享源接口单元8A接收到访问动态RAM的请求时,共享源模块9判断动态RAM是否是可访问的,并且将所判断的内容显示给共享源接口单元8A。更具体地说,当仲裁单元91在动态RAM没有执行刷新操作情况下接收到这样一个访问请求时,它就判定动态RAM是可访问的,并且将一个响应发送给共享源接口单元8A;而当动态RAM没有执行刷新操作时,仲裁单元91就判定动态RAM是不可访问的,不发送响应。
(3)本发明优选实施例中描述的是,用诸如C或者C++之类的语言编写基于时钟周期模型和本地型模型。但是,用于编写基于时钟周期模型和本地型模型的语言并不限于这些语言,其他的编程语言例如Java(注册商标)或者BASIC也可以用于编写基于时钟周期模型和本地型模型。
(4)实施例中所述的处理器核心模块5可以用一种CAS(周期精确仿真器)实现,该仿真器甚至连流水线或者高速缓冲存储器操作都能精确地仿真。
(5)本发明可以是用来实现上述仿真装置每一个功能的程序。该程序可以存储在诸如IC卡、光盘、软盘或者ROM之类的存储介质中,并且可以随存储介质流通或者分配,或者可以通过适当的通信途径直接流通或者分配。
这种流通或者分配的程序可以安装在具有ROM或类似部件的机器中,并且可以在该机器中运行以在该机器中实现上述仿真装置。
虽然已经参照附图借助实例完整地描述了本发明,不过应当注意的是,对本领域的那些技术人员来说显然可以作各种改变和修改。因此,除非这些改变和修改不在本发明的范围内,否则应当将它们解释为包括在本发明的范围内。
权利要求
1.一种用于仿真包含用多个周期运行的一第一电路区块和一第二电路区块的系统运行的仿真装置,该仿真装置包括一可用于仿真第一电路区块具有时间概念运行的第一仿真单元;一可用于仿真第二电路区块没有时间概念运行的第二仿真单元;一可用于每隔一定时间激活第一仿真单元的第一控制单元;一可用于接收请求信息的接收单元,所述的请求信息是由第一仿真单元发给第二仿真单元的,并与由第一电路区块发给第二电路区块的处理请求相对应;以及一可用于在接收单元接收到请求信息的情况下,激活第二仿真单元的第二控制单元。
2.如权利要求1的仿真装置,其中,通过一共享源在第一电路区块和第二电路区块之间传送数据,所述的仿真装置进一步包括一用于仿真所述共享源的共享源仿真单元,和一用于接收第二请求信息并将该接收到的第二请求信息传送给所述的共享源仿真单元的中介处理单元,所述的第二请求信息是由第二仿真单元发给第一仿真单元的,并且其与由第二电路区块发给第一电路区块的处理请求相对应,其中,如果共享源仿真单元接收到来自中介处理单元的第二请求信息,则第一仿真单元访问共享源仿真单元并读取第二请求信息。
3.如权利要求2的仿真装置,其中,在将请求信息发给第二仿真单元之后,第一仿真单元直到共享源仿真单元接收到来自中介处理单元的第二请求信息时才访问共享源仿真单元。
4.如权利要求3的仿真装置,其中,所述的中介处理单元包括一用于在将第二请求信息传送给共享源仿真单元之前,将访问请求传送给共享源仿真单元的通知单元;和一用于判断是否已经接收到来自共享源仿真单元的访问请求的响应的判断单元,其中,如果判断单元判断出已经接收到对访问请求的响应,则中介处理单元就将第二请求信息传送给共享源仿真单元;如果判断单元判断出没有接收到对访问请求的响应,则中介处理单元就暂停将第二请求信息传送给共享源仿真单元,并且在否定判断后的一预定时间之后,指令通知单元将访问请求传送给共享源仿真单元,其中所述的共享源仿真单元包括一仲裁单元,用于在接收到来自通知单元的访问请求之后,决定是否允许访问共享源,并且仅在仲裁单元决定允许访问的情况下,传送一响应给中介处理单元。
5.如权利要求1的仿真装置,其中,系统进一步包括用预定的多个周期运行的第三电路区块,所述的仿真装置进一步包括一用于仿真第三电路区块没有时间概念运行的第三仿真单元,其中,接收单元进一步接收由第一仿真单元发给第三仿真单元的并与由第一电路区块发给第三电路区块的处理请求相对应的第三请求信息,如果接收单元接收到请求信息,则第二控制单元激活第二仿真单元,如果接收单元接收到第三请求信息,则激活第三仿真单元。
6.如权利要求1的仿真装置,其中,系统进一步包括用预定的多个周期运行的第三电路区块,所述的仿真装置进一步包括一用于仿真第三电路区块没有时间概念运行的第三仿真单元,其中,第二仿真单元包括一用于激活第三仿真单元的第三控制单元。
7.如权利要求1的仿真装置,其进一步包括一用于计算由第一控制单元激活第一仿真单元的激活次数的周期计算单元,其中第一控制单元在仿真执行开始时,激活第二仿真单元,第二仿真单元预先存储一指示第二仿真单元改变其仿真状态的时序的时序信息,并在由第一控制单元激活第二仿真单元时,将该时序信息传送给周期计算单元,周期计算单元基于从第二仿真单元接收到的时序信息和由周期计算单元计算出的激活次数,将第二仿真单元将被激活的时序通知给第二控制单元,第二控制单元用由周期计算单元通知的时序激活第二仿真单元。
8.如权利要求2的仿真装置,其进一步包括一用于以仿真信息形式输出由共享源仿真单元执行的仿真结果;一用于向用户说明来自输出单元输出的仿真信息的用户界面单元。
9.如权利要求8的仿真装置,其中,共享源仿真单元进一步包括一用于记录应当详细提供的部分仿真信息说明的记录单元,一用于控制由输出单元给用户界面单元的仿真信息输出的输出控制单元,其中,用户界面单元接收来自用户的所要示出的部分仿真信息的说明,并将该接收到的来自用户的说明通知输出控制单元,输出控制单元通常指示输出单元输出按用户指定的那部分仿真信息,并且当记录单元其中记录有说明时,指示输出单元输出按记录单元中指定的那部分仿真信息。
10.如权利要求5的仿真装置,其进一步包括一多线程运行系统,其中分别通过多线程运行系统中的多条线程来控制第二仿真单元和第三仿真单元。
11.一种用于仿真包含用多个周期运行的一第一电路区块和一第二电路区块的系统运行的仿真方法,该仿真方法包括如下步骤设置一可用于仿真第一电路区块具有时间概念运行的第一仿真单元;设置一可用于仿真第二电路区块没有时间概念运行的第二仿真单元;设置一可用于每隔一定时间激活第一仿真单元的第一控制单元;设置一可用于接收请求信息的接收单元,所述的请求信息是由第一仿真单元发给第二仿真单元的并与由第一电路区块发给第二电路区块的处理请求相对应;以及设置一可用于在接收单元接收到请求信息的情况下,激活第二仿真单元的第二控制单元。
12.如权利要求11的仿真方法,其中,通过一共享源在第一电路区块和第二电路区块之间传送数据,所述的仿真方法进一步包括如下步骤设置一用于仿真所述共享源的共享源仿真单元,设置一用于接收第二请求信息并将该接收到的第二请求信息传送给所述的共享源仿真单元的中介处理单元,所述的第二请求信息是由第二仿真单元发给第一仿真单元的,并且其与由第二电路区块发给第一电路区块的处理请求相对应,其中,仿真方法还进一步包括如下步骤,即如果共享源仿真单元接收到来自中介处理单元的第二请求信息,则第一仿真单元访问共享源仿真单元并读取第二请求信息。
13.如权利要求12的仿真方法,其可进一步包括在将请求信息发给第二仿真单元之后,使第一仿真单元直到共享源仿真单元接收到来自中介处理单元的第二请求信息时才访问共享源仿真单元。
14.如权利要求13的仿真方法,其中,所述的中介处理单元包括用于,在将第二请求信息传送给共享源仿真单元之前,将访问请求传送给共享源仿真单元的通知单元;和用于判断是否已经接收到来自共享源仿真单元的对访问请求的响应的判断单元,其中如果判断单元判断出已经接收到对访问请求的响应,则中介处理单元就将第二请求信息传送给共享源仿真单元;如果判断单元判断出没有接收到对访问请求的响应,则中介处理单元就暂停将第二请求信息传送给共享源仿真单元,并且在否定判断后的一预定时间之后,指令通知单元将访问请求传送给共享源仿真单元,其中共享源仿真单元包括一仲裁单元,用于在接收到来自通知单元的访问请求之后,决定是否允许访问共享源,并且仅在仲裁单元决定允许访问的情况下,传送一响应给中介处理单元。
15.一种存储用于仿真包含使用多个周期运行的一第一电路区块和一第二电路区块的系统运行的仿真程序的计算机可读存储介质,所述的计算机程序可使计算机实现如下的作用可用于仿真第一电路区块具有时间概念运行的第一仿真单元;可用于仿真第二电路区块没有时间概念运行的第二仿真单元;可用于每隔一定时间激活第一仿真单元的第一控制单元;可用于接收请求信息的接收单元,所述的请求信息是由第一仿真单元发给第二仿真单元的并与由第一电路区块发给第二电路区块的处理请求相对应;以及可用于在接收单元接收到请求信息的情况下,激活第二仿真单元的第二控制单元。
16.如权利要求15的计算机可读存储介质,其中通过一共享源在第一电路区块和第二电路区块之间传送数据,所述的仿真程序可使计算机进一步实现如下作用用于仿真所述共享源的共享源仿真单元,用于接收第二请求信息并将该接收到的第二请求信息传送给所述的共享源仿真单元的中介处理单元,所述的第二请求信息是由第二仿真单元发给第一仿真单元的,并且其与由第二电路区块发给第一电路区块的处理请求相对应,其中,仿真程序可进一步控制计算机以实现如果共享源仿真单元接收到来自中介处理单元的第二请求信息,则第一仿真单元访问共享源仿真单元并读取第二请求信息。
17.如权利要求16的计算机可读存储介质,其中仿真程序进一步控制计算机以使,在将请求信息发给第二仿真单元之后,第一仿真单元直到共享源仿真单元接收到来自中介处理单元的第二请求信息时才访问共享源仿真单元。
18.如权利要求17的计算机可读存储介质,其中仿真程序进一步控制计算机以使中介处理单元包括用于,在将第二请求信息传发给共享源仿真单元之前,将访问请求传送给共享源仿真单元的通知单元;和用于判断是否已经接收到来自共享源仿真单元的对访问请求的响应的判断单元,其中如果判断单元判断出已经接收到对访问请求的响应,则中介处理单元就将第二请求信息传送给共享源仿真单元;如果判断单元判断出没有接收到对访问请求的响应,则中介处理单元就停止将第二请求信息传送给共享源仿真单元,并且在否定判断后的一预定时间之后,指令通知单元将访问请求传送给共享源仿真单元,其中共享源仿真单元包括一仲裁单元,用于在接收到来自通知单元的访问请求之后,决定是否允许访问共享源,并且仅在仲裁单元决定允许访问的情况下,传送一响应给中介处理单元。
全文摘要
一种用于仿真一包含用多个周期运行的一第一电路区块和一第二电路区块的系统运行的仿真装置。该仿真装置包括一可用于仿真第一电路区块具有时间概念运行的第一仿真单元;一可用于仿真第二电路区块没有时间概念运行的第二仿真单元;一可用于每隔一定时间激活第一仿真单元的第一控制单元;一可用于接收请求信息的接收单元,所述的请求信息是由第一仿真单元发给第二仿真单元的并与由第一电路区块发给第二电路区块的处理请求相对应;以及一可用于在接收单元接收到请求信息的情况下,激活第二仿真单元的第二控制单元。
文档编号G06F17/50GK1601473SQ200410037618
公开日2005年3月30日 申请日期2004年4月27日 优先权日2003年9月25日
发明者崎山健次 申请人:松下电器产业株式会社