SystemC
ハードウェアとソフトウェアの協調設計に使われる、C++を基にしたシステムレベル記述言語。IEEE 1666として標準化されている。
イマシルちゃんの解説
組込み機器を作るときは、どの機能を専用の回路に任せ、どの機能をプログラムで動かすかを考えるんだ。
SystemCは、回路やソフトウェアの働きをモデルとして書き表すシステムレベル記述言語だよ。
モデルは、実物の代わりに動きを確かめるための表現なんだ。
複数の処理が同時に進む様子や時間の経過も表せるから、部品同士のやり取りをシミュレーションできるよ。
回路が完成する前に全体の動作や性能を検討できて、設計のやり直しを早い段階で減らせるのがうれしいね。
この解説はわかりやすかったですか?
より深い解説
定義
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を拡張したグラフィカルなモデリング言語 |
| MathML | Webページに数式を表示するための、XMLのマークアップ言語 |
実際の試験ではここに出る!全1問
ネットワークスペシャリスト
- 午前Ⅱ