Этот каталог содержит исходные коды 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. В сочетании со средством просмотра сигналов с графическим интерфейсом и хорошим текстовым редактором GHDL представляет собой очень мощный инструмент для написания, тестирования и моделирования вашего кода.
Совместное моделирование с зарубежными приложениями поддерживается через процедурный интерфейс Verilog (VPI) и/или VHPIDIRECT. См. ghdl.github.io/ghdl-cosim.
Может синтезировать произвольно сложные проекты VHDL в список соединений VHDL 1993, который может быть явно или неявно использован в средах синтеза с открытым исходным кодом или поставщиками.
GHDL — бесплатное программное обеспечение:
GHDL предназначен для полной интеграции с несколькими популярными инструментами с открытым исходным кодом, что позволяет пользователям использовать дополнительные возможности как для рабочих процессов моделирования, так и для синтеза.
Одна из ключевых интеграций — с Yosys, ведущим инструментом синтеза с открытым исходным кодом. Используя плагин ghdl-yosys-plugin, GHDL можно использовать в качестве внешнего интерфейса для Yosys, позволяя пользователям напрямую синтезировать проекты VHDL. Это позволяет перейти от моделирования к синтезу, не выходя из среды GHDL, оптимизируя процесс проектирования.
GHDL также интегрируется с cocotb, средой совместного моделирования на основе сопрограмм, которая позволяет тестировать проекты VHDL на основе Python. Это особенно полезно для написания сложных тестовых стендов на Python и взаимодействия с симуляциями VHDL в режиме реального времени.
Для проверки GHDL поддерживает интеграцию с такими платформами, как OSVVM, UVVM и VUnit, предоставляя пользователям полный набор инструментов для проверки проектов VHDL. Эти библиотеки проверки позволяют использовать расширенные методы тестирования, такие как ограниченная случайная проверка, функциональное покрытие и автоматическое регрессионное тестирование.
В совокупности эти сторонние интеграции делают GHDL комплексным инструментом для цифрового проектирования, моделирования, проверки и синтеза, подходящим как для отдельных разработчиков, так и для больших команд.
Готовые пакеты:
Использование Докера :
Для тех, кто предпочитает контейнеризацию, GHDL также доступен в виде образов Docker. Это особенно полезно, если вы хотите избежать управления зависимостями вручную или вам нужна согласованная среда на разных машинах. Вы можете использовать контейнеры из ghdl/docker или hdl/containers, оба из которых предлагают предварительно настроенные среды с установленным GHDL. Запуск GHDL внутри контейнера Docker гарантирует, что ваша установка останется изолированной от вашей хост-системы, что упрощает обслуживание и репликацию на разных платформах. Этот вариант идеально подходит для пользователей, которым нужна упрощенная и простая установка.
Сборка GHDL из исходного кода :
Опытные пользователи могут собрать 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. Клонируйте разветвленный репозиторий на свой локальный компьютер, чтобы внести изменения.
Создайте новую ветку . Рекомендуется создавать новую ветку для каждой проблемы или функции, над которой вы работаете. Это помогает изолировать ваши изменения и облегчает разработчикам проверку вашей работы.
Отправьте запрос на включение : после внесения изменений и фиксации их в своей ветке отправьте запрос на включение (PR) в основной репозиторий GHDL. Обязательно включите четкое описание того, на что направлен ваш 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, см. ниже) реализует протокол языкового сервера (LSP) на Python. Доступ к функциям анализа VHDL, предоставляемым GHDL, осуществляется через libghdl
. Его можно интегрировать в текстовые редакторы или IDES, такие как Vim, Emacs, Atom или Visual Studio Code. См. ghdl/ghdl-language-server.
ghdl-ls
. libghdl
— это общая библиотека, которая включает в себя подмножество обычных функций, а также некоторые функции, которые будут использоваться инструментами расширения (например, pyGHDL
). Он построен вместе с обычным GHDL и поддерживает как несинтезируемый, так и синтезируемый код. Тем не менее, это не для пользователей, а для инструментов, построенных на базе ядра. При настройке вместе с --enable-synth
эта общая библиотека также включает функции синтеза.
pyGHDL — это интерфейс Python для libghdl
. В настоящее время он используется только ghdl-ls
; однако он может быть полезен опытным пользователям, желающим создавать утилиты Python на основе GHDL. Ведется работа по привязке libghdl к pyVHDLModel (см. pyGHDL.dom
).
ghdl_simul
, который поддерживает интерпретируемое моделирование, доступен по историческим причинам и только для разработки/отладки. Это очень медленно по сравнению с «обычной» скомпилированной симуляцией, и поддерживаются не все функции.