在更详细地描述事务级建模之前,首先介绍在事务级建模中用到的一些术语。首先事务表示数据和事件的交换过程。各个连续的事务可以是不同大小的数据传输,也可以是在系统同步时用来调整或管理模块之间行为的事件。这种事件对保证模块间的行为传递是至关重要的。
例如,DMA传输结束后的中断信息就是一个系统同步行为。在电子系统中,每个元件由一组状态和并发的行为组成。在事务级建模中,电子系统中的元件可以建模为一个功能模块。一个电子系统可以由若干个事务级模块组成。元件的状态在事务级模型中用变量表示,而不同的行为在模型中用一组可以并发进行的进程表示。模块之间通过一种特殊的事务级通信结构实现相互通信,这种结构称为通道。
根据仿真精度的不同,通道可以是简单的路由器、抽象总线模型或者是片上网络,也可以是其他结构。通道是事务级模型中将通信从运算单元独立出来所必需的一种抽象。
模块和通道通过端口连接在一起。事务级模型中的接口包含通信协议,而这种通信协议的具体实现则在通道中完成。在系统中,主设备是系统中发起事务的模块,而从设备是接收或响应事务请求的模块。在建立通信过程中,主设备的进程通过模块的端口访问接口,接口区分事务级模型系统中的通信。
事务级模型(模块M、模块S和通道)构成一个简单的系统。模块M是系统中发起事务的主设备,而模块S是系统的从设备。模块M和模块S分别有两个独立的进程,描述不同的行为。模块M和模块S之间通过各自的端口绑定到通道提供的接口实现通信。
可以看出事务级模型实现了运算功能和通信功能的分开,它们在不同的事务级模型中完成。接口A和接口B分别是通信协议A和通信协议B的接口,它们是一组函数的集合,通过端口提供给进程调用,而接口函数集合中的函数体即通信协议的具体实现在通道模型中完成。
通道实现了两种通信协议,通信协议A和通信协议B。而模块M和模块S通过模块的端口绑定到通道后,以通信协议A规定的方式进行通信。
具体而言,在基于SystemC或C++的事务级模型中,接口通常被表示为C++抽象类。该抽象类定义了一组抽象的方法,但不定义这些方法的具体实现,即纯虚函数。
通道则继承一个或多个接口,实现在接口中定义的所有虚函数。模块中的进程可以通过端口使用时用通道提供的方法。端口总是与一定的接口类型相关联,端口只能连接到实现了该类接口的通道上。关于在SystemC中接口、通道、端口的具体语法请参照4.6.7节所述。
前面提到事务级模型可以分为3种,即没有时序信息的模型、周期近似的模型和精确到每个周期的模型。没有时间信息的计算或通信模型表示系统设计的功能描述,这些模型没有具体的实现细节。
周期近似的计算或通信模型则包含系统级的实现细节如系统体系结构的选择、系统定义的功能和体系结构中模块的映射关系等。
周期近似的运算或通信模型中的执行时间通常在系统级通过估计得到,因为在这时还没有周期精确的RTL级或者指令级的仿真平台。而周期精确的运算和通信模型包含了系统级的实现细节如RTL级或指令级描述,因此,可以得到周期精确的仿真结果。
算法模型描述系统的功能与具体的实现无关。算法模型不用通道的概念而是通过变量访问的形式建模数据在进程间的传输。算法模型是没有时间信息的模型。
在元件组装模型中,并发进行的进程单元通过通道进行通信。所谓进程单元是指剥离了通信机制的定制硬件、通用处理器、DSP或其他IP的事务级模型的模块。通道是消息的输出通路,表示进程单元之间的数据传输和进程同步。
在元件组装模型中,通道没有时间信息,也没有总线或协议的具体实现。进程单元的运算部分是周期近似的,通过估计特定的进程单元的执行时间得到。与算法模型相比较,元件组装模型明确定义了进程在系统结构中的位置,并规定了进程到进程单元的映射。
在总线仲裁模型中,进程单元间的通道表示总线,包含了总线或者协议的实现,称为抽象的总线通道。通道同样通过消息的传送实现数据传输。在总线仲裁模型中,总线协议没有实现周期精确或者引脚精确,抽象的总线通道只是包含近似的时间信息,这个时间信息通常在每个事务中的等待声明中给出。
在一些情况下,几个总线通道抽象成一个总线通道,需要在总线通道的接口函数中增加逻辑地址和总线优先级参数,其中,逻辑地址区分不同的进程单元或进程调用接口函数,而总线优先级规定了总线冲突发生时总线的访问顺序,而且总线仲裁器作为一个新的进程单元增加到系统的体系结构中去,由它来处理总线冲突。主进程单元、从进程单元和总线仲裁器调用同一抽象总线通道中不同接口的函数。
总线功能模型包括时间精确或周期精确的通信及周期近似的运算。有两种总线功能模型,一种是时间精确,另一种是周期精确。时间精确的总线功能模型规定通信的时间约束,这种约束由模块之间通信协议的时序图决定,而周期精确模型以主进程单元时钟周期的方式给出时间约束。
在总线功能模型中,消息传送通道被协议通道取代。在一个协议通道中,总线的互连被例化成相应的变量和信号,实现周期精确的通信。
周期精确的运算模型包括周期精确的运算模型和周期近期的通信,这个模型可以从总线仲裁模型得到。在这个模型中,运算单元是引脚精确和周期精确的。
定制硬件电路可以在RTL级上建模周期精确的运算模型,而通用处理器或者DSP则一般在周期精确的指令集结构上建模周期精确的运算模型。为了使周期精确的进程单元和抽象总线通道的抽象接口进行通信,需要包裹一个转换层,实现高层抽象到低层抽象的数据传输,即实现进程单元和总线接口的通信。在周期精确的运算模型中没有必要使所有的运算都做到周期精确。
实现模型既是周期精确的运算,也是周期精确的通行,就是通常所指的RTL模型或者指令集模型。这个模型可以从总线功能模型或者周期精确的运算模型得到。
全部0条评论
快来发表一下你的评论吧 !