スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[SystemC] moduleを継承した書き方を試してみる。

base となるモジュールを作った後に、そのプロセスを書き換える(オーバーロード)が出来たら嬉しいんじゃないかと思って試してみた。

base module

class base : public sc_module {
public:
  sc_in<int> a, b, c;

  virtual void process(){
  ¦ wait();
  ¦ int result = a.read() + b.read() * c.read();
  ¦ printf("SystemC result = %d\n", result);
  };

  SC_HAS_PROCESS(base);
  base(sc_module_name nm)
  ¦ : sc_module(nm),
  ¦ ¦ a("a"), b("b"), c("c")
  {
  ¦ SC_THREAD( process );
  ¦ sensitive << a << b << c;
  }
};

ここから base を継承して hogeを作ってみる。

hoge module

class base : public sc_module{
public:
  sc_in<int> a, b, c;

  virtual void process(){
  ¦ wait();
  ¦ int result = a.read() + b.read() * c.read();
  ¦ printf("base module result = %d\n", result);
  };

  SC_HAS_PROCESS(base);
  base(sc_module_name nm)
  ¦ : sc_module(nm),
  ¦ ¦ a("a"), b("b"), c("c")
  {
  ¦ SC_THREAD( process );
  ¦ sensitive << a << b << c;
  }

  base(){}

};

class hoge : public base {
public:
  void process() {
  ¦ wait();
  ¦ int result = a.read() * b.read() * c.read();
  ¦ printf("hoge module result = %d\n", result);
  }

  hoge(sc_module_name nm)
  {
  }
};

base 修正点

  • processに virtual 追加
  • base::base() コンストラクタ追加

シミュレーション実行

int sc_mainint argc, char* argv[] ) {

  sc_signal<int> a, b, c;

  base uBase("uBase");
  uBase.a(a);
  uBase.b(b);
  uBase.c(c);

  hoge uHoge("uHoge");
  uHoge.a(a);
  uHoge.b(b);
  uHoge.c(c);

  std::cout << "--- Simulation Start ---" << std::endl;
  a =  0; b = 0,  c = 0;  sc_start(10SC_PS);
  a = 10; b = 20, c = 30sc_start(20SC_PS);
  return 0;
}
  • 実行結果
--- Simulation Start ---
base module result = 610
hoge module result = 6000

まぁー 確かに変化はしたけれど、プロセスは一から書いてる感じだし あんまりメリットないような・・・

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。