SystemC
[Wikipedia|▼Menu]
.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}

この項目では、ハードウェア記述言語について説明しています。ゲーム基板については「セガ・システムC」をご覧ください。

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のような複雑なメカニズムのこともある。

基本チャネル:

信号

バッファ

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のセンシティビティリスト }};
参考文献

Grotker, Thorsten 『SystemCによるシステム設計』柿本勝、河原林政道、長谷川隆(監訳)、
丸善、2003年 ISBN 4-621-07144-0 C3055

1666-2011 - IEEE Standard for Standard SystemC Language Reference Manual

関連項目

SpecC


SystemVerilog

外部リンク

SystemC ホームページ(英語)










C言語


K&R

ANSI C

C89

C90


C99

C11

C17(英語版)

C2x(英語版)

Embedded C(英語版)

MISRA C

Cの機能
関数

ヘッダファイル

演算子

文字列(英語版)

文法(英語版)

プリプロセッサ(英語版)

データ型(英語版)

キーワード

フリースタンディング環境

標準Cライブラリの関数

ctype.h(英語版)

stdio.h

math.h(英語版)

stdlib.h(英語版)

string.h(英語版)

time.h

stdarg.h(英語版)

POSIXライブラリ(英語版)

標準Cライブラリ


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:19 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef