SystemC

読み:しすてむしー / 英語表記:SystemC

ハードウェアとソフトウェアの協調設計(コデザイン)に使われる、C++を基にしたシステムレベル記述言語。IEEE 1666として標準化されている。

イマシルちゃんの解説

組込み機器を作るとき、「この機能は専用の回路(ハードウェア)にする?それともプログラム(ソフトウェア)で動かす?」って、決めないといけないんだ。

SystemCを使うと、回路もプログラムも、同じC++の言葉で書いて、まとめてシミュレーションできるんだよ。
回路ができあがる前から、全体がうまく動くかを確かめられるから、開発がぐっと早くなるんだ!

より深い解説

定義

SystemCは、C++のクラスライブラリとして提供される、ハードウェアとシステムを記述するための言語である。2005年にIEEE 1666として標準化された。C++にハードウェアの記述に必要な概念(モジュール、ポート、信号、並行に動くプロセス、時間)を加えたもので、通常のC++のコンパイラでコンパイルして、シミュレーションを実行できる。

使われる場面

場面内容
ハードウェア/ソフトウェア協調設計機能をハードウェアとソフトウェアのどちらで実現するかを、早い段階で検討する
システムレベルの設計回路の詳細を決める前に、システム全体の構造や性能を高い抽象度でモデル化する
仮想プロトタイプハードウェアが完成する前に、そのモデルの上でソフトウェアの開発を始める
高位合成SystemCやC/C++で書いた動作の記述から、回路の記述(RTL)を自動生成する

抽象度の違い

抽象度記述する内容主な言語
システムレベル(高い)機能、データの流れ、トランザクションSystemC、C/C++
RTL(レジスタ転送レベル)クロックごとのレジスタ間のデータの移動VHDL、Verilog HDL(SystemCでも記述可能)
ゲートレベル(低い)論理ゲートのつながり論理合成の結果

設計は、抽象度の高いレベルから始め、検証しながら低いレベルへと詳細化していく。

似た言語との区別

言語用途
SystemCハードウェアとソフトウェアの協調設計に使う、C++を基にしたシステムレベル記述言語
VHDL、Verilog HDL論理合成してFPGAなどで動かす回路を記述する、ハードウェア記述言語
SysMLシステムの設計と検証のための、UMLを拡張したグラフィカルなモデリング言語
MathMLWebページに数式を表示するための、XMLのマークアップ言語

実際の試験ではここに出る!

この用語が出てくる記事

↑