Simuladores e sintetizadores de HDL

Posted on sex 14 setembro 2018 in hdl • 6 min read

Há diversos programas que suportam descrições em HDL. Para começar no seu mundo de projetista de hardware usando VHDL ou Verilog, escolha um programa nesta lista e prepare seu ambiente. Quase todos são um Integrated Design Environment (IDE), ou seja, possuem um ambiente com suporte a descrição incluindo syntax highlight, acesso rápido a simulação, síntese e algum sistema de gerenciamento de projetos.

GHDL

Download | Página

HDLs: VHDL | SOs:

O GHDL é um simulador de código aberto que suporta somente a linguagem VHDL, mantido pelo desenvolvedor Tristan Gingold. Permite que você compile e simule sua descrição na sua máquina usando um compilador nativo, o que é rápido em comparação aos outros simuladores desta página. Contudo, o GHDL não faz síntese nem simulação temporizada (exceto se você descrever seu circuito usando temporização explícita no VHDL).

Este é o simulador usado para corrigir os exercícios de Sistemas Digitais. Por esse motivo, os professores mantém uma máquina virtual com GHDL instalado, atualizado e funcionando, e esta máquina está disponível para os alunos. Veja este artigo se deseja trabalhar com esta máquina virtual.

Alternativamente, se você prefere containers tipo Docker, há uma receita para o GHDL aqui.

Contribuição do aluno Fillipe Lima (SD1 2020S2): o aluno encontrou um vídeo no YouTube que mostra como instalar e usar o GHDL e o GTKWave no Windows.

Contribuição do Prof. Edson Midorikawa: um artigo com um quickstart do GHDL no Windows 10.

EDA Playground

Página

HDLs: VHDL, Verilog, SystemVerilog, C++/SystemC, Outras | SOs:

O EDA Playground é um simulador online que suporta várias linguagens de descrição de hardware. É mantido pela Doulos, uma empresa privada que fornece treinamentos (inclusive em HDLs). Sua maior vantagem está em funcionar com qualquer navegador de internet moderno, sem necessidade de nenhuma instalação adicional. Há limitações para utilizar o ambiente sem uma conta, mas é possível se cadastrar com o email @usp e conseguir uma conta com suporte a salvar o trabalho e acesso a algumas ferramentas indisponíveis na versão aberta (o processo de cadastro demora, não deixe para se cadastrar na última hora).

Para usá-lo, basta acessar o link acima (Página) e começar o seu projeto. A ferramenta só aceita projetos no formato padrão de DUT (Design Under Test), onde o seu testbench é responsável por instanciar e gerar os estímulos para sua entidade toplevel. Lembre-se de escolher a linguagem no menu a esquerda (Testbench + Design), assim como o simulador (Tools & Simulators). Dica: Se você marcar a opção Open EPWave after run, a forma de onda da simulação será mostrada assim que a mesma terminar.

Há um tutorial básico do EDA Playground aqui.

Active-HDL

Download | Página

HDLs: VHDL, Verilog | SOs:

Este programa é um IDE completo para VHDL e Verilog, mas suporta somente simulação. Para síntese, você deve ter instalado um programa de específico na sua máquina (e.g. Quartus, Vivado, ISE, etc), e a IDE se encarrega de invocá-lo corretamente.

Possui a vantagem de ser mantido por uma empresa terceira (Aldec), independente do fabricante do hardware alvo do seu projeto. O link para download é da versão de estudante e necessita cadastro (use seu email \@usp).

Quartus

Download | Página

HDLs: VHDL, Verilog | SOs:

O Quartus é um IDE fornecido pela Altera, uma subsidiária da Intel. Permite simulação através do ModelSim (fornecido com o pacote), incluindo simulação temporizada para os dispositivos deste fabricante. Quando fizer download, tenha certeza que escolheu o pacote completo incluindo o ModelSim. O link para download é da versão Lite, que é gratuita e suporta sem licença os dispositivos do programa universitário. Caso esteja trabalhando em algum projeto que utilize um dispositivo não suportado na versão Lite, é possível obter uma licença através do programa universitário (consulte seu orientador(a)).

Vivado/ISE

Download | Página

HDLs: VHDL, Verilog | SOs:

O Vivado é um IDE fornecido pela Xilinx. Permite simulação através do ModelSim (fornecido no pacote), incluindo simulação temporizada para os dispositivos fabricados pela Xilinx. O link para download é genérico, consulte seu professor(a) qual versão irá utilizar (recomendo a Lab Edition pois não precisa de licença alguma). A versão HLx possui ainda suporte a síntese de alto nível.

O ISE é uma versão antiga do IDE da Xilinx disponível somente para Windows. Faça download dessa versão somente se for trabalhar com placas antigas (i.e. Spartan-6), caso contrário opte pelo Vivado.

Programas úteis

HDLMake

O HDLMake é um conjunto de scripts que facilitam a gerência e o compartilhamento de projetos de HW, resolvendo dependências, gerando Makefiles para simulação e síntese e até mesmo buscando IPs de repositórios.

Contribuição do aluno Tomaz Maia Suller: o aluno escreveu um post sobre hdlmake explicando como usá-lo para facilitar o fluxo de projeto com HDL.

GHDL-LS

Página

O GHDL-LS é um Language Server para VHDL, baseado no GHDL. Sua principal função é prover ao seu editor favorito uma maneira fácil de fazer a verificação sintática em tempo real, além de outras funcionalidades que facilitam a vida do desenvolvedor. O Guilherme Salustiano fez um post sobre como instalar e integrar o GHDL-LS a um editor.

GTKWave

Download | Página

SOs:

O GTKWave é um visualizador de formas de onda de código aberto baseado no GTK+. Quando simular a descrição do seu circuito, o seu simulador deve gerar um arquivo VCD, que deve ser aberto em um visualizador de ondas como o GTKWave. Este programa é especialmente útil se você não estiver usando um IDE (e.g. GHDL).

Atom

Download | Página

SOs:

O Atom é um editor de textos com suporte a várias linguagens. Eu o utilizo para a maioria dos meus projetos envolvendo HDLs. Para habilitar o suporte a VHDL, instale o pacote language-vhdl depois de instalar o Atom.

LogiSim

Download | Página

SOs:

O LogiSim é uma ferramenta educacional para projetar e simular circuitos digitais. O método de captura é gráfico, ou seja, você desenha o circuito como se estivesse desenhando no papel, na forma de um diagrama, usando portas lógicas. Apesar de suportar HDLs, este não é o foco do projeto. Nota: o projeto original foi descontinuado pelo autor, esta versão é a versão "evolution", um branch do software original mantido como software aberto por um grupo de universidades suíças.

Digital

Download | Página

SOs:

O Digital é um revamp do projeto do LogiSim original. Assim como o LogiSim Evolution (acima), é escrito em Java e roda em praticamente todas as plataformas. É mantido por um desenvolvedor como software aberto e está em desenvolvimento constante. Assim como o predecessor, a captura é gráfica e na forma de diagrama, mas a integração com VHDL (através do GHDL) e Verilog (através do Icarus) é muito boa. Você pode escrever seu componente em VHDL e juntar ao seu diagrama esquemático facilmente. Recomendo para todos que estão começando em Sistemas Digitais.

Utilização nas disciplinas

Nas disciplinas teóricas de Sistemas Digitais o GHDL é utilizado para correção dos exercícios, mas não faz muita diferença qual simulador você usa para desenvolver, desde que não utilize nenhuma tecnologia dependente de um determinado fabricante. Nestas disciplinas você raramente será solicitado a sintetizar seu circuito.

Nas disciplinas práticas, você invariavelmente irá sintetizar e experimentar seu circuito em uma placa de prototipação. No Laboratório Digital, as placas são do programa universitário da Intel, fabricadas pela Terasic com FPGAs da Intel. Isso significa que você terá que utilizar o Quartus. É possível utilizar o Active-HDL com o Quartus como backend, mas esta configuração ainda não é suportada no laboratório. As disciplinas de Arquitetura de Computadores, apesar de teóricas, possuem forte componente prática e você também precisará de um software que suporte síntese. Contudo, nestas disciplinas a placa utilizada é do programa universitário da Xilinx, fabricadas pela Digilent com FPGAs da Xilinx. O software de síntese deste fabricante é o Vivado, porém a disciplina utiliza o arranjo Active-HDL com o Vivado como backend. Note que o software de síntese só funciona para os dispositivos daquele fabricante, portanto não há como utilizar um software de um fabricante com uma placa de outro (e.g. sintetizar no Vivado e programar a placa da Intel).

Sempre que for configurar seu ambiente, opte pela versão mais atualizada ou consulte seu professor(a) sobre qual versão será utilizada na disciplina. Se sua versão for diferente da utilizada no laboratório, você pode ter problemas para levar seu projeto para o laboratório e usar os computadores disponíveis para programar a placa. Em nenhum laboratório há restrições quanto a levar seu próprio computador (i.e. notebook), mas consulte sempre o técnico do laboratório ou seu professor(a) para ter certeza que não há nenhum problema em ligar a placa no seu próprio equipamento.

A escolha de qual software utilizar é pessoal e você deve tomá-la sozinho, porém aconselho que sempre descreva seu hardware sem utilizar nenhuma construção que dependa de um fabricante específico, assim você pode facilmente transportar seu código de um software para o outro.