Primeiro, uma dose de realidade
Você não precisa instalar nada para aprender Verilog. Todo editor interativo nestes docs executa Verilog real através do Icarus Verilog em um sandbox, incluindo o visualizador de forma de onda. Se você está aqui para aprender a linguagem, pule esta página e volte quando quiser trabalhar em um projeto mais longo localmente.
Ainda quer uma instalação local? Continue lendo.
O que "instalar Verilog" realmente significa
Verilog é uma linguagem, não um programa. Para executá-lo você precisa de:
- Um simulador - a ferramenta que compila seus arquivos
.ve os executa. Para a maioria dos aprendizes esse é o Icarus Verilog, que te dá o compiladoriveriloge o runtimevvp. - Um visualizador de forma de onda - geralmente o GTKWave - que lê os arquivos
.vcdque seu testbench produz. - Um editor de texto - VS Code com uma extensão Verilog é a escolha comum, mas qualquer um serve.
Toolchains de fornecedores (Xilinx Vivado, Intel Quartus, Synopsys VCS, Cadence Xcelium) existem para programação de FPGA e trabalho com ASIC. São grandes, frequentemente licenciados e excessivos para aprender. Fique com o Icarus.
Instalando no macOS
O caminho mais rápido é o Homebrew:
brew install icarus-verilog gtkwave
Isso instala tanto o compilador quanto o visualizador de forma de onda. Verifique:
iverilog -V
gtkwave --version
Você deve ver números de versão dos dois. O iverilog se coloca automaticamente no seu PATH. O GTKWave instala um app bundle em /Applications e um comando gtkwave de linha de comando que você pode iniciar do terminal.
Se o Homebrew não estiver instalado, siga as instruções em brew.sh primeiro - é um comando curl - e depois volte.
Instalando no Linux
Em distribuições baseadas no Debian (Ubuntu, Mint, Pop!_OS):
sudo apt update
sudo apt install iverilog gtkwave
Em sistemas estilo Fedora / RHEL:
sudo dnf install iverilog gtkwave
No Arch:
sudo pacman -S iverilog gtkwave
Depois verifique da mesma forma:
iverilog -V
gtkwave --version
A versão empacotada às vezes está atrasada em relação ao upstream em um release. Para a maior parte do aprendizado isso está ótimo. Se você precisar de um release mais novo, compile do fonte - o repositório GitHub do projeto tem instruções, e é um ./configure && make && sudo make install de distância.
Instalando no Windows
A rota mais fácil é o instalador pré-compilado mantido pela comunidade do iverilog em bleyer.org (procure por "iverilog Windows"). Ele empacota Icarus Verilog, GTKWave e o toolchain GCC que o Icarus precisa internamente.
- Baixe o instalador mais recente (tipicamente
iverilog-vXX-setup.exe). - Execute-o. Aceite os padrões a menos que tenha um motivo para não aceitar.
- Quando o instalador perguntar, deixe "Add to PATH" marcado.
- Abra uma nova janela do PowerShell ou Prompt de Comando e verifique:
iverilog -V
gtkwave --version
Se você esqueceu de adicionar ao PATH, o binário fica em algo como C:\iverilog\bin\iverilog.exe. Adicione C:\iverilog\bin ao PATH do usuário pelo Propriedades do Sistema, ou rode o instalador novamente e marque a caixa.
WSL2 também é uma boa opção no Windows - instale o Ubuntu pela Microsoft Store e siga as instruções do Linux dentro dele. Você terá um fluxo de trabalho Unix mais familiar.
Compilando e rodando seu primeiro arquivo
Uma vez instalado, o fluxo de trabalho fica assim. Salve um arquivo como hello.v:
module hello;
initial begin
$display("hello from verilog");
$finish;
end
endmodule
Compile-o em um binário de simulação:
iverilog -o hello hello.v
iverilog é o compilador. -o hello nomeia a saída. hello.v é o seu fonte.
Execute a simulação:
vvp hello
Você deve ver:
hello from verilog
Esse é o ciclo local inteiro. A partir daqui você pode dividir seu design em múltiplos arquivos (iverilog -o sim *.v), usar a flag -g2012 para habilitar recursos do SystemVerilog-2012 ou canalizar a saída para seus próprios scripts.
Produzindo e visualizando uma forma de onda
Adicione $dumpfile e $dumpvars ao seu testbench, execute-o e abra o VCD resultante no GTKWave:
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, test);
// ...
end
Depois que vvp sim terminar, você terá um dump.vcd ao lado do seu fonte. Abra-o:
gtkwave dump.vcd
O GTKWave carrega o arquivo e apresenta a árvore de sinais à esquerda. Arraste os sinais que te interessam para a área de wave à direita. Cobrimos isso em detalhes em Dumpfile and VCD.
Erros comuns
iverilog: command not found - o binário não está no seu PATH. No Windows isso geralmente significa que o instalador não foi rodado com a atualização do PATH habilitada. No macOS/Linux geralmente significa que o Homebrew/apt não terminou, ou você está em um shell que não recarregou seu PATH (feche e reabra o terminal).
syntax error em uma linha que parece correta - verifique se você não está usando um recurso do SystemVerilog em modo Verilog puro. Passe -g2012 para o iverilog para habilitar o SystemVerilog-2012:
iverilog -g2012 -o sim main.v
Unknown module durante a compilação - ou o arquivo fonte do módulo não foi passado para o iverilog, ou o nome do módulo na instanciação não bate exatamente com a declaração module. Verilog é case-sensitive.
Forma de onda vazia no GTKWave - seu testbench não chamou $dumpfile e $dumpvars, ou a simulação atingiu $finish antes que algum sinal mudasse. Adicione pelo menos um $dumpvars(0, top) e deixe a simulação rodar tempo suficiente para haver transições.
O que vem a seguir
Se você instalou localmente ou ficou com o navegador, o próximo doc caminha pela escrita do seu primeiro módulo completo do zero - declaração do módulo, ports, uma pequena peça de lógica combinacional e um testbench em volta.
Perguntas frequentes
Como eu instalo o Verilog?
Não existe um único programa chamado 'Verilog' - é uma linguagem, e você instala um compilador/simulador. Para aprender, a escolha padrão é o Icarus Verilog (os comandos iverilog e vvp), junto com o GTKWave para visualizar formas de onda. No macOS use brew install icarus-verilog gtkwave; no Debian/Ubuntu use apt install iverilog gtkwave; no Windows baixe o instalador pré-compilado do site da Bleyer.
Preciso instalar algo para aprender Verilog?
Não. O editor nesta página executa seu código com iverilog e vvp na nuvem e renderiza a forma de onda VCD inline. Você pode completar todos os docs destes tutoriais sem instalar nada. Instalar localmente é útil quando você quer salvar arquivos, versionar um projeto ou trabalhar em um design grande demais para o editor do navegador.
Qual a diferença entre iverilog e vvp?
iverilog é o compilador - ele transforma seus arquivos fonte .v em um binário de simulação. vvp é o runtime que executa esse binário. A sequência de comandos típica é iverilog -o sim main.v test.v seguida de vvp sim. A maioria dos scripts de fluxo envolvem ambos.
O Icarus Verilog é gratuito?
Sim. O Icarus Verilog é open source sob GPL/LGPL. Não há servidor de licença, nem período de avaliação, e funciona tanto para aprendizado quanto para uso comercial. As alternativas comerciais (ModelSim, VCS, Xcelium) são pagas; para tudo que é coberto nestes docs, o Icarus basta.
Como verifico minha versão do iverilog?
Abra um terminal e rode iverilog -V. Você deve ver um número de versão como Icarus Verilog version 12.0. Se aparecer 'command not found', o binário não está no seu PATH - rode o instalador novamente ou adicione o diretório bin ao seu shell config.