SystemC

SystemCは、電子回路機器の機能設計を目的としたハードウェア記述言語(HDL)の一種です。純粋なHDLであるVerilogやVHDLと比較して、動作レベルモデリングなど、よりシステム寄りの記述に適しています。

仕様



SystemCは、プログラミング言語であるC++のクラスライブラリとして提供され、独立した文法を持ちません。このライブラリには、ハードウェア記述に必要な機能、並列実行の概念、データ型を扱うための各種関数が定義されています。C++コンパイラでコンパイルすることで、生成されたオブジェクトはハードウェアシミュレータとして動作します。

言語としては、VerilogやVHDLと類似する点もありますが、C++に由来する抽象データ型、テンプレート、動的なメモリ割り当てなどを利用でき、高い抽象度での記述が可能です。ただし、抽象的な記述を実際のハードウェアに変換することは、論理合成ツールの能力に依存し、VerilogやVHDLでの具体的な記述への変換には、人の介在が必要となる場合があります。SystemCの利点は、仕様やアルゴリズムを最初はソフトウェアとして記述し、デバッグ後、順次ハードウェアに変換できる点です。これにより、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ビットまでの符号付き整数
`sc_uint<>`:64ビットまでの符号なし整数
`sc_bigint<>`:可変精度符号付き整数
`sc_biguint<>`:可変精度符号なし整数
論理型
`sc_bit`:2値シングルビット(非推奨、`bool`の使用を推奨)
`sc_logic`:4値シングルビット
`sc_bv<>`:`sc_bit`のベクター(可変配列)
`sc_lv<>`:`sc_logic`のベクター
固定小数点型
`sc_fixed<>`:符号付き固定小数点テンプレート
`sc_ufixed<>`:符号なし固定小数点テンプレート
`sc_fix`:符号付き固定小数点
`sc_ufix`:符号なし固定小数点

注意点:
`sc_bigint<>`および`sc_biguint<>`は、`sc_int<>`や`sc_uint<>`と比較してシミュレーション速度が著しく遅くなります。
`sc_bit`は、IEEE1666では非推奨となっており、代わりに`bool`の使用が推奨されています。



加算器の記述例:

(記述例は省略。具体的なコード例については、関連資料をご参照ください。)

参考文献



Grötker, Thorsten 『SystemCによるシステム設計』柿本勝、河原林政道、長谷川隆(監訳)、丸善、2003年 ISBN 4-621-07144-0 C3055
1666-2011 - IEEE Standard for Standard SystemC Language Reference Manual

関連項目



SpecC
SystemVerilog

外部リンク



SystemC ホームページ(英語)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。