このディレクトリには、ハードウェア記述言語 (HDL) である VHDL 用のオープンソース アナライザー、コンパイラー、シミュレーター、および (実験的) シンセサイザーである GHDL のソースが含まれています。 GHDL はインタプリタではありません。GHDL を使用すると、設計からマシンコードを生成するためのソースを分析し、精緻化することができます。高速シミュレーションを実現するには、ネイティブ プログラムの実行が唯一の方法です。
IEEE 1076 VHDL 標準の 1987、1993、2002 バージョンを完全にサポートし、2008 および 2019 リビジョンを部分的にサポートします。
PSL の部分的なサポート。
コード ジェネレーター (LLVM、GCC、または x86_64/i386 のみ、組み込みのもの) を使用すると、解釈されたシミュレーターよりもはるかに高速になります。 leon3/grlib などの非常に大規模なデザインを処理できます。
GHDL は GNU/Linux、Windows、macOS 上で動作します。 x86
、 x86_64
、 armv6/armv7/aarch32
、 aarch64
およびppc64
上。 Nightly アセットを自由にダウンロードしたり、OCI イメージ (別名 Docker/Podman コンテナ) を使用したり、独自のマシン上で構築してみることもできます (下記の「GHDL の入手」を参照)。
波形を GHW、VCD、または FST ファイルに書き込むことができます。 GUI ベースの波形ビューアと優れたテキスト エディタを組み合わせると、GHDL はコードの作成、テスト、シミュレーションのための非常に強力なツールになります。
外部アプリケーションとの協調シミュレーションは、Verilog Procedural Interface (VPI) や VHPIDIRECT を通じてサポートされます。 ghdl.github.io/ghdl-cosim を参照してください。
任意の複雑な VHDL デザインを VHDL 1993 ネットリストに合成でき、オープンソースまたはベンダーの合成フレームワークで暗黙的または明示的に使用できます。
GHDL はフリー ソフトウェアです。
GHDL は、いくつかの一般的なオープンソース ツールとシームレスに統合するように設計されており、ユーザーはシミュレーションと合成の両方のワークフローに追加機能を活用できます。
重要な統合の 1 つは、主要なオープンソース合成ツールである Yosys との統合です。 ghdl-yosys-プラグインを使用すると、GHDL を Yosys のフロントエンドとして使用できるため、ユーザーは VHDL デザインを直接合成できます。これにより、GHDL 環境を離れることなくシミュレーションから合成に移行できるようになり、デザイン フローが合理化されます。
GHDL は、VHDL 設計の Python 駆動テストを可能にするコルーチンベースの協調シミュレーション フレームワークである cocotb とも統合します。これは、Python で複雑なテストベンチを作成したり、VHDL シミュレーションをリアルタイムで操作したりする場合に特に役立ちます。
検証に関しては、GHDL は OSVVM、UVVM、VUnit などのフレームワークとの統合をサポートし、VHDL 設計を検証するための完全なツール スイートをユーザーに提供します。これらの検証ライブラリにより、制約付きランダム検証、機能カバレッジ、自動回帰テストなどの高度なテスト手法が可能になります。
これらのサードパーティ統合により、GHDL はデジタル設計、シミュレーション、検証、合成のための包括的なツールとなり、個人の開発者と大規模なチームの両方に適しています。
事前に構築されたパッケージ:
Docker の使用:
コンテナ化を好む人のために、GHDL は Docker イメージとしても利用できます。これは、依存関係を手動で管理することを避けたい場合、または異なるマシン間で一貫した環境が必要な場合に特に便利です。 ghdl/docker または hdl/containers のコンテナーを使用できます。どちらも、GHDL がインストールされた事前構成された環境を提供します。 Docker コンテナ内で GHDL を実行すると、セットアップがホスト システムから確実に分離され、さまざまなプラットフォーム間での保守と複製が容易になります。このオプションは、効率的で手間のかからないインストールを求めるユーザーに最適です。
ソースから GHDL を構築する:
上級ユーザーはソースから GHDL を構築することを選択でき、カスタマイズや実験的な機能へのアクセスが可能になります。ソースからのビルドは、事前にビルドされたパッケージでカバーされていないプラットフォームや構成にも役立ちます。 GHDL の構築ガイドには、好みのバックエンド (LLVM、GCC、または mcode) の選択を含む、GHDL のコンパイル方法に関する詳細な手順が記載されています。このプロセスにより、ユーザーはセットアップを完全に制御できるようになり、GHDL を特定のニーズに合わせて調整できるようになります。
プラットフォーム固有の注意事項:
apt
、 dnf
、 pacman
などの一般的なパッケージ マネージャーを使用してインストールできます。通常、インストールは簡単で、事前に構築されたパッケージは定期的に更新されます。GHDL には、VHDL シミュレーションおよび合成のための強力なツールとなるいくつかの利点があります。主な利点の 1 つはネイティブ コード生成であり、インタープリタ付きシミュレーターと比較してシミュレーション時間を短縮できます。このパフォーマンスの向上は、シミュレーション速度が重要な要素となる大規模で複雑なデザインで特に顕著です。
パフォーマンスに加えて、GHDL は非常に多用途です。 1987、1993、2002、2008、2019 バージョンを含む、VHDL 標準の複数のリビジョンをサポートします。この幅広い互換性により、GHDL は最先端の設計だけでなく従来のプロジェクトにも適しています。古い VHDL 標準を使用している場合でも、最新のリビジョンを使用している場合でも、GHDL はそれらすべてを処理する柔軟性を提供します。
もう 1 つの重要な利点は、GHDL のクロスプラットフォーム サポートです。 Linux、Windows、macOS などの主要なオペレーティング システムで動作し、x86、x86_64、ARM、PPC64 などのさまざまなアーキテクチャをサポートします。これにより、開発者はさまざまなハードウェア構成で GHDL を使用できるようになり、幅広いユーザーが GHDL にアクセスできるようになります。
GHDL は、合成用の Yosys や検証用の cocotb などの一般的なオープンソース ツールと統合されているため、その実用性がさらに強化されています。これらの統合により、ユーザーは GHDL の機能をシミュレーションを超えて拡張できるようになり、VHDL の設計、検証、および合成ワークフローのための包括的なソリューションになります。
GHDL はコミュニティからの貢献を歓迎します。ドキュメントの改善、バグの修正、新機能の追加に興味があるかどうかに関係なく、参加する方法はたくさんあります。貢献は、ツールの改善に役立ち、GHDL が内部でどのように機能するかを詳しく知るための優れた方法です。
貢献を始める方法は次のとおりです。
取り組むべき問題を見つける: GitHub リポジトリで未解決の問題を確認してください。多くの場合、問題には難易度や種類によってラベルが付けられます (例: 初心者にとって「良い最初の問題」)。独自のアイデアや機能強化を提案することもできます。
リポジトリをフォークしてクローンする: 取り組む問題を選択したら、GHDL リポジトリを自分の GitHub アカウントにフォークします。変更を加えるには、フォークされたリポジトリのクローンをローカル マシンに作成します。
新しいブランチを作成する: 取り組んでいる問題や機能ごとに新しいブランチを作成することをお勧めします。これにより、変更を分離した状態に保つことができ、保守者が作業をレビューしやすくなります。
プル リクエストを送信する: 変更を加えてブランチにコミットした後、メイン GHDL リポジトリにプル リクエスト (PR) を送信します。 PR の対象となる内容と、関連するコンテキストやテスト手順についての明確な説明を必ず含めてください。
より詳細なガイドラインについては、コーディング標準、テスト手順、およびコントリビュートを行うためのベスト プラクティスを含むコントリビュート ガイド (作成時) を参照してください。
CLI ツールを使用すると、VHDL 1993 ネットリストを生成するための分析、コンパイル、シミュレーション、および (実験的) 合成が可能になります。これは Ada と C で書かれており、3 つの異なるバックエンドがサポートされており、 ghdl_mcode
、 ghdl_gcc
、 ghdl_llvm
という名前が付けられることもあります。これは、ほとんどのユーザーにとってのエントリポイントです。
[実験的] ghdl-yosys-plugin は、Yosys Open SYnthesis Suite のフロントエンド プラグイン モジュールとして GHDL を統合したもので、 libghdl
ライブラリ ( --enable-synth
でビルド) を使用します。
ghdl-ls
(pyGHDL の一部、以下を参照) は、Python で言語サーバー プロトコル (LSP) を実装します。 GHDL によって提供される VHDL 分析機能には、 libghdl
を通じてアクセスします。これは、Vim、Emacs、Atom、Visual Studio Code などのテキスト エディターまたは IDES に統合できます。 ghdl/ghdl-言語サーバーを参照してください。
ghdl-ls
とインターフェイスすることによって VHDL の言語サポートを提供する Visual Studio Code (VSC) の拡張機能です。 libghdl
通常の機能のサブセットに加えて、拡張ツール (つまりpyGHDL
) で使用されるいくつかの機能を含む共有ライブラリです。これは通常の GHDL とともに構築されており、合成不可能なコードと合成可能なコードの両方をサポートします。ただし、これはユーザーのためではなく、コア上に構築されたツールのためのものです。 --enable-synth
とともに構成すると、この共有ライブラリには合成機能も含まれます。
pyGHDL はlibghdl
への Python インターフェイスです。現在、これはghdl-ls
によってのみ使用されます。ただし、GHDL に基づいて Python ユーティリティを構築したい上級ユーザーにとっては便利です。 libghdl を pyVHDLModel にバインドする作業が進行中です ( pyGHDL.dom
参照)。
ghdl_simul
、解釈されたシミュレーションをサポートしますが、歴史的な理由から、開発/デバッグのみに使用できます。 「通常の」コンパイル済みシミュレーションと比較すると非常に遅く、すべての機能がサポートされているわけではありません。