ハードウェア記述言語とプログラミング言語
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/05/17 23:00 UTC 版)
「ハードウェア記述言語」の記事における「ハードウェア記述言語とプログラミング言語」の解説
ハードウェア記述言語はプログラミング言語と似ているが、異なるものである。(近年の並列・並行プログラミング言語を例外として)プログラミング言語は基本的には手続き的で、並行・並列性に対応する構文・意味は限定的であるものがほとんどである。一方ハードウェア記述言語は、複数の並列処理するコンポーネント(フリップフロップ、加算器など)をモデル化でき、各コンポーネントは自動的に互いに独立に実行する。入力を変化させると、変化をトリガとして自動的にシミュレータのプロセススタックを更新する。 プログラミング言語ではコンパイラにより機械語を生成し、ハードウェア記述言語ではシンセサイザ(合成系)でネットリストを生成する。後者もコンパイルと呼ぶものもあるが、目的と対象が異なる。プログラミング言語のコンパイラはソースコードをプロセッサ固有の機械語に変換し、そのプロセッサ上で実行可能な形式にする。ハードウェア記述言語のシンセサイザは、ソースコードから物理的に実装可能なゲートのネットリストを生成する。ネットリストには様々な形態があり、ゲート遅延情報を持つシミュレーション・ネットリスト、下工程用のハンドオフ・ネットリスト、汎用の標準ネットリストであるEDIFなどがある。なお、プログラミング言語におけるインタプリタは、ハードウェア記述言語ではシミュレータに相当する(性能上の理由などのために、シミュレーションを実行する実行可能プログラムを生成するタイプのシミュレータもある)。 ハードウェア記述言語には、プログラミング言語用のプリプロセッサを流用しているものもある。 ハードウェア記述言語の意味論には、厳密でないものもあり、記述がまずいとシミュレーションと合成結果のふるまいが異なることがある、というものもある。 以上で述べたように、基本的にはハードウェア記述言語はプログラミング言語と異なるものであるが、より高水準からの記述を求めたハードウェア記述言語があり、一方で並列・並行の記述を言語機能に持つプログラミング言語もあるため、共通する要素を持つものもそれぞれあらわれている。 電子システムがますます複雑化するにつれ、再構成処理(再構成可能コンピューティング)が増えていることと、どちらも設計できる技術者の必要性から、ハードウェア記述言語としてもプログラミング言語としても使える言語への要求が高まりつつある。 一例として SystemC があり、組み込みシステムのハードウェアを詳細の不明なアーキテクチャ上のブロック(入出力信号がモデル化されたブラックボックス)としてモデル化できる。SystemC の高度に抽象化したモデル記述は、初期のアーキテクチャ選定に適している。
※この「ハードウェア記述言語とプログラミング言語」の解説は、「ハードウェア記述言語」の解説の一部です。
「ハードウェア記述言語とプログラミング言語」を含む「ハードウェア記述言語」の記事については、「ハードウェア記述言語」の概要を参照ください。
- ハードウェア記述言語とプログラミング言語のページへのリンク