1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SystemC 学習 I

Last updated at Posted at 2020-11-13

はじめに

SystemC を使う必要が出てきたので、勉強がてら記録を残していこうと思う。
まず、Google で 「SystemC 入門」などと調べても日本語の記事が極端に少なかったので、英語文献になるが asic-world を参考に勉強していこうと思う。

SystemC とは?

SystemC は特別な言語ではなく C++ のライブラリとして提供してある。SystemCライブラリにはハードウェア記述を目的とした、並列実行、データ型、信号同期、シミュレーションカーネルが定義してある。また、ハードウェア設計に欠かせない波形デバッグもできるように、VCD,ISDB,WIF のフォーマットでトレースファイルを出力できるようになっている。
SystemCのインストール手順はここでは省くが、以前 Macにインストールする記事も書いているので参考にしてほしい。
しかし、現在はDocker上に環境を作り、コンパイルするときのみコンテナを作成している。

HelloWorld

ここでは、新しいプログラミング言語(厳密には違う)を習得する際の決まり事である HelloWorldを出力してみる。最初は理解できないことが多いと思うが、おいおい説明する。
ちなみに今回のSystemC のバージョンは SystemC-2.3.3 をつかっている。

#include <systemc.h>

SC_MODULE (hello_world) {
    SC_CTOR (hello_world){
    }

    void say_hello (){
        cout << "Hello World \n";
    }
};

int sc_main(int argc, char* argv[]){
    hello_world hello("HELLO");
    hello.say_hello();
    return 0;
}

もちろんベースは C++ だから見たことある記述もあるだろう。
簡単な説明だけしておくと、sc_main は通常の main文である。
ここではモジュールをクラスで実装する。SC_MODULE(モジュール名)で宣言できる。また、コンストラクタSC_CTOR(モジュール名)を内包する。動作(メソッド)をvoidで定義しておく。

DataTypes

ベースが C++ だから、C++ で用いられるデータ型は当然使うことができる。

型指定 型の内容
bool true か false の2値の1ビット型
int 符号付整数(32ビット幅)
unsigned int 符号なし整数(32ビット幅)
long 符号付整数(32ビット幅)
unsigned long 符号なし整数(32ビット幅)
signed char 符号付き文字型(8ビット幅)
unsigned char 符号なし文字型(16ビット幅)
short 符号付ショート型(16ビット幅)
unsigned short 符号なしショート型(16ビット幅)
float 浮動少数点数(32ビット幅)
double 倍精度浮動小数点数(64ビット幅)
enum ユーザー定義列挙型
struct 全メンバ
ただしビット幅は実行環境依存である。

SystemC では独自のハードウェア向けデータ型を提供している。
HDL言語のようにビット幅指定ができたり、複数ビット幅を持ったデータ型も使える。

型指定 型の内容
sc_int < n > 最大64ビット幅のnビット幅符号付き整数型
sc_uint < n > 最大64ビット幅のnビット幅符号なし整数型
sc_bigint < n > 64ビット超えのnビット幅符合付き整数型
sc_biguint < n > 最大64ビット幅のnビット幅符号なし整数型
sc_bit 今後使わない
sc_bv < n > 今後使わない
sc_logic 0,1,X,Z の4値の1ビット型
sc_lv < n > nビット幅のlogic型

終わりに

まだわからないことが多いので、間違いが散見するかもしれないが、知識の更新とともに記事も更新していこうと思う。

参考文献

asic-world
http://www.asic-world.com/systemc/

SystemC によるシステムデザイン入門

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?