ハードウェア記述言語
RTL は論理回路の表現としては抽象的であるため、このままではハードウェアにする事はできない。その代わり、この抽象度に適合したシミュレータを用いて、回路の論理的な動作を確認することができる。機能としては電気的特性などの再現は限られる。シミュレータを用いて、回路の妥当性検証や性能見積もりを行う。
この後ゲート水準と呼ぶ、論理回路を記述する抽象度の記述に展開することで、集積回路を実現する。この操作を論理合成と呼ぶ。論理合成を実行するための道具を論理合成ツール と呼ぶ。
ハードウェア記述言語の記述の抽象度(水準)
構造(アーキテクチャ)- システムの構造、基本機能(アルゴリズム)を記述
動作(BL) - 回路の動作を機能面から記述
レジスタ転送(RTL) - レジスタと演算器とその間の配線(接続)を記述
ゲート(GL) - フリップフロップや論理素子:ゲート(not, and, or, xor)で回路図を表現
設計工程が次の段階に進むたびに、ハードウェア記述言語コードは常にコードレビューを行う。論理合成の前に、ハードウェア記述言語記述は一連の自動化された検査を受ける。この検査工程で、後の合成工程で解釈を間違う可能性のある曖昧な構文を検出したり、一般的なコーディング上の問題を検出する。
ハードウェア・ソフトウェア協調設計(英語版)(コデザイン、co-design)は、ソフトウェア技術者がハードウェア記述言語プログラムを理解し、ハードウェア技術者がソフトウェアプログラムを理解することによって、加速していく可能性がある。
こうした高位合成技術、協調設計技術を総合してシステムレベル設計またはシステム設計技術と呼ぶ。これらの技術を用いて、ハードウェアとソフトウェアとを区別なく、ソフトウェアの記述と同等の抽象度で論理(デジタル)システム全体を記述することをシステムレベル設計と呼ぶこともある。
このようなシステムレベル設計に用いる言語として、C言語を拡張した SpecC、C++のテンプレートライブラリとして実現したSystemC、Verilog HDLを拡張したSystemVerilogなどがある。特に SpecC や SystemC など、C/C++をベースにした言語による設計をC言語設計と呼び、日本ではシステムレベル設計といえばC言語設計を指すこともある。