学海荡舟手机网
导航

主页 > 电子设备技术 > 电器电路基础 > > 详细内容

SystemC-用SC_MODULE定义模块

        模块是一个设计的最基本的单位,是完成一个特定功能的基本单元。比如一个可以是一个模块,一个FIFO可以是一个模块,一个接口转换也可以是一个模块,整个设计就是顶层模块。
      一个模块可以包含一些其它的Syst基本元素如端口、内部信号、内部数据、子模块、进程、构造函数和析构函数等。这些元素共同定义模块所表达的功能。
      在Syst中,常使用关键字SC_MODULE来声明一个模块,如下例所示:
      SC_MODULE(sram) 
      {……//Details of the design}
      };
      在关键字SC_MODULE后面的标志符是模块的名字,即“sram”。SC_MODULE是SystemC库中定义的一个宏,使用它定义一个模块实际上是定义了一个新的C++ 结构体:
      #define SC_MODULE(module_name)  \
      struct module_name: publ sc_module
      所以除了上面的定义模块的方法外,还可以直接用C++ struct的定义方法来定义模块。举例如下:
      struct sram:public sc_module {……//Details of the design };
      在C++中,struct是一个特殊的类,所以也可以利用class来定义一个模块。举例如下:
      class sram:public sc_module {……//Details of the design };
      这两种声明的区别是前者默认的成员都是公有(Public)的,而后者是的私有(Private)。在具体应用中,两者是等效的。在实际应用中,一般不直接用struct定义一个模块。

相关文章