SystemCとは
SystemCとは?
SystemCは、1999年9月に発足した組織OSCI(Open SystemC Initiative)により規格化された、新しいハードウェアモデリング言語である。OSCIから無償でSystemCライブラリが提供されている。
SystemCは、標準のC++で実装されたクラスライブラリで、C++記述によるハードウェア設計の構築を提供する。SystemCを利用できるのは、ハードウェアとソフトウェアにおけるの企画・提案から実装までの設計と検証の期間である。つまり、実際にハードウェアを設計する前段階の作業で利用することができる。
SystemCは、標準のC++で実装されたクラスライブラリで、C++記述によるハードウェア設計の構築を提供する。SystemCを利用できるのは、ハードウェアとソフトウェアにおけるの企画・提案から実装までの設計と検証の期間である。つまり、実際にハードウェアを設計する前段階の作業で利用することができる。
SystemCは高速なシステムレベルC++モデルの開発と交換を可能とするプラットフォームを提供する。
これはシステムレベルツールの開発のためのプラットフォームも提供する。
これはシステムレベルツールの開発のためのプラットフォームも提供する。
簡単に言うと、C++のコンパイラを使ってハードウェア記述が可能で検証もできてしまう優れもの。
ただし、SystemCを記述したからといって、それを直接ハードウェアにできるというわけではない。あくまでもハードウェアの代替となる検証用どまり。
ただ、高位合成ツール(SystemC→RTL)が徐々に実用化されつつあるところ。
先はまだわからない。
ただし、SystemCを記述したからといって、それを直接ハードウェアにできるというわけではない。あくまでもハードウェアの代替となる検証用どまり。
ただ、高位合成ツール(SystemC→RTL)が徐々に実用化されつつあるところ。
先はまだわからない。
SystemCが持つ機能
C++でハードウェアを記述するために、SystemCライブラリは次のような特徴的な機能を持つ。
- 時間モデル
- ビット・データ型(sc_bv<>, sc_uint<>, sc_fixed, etc.)
- モジュールの記述(SC_MODULE)
- チャネル/ポート(プリミティブ・チャネル、階層チャネル、インターフェース)
- 並列動作環境(プロセス)
- 波形シミュレーション環境(VCD etc.)
SystemCの利点
- ライブラリが無償で提供されている
- C++ベースであるため、検証環境が容易に構築できる(GCCもしくはVC++コンパイラ)
- ソフトウェア/ハードウェア協調検証が比較的容易にできる
- あらゆる抽象度(TLMからRTLまで)が記述可能
SystemCの欠点
- C++の基本的な知識とSystemC固有の記述を覚えなくてはならず、スタートまで若干ハードルがある
- プロセス間のタイミングでクセがあり悩まされる
- 記述の自由度が高すぎて、モデルの統一化がなされていない
SystemCの使い道
- SW/HW協調検証
- 高位合成(動作合成)
- 並列分散処理モデル etc.
SystemCを扱うにあたっての要求スキル
- C,C++の知識があり、クラスの概念やテンプレートがわかる(協調検証モデル作成)
- Verilog-HDL等のハードウェア記述等に興味があり精通している(高位合成)