Este directorio contiene las fuentes de GHDL, el analizador, compilador, simulador y sintetizador (experimental) de código abierto para VHDL, un lenguaje de descripción de hardware (HDL). GHDL no es un intérprete: te permite analizar y elaborar fuentes para generar código máquina a partir de tu diseño. La ejecución del programa nativo es la única forma de lograr una simulación de alta velocidad.
Soporte total para las versiones 1987, 1993, 2002 del estándar IEEE 1076 VHDL, y parcial para las revisiones 2008 y 2019.
Soporte parcial del PSL.
Al utilizar un generador de código (LLVM, GCC o, solo x86_64/i386, uno integrado), es mucho más rápido que cualquier simulador interpretado. Puede manejar diseños muy grandes, como leon3/grlib.
GHDL se ejecuta en GNU/Linux, Windows y macOS; en x86
, x86_64
, armv6/armv7/aarch32
, aarch64
y ppc64
. Puede descargar recursos nocturnos de forma gratuita, usar imágenes OCI (también conocidos como contenedores Docker/Podman) o intentar compilarlos en su propia máquina (consulte 'Obtener GHDL' a continuación).
Puede escribir formas de onda en archivos GHW, VCD o FST. Combinado con un visor de formas de onda basado en GUI y un buen editor de texto, GHDL es una herramienta muy poderosa para escribir, probar y simular su código.
La cosimulación con aplicaciones extranjeras se admite a través de Verilog Procedural Interface (VPI) y/o VHPIDIRECT. Consulte ghdl.github.io/ghdl-cosim.
Puede sintetizar diseños VHDL arbitrariamente complejos en una lista de red VHDL 1993, que puede usarse implícita o explícitamente en marcos de síntesis de código abierto o de proveedores.
GHDL es software libre:
GHDL está diseñado para integrarse perfectamente con varias herramientas populares de código abierto, lo que permite a los usuarios aprovechar capacidades adicionales para flujos de trabajo de simulación y síntesis.
Una de las integraciones clave es con Yosys, una herramienta líder de síntesis de código abierto. Usando el complemento ghdl-yosys, GHDL se puede utilizar como interfaz para Yosys, lo que permite a los usuarios sintetizar diseños VHDL directamente. Esto permite pasar de la simulación a la síntesis sin salir del entorno GHDL, agilizando el flujo de diseño.
GHDL también se integra con cocotb, un marco de cosimulación basado en rutinas que permite realizar pruebas de diseños VHDL basadas en Python. Esto es particularmente útil para escribir bancos de pruebas complejos en Python e interactuar con simulaciones VHDL en tiempo real.
Para la verificación, GHDL admite la integración con marcos como OSVVM, UVVM y VUnit, proporcionando a los usuarios un conjunto completo de herramientas para verificar diseños VHDL. Estas bibliotecas de verificación permiten técnicas de prueba avanzadas como verificación aleatoria restringida, cobertura funcional y pruebas de regresión automatizadas.
Juntas, estas integraciones de terceros hacen de GHDL una herramienta integral para diseño, simulación, verificación y síntesis digitales, adecuada tanto para desarrolladores individuales como para equipos grandes.
Paquetes prediseñados:
Usando ventana acoplable :
Para aquellos que prefieren la contenedorización, GHDL también está disponible como imágenes de Docker. Esto es especialmente útil si desea evitar administrar dependencias manualmente o necesita un entorno coherente en diferentes máquinas. Puede utilizar contenedores de ghdl/docker o hdl/containers, los cuales ofrecen entornos preconfigurados con GHDL instalado. La ejecución de GHDL dentro de un contenedor Docker garantiza que su configuración permanezca aislada de su sistema host, lo que facilita el mantenimiento y la replicación en diferentes plataformas. Esta opción es ideal para usuarios que buscan una instalación simplificada y sin complicaciones.
Construyendo GHDL desde la fuente :
Los usuarios avanzados pueden optar por crear GHDL desde el código fuente, lo que permite la personalización y el acceso a funciones experimentales. La compilación desde el código fuente también puede resultar útil para plataformas o configuraciones que no están cubiertas por paquetes prediseñados. La guía Creación de GHDL proporciona instrucciones detalladas sobre cómo compilar GHDL, incluida la selección de su backend preferido (LLVM, GCC o mcode). Este proceso brinda a los usuarios control total sobre su configuración y les permite adaptar GHDL a sus necesidades específicas.
Notas específicas de la plataforma :
apt
, dnf
o pacman
, según la distribución. La instalación suele ser sencilla y los paquetes prediseñados se actualizan periódicamente.GHDL ofrece varias ventajas que lo convierten en una poderosa herramienta para la simulación y síntesis de VHDL. Uno de los beneficios clave es la generación de código nativo, que permite tiempos de simulación más rápidos en comparación con los simuladores interpretados. Este aumento del rendimiento es particularmente notable en diseños grandes y complejos, donde la velocidad de simulación puede ser un factor crítico.
Además del rendimiento, GHDL es muy versátil. Admite múltiples revisiones del estándar VHDL, incluidas las versiones 1987, 1993, 2002, 2008 y 2019. Esta amplia gama de compatibilidad hace que GHDL sea adecuado tanto para proyectos heredados como para diseños de vanguardia. Ya sea que esté trabajando con estándares VHDL más antiguos o con las revisiones más recientes, GHDL brinda la flexibilidad para manejarlos todos.
Otro beneficio importante es el soporte multiplataforma de GHDL. Se ejecuta en los principales sistemas operativos como Linux, Windows y macOS, y admite varias arquitecturas como x86, x86_64, ARM y PPC64. Esto permite a los desarrolladores utilizar GHDL en una variedad de configuraciones de hardware, haciéndolo accesible a una amplia gama de usuarios.
La integración de GHDL con herramientas populares de código abierto como Yosys para síntesis y cocotb para verificación mejora aún más su utilidad. Estas integraciones permiten a los usuarios ampliar las capacidades de GHDL más allá de la simulación, convirtiéndolo en una solución integral para flujos de trabajo de diseño, verificación y síntesis de VHDL.
GHDL agradece las contribuciones de la comunidad. Ya sea que esté interesado en mejorar la documentación, corregir errores o agregar nuevas funciones, hay muchas maneras de participar. Las contribuciones son una excelente manera de ayudar a mejorar la herramienta y aprender más sobre cómo funciona GHDL internamente.
Así es como puedes empezar a contribuir:
Encuentre un problema en el que trabajar : consulte los problemas abiertos en el repositorio de GitHub. Los números suelen estar etiquetados por dificultad o tipo (por ejemplo, "buen primer número" para principiantes). También puedes proponer tus propias ideas o mejoras.
Bifurca y clona el repositorio : una vez que hayas elegido un problema en el que trabajar, bifurca el repositorio GHDL a tu propia cuenta de GitHub. Clona el repositorio bifurcado en tu máquina local para realizar cambios.
Crear una nueva rama : es una buena práctica crear una nueva rama para cada problema o característica en la que esté trabajando. Esto ayuda a mantener sus cambios aislados y facilita que los encargados de mantenimiento revisen su trabajo.
Envíe una solicitud de extracción : después de realizar los cambios y enviarlos a su sucursal, envíe una solicitud de extracción (PR) al repositorio principal de GHDL. Asegúrese de incluir una descripción clara de lo que aborda su RP y cualquier contexto relevante o pasos de prueba.
Para obtener pautas más detalladas, consulte nuestra Guía de contribución (cuando se creó), que incluye estándares de codificación, instrucciones de prueba y mejores prácticas para realizar contribuciones.
La herramienta CLI permite análisis, compilación, simulación y síntesis (experimental) para generar netlists VHDL 1993. Está escrito en Ada y C, y se admiten tres backends diferentes, que a veces se denominan ghdl_mcode
, ghdl_gcc
y ghdl_llvm
. Este es el punto de entrada para la mayoría de los usuarios.
[experimental] ghdl-yosys-plugin es la integración de GHDL como un módulo de complemento frontal para Yosys Open SYnthesis Suite, que utiliza la biblioteca libghdl
(construida con --enable-synth
).
ghdl-ls
(parte de pyGHDL, ver más abajo) implementa el Protocolo de servidor de lenguaje (LSP) en Python. Se accede a las funciones de análisis VHDL proporcionadas por GHDL a través de libghdl
. Esto se puede integrar en editores de texto o IDES, como Vim, Emacs, Atom o Visual Studio Code. Consulte ghdl/ghdl-language-server.
ghdl-ls
. libghdl
es una biblioteca compartida que incluye un subconjunto de funciones habituales más algunas funciones que utilizarán las herramientas de extensión (es decir, pyGHDL
). Está construido junto con el GHDL normal y admite código sintetizable y no sintetizable. Sin embargo, esto no es para los usuarios, sino para las herramientas construidas sobre el núcleo. Cuando se configura junto con --enable-synth
, esta biblioteca compartida también incluye funciones de síntesis.
pyGHDL es una interfaz Python para libghdl
. Actualmente, sólo lo utiliza ghdl-ls
; sin embargo, puede resultar útil para usuarios avanzados que estén dispuestos a crear utilidades de Python basadas en GHDL. Hay trabajo en progreso para vincular libghdl a pyVHDLModel (consulte pyGHDL.dom
).
ghdl_simul
, que admite simulación interpretada, está disponible por razones históricas y solo para desarrollo/depuración. Es muy lento en comparación con la simulación compilada "normal" y no todas las funciones son compatibles.