この記事には複数の問題があります。改善にご協力いただくか、トークページでこれらの問題について議論してください。(これらのメッセージを削除する方法とタイミングについてはこちらをご覧ください)
|
コンピュータ エンジニアリングにおいて、ハードウェア記述言語( HDL ) は、電子回路の構造と動作を記述するために使用される特殊なコンピュータ言語であり、通常は特定用途向け集積回路(ASIC) を設計し、フィールド プログラマブル ゲート アレイ(FPGA)をプログラムするために使用されます。
ハードウェア記述言語は、電子回路の正確かつ形式的な記述を可能にし、回路の自動解析とシミュレーションを可能にします。また、 HDL記述をネットリスト(物理的な電子部品とその接続方法の仕様)に合成することも可能で、これを配置配線することで、集積回路を作成するためのマスクセットを作成できます。
ハードウェア記述言語は、C言語やALGOL言語などのプログラミング言語によく似ています。つまり、式、文、制御構造からなるテキスト記述です。ほとんどのプログラミング言語とHDLの重要な違いの一つは、HDLには時間の概念が明示的に含まれていることです。
HDL は、特に特定用途向け集積回路、マイクロプロセッサ、プログラマブル ロジック デバイスなどの複雑な回路の電子設計自動化(EDA) システムの不可欠な部分を形成します。
モチベーション
1970年代以降、デジタル電子回路の複雑さが爆発的に増大したため(ムーアの法則参照)、回路設計者はECL、TTL、CMOSなどの特定の電子技術に縛られることなく、高レベルでデジタルロジックを記述する必要がありました。HDLは、レジスタ転送レベルの抽象化、つまり回路のデータフローとタイミングのモデルを実装するために作成されました。 [ 1 ]
ハードウェア記述言語には、 VHDLとVerilogの2つの主要な言語があります。それぞれに、「データフロー記述、動作記述、構造記述」という異なる記述形式があります。VHDLのデータフローの例:
ライブラリIEEE ; IEEE.STD_LOGIC_1164を使用します。すべて;エンティティnot1はポートです( a : IN STD_LOGIC ; b : OUT STD_LOGIC ); END not1 ;アーキテクチャbehavioral OF not1 IS BEGIN b <= NOT a ; END behavioral ;HDLの構造
HDL は、電子システムの構造と時間の経過に伴う動作を標準的なテキストベースで表現したものです。並行プログラミング言語と同様に、HDL の構文とセマンティクスには並行性を表現するための明示的な表記法が含まれています。ただし、ほとんどのソフトウェアプログラミング言語とは異なり、HDL にはハードウェアの主要な属性である時間の概念も明示的に含まれています。階層的なブロック間の回路接続を表現することだけが特徴の言語は、電子計算機支援設計で使用されるネットリスト言語として適切に分類されます。HDL は、同じ回路機能に対して、構造的、動作的、またはレジスタ転送レベルのアーキテクチャで設計を表現するために使用できます。最後の 2 つのケースでは、シンセサイザーがアーキテクチャとロジック ゲートのレイアウトを決定します。
HDLは、ハードウェアの実行可能な仕様を記述するために使用されます。言語ステートメントの根底にあるセマンティクスを実装し、時間の経過をシミュレートするように設計されたプログラムは、ハードウェア設計者に、ハードウェアを物理的に作成する前にモデル化する能力を提供します。この実行可能性により、HDLはプログラミング言語であるかのような印象を与えますが、より正確には仕様言語またはモデリング言語に分類されます。離散イベント(デジタル)および連続時間(アナログ)モデリングをサポートできるシミュレータが存在し、それぞれを対象としたHDLが利用可能です。
制御フロー言語との比較
確かに、データフローではなく制御フローセマンティクスで動作するC++などの従来のプログラミング言語を使用してハードウェアセマンティクスを表現することは可能ですが、そのように機能させるには、プログラムを拡張して扱いにくいクラスライブラリを追加する必要があります。ただし、一般的にソフトウェアプログラミング言語には時間を明示的に表現する機能がないため、ハードウェア記述言語として機能することはできません。2002年にSystem Verilogが導入される前は、論理シミュレータとC++を統合することが、ハードウェア検証でオブジェクト指向プログラミングを使用する数少ない方法の1つでした。System Verilog は、オブジェクト指向とガベージコレクションを提供する最初の主要な HDL です。
ハードウェア記述言語の適切なサブセットを使用することで、シンセサイザー、または論理合成ツールと呼ばれるプログラムは、言語の記述からハードウェアの論理演算を推論し、指定された動作を実装するための汎用ハードウェアプリミティブの等価ネットリストを生成することができます。シンセサイザーは通常、テキスト内のタイミング構造の表現を無視します。例えば、デジタル論理シンセサイザーは通常、回路のタイミングを計測するためにクロックエッジを使用し、タイミング構造は無視します。言語の合成可能なサブセットを持つ機能自体は、ハードウェア記述言語を構成するものではありません。
歴史
最初のハードウェア記述言語は1960年代後半に登場し、より伝統的な言語に似ていました。[ 2 ]永続的な影響を与えた最初の言語は、1971年にC. Gordon BellとAllen Newellの著書Computer Structuresで説明されました。[ 3 ]この著書では、レジスタ転送レベルの概念が導入され、ISP言語で初めてDigital Equipment Corporation(DEC)PDP-8の動作を記述するために使用されました。[ 4 ]
この言語は、DECのPDP-16 RTレベルモジュール(RTM)とその使用方法を説明した本の導入により、さらに普及しました。[ 5 ] 少なくとも2つの基本的なISP言語の実装(ISPLとISPS)が続きました。[ 6 ] [ 7 ] ISPSは、設計の入力と出力の 関係を記述するのに適しており、DECの商用チーム、米国および北大西洋条約機構( NATO )の同盟国のいくつかの研究チームによってすぐに採用されました。
RTM 製品は商業的には成功せず、超大規模集積回路(VLSI) などの新しい手法が普及したため、DEC は 1980 年代半ばに RTM 製品のマーケティングを中止しました。
1979年頃、カイザースラウテルン大学で行われた別の研究で、KARL(「カイザースラウテルン・レジスタ転送言語」)と呼ばれる言語が開発されました。この言語には、VLSIチップのフロアプランニングと構造化ハードウェア設計をサポートする設計計算言語機能が含まれていました。この研究は、KARLの対話型グラフィック姉妹言語であるABL(「ブロックダイアグラム言語」の頭文字)の基礎にもなりました。 [ 8 ] ABLは1980年代初頭、イタリアのトリノにあるCentro Studi e Laboratori Telecomunicazioni(CSELT)によって実装され、グラフィックVLSI設計エディタABLEDが開発されました。1980年代半ばには、欧州委員会の資金提供を受けた国際コンソーシアムによって、KARLとABLを中心としたVLSI設計フレームワークが実装されました。[ 9 ]
1970年代後半には、プログラマブルロジックデバイス(PLD)を用いた設計が普及しましたが、これらの設計は主に有限状態機械の設計に限られていました。1980年にData General社で行われた作業では、同じPLDを用いてData General Eclipse MV/8000が設計され、それらに適切にマッピングできる言語に対する商業的なニーズが高まり始めました。1983年、Data I/O社はこのニーズを満たすためにABELを導入しました。
1985年、設計がVLSIに移行すると、Gateway Design AutomationがVerilogを導入し、IntermetricsがVHSICハードウェア記述言語(VHDL )の最初の完成版をリリースしました。VHDLは、米国国防総省の超高速集積回路プログラム(VHSIC)の要請で開発され、 Adaプログラミング言語と、ISPSの初期開発で得られた経験に基づいています。[ 10 ]当初、VerilogとVHDLは、既に別の形式(回路図ファイルなど)でキャプチャおよび記述されている回路設計を文書化およびシミュレーションするために使用されていました。HDLシミュレーションにより、エンジニアは回路図レベルのシミュレーションよりも高い抽象度で作業できるようになり、設計容量を数百のトランジスタから数千に増加しました。 1986 年、米国国防総省の支援を受けて、VHDL はIEEE 標準(IEEE Std 1076)として後援され、VHDL の最初の IEEE 標準化バージョンである IEEE Std 1076-1987 が 1987 年 12 月に承認されました。その後、 Cadence Design Systems は、次の 10 年間にVerilog シミュレータの事実上の標準となる HDL シミュレータである Verilog-XL の権利を取得するために Gateway Design Automation を買収しました。
HDL の論理合成の導入により、HDL はデジタル設計の背景から前面に押し出されました。合成ツールは、RTL と呼ばれる制約形式で記述された HDLソース ファイルを、ゲートとトランジスタの観点から製造可能なネットリスト記述にコンパイルしました。合成可能な RTL ファイルを作成するには、設計者の練習と訓練が必要でした。従来の回路図レイアウトと比較すると、合成された RTL ネットリストはほとんどの場合、面積が大きく、パフォーマンスが低速でした。熟練したエンジニアによる労働集約的な回路図キャプチャ/手動レイアウトを使用した回路図設計は、ほとんどの場合、論理的に合成された同等の回路図よりもパフォーマンスが優れていましたが、合成による生産性の利点により、すぐにデジタル回路図キャプチャは、RTL 合成で問題となる領域、つまり超高速、低電力、または非同期回路に取って代わられました。
数年のうちに、VHDLとVerilogがエレクトロニクス業界で主流のHDLとして台頭し、一方で、古くて機能の劣るHDLは徐々に使われなくなっていきました。しかし、VHDLとVerilogは、アナログやミックスシグナル回路シミュレーションには適さないなど、多くの共通の制限を抱えています。Confluenceのような特殊なHDLは、VerilogとVHDLの特定の制限を修正することを明確な目的として導入されましたが、いずれもVerilogとVHDLを置き換えることを意図したものではありません。
長年にわたり、HDLの改善には多大な努力が注がれてきました。Verilogの最新版(正式にはIEEE 1800-2005 SystemVerilog)では、テストベンチのランダム化、設計階層、再利用性の向上といったニーズの高まりに対応するため、多くの新機能(クラス、ランダム変数、プロパティ/アサーション)が導入されています。VHDLの次期改訂版も開発中で、SystemVerilogの改善に匹敵するものになると期待されています。
HDLを使用した設計
HDL の使用によって効率が向上するため、現代のデジタル回路設計の大部分は HDL を中心に展開されています。ほとんどの設計は、一連の要件または高レベルのアーキテクチャ図から始まります。制御構造と決定構造は、多くの場合、フローチャートアプリケーションでプロトタイプ化されるか、エディターで入力されます。HDL 記述の記述プロセスは、回路の性質と設計者のコーディング スタイルの好みに大きく依存します。HDL は単なる「キャプチャ言語」であり、多くの場合、C++ 数学モデルなどの高レベルのアルゴリズム記述から始まります。設計者は、Perlなどのスクリプト言語を使用して、HDL 言語で反復的な回路構造を自動的に生成することがよくあります。専用のテキスト エディターでは、自動インデント、構文に応じた色分け、エンティティ/アーキテクチャ/信号宣言の マクロベースの展開などの機能が提供されています。
HDLコードはその後、コードレビュー(監査)を受けます。合成の準備として、HDL記述は一連の自動チェッカーにかけられます。チェッカーは、標準化されたコードガイドラインからの逸脱を報告し、誤解を招く可能性のある曖昧なコード構造を特定し、フローティングポートや出力のショートといった一般的な論理コーディングエラーをチェックします。このプロセスは、コードが合成される前にエラーを解決するのに役立ちます。
業界用語では、HDL設計は一般的に合成段階で終了します。合成ツールがHDL記述をゲートネットリストにマッピングすると、ネットリストはバックエンド段階に渡されます。物理技術(FPGA、ASICゲートアレイ、ASICスタンダードセル)に応じて、HDLがバックエンドフローで重要な役割を果たす場合と、果たさない場合があります。一般的に、設計フローが物理的に実現可能な形式へと進むにつれて、設計データベースは、汎用的なHDL記述では保存できない技術固有の情報で次第に蓄積されていきます。最終的に、集積回路が製造またはプログラムされ、使用可能になります。
HDLコードのシミュレーションとデバッグ
HDL設計に不可欠なのは、HDLプログラムをシミュレーションする能力です。シミュレーションにより、設計のHDL記述(モデルと呼ばれる)は設計検証に合格できます。設計検証は、設計の意図された機能(仕様)をHDL記述のコード実装と比較する重要なマイルストーンです。また、シミュレーションはアーキテクチャの検討も可能にします。エンジニアは、基本設計の複数のバリエーションを作成し、シミュレーションでそれらの動作を比較することで、設計上の選択肢を試すことができます。したがって、シミュレーションはHDL設計の成功に不可欠です。
HDL モデルをシミュレートするために、エンジニアはトップレベルのシミュレーション環境 (テストベンチと呼ばれる) を作成します。テストベンチには、少なくとも、モデルのインスタンス化 (テスト対象デバイスまたは DUT)、モデルの I/O のピン/信号宣言、およびクロック波形が含まれます。テストベンチ コードはイベント ドリブンです。エンジニアは、(テストベンチで生成された) リセット信号を実装し、インターフェイス トランザクション (ホストバスの読み取り/書き込みなど) をモデル化し、DUT の出力を監視するための HDL 文を作成します。HDL シミュレータ (テストベンチを実行するプログラム) は、テストベンチ シミュレーションのすべてのイベントのマスター参照となるシミュレータ クロックを管理します。イベントは、テストベンチ HDL によって指示された瞬間 (テストベンチにコード化されたリセット トグルなど) にのみ、または刺激およびトリガー イベントに (モデルによって) 反応して発生します。最新の HDL シミュレータには、デバッグ ツール一式を備えたフル機能のグラフィカル ユーザー インターフェイスがあります。これにより、ユーザーはいつでもシミュレーションを停止・再開したり、シミュレータブレークポイント(HDLコードとは独立)を挿入したり、HDLモデル階層内の任意の要素を監視・変更したりできます。最新のシミュレータでは、定義済みのPLI / VHPIインターフェースを介して、HDL環境をユーザーがコンパイルしたライブラリにリンクすることもできます。HDLシミュレータとユーザーライブラリはHDL環境外でコンパイル・リンクされるため、リンクはシステム(Windows / Linux / Solarisで動作するx86、SPARCなど)に 依存します。
設計検証は、デバイスの機能仕様、設計者の仕様解釈、および HDL 言語の不正確さの間の断絶が原因で、設計プロセスの中で最も時間のかかる部分になることがよくあります。設計の初期段階では回路の大幅な変更が頻繁に発生するため、初期のテスト/デバッグ サイクルの大部分は HDLシミュレータ環境で実施されます。HDL 記述はハードウェアでプロトタイプを作成してテストすることもできます。この目的でプログラマブル ロジック デバイスがよく使用されます。ハードウェア プロトタイピングは HDL シミュレーションよりも比較的高価ですが、設計を現実世界で確認することができます。プロトタイピングは、他のハードウェア デバイスやハードウェア プロトタイプに対するインターフェイスを確認するのに最適な方法です。低速の FPGA で実行する場合も、純粋な HDL シミュレーションよりもシミュレーション時間が大幅に短縮されます。
HDLによる設計検証
歴史的に、設計検証は、テスト対象の設計に対してシミュレーションテストケースを作成し、実行するという、骨の折れる反復的な作業でした。チップ設計が大規模化・複雑化するにつれて、設計検証の作業は膨大になり、今では設計チームのスケジュールの大部分を占めるまでになっています。設計生産性を向上させる方法を模索し、電子設計自動化(EDA)業界はプロパティ仕様言語(PDL)を開発しました。
形式検証において、プロパティとは、他のオブジェクトの期待される、または想定される動作に関する事実の記述です。理想的には、与えられたHDL記述に対して、形式的な数学的手法を用いて、1つまたは複数のプロパティが真または偽であると証明できます。実際には、多くのプロパティは無限の解空間を占めるため、証明できません。しかし、一連の動作仮定または制約が与えられれば、プロパティチェッカーは解空間を狭めることで、特定のプロパティを証明(または反証)できます。
アサーションは回路の動作をモデル化するものではなく、HDLコードにおける設計者の意図を捉え、文書化します。シミュレーション環境では、シミュレータは指定されたすべてのアサーションを評価し、違反箇所と重大度を報告します。合成環境では、合成ツールは通常、違反が発生した場合に合成を停止するポリシーで動作します。アサーションベースの検証はまだ初期段階ですが、HDL設計ツールセットの不可欠な要素となることが期待されています。
HDLとプログラミング言語
HDLはソフトウェアプログラミング言語と非常によく似ていますが、大きな違いもあります。ほとんどのプログラミング言語は本質的に手続き型(シングルスレッド)であり、並行処理を扱うための構文的およびセマンティクス的なサポートは限られています。一方、HDLは、互いに独立して自動的に実行される複数の並列プロセス(フリップフロップや加算器など)をモデル化できる点で、並行プログラミング言語に似ています。プロセスの入力が変更されると、シミュレータのプロセススタックが自動的に更新されます。
プログラミング言語とHDLはどちらもコンパイラ(HDLの場合はシンセサイザーと呼ばれることが多い)によって処理されますが、その目的は異なります。HDLの場合、「コンパイル」とは論理合成、つまりHDLコードリストを物理的に実現可能なゲートネットリストに変換するプロセスを指します。ネットリストの出力は、ゲート遅延情報を含む「シミュレーション」ネットリスト、合成後の半導体ダイへの配置配線のための「ハンドオフ」ネットリスト、あるいは汎用的な業界標準の電子設計交換フォーマット(EDIF)(後にJEDEC形式ファイルに変換)など、様々な形式を取ることができます。
一方、ソフトウェアコンパイラは、ソースコードをマイクロプロセッサ固有のオブジェクトコードに変換し、対象のマイクロプロセッサ上で実行します。HDLとプログラミング言語は互いに概念や機能を借用しているため、両者の境界は曖昧になりつつあります。しかし、純粋なHDLは汎用アプリケーションソフトウェアの開発には適しておらず、汎用プログラミング言語はハードウェアのモデリングには適していません。
しかし、電子システムがますます複雑化し、再構成可能なシステムが普及するにつれて、ハードウェア設計とソフトウェアプログラミングの両方のタスクを実行できる単一の言語への需要が業界で高まっています。SystemCはその一例です。組み込みシステムのハードウェアは、詳細な記述のないアーキテクチャブロック(モデル化された信号入力と出力ドライバを持つブラックボックス)としてモデル化できます。ターゲットアプリケーションはCまたはC++で記述され、ホスト開発システム向けにネイティブコンパイルされます。これは、組み込みCPUをターゲットとする場合、組み込みCPUのホストシミュレーションまたはエミュレートされたCPUが必要となるのとは対照的です。
SystemCモデルの高度な抽象化は、アーキテクチャの変更を信号レベルの実装問題をほとんど考慮せずに容易に評価できるため、初期のアーキテクチャ検討に適しています。しかし、SystemCで使用されるスレッドモデルは共有メモリに依存しているため、並列実行や低レベルモデルを適切に処理できません。
高位合成
HDLは、その抽象度の高さからアセンブリ言語に例えられます。HDLプログラミングの複雑さを軽減するためにハードウェア設計の抽象度を高めようとする試みがあり、高位合成と呼ばれるサブフィールドが生まれています。
Cadence、Synopsys、Agility Design Solutionsなどの企業は、高水準言語と並行処理モデルを組み合わせることで、従来のHDLよりもFPGAの設計サイクルを高速化する手段としてSystemCを推進しています。標準CまたはC++ (並列プログラミングを可能にするライブラリやその他の拡張機能を含む)に基づくアプローチは、 Mentor GraphicsのCatapult CツールやImpulse Accelerated Technologiesの Impulse Cツールに採用されています。
Intel の同様の取り組みとして、SYCLに関連する Data Parallel C++ を高レベル合成言語として使用することが挙げられます。
Annapolis Micro Systems , Inc.のCoreFire Design Suite [ 11 ]とNational Instruments LabVIEW FPGAは、高レベルの設計エントリにグラフィカルなデータフローアプローチを提供し、 SystemVerilog、SystemVHDL、Handel-Cなどの言語も同じ目標を達成しようとしていますが、FPGAを既存のソフトウェアエンジニアにとってよりアクセスしやすいものにするのではなく、既存のハードウェアエンジニアの生産性を向上させることを目的としています。
また、 MathWorks HDL Coderツール[ 12 ]やIntel FPGA用のDSP Builder [ 13 ] 、 XilinxのXilinx System Generator(XSG)[ 14 ]を使用して、 MATLABとSimulinkでハードウェアモジュールを設計することも可能です。
HDLの例
アナログ回路設計用のHDL
| 名前 | 説明 |
|---|---|
| HDL-A | 独自のアナログHDL |
| スペクターHDL | Cadence Design SystemsのSpectre回路シミュレータ用の 独自のアナログHDL |
| Verilog-AMS (アナログおよびミックスシグナル向け Verilog) | アナログおよびミックスドシグナルシミュレーション用の IEEE Std 1364 VerilogのAccellera標準拡張 |
| VHDL-AMS (アナログ/ミックスシグナル拡張付きVHDL) | アナログおよびミックスドシグナルシミュレーション用の VHDLのIEEE標準拡張(IEEE Std 1076.1) |
デジタル回路設計のためのHDL
業界で最も広く使用され、十分にサポートされている 2 つの HDL の種類は、VerilogとVHDLです。
| 状態 | 名前 | ホスト言語 | 説明 |
|---|---|---|---|
| 使用中 | アルテラハードウェア記述言語(AHDL) | アルテラの独自言語 | |
| ハードウェアプログラミング言語 ( AHPL ) | 教育ツールとして使用される | ||
| アマランサス | パイソン | ||
| ブルースペック | Haskellベースの高水準HDL (組み込みDSLではない)[ 15 ] | ||
| ブルースペックSystemVerilog (BSV) | Bluespec, Inc. による 、 Verilog HDL のような構文を持つBluespecに基づいています。 | ||
| CからVerilogへ | CからVerilogへのコンバータ | ||
| Chisel(Scala組み込み言語によるハードウェア構築)[ 16 ] | スカラ | Scala(埋め込みDSL) ベース | |
| 衝突 | 関数型言語Haskellから構文と意味論を借用した関数型ハードウェア記述言語 | ||
| 複数オブジェクトアーキテクチャのための共通指向言語(COLAMO)[ 17 ] [ 18 ] | 株式会社「スーパーコンピュータ・ニューロコンピュータ研究センター」の 独自言語。 | ||
| ユニバーサルプログラマブルロジックコンパイラ(CUPL)[ 19 ] | Logical Devices, Inc. の 独自言語です。 | ||
| DSLX | XLS ツールチェーン用の ドメイン固有言語 | ||
| ESys.net | C#で書かれた .NETフレームワーク | ||
| フィラメント | Rust にヒントを得た型システムを備えた HDL | ||
| ヘンデルC | Cのような設計言語 | ||
| ハードカムル | OCaml | OCaml(埋め込みDSL)に基づく[ 20 ] | |
| ダライ・ラマ法王 | ハスケル | Haskell(組み込みDSL) ベース | |
| ハードウェア ジョイン Java (HJJ) | Javaに参加 | Join Javaに基づく | |
| ハードウェア ML (HML) | 標準ML | 標準MLに基づく[ 21 ] | |
| ヒドラ | ハスケル | Haskellベース | |
| インパルスC | C類似HDL | ||
| 並列C++(ParC) | タスク並列プログラミングのためにHDLスタイルのスレッドと通信を拡張したkusu | ||
| JHDL | ジャワ | Javaベースのハードウェア定義言語 | |
| 溶岩 | ハスケル | Haskell(組み込みDSL)に基づく[ 22 ] [ 23 ] [ 24 ] [ 25 ] | |
| ローラ | 教える際に使われる簡単な言語 | ||
| M | メンターグラフィックスのHDL | ||
| ミゲン | パイソン | ||
| マイHDL | パイソン | Python(埋め込みDSL) ベース | |
| パラズム | プログラマブルアレイロジック(PAL)デバイス の場合 | ||
| パイプラインC | C のようなハードウェア記述言語で、言語構造およびコンパイラ機能として 高レベル合成のような自動パイプラインを追加します。 | ||
| PyMTL 3 (マンバ) | パイソン | コーネル大学発、Pythonベース | |
| ピルトル | パイソン | Pythonベース、カリフォルニア大学サンタバーバラ校 | |
| リバーサイド コンフィギュラブル コンピューティング向け最適化コンパイラ (ROCCC) | 無料のオープンソースCからHDLへのツール | ||
| RHDL | ルビー | Rubyプログラミング言語をベースにした | |
| 迅速なオープンハードウェア開発(ROHD)[ 26 ] | ダーツ | Dartで書かれたハードウェア設計と検証のためのフレームワーク | |
| Ruby(ハードウェア記述言語) | |||
| シリカ | 並列処理とパイプラインを備えたハードウェアアルゴリズムの設計を簡素化する HDL | ||
| スペード | Rustのような最新のソフトウェア言語に触発されたHDL | ||
| システムC | 高レベルの抽象化、すなわちシステムレベルでの デジタルハードウェアの高レベルの動作およびトランザクションモデリングのためのC++ライブラリの標準化されたクラス | ||
| システムVerilog | システムレベルの設計と検証に対応するための機能強化を備えた Verilog のスーパーセット | ||
| 脊髄HDL | スカラ | Scala(埋め込みDSL)ベース | |
| システムTCL | TclベースのSDL | ||
| C++ に触発されたテンプレート HDL (THDL++) | 継承、高度なテンプレート、ポリシークラスによる VHDL の拡張 | ||
| 鳥居 | パイソン | 独自の EDA ツールとオープンソース EDA ツールの両方をサポートする、FPGA および ASIC 設計用の Python ベースの HDL とフレームワーク。 | |
| ヴェリック | Kotlin をHDL のセマンティクスで再解釈し、SystemVerilogにトランスパイルしました。 | ||
| トランザクションレベルVerilog(TL-Verilog)[ 27 ] | パイプラインとトランザクションの構造を備えたVerilog/ SystemVerilogの拡張。 | ||
| ベリログ | 最も広く使用され、よくサポートされているHDLの1つ | ||
| ヴェリル | SystemVerilogの代替として設計されたHDL | ||
| VHDL(VHSIC HDL) | 最も広く使用され、よくサポートされているHDLの1つ | ||
| もはや一般的には使われていない | 高度なブール式言語(ABEL) | 1983年に Data I/O Corporationによって作成された廃止されたHDL | |
| 合流 | 機能性HDL(販売終了) | ||
| コウェアC | CoWareによる C ベースの HDL。SystemCに置き換えられて廃止されました。 | ||
| エラ | もはや一般的には使われていない | ||
| ISPS | CMU のオリジナル HDL。現在は一般的に使用されていません。 | ||
| カイザースラウテルン登録言語 (KARL) [ 9 ] | Pascalのようなハードウェア記述言語。現在は一般的には使用されていない。 | ||
| nミゲン | パイソン | アマランサスの前身 |
プリント基板設計用のHDL
言語ベースのテキスト入力方式を用いてプリント基板の接続性を定義するプロジェクトがいくつか存在します。これらの中には、可読性、再利用性、検証性の向上に重点を置いた新しいアプローチが登場しています。これらの最新の方法論は、電子機器向けに特化されたオープンソースの設計言語を採用し、宣言型マークアップを用いて回路が達成すべき目標を指定します。この変化は、ソフトウェア開発の原則をハードウェア設計に統合し、プロセスを合理化し、自動化、再利用性、検証性を重視しています。
| 名前 | 説明 |
|---|---|
| アトピール | 電子回路基板をコードで記述するためのオープンソース言語とツールチェーン。 |
| PHDL(PCB HDL) | プリント回路基板の接続性を定義するための無料のオープンソース HDL。 |
| EDAソルバー | 制約に基づいて回路図設計を解決するための HDL。 |
| SKiDL | 電子回路を設計するためのオープンソースの Python モジュール。 |
参照
参考文献
- ^ Ciletti, Michael D. (2011). Verilog HDLによる高度なデジタル設計(第2版). Prentice Hall. ISBN 9780136019282。
- ^ Barbacci, M.「コンピュータとデジタルシステムを記述するためのレジスタ転送言語の比較」カーネギーメロン大学コンピュータサイエンス学部、1973年3月
- ^ベル, CG; ニューウェル, A. (1971). 『コンピュータ構造:解説と例』 マグロウヒル. ISBN 0-07-004357-4。
- ^ Reilly , ED (2003).コンピュータサイエンスと情報技術におけるマイルストーン. Greenwood Press. p. 183. ISBN 1-57356-521-0。
- ^ Bell, CG; Grason, J.; Newell, A. (1972). Designing Computers and Digital Systems . Digital Press. LCCN 72-89566 . OCLC 440245727 .
- ^ Barbacci, MC (1976). コンピュータ記述の記号操作:ISPLコンパイラとシミュレータ(レポート). カーネギーメロン大学コンピュータサイエンス学部. doi : 10.1184/R1/6610790.v1 .
- ^ Barbacci, MC; Barnes, GE; Cattell, RGG; Siewiorek, DP (1977). ISPSコンピュータ記述言語(報告書). カーネギーメロン大学コンピュータサイエンス学部. doi : 10.1184/R1/6610637.v1 .
- ^ Girardi, G.; Hartenstein, R. (1983). ABL仕様(報告書). CSELTおよびカイザースラウテルン大学.
- ^ a b Hartenstein, Reiner W. (2012) [1993], "KARL and ABL" , Mermet, J. (ed.), Fundamentals and Standards in Hardware Description Languages , NATO Science Series E, vol. 249, Springer, pp. 447–, ISBN 9789401119146
- ^ Barbacci, MC; Grout, S.; Lindstrom, G.; Maloney, MP (1984). ハードウェア記述言語としてのAda:初期報告書(報告書). カーネギーメロン大学コンピュータサイエンス学部. CiteSeerX 10.1.1.938.8003 . doi : 10.1184/R1/6602984.v1 .
- ^ 「VHDLベースのFPGAプログラミングアプリケーションソフトウェアツール」 Annapolis Micro Systems, Inc. 2018年12月1日閲覧。
- ^ 「VHDLコード - HDL Coder - MATLAB & Simulink」 . Mathworks.com. 2011年4月30日. 2012年7月7日時点のオリジナルよりアーカイブ。2012年8月11日閲覧。
- ^ 「デジタル信号処理(DSP)ビルダー - インテル® FPGA」 .インテル. 2021年9月20日閲覧。
- ^ 「System Generator for DSP」 . Xilinx.com. 2012年7月12日時点のオリジナルよりアーカイブ。2012年8月11日閲覧。
- ^ Haskellの歴史: クラスを怠惰にする§12.4.2
- ^ 「Chisel/FIRRTL ハードウェア コンパイラ フレームワーク」。
- ^コラモ
- ^ "高水準言語 COLAMO – НИЦ супер-ЭВМ и нейрокомпьютеров" .
- ^ Eurich, JP; Roth, G. (1990). 「EDIFの成長」. IEEE Spectrum . 27 (11): 68– 72. Bibcode : 1990IEEES..27k..68E . doi : 10.1109/6.62219 . S2CID 381119 .
- ^ハードカムル
- ^ Li, Yanbing; Leeser, M. (1995). 「HML: 革新的なハードウェア記述言語とVHDLへの翻訳」. ASP-DAC'95/CHDL'95/VLSI'95 with EDA Technofair 議事録. pp. 691– 696. doi : 10.1109/ASPDAC.1995.486388 . ISBN 4-930813-67-0. S2CID 14198160 .
- ^チャルマーズ溶岩
- ^ザイリンクス ラバ
- ^カンザス溶岩
- ^ヨーク溶岩
- ^ 「Rapid Open Hardware Development (ROHD) Framework」 . GitHub . 2021年11月17日.
- ^ TL-Verilog
外部リンク
- HCT - 設計の複雑さを判断するために使用される HDL 複雑度ツール。