(Translated by https://www.hiragana.jp/)
SystemC - Wikipedia コンテンツにスキップ

SystemC

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
印刷いんさつようページはサポート対象たいしょうがいです。表示ひょうじエラーが発生はっせいする可能かのうせいがあります。ブラウザーのブックマークを更新こうしんし、印刷いんさつにはブラウザーの印刷いんさつ機能きのう使用しようしてください。

SystemC(システムシー)は、電子でんし回路かいろ機器きき機能きのう設計せっけいへの使用しよう目的もくてきとしたハードウェア記述きじゅつ言語げんご (HDL) の一種いっしゅである。SystemC登場とうじょう以前いぜんより存在そんざいし、純然じゅんぜんたるHDLであるVerilogVHDLくらべ、動作どうさレベルモデリングなど、よりシステムりの記述きじゅつ言語げんごである。

仕様しよう

SystemCは、プログラム言語げんごであるC++のクラスライブラリを提供ていきょうしている。独立どくりつした文法ぶんぽうではない。ライブラリにはハードウェア記述きじゅつため機能きのう並列へいれつ実行じっこう概念がいねんやデータがたあつか各種かくしゅ関数かんすう定義ていぎしている。プログラムはC++コンパイラでコンパイルすることができる。生成せいせいしたオブジェクトはハードウェアのシミュレータとして動作どうさする。

言語げんごとしては、VerilogやVHDLと類似るいじてんつ。C++に由来ゆらいする抽象ちゅうしょうデータがたテンプレート動的どうてきなメモリてなどを使つかった自由じゆうおおきく、抽象ちゅうしょうたか記述きじゅつ可能かのうである。自由じゆうに、抽象ちゅうしょうてき記述きじゅつしたものを実際じっさいのハードウェアするのは困難こんなんなことである。論理ろんり合成ごうせいツールの能力のうりょく依存いぞんする。VerilogやVHDLで論理ろんり合成ごうせい可能かのう具体ぐたい人手ひとでによる介在かいざい必要ひつよう場合ばあいがある。仕様しようあるいは、あるアルゴリズムを最初さいしょ純然じゅんぜんたるソフトウェアとして記述きじゅつ、デバッグ、その順次じゅんじハードウェアに変換へんかんしていくということがC++というおなわくないでできるということに意味いみがあるということである。

SystemCは複数ふくすうEDAベンダーや大学だいがくなどの研究けんきゅう機関きかんにより提案ていあんされ仕様しよう策定さくていされてきた。2005ねん時点じてんでのバージョンは2.1、さらに2007ねん3がつには、バージョン2.2を公開こうかいした。トランザクションレベル・モデルライブラリを検討けんとうした。 2011ねん、IEEE 1666 IEEE Standard for Standard SystemC Language Reference Manualとして規格きかくになっている。

言語げんご要素ようそ

モジュール

モジュールはSystemCによる設計せっけい階層かいそうちゅう基本きほんとなるブロックである。SystemCのモデルでは、ポート(次項じこう)をつうじて通信つうしんする複数ふくすうのモジュールから構成こうせいされる。

ポート

ポートは、モジュール内部ないぶ外部がいぶとを接続せつぞくする端子たんしである。通常つうじょうべつのモジュールのポートに接続せつぞくされる。

プロセス

プロセスは、メインとなる処理しょり要素ようそである。個々ここのプロセスは同時どうじ並列へいれつ実行じっこうされる。

チャネル

チャネルは通信つうしん要素ようそであり、単純たんじゅん配線はいせんのこともあれば、FIFOのような複雑ふくざつなメカニズムのこともある。

基本きほんチャネル:

インターフェイス

ポートはチャネルとの通信つうしんにインターフェイスを使用しようする。

イベント

プロセスあいだ同期どうきるためにもちいる。

データタイプ(かた

SystemCはモデリングを支援しえんするいくつかのデータタイプを用意よういしている。

C++標準ひょうじゅんかた拡張かくちょうしたもの:

  • sc_int<> 64-bitまでの符号ふごうづけ整数せいすう
  • sc_uint<> 64-bitまでの符号ふごう整数せいすう
  • sc_bigint<> 可変かへん精度せいど符号ふごうづけ整数せいすう (※1)
  • sc_biguint<> 可変かへん精度せいど符号ふごう整数せいすう (※1)

論理ろんりがた:

  • sc_bit 2-シングルビット (※2)
  • sc_logic 4-シングルビット
  • sc_bv<> sc_bitのベクター(可変かへん配列はいれつ
  • sc_lv<> sc_logicのベクター

固定こてい小数点しょうすうてんがた:

  • sc_fixed<> 符号ふごうづけ固定こてい小数点しょうすうてんテンプレート
  • sc_ufixed<> 符号ふごう固定こてい小数点しょうすうてんテンプレート
  • sc_fix 符号ふごうづけ固定こてい小数点しょうすうてん
  • sc_ufix 符号ふごう固定こてい小数点しょうすうてん

※1 sc_bigint<>, sc_biguintは、sc_int<>, sc_uint<>にくらいちじるしくシミュレーションスピードがおそ

※2 sc_bitは、IEEE1666ではdeprecated featuresであり、わりにboolの使用しようすすめられている

れい

加算かさん記述きじゅつれい:

# include "systemc.h"

SC_MODULE(adder)          // モジュール (クラス) 宣言せんげん
{
  sc_in<int> a, b;        // ポート
  sc_out<int> sum;

  void do_add()           // プロセス
  {
    sum = a + b;
  }

  SC_CTOR(adder)          // コンストラクタ
  {
    SC_METHOD(do_add);    // カーネルへのdo_addの登録とうろく
    sensitive << a << b;  // do_addのセンシティビティリスト
  }
};

参考さんこう文献ぶんけん

  • Grötker, Thorsten 『SystemCによるシステム設計せっけい柿本かきもとまさる河原かわはらはやし政道まさみち長谷川はせがわたかしかんやく)、丸善まるぜん、2003ねん ISBN 4-621-07144-0 C3055
  • 1666-2011 - IEEE Standard for Standard SystemC Language Reference Manual

関連かんれん項目こうもく

外部がいぶリンク