HDLって、そもそもナニ?

はじめに:ハードウエア(回路)をコードで書くとは?
「プログラミング」と聞くと、多くの人はPythonやJavaのようなソフトウェア向け言語を思い浮かべるでしょう。でも世の中には、ハードウエアの回路を記述するための言語があります。それが HDL(Hardware Description Language/ハードウェア記述言語) です。
「回路をコードで書く?」と不思議に思うかもしれません。でも実は、現代の電子機器に使われるFPGAやASICといった半導体チップは、HDLを使って設計されているのです。
HDLとは?
HDLを一言でいえば、「電子回路の動作や構造をテキストで表現するための専用言語」 です。
昔の回路設計は、エンジニアが紙や専用ツールの上で「論理ゲートを一個ずつ手でつなぐ」という作業をしていました。しかし回路が複雑になるにつれ、それでは手に負えなくなってきました。そこで生まれたのがHDLです。コードを書くことで、何万・何億個もの論理ゲートで構成される回路を効率よく設計・検証できるようになりました。
ソフトウエア言語との大きな違い
| ソフトウェア言語(例:Python) | HDL(例:Verilog) | |
| 動作の基本 | 命令を上から順番に実行する | 回路ブロックが同時並行で動く |
| 対象 | CPUの上で走るプログラム | シリコン上に焼き付ける回路そのもの |
| 「変数」の実態 | メモリ上のデータ | ワイヤ(信号線)やレジスタ(フリップフロップ) |
ここが最重要ポイントです。HDLでは「処理が並列に動く」という感覚が基本になります。現実の回路はすべての素子が同時に動いているので、それを素直に表現しているわけです。
合わせて読みたい
代表的なHDL
現在よく使われるHDLは主に2つです。
- Verilog HDL(べりろぐ)
1984年にアメリカで開発されたHDLで、C言語に似たシンタックスが特徴です。記述が比較的シンプルで習得しやすく、特に北米・アジアで広く使われています。後に「SystemVerilog」として拡張され、検証(テスト)の用途にも広く使われるようになりました。 - VHDL(ブイエイチディーエル)
"VHSIC Hardware Description Language" の略で、1980年代に米国防総省の主導で開発されました。Ada言語に似た冗長気味なシンタックスが特徴で、型に厳格で堅牢な設計に向いています。ヨーロッパや防衛・航空宇宙分野での採用例が多いです。
実際にコードを見てみよう
「習うより慣れろ」精神で、同じ回路を両方の言語で書いてみましょう。題材は超シンプルな 「2入力ANDゲート」 です。
※ANDゲートとは: 入力AとBが両方とも1のときだけ、出力Yが1になる論理回路です。
Verilog HDLの場合

コードの読み方
- module ~ endmodule:回路ブロック(モジュール)の宣言。ひとつの部品に相当します。
- input wire / output wire:信号の入出力と、それが「ワイヤ(配線)」であることを示します。
- assign y = a & b:ワイヤの接続関係を定義する文。& はビット論理積(AND)です。assign 文は常時評価され、回路の「配線そのもの」を表します。
VHDLの場合

コードの読み方
- VHDLは entity(外観) と architecture(中身) を分けて書くのが特徴です。
- std_logic:VHDLで最もよく使われる信号型。0・1のほかに「不定(X)」「ハイインピーダンス(Z)」なども表現できます。
- y <= a and b:信号の代入。<= は「信号代入演算子」で、英語そのままの and キーワードを使います。
- -- がコメント(Verilogは //)。
HDLで書いたコードはどう使われるの?
HDLのコードが完成しても、それだけで回路が動くわけではありません。次のような工程を経て、実際のシリコンになります。

この流れを RTL設計フロー(Register Transfer Level) と呼びます。HDLは、この中の「回路の動作を人間が読み書きできる形で表現する」ための言語という位置づけです。
まとめ
| 項目 | ポイント |
| HDLとは | 電子回路の動作・構造をテキストで記述する専用言語 |
| Verilog HDL | Cライクで書きやすい。北米・アジア系で主流 |
| VHDL | 型に厳格で堅牢。欧州・防衛系で主流 |
| ソフトとの最大の違い | 並列動作が基本。信号はワイヤかレジスタ |
| 利用シーン | FPGA・ASIC設計、LSI検証など |
HDLは「回路エンジニアにとってのプログラミング言語」です。一見とっつきにくいですが、「配線をコードで書いている」 というイメージさえつかめると、不思議とスラスラ読めるようになってきます。


