スポンサーサイト

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

[SystemC] 既存のC++とSystemCのシミュレーションを行う。

SystemC Fourmでトピックスがあったので、試してみました。


Linking systemC to legacy C++ code


sc_elab_and_sim を使うことで、C++(main)側から
sc_mainを呼ぶことになります。

  • サンプルコード(main.cpp)
  •  1|#include <systemc.h>
     2|
     3|void exec_math(int a, int b, int c){
     4|  int result = a + b * c;
     5|  printf("C++ result = %d¥n", result);
     6|}
     7|
     8|int main(int argc, char* argv[])
     9|{
    10|  exec_math(102030);
    11|
    12|  int scresult = sc_core::sc_elab_and_sim( argc, argv );
    13|
    14|  printf("scresult = %d¥n", scresult);
    15|
    16|  return 0;
    17|}
  • サンプルコード(sc_main.cpp)
  •  1|#include <systemc.h>
     2|
     3|SC_MODULE( M ) {
     4|
     5|  sc_in<int> a, b, c;
     6|
     7|  void process(){
     8|    wait();
     9|    int result = a.read() + b.read() * c.read();
    10|    printf("SystemC result = %d¥n", result);
    11|  };
    12|
    13|  SC_CTOR( M )
    14|    : a("a"), b("b"), c("c")
    15|  {
    16|    SC_THREAD( process );
    17|    sensitive << a << b << c;
    18|  }
    19|};
    20|
    21|int sc_mainint argc, char* argv[] ) {
    22|
    23|  sc_signal<int> a, b, c;
    24|
    25|  M uM("uM");
    26|  uM.a(a);
    27|  uM.b(b);
    28|  uM.c(c);
    29|
    30|  std::cout << "--- Simulation Start ---" << std::endl;
    31|  a =  0; b = 0,  c = 0;  sc_start(10SC_PS);
    32|  a = 10; b = 20, c = 30sc_start(20SC_PS);
    33|  return 0;
    34|}
  • 実行結果
  •  $> ./main
    C++ result = 610
    
                 SystemC 2.3.0-ASI --- Apr  5 2013 14:12:47
            Copyright (c) 1996-2012 by all Contributors,
            ALL RIGHTS RESERVED
    
    --- Simulation Start ---
    SystemC result = 610
    scresult = 0
    

っといったことが可能です。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

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

カレンダー
08 | 2017/09 | 10
- - - - - 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
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。