2024年3月15日 星期五

***********SystemC--建構子:SC_CTOR

每一個c++函式必須有一個建構器,對於普通的c++函式來說,預設的建構器是自動產生的,但是每個SystemC module必須有一個獨有的name,因此構造器至少有一個參數。


 

為了方便聲明和定義module的constructor,SystemC提供了一個SC_CTOR

  • 只能出現在C++允許宣告構造器的地方,用於constructor的宣告或定義
  • 僅有一個參數,即module的name
  • 這個構造器並不能加入使用者定義個參數,若需要傳遞額外的參數,應明確定義constructor

這裡給出範例程式碼


#include <systemc>

using namespace sc_core;

SC_MODULE(MODULE_A) {
  SC_CTOR(MODULE_A) {
    SC_METHOD(func_a);
  }
  void func_a() {
    std::cout << name() << std::endl;
  }
};

SC_MODULE(MODULE_B) {
  SC_CTOR(MODULE_B) {
    SC_METHOD(func_b);
  }
  void func_b();
};

void MODULE_B::func_b() {
  std::cout << this->name() << std::endl;
}

SC_MODULE(MODULE_C) {
  const int i;
  SC_CTOR(MODULE_C);
  MODULE_C(sc_module_name name, int i) : sc_module(name), i(i) {
    SC_METHOD(func_c);
  }

  void func_c() {
    std::cout << name() << ", i = " << i << std::endl;
  }
};

int sc_main(int, char*[]) {
  MODULE_A module_a("module_a");
  MODULE_B module_b("module_b");
  MODULE_C module_c("module_c",1);
  sc_start();
  return 0;
}

沒有留言:

張貼留言

*******【WSL教學】在Windows上執行Linux + VSCode

安裝WSL: 以管理員身份運行PowerShell來開啟此功能。要做到這一點,您可以在Windows搜索欄中輸入“PowerShell”,然後右鍵單擊Windows PowerShell,選擇“以管理員身份運行”。 在PowerShell中,輸入以下指令以安裝WSL。 wsl -...