高位合成
高位合成の定義は、学会でも業界でもきちんと定まっていないように思える。ここでは、高位合成(High Level Synthesis)は、RTL(Register Transfer Level)からの論理合成よりも抽象度の高い記述から自動的に論理回路を生成することと定義する。
入力がC言語などのプログラム言語であっても、HDL(Hardware Discription Language)で表現できるような内容のものしか受け付けないものが高位合成として市販されている場合もあるので、ユーザとしてはツールの機能をしっかり確認する必要がある。
動作合成
また、高位合成と同様な場面で使われる動作合成(Behavioral Synthesis)を、データパスに対するスケジューリングとリソースシェアリング(複雑な演算を時分割して演算器とレジスタを共用する)を自動生成する機能と定義する。
SystemCの高位合成ツールに望まれる機能
SystemCを用いた高位合成には、下記の機能が望まれる。
- 動作合成
- インタフェース合成
- 関数型かオブジェクト指向による表現の抽象化
- 並列処理、処理タイミング、モジュール化、外部端子を表現する手段
高位の記述とは
データパスの記述であれば、スケジューリングとリソースシェアリングを行う前の動作合成される記述が高位合成用の記述と考えられる。高位合成の価値はそれだけではないので、データパスのない制御系の記述で考えてみる。
汎用性の高い記述
動作の目的を明確にする。具体的な実装については、別の場所で定義する。
信号で進めと合図する。
signal.show(sign_go);
具体的な記述
動作を表現する。しかし、これでもまだ具体的な実装については、別の場所で定義する。
信号を青にする。
signal.set(color_blue);
詳細な記述
実装をそのまま記述する。ここまで記述するのであれば、高位合成は必要ない。
信号の青色灯を点灯する。黄色灯と赤色灯を消す。
signal.blue = true; signal.yellow = false; signal.red = false;
参考
2014-02-11 13:14:07 (Tue)
-
最終更新:2014年02月11日 13:14