Verilogとは何か??

FPGAの学習コストは時間、デバイスともに非常に高額になってくるわけです。
その前に、Verilogとは?からそもそも学ぶ必要があったため、誰かのためになるかな?とメモしておきます。

まず最初に、Verilogは、CやPythonのようなプログラミング言語ではありません。
筆者は最初ここを勘違いしていました。

正しくはハードウェア記述言語(HDL, Hardware Description Language)。
この違いは、FPGAを学ぶ上で最初にぶつかる、そして最も重要な認識の転換になります。

プログラミング言語は「上から順に、一つずつ命令を実行する手順」を書きます。
時間は逐次的に流れますよね、これは音楽と同じです。
ところがVerilogが記述するのは手順ではなく、「回路そのものの構造と、信号がどう振る舞うか」です。
物理的な回路は、あちこちで同時並行に動いていますよね。

ある配線の電圧が変われば、それに繋がった無数のゲートが一斉に反応する。
Verilogは、この「同時に、並行して起きる世界」を記述するための言語なんです。

だからVerilogのコードは「実行される」のではなく、「そういう回路が合成される(作られる)」。
ここが、ソフトウェア開発とは、根本的に発想が違う点です。

なぜこんな言語が必要になったのか。その答えは、Verilogが生まれた時代背景にあります。

歴史 ― 「回路を、言葉で書けないか」という切実な必要から

Verilogが登場したのは1984年、Gateway Design Automationという会社のPhil Moorbyという技術者を中心に開発されました。
奇しくも、前に話したFPGAの生みの親であるXilinxの創業と同じ年です。
これは偶然ではなく、「複雑になりすぎたデジタル回路を、人間が扱える方法が必要だ」という同じ時代の切実さの、二つの表れでした。

それ以前、デジタル回路の設計は「回路図」で行われていました。
トランジスタやゲートを一つずつ図面に描いて繋いでいく。
ところが1980年代、半導体の集積度が急上昇し、一つのチップに載る素子が数千、数万と増えていくと、回路図を手で描くことが物理的に不可能になってきた。
何万個ものゲートを図面で管理するのは、人間の限界を超えていたんです。

そこで発想が生まれます。
「回路を、図ではなく言葉(テキスト)で記述できないか。
しかもその記述を、コンピュータでシミュレーションして、作る前に正しく動くか検証できないか」。
これがVerilogの原点です。

当初のVerilogは、実は「回路を作るため」よりも「回路をシミュレーションして検証するため」の言語として生まれました。
この「検証のための言語」という出自は、今のVerilogにも色濃く残っています。
前にブリッジプロンプトで「各段階でテストベンチ(検証)を通してから実機へ」と書きましたが、そのテストベンチという文化は、Verilogが検証言語として生まれたことに根ざしています。

標準化への道 ― ライバルVHDLとの二強時代

1980年代後半、Verilogは商用ツールとして普及していきますが、ここでもう一つの重要な流れが並行して起きます。
VHDLという、もう一つのハードウェア記述言語の登場です。

VHDLは、アメリカ国防総省の主導で開発されました。
軍事・航空宇宙用途で「回路の仕様を、厳密に、曖昧さなく記述する」ことを目的とした、非常に厳格で冗長な言語。
一方Verilogは、C言語に似た簡潔な文法を持ち、書きやすく、産業界で自然に広まっていきました。
この二つが、ハードウェア記述言語の二大巨頭として、今日まで並び立っています。
大雑把な性格づけをすると、Verilogは「簡潔で実用的、書きやすいが油断すると曖昧さも生む」、VHDLは「厳格で冗長、書くのは大変だが堅牢」。文化圏の傾向として、北米・日本・アジアはVerilog寄り、ヨーロッパはVHDL寄りと言われてきました。

そして未来へ ― 言語は変わっても、思考は残る

Verilogは1984年の誕生から40年以上、ハードウェア記述の中心にあり続けてきました。
今も現役で、当面その地位は揺るぎません。
MIDIのようなものでしょうか。
ただし技術の潮流として、より抽象度の高い記述方法も現れています。
C言語から回路を生成する高位合成(HLS)、Pythonベースの新しいHDL(Chiselなど)、そしてAIによる回路生成。

しかし、本質的に文法や言語が変わっても、「並行動作する回路を、抽象化して記述し、作る前に検証する」というVerilogが確立した思考の型は、消えません。
FPGAの習得という視点で見ると、「ハードウェアを言葉で捉える思考法」となるわけです。
それは30年後も、名前を変えて生き続ける、時代を超える能力です。
だからこそ、今からでも学習する価値はかなりあると個人的には思っています。

記事一覧
Verilogとは何か?? | Kotaro Asahina