はじめに
FPGA開発やHLS(高位合成)に取り組む中で、必ず目にする言葉が「HDL」と「RTL」です。
本記事では、これらの用語の意味や違いを、初心者にもわかりやすく整理します。
HDLとは?
HDLは「Hardware Description Language(ハードウェア記述言語)」の略です。
ソフトウェアのようにテキストでハードウェアの構造や動作を記述するための言語で、主に以下の2つがよく使われます。
- Verilog(ベリログ)
- VHDL
これらの言語を使うことで、回路図を描かなくても、テキストで論理回路を設計・検証・合成することが可能になります。
RTLとは?
RTLは「Register Transfer Level(レジスタ転送レベル)」の略です。
これは回路設計における抽象度の1つで、主に次のような概念をベースに設計されます。
- クロックごとにデータがレジスタからレジスタへとどのように転送されるか
- 入出力信号のタイミングやレジスタの更新タイミング
つまり、RTLは「ハードウェアがクロック単位でどのようにデータを処理するか」を設計するレベルを指します。
HDLとRTLの違いと関係
用語 | 正式名称 | 意味 | 役割 |
---|---|---|---|
HDL | Hardware Description Language | 回路を記述するための言語 | RTLを記述するためのツール |
RTL | Register Transfer Level | 設計レベル・抽象度 | クロック単位での設計スタイル |
HDLは 「何で書くか」 を示し、RTLは 「どういう抽象度で設計しているか」 を示す用語です。
たとえば、VerilogというHDLを使ってRTLの記述を行う、というのが一般的な使い方です。
HLSとの関係
近年では、C/C++で設計して自動的にRTL(=Verilogなど)を生成する「高位合成(HLS)」も広く使われています。
この場合、HLSツールはCコードを解析して、内部でRTL設計を生成し、それをHDL(Verilogなど)として出力します。
つまりHLSのアウトプットとしてHDL形式のRTLが得られる、という位置づけになります。
まとめ
- HDLはハードウェアをテキストで記述するための言語(例:Verilog)
- RTLはクロック単位のレジスタ間のデータ転送を意識した設計レベル
- HDLはRTLを書くための手段であり、両者は密接に関係している
- HLSはC/C++からHDL(=RTL)を生成する自動化手法
これらの基礎を理解することで、HLSやFPGA設計の全体像が見えやすくなります。