Este diretório contém as fontes do GHDL, o analisador, compilador, simulador e sintetizador (experimental) de código aberto para VHDL, uma linguagem de descrição de hardware (HDL). O GHDL não é um intérprete: ele permite analisar e elaborar fontes para geração de código de máquina a partir do seu projeto. A execução nativa do programa é a única maneira de simulação em alta velocidade.
Suporte total para as versões 1987, 1993, 2002 do padrão IEEE 1076 VHDL e parcial para as revisões de 2008 e 2019.
Apoio parcial do PSL.
Ao usar um gerador de código (LLVM, GCC ou, apenas x86_64/i386, um integrado), é muito mais rápido que qualquer simulador interpretado. Ele pode lidar com designs muito grandes, como leon3/grlib.
GHDL roda em GNU/Linux, Windows e macOS; em x86
, x86_64
, armv6/armv7/aarch32
, aarch64
e ppc64
. Você pode baixar gratuitamente ativos noturnos, usar imagens OCI (também conhecidos como contêineres Docker/Podman) ou tentar construí-los em sua própria máquina (consulte 'Obtendo GHDL' abaixo).
Pode gravar formas de onda em arquivos GHW, VCD ou FST. Combinado com um visualizador de formas de onda baseado em GUI e um bom editor de texto, o GHDL é uma ferramenta muito poderosa para escrever, testar e simular seu código.
A co-simulação com aplicações estrangeiras é suportada através da Verilog Procedural Interface (VPI) e/ou VHPIDIRECT. Consulte ghl.github.io/ghdl-cosim.
Pode sintetizar designs VHDL arbitrariamente complexos em uma netlist VHDL 1993, que pode ser usada implícita ou explicitamente em estruturas de código aberto ou de síntese de fornecedores.
GHDL é software livre:
O GHDL foi projetado para se integrar perfeitamente a diversas ferramentas populares de código aberto, permitindo que os usuários aproveitem recursos adicionais para fluxos de trabalho de simulação e síntese.
Uma das principais integrações é com Yosys, uma ferramenta líder de síntese de código aberto. Usando o plugin ghdl-yosys, o GHDL pode ser usado como front-end para o Yosys, permitindo aos usuários sintetizar projetos VHDL diretamente. Isso possibilita passar da simulação à síntese sem sair do ambiente GHDL, agilizando o fluxo de projeto.
O GHDL também se integra ao cocotb, uma estrutura de co-simulação baseada em corrotinas que permite testes de projetos VHDL orientados por Python. Isso é particularmente útil para escrever testbenches complexos em Python e interagir com simulações VHDL em tempo real.
Para verificação, o GHDL oferece suporte à integração com estruturas como OSVVM, UVVM e VUnit, fornecendo aos usuários um conjunto completo de ferramentas para verificar projetos VHDL. Essas bibliotecas de verificação permitem técnicas de teste avançadas, como verificação aleatória restrita, cobertura funcional e testes de regressão automatizados.
Juntas, essas integrações de terceiros tornam o GHDL uma ferramenta abrangente para design, simulação, verificação e síntese digital, adequada tanto para desenvolvedores individuais quanto para grandes equipes.
Pacotes pré-construídos:
Usando Docker :
Para quem prefere conteinerização, o GHDL também está disponível como imagens Docker. Isso é especialmente útil se você quiser evitar o gerenciamento manual de dependências ou precisar de um ambiente consistente em máquinas diferentes. Você pode usar contêineres de ghdl/docker ou hdl/containers, ambos oferecendo ambientes pré-configurados com GHDL instalado. A execução do GHDL dentro de um contêiner Docker garante que sua configuração permaneça isolada do sistema host, facilitando a manutenção e a replicação em diferentes plataformas. Esta opção é ideal para usuários que procuram uma instalação simplificada e descomplicada.
Construindo GHDL a partir da fonte :
Usuários avançados podem optar por construir o GHDL a partir do código-fonte, permitindo personalização e acesso a recursos experimentais. Compilar a partir do código-fonte também pode ser útil para plataformas ou configurações não cobertas por pacotes pré-construídos. O guia Construindo GHDL fornece instruções detalhadas sobre como compilar GHDL, incluindo a seleção de seu back-end preferido (LLVM, GCC ou mcode). Este processo dá aos usuários controle total sobre sua configuração e permite adaptar o GHDL às suas necessidades específicas.
Notas específicas da plataforma :
apt
, dnf
ou pacman
, dependendo da distribuição. A instalação normalmente é simples e os pacotes pré-construídos são atualizados regularmente.O GHDL oferece diversas vantagens que o tornam uma ferramenta poderosa para simulação e síntese de VHDL. Um dos principais benefícios é a geração de código nativo, que permite tempos de simulação mais rápidos em comparação com simuladores interpretados. Este aumento de desempenho é particularmente perceptível em projetos grandes e complexos, onde a velocidade da simulação pode ser um fator crítico.
Além do desempenho, o GHDL é altamente versátil. Ele suporta múltiplas revisões do padrão VHDL, incluindo as versões 1987, 1993, 2002, 2008 e 2019. Essa ampla gama de compatibilidade torna o GHDL adequado para projetos legados, bem como para designs de última geração. Esteja você trabalhando com padrões VHDL mais antigos ou com as revisões mais recentes, o GHDL oferece a flexibilidade para lidar com todos eles.
Outro benefício importante é o suporte multiplataforma do GHDL. Ele é executado nos principais sistemas operacionais, como Linux, Windows e macOS, e oferece suporte a várias arquiteturas, como x86, x86_64, ARM e PPC64. Isso permite que os desenvolvedores usem o GHDL em diversas configurações de hardware, tornando-o acessível a uma ampla gama de usuários.
A integração do GHDL com ferramentas populares de código aberto, como Yosys para síntese e cocotb para verificação, aumenta ainda mais sua utilidade. Essas integrações permitem que os usuários ampliem os recursos do GHDL além da simulação, tornando-o uma solução abrangente para fluxos de trabalho de design, verificação e síntese de VHDL.
GHDL agradece contribuições da comunidade. Esteja você interessado em melhorar a documentação, corrigir bugs ou adicionar novos recursos, há muitas maneiras de se envolver. As contribuições são uma ótima maneira de ajudar a melhorar a ferramenta e aprender mais sobre como o GHDL funciona internamente.
Veja como você pode começar a contribuir:
Encontre um problema para trabalhar : Confira os problemas em aberto no repositório GitHub. Os problemas são frequentemente rotulados por dificuldade ou tipo (por exemplo, “bom primeiro problema” para iniciantes). Você também pode propor suas próprias ideias ou melhorias.
Bifurque e clone o repositório : Depois de escolher um problema para trabalhar, bifurque o repositório GHDL para sua própria conta GitHub. Clone o repositório bifurcado em sua máquina local para fazer alterações.
Crie um novo branch : é uma boa prática criar um novo branch para cada problema ou recurso em que você está trabalhando. Isso ajuda a manter suas alterações isoladas e facilita a revisão do seu trabalho pelos mantenedores.
Envie uma solicitação pull : depois de fazer suas alterações e enviá-las para sua filial, envie uma solicitação pull (PR) para o repositório GHDL principal. Certifique-se de incluir uma descrição clara do que seu PR aborda e qualquer contexto relevante ou etapas de teste.
Para diretrizes mais detalhadas, consulte nosso Guia de Contribuição (quando criado), que inclui padrões de codificação, instruções de teste e práticas recomendadas para fazer contribuições.
A ferramenta CLI permite análise, compilação, simulação e síntese (experimental) para geração de netlists VHDL 1993. Ele é escrito em Ada e C, e três back-ends diferentes são suportados, às vezes chamados de ghdl_mcode
, ghdl_gcc
e ghdl_llvm
. Este é o ponto de entrada para a maioria dos usuários.
[experimental] ghdl-yosys-plugin é a integração do GHDL como um módulo de plugin frontend para Yosys Open SYnthesis Suite, que usa a biblioteca libghdl
(construída com --enable-synth
).
ghdl-ls
(parte do pyGHDL, veja abaixo) implementa o Language Server Protocol (LSP) em Python. Os recursos de análise VHDL fornecidos pelo GHDL são acessados por meio de libghdl
. Isto pode ser integrado em editores de texto ou IDES, como Vim, Emacs, Atom ou Visual Studio Code. Veja ghl/ghdl-linguagem-servidor.
ghdl-ls
. libghdl
é uma biblioteca compartilhada que inclui um subconjunto de recursos regulares, além de alguns recursos a serem usados por ferramentas de extensão (ou seja, pyGHDL
). Ele é construído junto com o GHDL regular e suporta código não sintetizável e sintetizável. No entanto, isso não é para usuários, mas para ferramentas construídas no núcleo. Quando configurada junto com --enable-synth
, esta biblioteca compartilhada também inclui recursos de síntese.
pyGHDL é uma interface Python para libghdl
. Atualmente, é usado apenas por ghdl-ls
; no entanto, pode ser útil para usuários avançados que desejam construir utilitários Python baseados em GHDL. Há trabalho em andamento para vincular libghdl a pyVHDLModel (consulte pyGHDL.dom
).
ghdl_simul
, que suporta simulação interpretada, está disponível por motivos históricos e apenas para desenvolvimento/depuração. É muito lento em comparação com a simulação compilada 'normal' e nem todos os recursos são suportados.