systemC 教程 PPT(Lecture3BehaviorDescriptionBasics)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

系统级设计描述语言SystemC徐宁仪xuny97@mails.tsinghua.edu.cnXuny@smth东主楼9区324房间62781914版权所有2004第三部分SystemC行为建模基础教材:陈曦徐宁仪《SystemC片上系统设计》,科学出版社,2003本ppt大部分内容参考此书,仅作为大学教学之用,请勿用于商业课程主要内容共讲4次,争取讲清楚Why&How,重点是Concept内容包括:为什么用SystemC做片上系统设计?SystemC基本语法*SystemC行为建模基础*SystemC交易级建模与通信细化*SystemC方法库Master/Slave库验证库第三部分SystemC行为建模基础一些重要概念回顾SystemC是一种系统描述语言,而不仅仅是一种新的硬件描述语言。SystemC的主要目的是实现用单一语言完成设计规范、系统体系结构分析、验证平台和行为模型。用SystemC的行为模型描述的算法模块比RTL模块快10~100倍。SystemC的更大价值在于其提供高层次设计流程。行为级综合工具经过多年的发展渐渐成熟,SystemC和行为综合工具结合的设计方法将会大大提高设计和验证效率.SystemC特别为行为综合设计的语法将使它成为非常适合行为级综合的设计语言。行为建模的目的系统体系结构探索当要建模的目标系统十分复杂时,利用行为模型迅速建模,使得设计者对目标设计有更清楚的理解则有利于软硬件划分、减少系统功耗。嵌入式软件开发与调试基于行为模型的软硬件协同验证更使得设计初期(尤其在硬件平台已经做好之前)就可以对软件进行初步调试,从而节省设计周期。基于行为模型的验证方法也能够保证验证平台的一致性。利用行为级综合工具得到RTL级的设计。SystemC行为建模SystemC行为级建模中一个很重要的概念被称为交易级建模(TransactionLevelModeling或者TLM)。(稍后讲述)SystemC的接口(Interface)、端口(Port)和通道(Channel)三个概念是进行SystemC行为建模的基础。(本部分的重点是理解这三个概念)系统抽象:行为,通信和时序系统抽象的三个关键元素行为:算法(运算,控制…)通信:各个算法模块之间的数据交互,控制配合时序:行为和通信的在时间域上的协调举例系统抽象的三个元素-举例-存储器存储器的行为读:read(address)写:write(address,data)复位:reset存储器的通信RTL级:地址总线,数据总线,读信号,写信号,复位信号交易级:目的地址,数据时序信号配合时序读写速度复位时间系统抽象的三个元素-举例-OFDM接收机数字下变频与抽取器信道估计器N点FFT补偿器帧同步与频偏估计器串并转换输入信号输出信号行为:OFDM(正交频分复用)的接收算法通信:数据通路,控制通路时序:各个模块之间的时钟周期配合,算法本身配合系统抽象的三个元素-举例-嵌入式处理器行为:完成汇编语言描述的程序通信:FlashCPUCPURAMDMARAMIOCPU时序:系统总线行为建模对语言的要求(1of2)行为和通信分离(分开描述,时序隐含)系统体系结构探索,需要对行为和通信的各种组合进行探索(1CPU?3CPU?共享总线?直接通道?)嵌入式软件开发与调试(软件开发不关心具体硬件通信细节)优点行为(或者计算)和通信分开,称为正交化处理。可以分别在各自的部分进行修改,而不影响另外一部分的功能和完整性。处理复杂问题的方法-分而治之时间:分步骤细节:分层本质:正交行为建模对语言的要求(2of2)接口方法调用(InterfaceMethodCall)解决”行为和通信分离后,通信如何进行”的问题一组给定的通信方法(method)被称为接口(interface)接口(或者说通信方法)由通道实现。模块能够使用它们的端口(port)来与实现相应接口的通道进行互连。端口通道绑定接口的特性是不牵扯具体实现;所以它能够联系行为与通信SystemC的行为建模语言支持模块(module)是系统行为的主要载体。通道(channel)是通信的主要载体。时序隐含在模块和通道的描述中。特点行为和通信分开支持接口方法调用端口通道绑定BigPicture通道端口抽象方法信号模块接口端口通道绑定模块模块接口接口端口端口端口通道绑定端口通道绑定接口(Interface)接口的实现:C++中的抽象类。(抽象类和纯虚函数)接口的特性是不牵扯具体实现;所以它能够联系行为与通信接口(Interface)抽象类的特点是它定义了一组抽象方法(这里”方法”是C++中的一个名词,通常理解为类的成员函数),但不定义这些方法的具体实现(这里实现指的是给出成员函数的函数体部分)通道(channel)实现一个或者多个接口。存储器接口实例enumtransfer_status{TRANSFER_OK=0,TRANSFER_ERROR};存储器读接口:templateclassTclassmem_read_if:publicsc_interface{public:virtualtransfer_statusread(\unsignedintaddress,T&data)=0;};存储器接口实例存储器写接口:templateclassTclassmem_write_if:publicsc_interface{public:virtualtransfer_statuswrite(\unsignedintaddress,\T&data)=0;};存储器接口实例复位接口:classreset_if:publicsc_interface{public:virtualboolreset()=0;};存储器接口实例完整的RAM接口:templateclassTclassram_if:publicmem_write_ifT,mem_read_ifT,reset_if{public:virtualunsignedintstart_address()const=0;virtualunsignedintend_address()const=0;};结论我们将mem_read_if和mem_write_if定义为模板类是因为抽象的存储器的每一个单元可以存储的内容可以是任何类,如存储一个字节char,一个半字short,一个字int,一个packet。接口是可以分层的,复杂的接口可以由多个简单的接口继承而得到。类sc_interface是所有接口类的父类,所有其它类都直接或者间接的从类sc_interface继承而来。端口(port)基本的SystemC端口类型:sc_inT、sc_outT、sc_inoutT为了满足行为建模的需要,SystemC允许用户自己定义端口类型。sc_portInterfaceType,ChannelNumber=1连接模块内的进程(行为)和通道(通信)端口//连接到一个RAM上sc_portram_ifram_port1;//可以连接到N个RAM上sc_portram_if,Nram_portN;//不限制所连接的RAM数量sc_portram_if,0ram_port0;一些接口定义的例子:设计中端口所实际连接的通道的数目可以通过size()方法来访问。如,可以通过ram_port0.size()得到实际连接到ram_port0的通道RAM的数量。端口端口必须与特定的通道接口相连,或者同父模块的端口相连。一个模块的端口连接到零个、一个或者多个通道,或者零个、一个或者多个父模块的端口,但必须至少连接到1个通道或者父模块的端口上。类sc_portIF,N是所有端口的基类,它是一个模板类。IF是接口类型,N是所连接的同一类型的通道数目,也就是接口数,它的缺省值是1。端口实例-RAM读写端口SC_MODULE(Master){sc_in_clkclk;sc_portram_ifintram_port;//端口实例voidmain_action();//见下一页intdata;unsignedintaddress;SC_CTOR(){SC_CTHREAD(main_action,clk.pos());}};端口实例-RAM读写端口voidMaster::main_action(){wait();inti=0;address=0;//anyvalidaddresswhile(i++100){if(status=ram_port-write(address,data)){…//Displaydata}elsecoutRAMwritefailendl;if(status=ram_port-read(address,data)){…//Displaydata}elsecoutRAMreadfailendl;wait();address++;}通道基础在SystemC中,接口本身只是定义了一组通信方法,而不具体负责这些方法如何实现。通道才是这些接口方法的实现者。通道可以实现一个或者多个接口。通道可以连接一个或者多个模块。SystemC中通道分为两种:基本通道和分层通道基本通道不包含任何进程,也不对外展现出任何可见结构,它们也不能够直接的或者间接的调用其它基本通道。分层通道本身是一个模块,可以包含进程、子模块,也可以包含和调用其它通道。端口与通道的关联#includesource.h#includesink.h“#definePERIOD20classTop:publicsc_module{public:sc_clockclk;sc_fifocharfifo1;sourcesource1;sinksink1;Top(sc_module_namename,intsize):sc_module(name),fifo1(Fifo1,size),source1(source1),sink1(sink1),clk(Clk,PERIOD,SC_NS){//端口与通道的关联source1.write_port(fifo1);source1.clk(clk);sink1.read_port(fifo1);sink1.clk(clk);}};基本通道基本通道不包含任何进程,也不对外展现出任何可见结构,它们也不能够直接的或者间接的调用其它基本通道。SystemC2.01中定义了若干基本通道类型,它们是:sc_signalT,sc_signal_rvNsc_mutexsc_fifoTsc_semaphoresc_bufferT基本通道-sc_signalTsc_signalT是最基本的通道,它用于连接模块的基本端口sc_inT、sc_outT和sc_inoutT。最多只有一个sc_outT或者sc_inoutT可以连接到sc_signalT,否则就会产生典型的多驱动情况。可以有多个sc_inT同时连接到sc_signalT。sc_signalT继承于基本通道类,并实现了sc_signal_inout_ifT接口。sc_signal_inout_ifT接口的最重要成员函数read()和write()。基本通道-sc_signal_rvTsc_signal_rvT是所谓“解析的”信号通道,与sc_signalT的不同之处是它允许同时有多个端口连接到其上并进行写操作。基本通道-sc_bufferTsc_bufferT继承于sc_signalT,并重载了write()和update()函数。sc_bufferT不管write()写的数据是否与原数据相同,都要求进行数据更新;而sc_sig

1 / 72
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功