该目录包含 GHDL 的源代码、VHDL(一种硬件描述语言 (HDL))的开源分析器、编译器、模拟器和(实验)合成器。 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
上。您可以免费下载夜间资产、使用 OCI 映像(又名 Docker/Podman 容器),或尝试在您自己的计算机上构建它(请参阅下面的“获取 GHDL” )。
可以将波形写入 GHW、VCD 或 FST 文件。结合基于 GUI 的波形查看器和优秀的文本编辑器,GHDL 是用于编写、测试和模拟代码的非常强大的工具。
通过 Verilog 程序接口 (VPI) 和/或 VHPIDIRECT 支持与国外应用程序的联合仿真。请参阅 ghdl.github.io/ghdl-cosim。
可以将任意复杂的 VHDL 设计综合到 VHDL 1993 网表中,该网表可以在开源或供应商综合框架中隐式或显式使用。
GHDL 是免费软件:
GHDL 旨在与多种流行的开源工具无缝集成,允许用户利用模拟和综合工作流程的附加功能。
其中一个关键集成是与领先的开源综合工具 Yosys 的集成。使用 ghdl-yosys-plugin,GHDL 可以用作 Yosys 的前端,使用户能够直接综合 VHDL 设计。这使得无需离开 GHDL 环境即可从仿真转向综合,从而简化了设计流程。
GHDL 还与 cocotb 集成,cocotb 是一个基于协程的协同仿真框架,允许对 VHDL 设计进行 Python 驱动的测试。这对于用 Python 编写复杂的测试平台以及与 VHDL 模拟实时交互特别有用。
在验证方面,GHDL 支持与 OSVVM、UVVM 和 VUnit 等框架集成,为用户提供用于验证 VHDL 设计的全套工具。这些验证库支持先进的测试技术,例如约束随机验证、功能覆盖和自动回归测试。
这些第三方集成共同使 GHDL 成为数字设计、仿真、验证和综合的综合工具,适合个人开发人员和大型团队。
预构建包:
使用 Docker :
对于那些喜欢容器化的人来说,GHDL 也可以作为 Docker 镜像提供。如果您想避免手动管理依赖项或需要跨不同计算机的一致环境,这尤其有用。您可以使用 ghdl/docker 或 hdl/containers 中的容器,这两个容器都提供安装了 GHDL 的预配置环境。在 Docker 容器内运行 GHDL 可确保您的设置与主机系统保持隔离,从而更轻松地跨不同平台进行维护和复制。此选项非常适合寻求简化、无麻烦安装的用户。
从源代码构建 GHL :
高级用户可以选择从源代码构建 GHDL,从而允许自定义和访问实验功能。从源代码构建对于预构建包未涵盖的平台或配置也很有用。构建 GHDL 指南提供了有关如何编译 GHDL 的详细说明,包括选择您首选的后端(LLVM、GCC 或 mcode)。此过程使用户能够完全控制他们的设置,并允许他们根据自己的特定需求定制 GHDL。
平台特定注释:
apt
、 dnf
或pacman
进行安装,具体取决于发行版。安装通常很简单,并且预构建的软件包会定期更新。GHDL 具有多种优势,使其成为 VHDL 仿真和综合的强大工具。主要优点之一是它的本机代码生成,与解释模拟器相比,它可以实现更快的模拟时间。这种性能提升在大型复杂设计中尤其明显,其中仿真速度可能是一个关键因素。
除了性能之外,GHDL 还具有高度的通用性。它支持VHDL标准的多个修订版,包括1987年、1993年、2002年、2008年和2019年版本。这种广泛的兼容性使 GHDL 适用于传统项目以及尖端设计。无论您使用较旧的 VHDL 标准还是最新修订版,GHDL 都可以灵活地处理所有这些标准。
另一个重要的好处是 GHDL 的跨平台支持。它运行在Linux、Windows、macOS等主流操作系统上,支持x86、x86_64、ARM、PPC64等多种架构。这使得开发人员可以在各种硬件配置上使用 GHDL,从而让广泛的用户可以使用它。
GHDL 与流行的开源工具(例如用于合成的 Yosys 和用于验证的 cocotb)的集成进一步增强了其实用性。这些集成允许用户将 GHDL 的功能扩展到仿真之外,使其成为 VHDL 设计、验证和综合工作流程的全面解决方案。
GHDL 欢迎社区做出贡献。无论您是对改进文档、修复错误还是添加新功能感兴趣,都有多种参与方式。贡献是帮助改进该工具和了解更多有关 GHDL 内部工作原理的好方法。
您可以通过以下方式开始贡献:
查找要解决的问题:查看 GitHub 存储库上的未解决问题。问题通常按难度或类型进行标记(例如,对于初学者来说“好第一个问题”)。您还可以提出自己的想法或改进措施。
分叉并克隆存储库:选择要处理的问题后,将 GHDL 存储库分叉到您自己的 GitHub 帐户。将分叉存储库克隆到本地计算机以进行更改。
创建一个新分支:最好为您正在处理的每个问题或功能创建一个新分支。这有助于隔离您的更改,并使维护人员更容易审查您的工作。
提交拉取请求:进行更改并将其提交到您的分支后,向主 GHDL 存储库提交拉取请求 (PR)。请务必清楚地描述您的 PR 所涉及的内容以及任何相关的上下文或测试步骤。
有关更详细的指南,请参阅我们的贡献指南(创建时),其中包括编码标准、测试说明和贡献的最佳实践。
CLI 工具允许分析、编译、模拟和(实验)综合,以生成 VHDL 1993 网表。它是用 Ada 和 C 编写的,支持三种不同的后端,有时被命名为ghdl_mcode
、 ghdl_gcc
和ghdl_llvm
。这是大多数用户的切入点。
[实验] ghdl-yosys-plugin 是 GHDL 的集成,作为 Yosys Open SYNthesis Suite 的前端插件模块,它使用libghdl
库(使用--enable-synth
构建)。
ghdl-ls
(pyGHDL 的一部分,见下文)在 Python 中实现语言服务器协议 (LSP)。 GHDL 提供的 VHDL 分析功能可通过libghdl
访问。它可以集成在文本编辑器或 IDES 中,例如 Vim、Emacs、Atom 或 Visual Studio Code。请参阅 ghdl/ghdl-语言-服务器。
ghdl-ls
为 VHDL 提供语言支持。 libghdl
是一个共享库,其中包括常规功能的子集以及扩展工具(即pyGHDL
)使用的一些功能。它是与常规 GHDL 一起构建的,它支持不可综合和可综合的代码。尽管如此,这不是针对用户的,而是针对构建在核心之上的工具的。当与--enable-synth
一起配置时,该共享库也包含综合功能。
pyGHDL 是libghdl
的 Python 接口。目前,它仅由ghdl-ls
使用;但是,对于愿意基于 GHDL 构建 Python 实用程序的高级用户来说,它可能很有用。将 libghdl 绑定到 pyVHDLModel 的工作正在进行中(请参阅pyGHDL.dom
)。
ghdl_simul
支持解释模拟,由于历史原因且仅可用于开发/调试。与“常规”编译模拟相比,它非常慢,并且并非所有功能都受支持。