系统建模和仿真的方法及装置的制作方法

文档序号:6584600阅读:265来源:国知局
专利名称:系统建模和仿真的方法及装置的制作方法
技术领域
本发明涉及仿真领域,特别是指一种系统建模和仿真的方法及装置。
背景技术
随着系统设计的复杂性提高,对系统进行仿真变得越来越重要。以SoC(System On a Chip,片上系统)为例,用于连接SoC系统各个模块的总线的结构和性能成为系统 性能的关键,系统设计的中心逐渐由模块的处理能力转到系统的总线结构,即各个模块 之间数据的高效传输逐渐成为系统设计的中心。图1为一种典型的SOC系统的结构示 意图,就SoC系统建模和仿真而言,现存的技术方案包括采用基于硬件描述语言的时钟 精确的系统模型,例如Verilog、 V亂(Very-High-Speed Integrated Circuit Hardware DescriptionLanguage,超高速积体电路硬件描述语言)、SystemC等专用的语言,但是基于 硬件描述语言的时钟精确的系统模型,不仅要对总线状态的变化进行仿真,而且要对与总 线连接的模块内部的处理过程进行仿真,带来的问题是仿真速度比较慢。

发明内容
本发明要解决的技术问题是提供一种仿真速度比较快的系统的建模与仿真方法 及装置。 为解决上述技术问题,本发明的实施例提供技术方案如下
—方面,提供一种系统的建模方法,包括 根据所述系统中模块和总线之间的连接关系,指定所述模块和所述总线之间的对 应关系; 将所述模块的功能模拟为功能函数,所述功能函数描述所述模块的端口状态和总 线事件之间的对应关系,所述总线事件描述所述模块对应的总线的状态在时间点的变化;
确定系统时钟周期,所述系统时钟周期小于/等于系统中最短的模块时钟周期;
查找出每个系统时钟周期内需要被驱动的模块; 按照所述模块的驱动时间顺序,将所述模块排序,生成每个系统时钟周期的模块 列表; 所述查找出每个系统时钟周期内需要被驱动的模块的步骤具体为通过检测每个 系统时钟周期内出现的模块时钟上升沿和/或模块时钟下降沿,查找出每个系统时钟周期 内需要被驱动的模块。 所述按照所述模块的驱动时间顺序,将所述模块排序,生成每个系统时钟周期的 模块列表的步骤具体为按照所述模块的时钟上升沿和/或时钟下降沿的出现时刻,将所 述模块排序,生成每个系统时钟周期的模块列表。
另一方面,提供一种系统的建模装置,包括 指定单元,用于根据所述系统中模块和总线之间的连接关系,指定所述模块和所 述总线之间的对应关系;
4
模拟单元,用于将所述模块的功能模拟为功能函数,所述功能函数描述所述模块 的端口状态和总线事件之间的对应关系,所述总线事件描述所述模块对应的总线的状态在 时间点的变化; 时钟周期确定单元,用于确定系统时钟周期,所述系统时钟周期小于/等于系统 中最短的模块时钟周期; 查找单元,用于查找出每个系统时钟周期内需要被驱动的模块; 排序单元,用于按照所述模块的驱动时间顺序,将所述模块排序,生成每个系统时
钟周期的模块列表。 另一方面,提供一种系统的仿真方法,包括 步骤101,获取当前系统时钟周期对应的模块列表; 步骤102,按照模块的驱动时间顺序,依次从所述当前系统时钟周期的模块列表中 获取一个模块; 步骤103,调用所述模块的功能函数,对系统中总线的状态进行仿真,所述功能函
数描述所述模块的端口状态和总线事件之间的对应关系,所述总线事件描述所述模块对应
的总线的状态在时间点的变化。 所述的系统的仿真方法,还包括 步骤104,检测所述当前系统时钟周期对应的模块列表中是否有未调用的模块,如 果检测的结果为是,则返回所述步骤102 ; 步骤105,如果检测的结果为否,则检测所述当前系统时钟周期是否为最后一拍, 如果为最后一拍,则结束,否则,将下一个系统时钟周期作为当前系统时钟周期,返回所述 步骤101。 所述步骤103包括
读取所述模块的端口状态; 将所述模块的端口状态作为所述模块的功能函数的输入,运行所述模块的功能函 数,生成运行结果; 根据所述运行结果,判断是否需要在总线事件列表中插入总线事件; 如果判断的结果为是,则按照总线事件时间点的顺序,在所述总线事件列表中插
入所述总线事件。 所述步骤103之前,还包括 获取所述系统中模块和总线的对应关系; 判断所述总线事件列表中是否有所述模块对应的总线的事件,并且,所述总线的
事件的时间点位于所述模块的驱动时间之前,同时,所述总线的事件未被处理; 如果判断的结果为是,则按照所述总线的事件时间点顺序,依次根据所述总线的
事件修改总线的状态;否则,执行步骤103。 所述总线的状态包括地址、数据和传输类型。 另一方面,提供一种系统的仿真装置,包括 第一获取单元,用于获取当前系统时钟周期对应的模块列表; 第二获取单元,用于按照模块的驱动时间顺序,依次从所述当前系统时钟周期的 模块列表中获取一个模块;
调用单元,用于调用所述模块的功能函数,对系统中总线的状态进行仿真,所述功 能函数描述所述模块的端口状态和总线事件之间的对应关系,所述总线事件描述所述模块 对应的总线的状态在时间点的变化。
所述的系统的仿真装置,还包括 第一检测单元,用于检测所述当前系统时钟周期对应的模块列表中是否有未调用 的模块,当检测的结果为是时,则使所述第二获取单元继续运行; 第二检测单元,用于当检测的结果为否时,检测所述当前系统时钟周期是否为最 后一拍,当不是最后一拍时,则将下一个系统时钟周期作为当前系统时钟周期,使所述第一 获取单元继续运行。 所述的系统的仿真装置,还包括 第三获取单元,用于获取所述系统中模块和总线的对应关系; 判断单元,用于判断所述总线事件列表中是否有所述模块对应的总线的事件,并 且,所述总线的事件的时间点位于所述模块的驱动时间之前,同时,所述总线的事件未被处 理; 修改单元,用于当判断的结果为是,则按照所述总线的事件时间点顺序,依次根据
所述总线的事件修改总线的状态。 本发明的实施例具有以下有益效果 上述方案中,对系统进行建模和仿真时,将模型的抽象层次定位于总线级别,将模 块内部的功能用串行执行的方式描述,不需要对模块内部的运行进行仿真,因此,加快了仿
真速度。


图1为一种典型的S0C系统的结构示意图; 图2为本发明所述的系统的建模方法的一实施例的流程示意图;
图3为对图1所述的S0C系统建模后,S0C系统的结构示意图;
图4为本发明系统的建模装置的一实施例的结构示意图;
图5为本发明系统的仿真方法的一实施例的流程示意图;
图6为本发明系统的仿真方法的另一实施例的流程示意图;
图7为本发明系统的仿真装置的一实施例的结构示意图;
图8为本发明系统的仿真装置的另一实施例的结构示意图;
图9为AXI总线与模块之间的连接关系示意图; 图10为图9中AXI协议中模块1向模块2发起一次请求并且被模块2接收的握 手过程的示意图。
具体实施例方式
为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合 附图及具体实施例进行详细描述。 本发明的实施例针对现有技术中仿真速度慢的问题,提供一种系统的建模和仿真 的方法及装置。
如图2所示,为本发明所述的系统的建模方法的一实施例的流程示意图,包括
步骤21,根据所述系统中模块和总线之间的连接关系,指定所述模块和所述总线 之间的对应关系; 其中,步骤21中,指定系统中各个模块和各个总线的对应关系。所述总线和所述 模块之间的对应关系可以为总线和所述模块端口之间的对应关系。系统可以用模块、端口、 总线这三个元素的组合来描述。其中,模块,用于描述总线上相连的可以发起请求和接收请 求的模块。端口,用于描述模块上连接总线的端口,每个模块至少包含一个端口。总线的状 态,用于描述总线的状态,如地址、数据、传输类型等。 步骤22,将所述模块的功能模拟为功能函数,所述功能函数描述所述模块的端口 状态和总线事件之间的对应关系,所述总线事件描述所述模块对应的总线的状态在时间点 的变化。 该方案中,对系统建模时,采用统一的方法描述系统的总线行为,保证系统总线行 为的时钟精确,对于模块内部的行为则根据具体模块的功能用串行方式描述,在后续仿真 过程中,不需要对模块内部的处理进行仿真,因此能够加快仿真速度。 模块的功能函数是对模块功能的建模,用于描述模块对端口状态的变化做出的响
应,该响应可以出现在下一个时钟周期,也可以出现在若干时钟周期之后。 使用"总线事件"描述系统的总线的动态行为,总线事件表示在某个时间点总线的
状态发生了改变,时间点用绝对时间表示。总线事件组成一个总线事件列表,在该列表中,
所有总线事件按照时间先后顺序排队。 步骤23,确定系统时钟周期,所述系统时钟周期小于/等于系统中最短的模块时 钟周期; 在后续的仿真过程中,每一个循环相当于一个系统时钟周期。在系统中,可能存在 多个异步时钟,每个模块都有自己的时钟周期和时钟相位,系统时钟周期必须小于/等于 系统中所有模块的时钟周期。 步骤24,查找出每个系统时钟周期内需要被驱动的模块; 其中,步骤24具体为通过检测每个系统时钟周期内出现的模块时钟上升沿,查 找出每个系统时钟周期内被驱动的模块;和/或通过检测每个系统时钟周期内出现的模块 时钟下降沿,查找出每个系统时钟周期内被驱动的模块。 步骤25,按照所述模块的驱动时间顺序,将所述模块排序,生成每个系统时钟周期
的模块列表。其中,步骤25具体为通过检测每个系统时钟周期内出现的模块时钟上升沿
和/或模块时钟下降沿,查找出每个系统时钟周期内需要被驱动的模块。 以对图1中一种典型的SoC系统的建模为例,对该系统建模后,该系统的结构可以
表示为图3。 基于上述对系统的仿真,以下描述对系统的仿真,通过仿真可以描述总线的动态 行为。 如图4所示,为本发明所述的系统的建模装置5的一实施例的结构示意图,包括
指定单元51,用于根据所述系统中模块和总线之间的连接关系,指定所述模块和 所述总线之间的对应关系; 模拟单元52,用于将所述模块的功能模拟为功能函数,所述功能函数描述所述模
7块的端口状态和总线事件之间的对应关系,所述总线事件描述所述模块对应的总线的状态 在时间点的变化。 该方案中,对系统建模时,采用统一的方法描述系统的总线行为,保证系统总线行 为的时钟精确,对于模块内部的行为则根据具体模块的功能用串行方式描述,在后续仿真 过程中,不需要对模块内部的处理进行仿真,因此能够加快仿真速度。 时钟周期确定单元53,用于确定系统时钟周期,所述系统时钟周期小于/等于系 统中最短的模块时钟周期; 查找单元54,用于查找出每个系统时钟周期内需要被驱动的模块;具体为通过 检测每个系统时钟周期内出现的模块时钟上升沿,查找出每个系统时钟周期内被驱动的模 块;和/或通过检测每个系统时钟周期内出现的模块时钟下降沿,查找出每个系统时钟周 期内被驱动的模块。 排序单元55,用于按照所述模块的驱动时间顺序,将所述模块排序,生成每个系统 时钟周期的模块列表,具体为按照所述模块的时钟上升沿和/或时钟下降沿的出现时刻, 将所述模块排序,生成每个系统时钟周期的模块列表。 如图5所示,为本发明所述的系统的仿真方法的一实施例的流程示意图,包括
步骤71,获取当前系统时钟周期对应的模块列表; 步骤72,按照模块的驱动时间顺序,依次从所述当前系统时钟周期的模块列表中 获取一个模块; 步骤73,调用所述模块的功能函数,对系统中总线的状态进行仿真,所述功能函数 描述所述模块的端口状态和总线事件之间的对应关系,所述总线事件描述所述模块对应的 总线的状态在时间点的变化。 所述总线的状态包括地址、数据和传输类型等。 该方案中,对系统进行仿真时,将模型的抽象层次定位于总线级别,将模块内部的 功能用串行执行的方式描述,不需要对模块内部的运行进行仿真,因此,加快了仿真速度。
如图6所示,为本发明所述的系统的仿真方法的一实施例的流程示意图,包括
步骤81,获取当前系统时钟周期对应的模块列表; 步骤82,按照模块的驱动时间顺序,依次从所述当前系统时钟周期的模块列表中 获取一个模块; 步骤83,获取所述系统中模块和总线的对应关系; 步骤84,判断所述总线事件列表中是否有所述模块对应的总线的事件,并且,所述 总线的事件的时间点位于所述模块的驱动时间之前,同时,所述总线的事件未被处理;
步骤85,如果判断的结果为是,则按照所述总线的事件时间点顺序,依次根据所述 总线的事件修改总线的状态;然后执行步骤86。否则,直接执行步骤86。
步骤86,调用所述模块的功能函数,所述功能函数描述所述模块的端口状态和总 线事件之间的对应关系,所述总线事件描述所述模块对应的总线的状态在时间点的变化;
其中,步骤86包括步骤861 ,读取所述模块的端口状态;步骤862,将所述模块的 端口状态作为所述模块的功能函数的输入,运行所述模块的功能函数,生成运行结果;步骤 863,根据所述运行结果,判断是否需要在总线事件列表中插入总线事件;步骤864,如果判 断的结果为是,则按照总线事件时间点的顺序,在所述总线事件列表中插入所述总线事件。
步骤87,检测所述当前系统时钟周期对应的模块列表中是否有未调用的模块,如 果检测的结果为是,则返回所述步骤82 ; 步骤88,如果检测的结果为否,则检测所述当前系统时钟周期是否为最后一拍,如 果为最后一拍,则结束,否则,将下一个系统时钟周期作为当前系统时钟周期,返回所述步 骤81。 本发明中,在系统的每个循环之内,系统查找出当前系统时钟周期之内需要驱动 的所有模块(例如,检测当前系统时钟周期内出现的模块时钟上升沿),根据事件列表中位 于每个模块被驱动时刻(例如,模块时钟上升沿)之前的事件,修改总线状态,然后调用该 模块的功能函数,根据总线对应的模块的端口状态,建立新的事件插入总线事件列表中。
如图7所示,为本发明所述的系统的仿真装置的一实施例的结构示意图,包括
第一获取单元91,用于获取当前系统时钟周期对应的模块列表;
第二获取单元92,用于按照模块的驱动时间顺序,依次从所述当前系统时钟周期 的模块列表中获取一个模块; 调用单元93,用于调用所述模块的功能函数,对系统中总线的状态进行仿真,所述 功能函数描述所述模块的端口状态和总线事件之间的对应关系,所述总线事件描述所述模 块对应的总线的状态在时间点的变化。 该方案中,对系统进行仿真时,将模型的抽象层次定位于总线级别,将模块内部的 功能用串行执行的方式描述,不需要对模块内部的运行进行仿真,因此,加快了仿真速度。
如图8所示,为本发明所述的系统的仿真装置的另一实施例的结构示意图,还包 括 第三获取单元94,用于获取所述系统中模块和总线的对应关系; 判断单元95,用于判断所述总线事件列表中是否有所述模块对应的总线的事件,
并且,所述总线的事件的时间点位于所述模块的驱动时间之前,同时,所述总线的事件未被
处理; 修改单元96,用于当判断的结果为是,则按照所述总线的事件时间点顺序,依次根 据所述总线的事件修改总线的状态。 调用单元97,用于调用所述模块的功能函数,所述功能函数描述所述模块的端口 状态和总线事件之间的对应关系,所述总线事件描述所述模块对应的总线的状态在时间点 的变化; 第一检测单元98,用于检测所述当前系统时钟周期对应的模块列表中是否有未调
用的模块,当检测的结果为是时,则使所述第二获取单元92继续运行; 第二检测单元99,用于当检测的结果为否时,检测所述当前系统时钟周期是否为
最后一拍,当不是最后一拍时,则将下一个系统时钟周期作为当前系统时钟周期,使所述第
一获取单元91继续运行。 本发明实施例所述的系统的建模和仿真方法及装置有以下效果 (1)仿真的执行时序同实际硬件相吻合,可以严格反映硬件的性能。
(2)可以比较方便的修改系统中总线和所述模块之间的对应关系,以描述新的总
线结构。 (3)相对于其它建模方式,如硬件描述语言,单线程的、基于C/C++等通用高级语言的建模方法,本发明为用高级语言实现的、用于描述系统总线行为的统一的系统级建模 和仿真方案,有足够快的仿真速度,满足架构性能评估的需求。 (4)定义了一个通用系统,用于系统总线的建模和仿真,工程师可以专注于模块行 为的描述,以加快建模速度。 (5)不同的模块具有通用的接口,方便协同开发仿真模型,提高了模型的可重用 性。 (6)现有技术中通用高级语言的串行执行特性,并不适合描述并行执行的硬件结 构,因此存在开发周期长、调试困难的问题,本发明的方案将模型的抽象层次定位于总线级 别,将模块内部的功能用串行执行的方式描述,用于快速实现模块的功能,用模块、端口、状 态、总线事件和总线事件列表等元素严格描述总线信号的硬件行为,能够保证总线行为的 周期精确性和模型的可重用性。 (7)上述方案采用了适合于架构评估阶段的抽象层次,着重于系统总线的行为描 述,在保证建模速度和仿真速度的同时实现了时钟精确的总线行为描述。对系统进行仿真 时,将模型的抽象层次定位于总线级别,将模块内部的功能用串行执行的方式描述,不需要 对模块内部的运行进行仿真,因此,加快了仿真速度。
以下以AXI总线的握手过程为例,说明系统的建模和仿真方法。
如图9所示,为AXI总线与模块之间的连接关系。AXI总线包含5个通道,都以 VALID/READY(有效/完毕)信号为握手信号,为简便起见,这里只描述单个通道的信号。在 该系统中,有两个模块模块1和模块2。模块1和模块2被同一个时钟驱动。每个模块都 有一个端口 ,模块1包含一个Master (主)端口 ,模块2包含一个Slave (从)端口 。 AXI总 线0的状态包含了 VALID信号、READY信号和INFORMATION(信息内容)信号,总线0对应于 AXI总线的一个通道。VALID信号表示发起请求,由模块1的Master端口驱动。READY信号 表示请求被接收,由模块2的Slave端口驱动,INFORMATION信号表示请求内容,由模块1的 Master端口驱动。VALID和READY信号取值范围为0 (低电平)或1 (高电平),INFORMATION 信号的取值范围依AXI通道而定。 如图10所示,为按照AXI协议,模块1向模块2发起一次请求并且被模块2接收 的握手过程(这是可能的交互过程的一种)。这一过程如下
VALID信号和READY信号的初始值都为低电平。 模块1在第一个时钟上升沿之后发起请求。在第1个时钟上升沿之后,VALID信 号被模块1置为高电平,同时INFORMATION信号被修改为请求内容。 在第二个时钟上升沿后,模块2将VALID信号和INFORMATION信号锁存,经过一 些逻辑之后,模块2将READY信号置为高电平。由于模块1在第二个时钟上升沿锁存到的 READY信号为低电平,所以它维持VALID信号和INFORMATION信号。 在第三个时钟上升沿之后,模块2将READY信号置为低电平,由于模块1这次锁存 到的READY信号为高,表示请求被接收,模块1将VALID信号置为低电平,这也意味着这时 INFORMATION信号无意义。至此,握手过程结束。 在本发明实施例所述的系统仿真的方法中,这一握手的流程将表现为如下的过 程 首先,指定模块和总线之间的关系,即模块1的Master端口同AXI总线0相对应,
10模块2的Slave端口同AXI总线0相对应。 然后,确定系统时钟周期。由于这个例子只包含一个时钟信号(ACLK),所以将这
唯一的时钟信号作为系统时钟信号。这样,在每一个系统时钟上升沿,需要驱动的模块是模
块0和模块1,由于两个模块由同一个时钟驱动,所以二者驱动的时间先后不重要,下面的
描述中以先驱动模块0再驱动模块1为例(也可以先驱动模块1再驱动模块0)。 其次,开始系统时钟循环 第0个系统时钟上升沿 对于模块O,在该模块的驱动时间之前,没有总线事件需要处理,调用该模块的功 能函数,读取Master端口的状态(此时VALID和READY信号均为低电平),此时没有请求需 要发起,无需插入总线事件。 对于模块l,在该模块的驱动时间之前,没有总线事件需要处理,调用该模块的功 能函数,读取Slave端口的状态(此时VALID和READY信号均为低电平),此时没有请求需 要处理,无需插入总线事件。
第l个系统时钟上升沿 对于模块O,在该模块的驱动时间之前,没有总线事件需要处理,调用该模块的功 能函数,读取Master端口的状态(此时VALID和READY信号均为低电平),根据该模块的功 能函数,此时发起请求,所以在总线事件列表中插入总线事件O,该总线事件O描述了在这 一时刻之后,VALID信号变为高,INFORMATION信号变为请求内容。 对于模块l,在该模块的驱动时间之前,没有总线事件需要处理,调用该模块的功
能函数,读Slave端口的状态(此时VALID和READY信号均为低电平),此时没有请求需要
处理,无需插入总线事件。 第2个系统时钟上升沿 对于模块O,在该模块的驱动时间之前,判断所述总线事件列表是否有未处理的所 述模块对应的总线事件,并且,所述总线事件的时间点位于取出的所述模块的驱动时间之 前;因此,总线事件列表中的总线事件0需要处理。处理该总线事件0之后,AXI总线0的 VALID信号变为高,INFORMATION信号变为请求内容,调用该模块的功能函数,读取Master 端口的状态(此时VALID信号为高电平,READY信号为低电平,INFORMATION信号为请求 的内容),由于READY信号为低电平,表明上一个请求尚未被接收,所以维持VALID信号和 INFORMATION信号不变,无需插入总线事件。 对于模块l,在该模块的驱动时间之前,没有总线事件需要处理(总线事件0已经 在调用模块0的功能函数前被处理了 ),调用该模块的功能函数,读取Slave端口的状态 (此时VALID信号为高电平,READY信号为低电平),VALID信号为高电平,表明有请求,根据 模块1的功能函数,判断该请求可以接收,需要将READY信号置为高电平,即在总线事件列 表中插入总线事件l,该总线事件1表示在此时刻之后,READY信号为高电平。
第3个系统时钟上升沿 对于模块O,在该模块的驱动时间之前,总线事件列表中的总线事件1需要处理, 处理该总线事件1之后,AXI总线0的READY信号变为高,调用该模块的功能函数,读取 Master端口的状态(此时VALID信号为高电平,READY信号为高电平),由于READY信号为 高电平,表明上一个请求已经被接收,同时模块0没有其它请求需要发送,所以将VALID信号置为低电平,即插入总线事件2,该总线事件2表示在此时刻之后,VALID信号为低电平。
对于模块l,在该模块的驱动时间之前,没有总线事件需要处理(总线事件1已经 在调用模块0的功能函数前被处理了 ),调用该模块的功能函数,读取Slave端口的状态 (此时VALID信号为高电平,READY信号为高电平),VALID信号和READY信号同时为高,表 明对应的请求在上一拍已经被接收,根据模块1的功能函数,需要将READY信号置为低电 平,即向总线事件列表插入总线事件3,该总线事件3表示在此时刻之后,READY信号为低电 平。 第4个系统时钟上升沿 对于模块O,在该模块的驱动时间之前,总线事件列表中的总线事件2和3需要处 理,处理该总线事件之后,AXI总线0的READY信号变为低,VALID信号变为低,调用该模块 的功能函数,根据模块的功能进行操作。 对于模块l,在该模块的驱动时间之前,没有总线事件需要处理(总线事件2,3已 经在调用模块0的功能函数前被处理了 ),调用该模块的功能函数,根据模块的功能进行操作。 按照以上的流程,完成了一次AXI协议的握手过程的仿真。 在实际的仿真中,可以包含多个总线、不同的异步时钟。另外,在模块的功能函数 中可以加入复杂的控制功能描述模块的功能,也可以加入各种统计功能描述需要统计的信 息,从而完成整个系统的仿真,并且给出统计结果。 综上,本发明的上述技术方案用于在系统的架构设计阶段进行架构性能的评估, 以找到一种性能最优化的系统架构。在架构评估阶段对系统建模时,采用统一的方法描述 系统的总线行为,保证系统总线行为的时钟精确,同时保证仿真系统的可重用性,而对于模 块内部的行为则根据具体模块的功能用串行方式描述。 本发明的上述实施例不仅应用于SoC系统的建模和仿真,也可用于其他系统的建 模和仿真。 本领域技术人员可以理解,本发明所述的建模方法和仿真方法可以结合在一起处 理,先进行建模,然后进行仿真。同理,建模装置和仿真装置可以集成在一个装置中。在建 模中生成的每个系统时钟周期的模块列表,可以在仿真中多次调用。因此,可以进行一次建 模,多次仿真。 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员 来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也 应视为本发明的保护范围。
权利要求
一种系统的建模方法,其特征在于,包括根据所述系统中模块和总线之间的连接关系,指定所述模块和所述总线之间的对应关系;将所述模块的功能模拟为功能函数,所述功能函数描述所述模块的端口状态和总线事件之间的对应关系,所述总线事件描述所述模块对应的总线的状态在时间点的变化;确定系统时钟周期,所述系统时钟周期小于/等于系统中最短的模块时钟周期;查找出每个系统时钟周期内需要被驱动的模块;按照所述模块的驱动时间顺序,将所述模块排序,生成每个系统时钟周期的模块列表。
2. 根据权利要求1所述的系统的建模方法,其特征在于,所述查找出每个系统时钟周期内需要被驱动的模块的步骤具体为通过检测每个系统时钟周期内出现的模块时钟上升沿和/或模块时钟下降沿,查找出每个系统时钟周期内需要被驱动的模块。所述按照所述模块的驱动时间顺序,将所述模块排序,生成每个系统时钟周期的模块列表的步骤具体为按照所述模块的时钟上升沿和/或时钟下降沿的出现时刻,将所述模块排序,生成每个系统时钟周期的模块列表。
3. —种系统的建模装置,其特征在于,包括指定单元,用于根据所述系统中模块和总线之间的连接关系,指定所述模块和所述总线之间的对应关系;模拟单元,用于将所述模块的功能模拟为功能函数,所述功能函数描述所述模块的端口状态和总线事件之间的对应关系,所述总线事件描述所述模块对应的总线的状态在时间点的变化;时钟周期确定单元,用于确定系统时钟周期,所述系统时钟周期小于/等于系统中最短的模块时钟周期;查找单元,用于查找出每个系统时钟周期内需要被驱动的模块;排序单元,用于按照所述模块的驱动时间顺序,将所述模块排序,生成每个系统时钟周期的模块列表。
4. 一种系统的仿真方法,其特征在于,包括步骤101,获取当前系统时钟周期对应的模块列表;步骤102,按照模块的驱动时间顺序,依次从所述当前系统时钟周期的模块列表中获取一个模块;步骤103,调用所述模块的功能函数,对系统中总线的状态进行仿真,所述功能函数描述所述模块的端口状态和总线事件之间的对应关系,所述总线事件描述所述模块对应的总线的状态在时间点的变化。
5. 根据权利要求4所述的系统的仿真方法,其特征在于,还包括步骤104,检测所述当前系统时钟周期对应的模块列表中是否有未调用的模块,如果检测的结果为是,则返回所述步骤102 ;步骤105,如果检测的结果为否,则检测所述当前系统时钟周期是否为最后一拍,如果为最后一拍,则结束,否则,将下一个系统时钟周期作为当前系统时钟周期,返回所述步骤101。
6. 根据权利要求5所述的系统的仿真方法,其特征在于,所述步骤103包括读取所述模块的端口状态;将所述模块的端口状态作为所述模块的功能函数的输入,运行所述模块的功能函数,生成运行结果;根据所述运行结果,判断是否需要在总线事件列表中插入总线事件;如果判断的结果为是,则按照总线事件时间点的顺序,在所述总线事件列表中插入所述总线事件。
7. 根据权利要求6所述的系统的仿真方法,其特征在于,所述步骤103之前,还包括获取所述系统中模块和总线的对应关系;判断所述总线事件列表中是否有所述模块对应的总线的事件,并且,所述总线的事件的时间点位于所述模块的驱动时间之前,同时,所述总线的事件未被处理;如果判断的结果为是,则按照所述总线的事件时间点顺序,依次根据所述总线的事件修改总线的状态;否则,执行步骤103。
8. 根据权利要求5所述的系统的仿真方法,其特征在于,所述总线的状态包括地址、数据和传输类型。
9. 一种系统的仿真装置,其特征在于,包括第一获取单元,用于获取当前系统时钟周期对应的模块列表;第二获取单元,用于按照模块的驱动时间顺序,依次从所述当前系统时钟周期的模块列表中获取一个模块;调用单元,用于调用所述模块的功能函数,对系统中总线的状态进行仿真,所述功能函数描述所述模块的端口状态和总线事件之间的对应关系,所述总线事件描述所述模块对应的总线的状态在时间点的变化。
10. 根据权利要求9所述的系统的仿真装置,其特征在于,还包括第一检测单元,用于检测所述当前系统时钟周期对应的模块列表中是否有未调用的模块,当检测的结果为是时,则使所述第二获取单元继续运行;第二检测单元,用于当检测的结果为否时,检测所述当前系统时钟周期是否为最后一拍,当不是最后一拍时,则将下一个系统时钟周期作为当前系统时钟周期,使所述第一获取单元继续运行。
11. 根据权利要求9所述的系统的仿真装置,其特征在于,还包括第三获取单元,用于获取所述系统中模块和总线的对应关系;判断单元,用于判断所述总线事件列表中是否有所述模块对应的总线的事件,并且,所述总线的事件的时间点位于所述模块的驱动时间之前,同时,所述总线的事件未被处理;修改单元,用于当判断的结果为是,则按照所述总线的事件时间点顺序,依次根据所述总线的事件修改总线的状态。
全文摘要
本发明提供一种系统建模和仿真的方法及装置,涉及仿真领域,为解决现有技术中仿真速度慢的问题而设计。所述建模方法包括根据所述系统中总线和模块之间的连接关系,指定所述总线和所述模块之间的对应关系;将所述模块的功能模拟为功能函数,所述功能函数描述所述模块的端口状态和总线事件之间的对应关系,所述总线事件描述所述模块对应的总线的状态在时间点的变化;确定系统时钟周期,所述系统时钟周期小于/等于系统中最短的模块时钟周期;查找出每个系统时钟周期内需要被驱动的模块;按照所述模块的驱动时间顺序,将所述模块排序,生成每个系统时钟周期的模块列表。本发明能加快系统仿真速度。
文档编号G06F17/50GK101719177SQ20091023704
公开日2010年6月2日 申请日期2009年11月2日 优先权日2009年11月2日
发明者俞力杰 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1