- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Systemc 简介 王玉莹 基本语法 C++:任务的执行是串行的;SystemC:可以做到并行。 进程是程序在并发环境中的执行过程, SystemC的基本进程包括: SC_METHOD,SC_THREAD,SC_CTHREAD SC_METHOD:当敏感列表上有事件发生时,才被调用, (用法很像verilog中描述组合逻辑)调用后迅速返回Example SC_THREAD:能够被挂起和重新激活,当敏感表上有事件发生,线程被重新激活运行到新的wait()语句再重新挂起,(主要用于对程序的验证),Example SC_CTHREAD:继承于线程进程,只能在时钟的上升沿或者下降沿被触发或者激活,(用于时钟精确的建模),Example 基本语法 Systemc的时钟模型:在Systemc程序设计中,时钟(sc_clock)被作为一个特殊的对象处理。 sc_clock共有六个重载的构造函数。 sc_clock(“clk1”,20,0.5,5,ture) 基本语法 模块是SystemC的最基本单元,模块内部可以包括端口,内部信号,内部数据,进程等 模块本质上是类,使用SC_MODULE声明: SC_MODULE(mmu) {…..//details of the design} 等价于: Class mmu :public sc_module {…..//details of the design} Systemc 行为建模 接口(interface):是c++抽象类,它以纯虚数的方式定义了一组抽象的方法接口 通道(channel):通道实现一个或者多个接口(接口中定义的虚函数必须在通道中实现)通道 端口(port):端口定义在模块中,通过端口,模块中的进程就能够连接到一定的接口端口 Systemc的Master-Slave通信库 Systemc支持业界很多设计方法学,OSCI的思路是定义一个小的语言子集以完成最基本的语言构架,具体的设计方法学有一些专用库来实现,如可以使用Master-Slave库来实现IP复用 Master-Slave库使得通信与模块的行为在一定程度上分离,从而可以方便的向SoC中集成IP模块 Systemc的Master-Slave通信库 Void generate_data(int out){ for(int i=0;i10;i++){ accumlate(out); } } Void accumlate(int in1){ sum +=in1; cout“sum =”sumendl; } Systemc的Master-Slave通信库 SC_MODULE(producer){ Sc_outmasterintout1; //systemc中master-slave通信库内 表示作为主机输出out1 Sc_inboolstart;//启动进程 Void generate_data(){ For(int i+0;i10;i++){ Out1=i; } } SC_CTOR(producer){ SC_METHOD(generate_data); sensitivestart; } } Systemc的Master-Slave通信库 SC_MODULE(consumer){ Sc_inslaveintin1; //systemc中master-slave通信库内 表示作为从机输入in1 Int sum; Void accumulate(){ Sum+=int1; Cout“sum=”sumendl; } SC_CTOR(consumer){ sc_slave(accumulate,in1); // systemc中master-slave通信库内 表示从机中accumulate函数对in1
原创力文档


文档评论(0)