ハードウェア記述言語
[Wikipedia|▼Menu]

ハードウェア記述言語(ハードウェアきじゅつげんご、: hardware description language、HDL)は、デジタル回路を設計するためのコンピュータ言語ないしドメイン固有言語(DSL)である。回路の設計、構成を記述する。処理を検証するための試験(テストベンチ)記述ができ、シミュレーションできる開発環境もある。

プログラミング言語との類似性が見られる機能がある言語もあることから、プログラミング言語の一種などとする誤解が非常に多いが、間違いである。また、プログラマブルロジックコントローラの記述に用いられるラダー言語は別のものと扱われている。
概要

ハードウェア記述言語は、ハードウェアの動作仕様を記述するのに使う、文字で記述するコンピュータ言語で、電子回路の経時的振舞いと空間的構造を表現する。プログラミング言語と比較すると、ハードウェア記述言語の構文(シンタックス)や意味(セマンティックス)は、ハードウェアの基本的属性である時間や並行性を記述するものであり、全く異なるものである。回路の接続関係(コンポーネントと等電位点の列挙)を記述する言語として、ネットリストがある。

ハードウェア記述言語の処理系には、記述にもとづきネットリストやプログラマブルロジックデバイスのコンフィグレーションを生成する合成系と、記述に直接もとづきシミュレーションを行うシミュレータがある。シミュレータによってハードウェア設計者は実装前にハードウェアの動作を確認できる。シミュレータには、シミュレーションのレベルとして、ディジタルな事象としてのみ扱うものと、アナログな事象まで詳細に扱うものがある。アナログまで扱うように最初から設計された言語もあれば、拡張として追加された言語もある。

C++のようなプログラミング言語に実装した内部DSL(internal/embedded DSL)として実装されているSystemCのようなハードウェア記述言語もある。

プログラミング言語と同様に様々な言語がある。現在は米国防総省が開発に携わったAdaの流れを汲むVHDL、ゲートウェイ・デザイン・オートメーション社(Gateway Design Automation)[注 1]が開発したVerilog HDLの標準化がまずIEEEで進み、その後IECの国際規格にもなり、広く普及している。
歴史

最初のハードウェア記述言語は、カーネギーメロン大学の「ISP」[注 2][1]、カイザースラウテルン大学の「KARL」である。この二つの言語は1977年にほぼ同時に開発された。ISP はよりプログラミング言語的で、設計上の入力と出力の関係を記述する方式であった。ISP は設計のシミュレーションには使えるが、回路を生成することはできなかった。KARL は大規模集積回路の回路配置が記述可能な機能も持っていた。回路配置の記述機能は関連する対話型グラフィカル言語 ABL にもあった。1980年代初期にABLを使ったVLSI設計エディタをトリノの通信研究センター CSELT で開発している。1980年代中ごろ、欧州連合の委員会が出資した国際コンソーシアムが KARL と ABL を中心としたVLSI設計フレームワークを実装した[2]。1983年、Data-I/O が ABEL を発表した。これはプログラム可能な論理回路を対象としたもので、主に有限状態機械の設計に使った。他に、日本で開発されたSFLがある。

最初の現代的意味でのハードウェア記述言語である Verilog は、1985年、ゲートウェイ・デザイン・オートメーション社が開発した。ケイデンス・デザイン・システムズがその権利を取得して Verilog-XL というシミュレータを開発し、これがその後約10年間で事実上の標準となった。1987年、アメリカ国防総省の要求で Ada 言語の流れを汲む VHDL を開発した。これらハードウェア記述言語とシミュレータによって、技術者はより抽象化されたレベルで設計が可能となり、回路規模も数百トランジスタから数千トランジスタへと拡大していった。

ハードウェア記述言語で記述されたプログラムから論理合成できるシステムが登場し、ハードウェア記述言語はデジタル設計の表舞台に立つようになった。合成ツールはハードウェア記述言語でRTLを記述したソースファイルコンパイルし、製造可能な論理ゲートトランジスタのネットリスト記述を生成する。当初のシステムでは、合成可能なRTLファイルを書くには熟練を要した。RTLで合成したネットリストは、従来の設計に比べるとサイズが大きく、性能も悪いことが多かった。熟練技術者による回路図による設計は、論理合成した同等の回路設計よりも常に優れていたが、論理合成の生産性の良さから、RTL合成が不得手としていた高速低電力な回路や非同期回路でもハードウェア記述言語が採用されていった。論理合成は、単にハードウェア記述言語をデジタル設計の中心に押し出しただけでなく、それ自体がデジタル回路設計のための画期的技術であった。回路図による設計とRTLによる設計は、プログラミング言語におけるアセンブリ言語による設計とC言語による設計の関係に似ている。

IEEEが VHDL と Verilog HDL を標準化したこともあり、VHDL と Verilog HDL は電子産業では事実上の標準となり、それら以外のハードウェア記述言語はあまり使われなくなっていった。しかし、VHDL と Verilog HDL には共通の弱点がある。どちらもアナログ回路やアナログとデジタルの混在した回路のシミュレーションが苦手であり、再帰的な論理構造を記述できない。そのような VHDL と Verilog HDL の弱点を克服するハードウェア記述言語もいくつか登場したが、VHDL や Verilog HDL を置換するには至っていない。

ハードウェア記述言語の改善は長年に渡っている。Verilog HDL から派生した SystemVerilog では、様々な新機能がある。VHDL の最新版でも SystemVerilog の拡張と同等の機能を持たせるよう開発が進んでいる。今後も VHDL と Verilog HDL の改良は続くという予測がある。
ハードウェア記述言語を使った設計

デジタル回路設計は、ハードウェア記述言語による記述か回路図入力によって行っている。回路図入力では、大規模な記述の確認が困難であるため、ハードウェア記述言語の記述が増えている。

設計の最初期は、紙と鉛筆で要求仕様や高水準な構造(アーキテクチャ)図を描くことから始まる。この構造が妥当であるかどうか重要である。構造の妥当性を確認する上で、ハードウェア記述言語で記述する場合もある。ハードウェア記述言語による記述を行う工程は、設計者の熟練度や回路の性質に強く依存している。次の段階として MATLABC++ の数学的モデル記述のような、高水準のアルゴリズムを記述することもある。制御と判断構造は、流れ図(フローチャート)描画ソフトウェアや状態遷移図編集ソフト(エディタ)で試作(プロトタイピング)することも多い。この後、ハードウェア記述言語の記述に変換を行う。

ハードウェア記述言語では、「RTL」と呼ぶ抽象度でハードウェアを記述する。この抽象度では演算器やレジスタとその間の信号伝達を用いてハードウェアを記述する。また、多くのハードウェア記述言語では入れ子構造的に、ある回路の部分回路に分けて設計する。あるいは既にある回路記述を部分回路として利用することもできる。再利用によって設計の効率化が行える。

RTL は論理回路の表現としては抽象的であるため、このままではハードウェアにする事はできない。その代わり、この抽象度に適合したシミュレータを用いて、回路の論理的な動作を確認することができる。機能としては電気的特性などの再現は限られる。シミュレータを用いて、回路の妥当性検証や性能見積もりを行う。

この後ゲート水準と呼ぶ、論理回路を記述する抽象度の記述に展開することで、集積回路を実現する。この操作を論理合成と呼ぶ。論理合成を実行するための道具を論理合成ツール と呼ぶ。

ハードウェア記述言語の記述の抽象度(水準)

構造(アーキテクチャ)- システムの構造、基本機能(アルゴリズム)を記述

動作(BL[注 3]) - 回路の動作を機能面から記述

レジスタ転送(RTL[注 4]) - レジスタと演算器とその間の配線(接続)を記述

ゲート(GL[注 5]) - フリップフロップや論理素子:ゲート(not, and, or, xor)で回路図を表現

設計工程が次の段階に進むたびに、ハードウェア記述言語コードは常にコードレビューを行う。論理合成の前に、ハードウェア記述言語記述は一連の自動化された検査を受ける。この検査工程で、後の合成工程で解釈を間違う可能性のある曖昧な構文を検出したり、一般的なコーディング上の問題を検出する。

ここでよく用いるのが、STARC が作成した Verilog HDL スタイルガイド、VHDL スタイルガイドである。このコーディング規則に従うと、電子回路の知識がないプログラマが作成したコードの論理的な欠陥を少なくすることができる。スタイルガイドに適合しているかを検査するソフトウェアも存在している。

ハードウェア記述言語による設計は、論理合成工程で終了すると考える。合成ツールがハードウェア記述言語の記述をゲートのネットリストに変換すると、ネットリストが下工程に引き渡される。物理的なテクノロジ(FPGAASICゲートアレイ、ASIC標準セル)によっては、ハードウェア記述言語が下工程でも重要な役割を演じることもある。一般に工程が進んで設計が詳細化していくと、設計データベースには技術固有の情報が格納されるようになっていく。技術固有のデータが増えると汎用的なハードウェア記述言語による記述では格納しきれなくなる。

反復的な回路構造をハードウェア記述言語で記述するときに、Perlのようなスクリプト言語を使って自動生成することもある。Emacsなどのテキストエディタは、ハードウェア記述言語のソースコードについて自動字下げ(インデント)、キーワードの強調表示、各種宣言のマクロ拡張などの機能を提供しているものがある。
ハードウェア記述言語コードのシミュレーションとデバッグ

ハードウェア記述言語による設計の本質は、ハードウェア記述言語プログラムをシミュレーション可能な点にある。シミュレーションすることで、設計のハードウェア記述言語プログラム(モデル)が設計検証に合格するようにできる。設計検証は、コード実装(ハードウェア記述言語プログラム)がその設計が意図した機能(仕様)に対して妥当かを検証する重要なマイルストーンである。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:43 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef