O fluxo Verilog em detalhe¶
O tutorial mostrou o caminho feliz. Este capítulo explica o que cada etapa faz de verdade e o que fazer quando algo foge do roteiro.
O que “Sintetizar Verilog” executa¶
O botão roda a elaboração do projeto: todos os fontes sintetizáveis são compilados juntos, com o Top Level como raiz, usando o Icarus Verilog em modo de checagem (elabora sem gerar simulação). A biblioteca de módulos do SAPHO entra automaticamente na busca, então um projeto que instancie um processador gerado não precisa listar os módulos internos dele.
Passando a checagem, o Yosys constrói a hierarquia de instâncias, que alimenta a visão Hierarquia da árvore. O testbench fica de fora dessa etapa de propósito: construções de simulação como $dumpvars, atrasos e $finish não pertencem ao circuito.
Nota
Validar não é sintetizar para FPGA. A AURORA prova que o design elabora e desenha a estrutura; a síntese física, com mapeamento em células e bitstream, acontece no Quartus ou no Vivado, como descrito em Levar ao FPGA.
A classificação automática das fontes¶
Cada .v importado é lido e pontuado: gravação de onda, $finish ou $stop, módulo sem portas e blocos initial pesam mais; $display, atrasos # e nome terminando em _tb pesam menos. Passando do limiar, o arquivo é testbench; na dúvida, é sintetizável. A pontuação se refaz a cada atualização da árvore.
Na prática isso significa: escreva testbenches com cara de testbench (um initial, um $finish) e módulos com cara de módulo, e a árvore se organiza sozinha. Se um arquivo cair na categoria errada, o menu de contexto permite marcá-lo como testbench manualmente.
Diagnósticos enquanto você digita¶
Dois analisadores acompanham a edição de Verilog e SystemVerilog:
O analisador sintático aponta erros de forma e estilo na hora, e é ele que atende o Formatar (Shift+Alt+F).
O analisador semântico elabora o projeto inteiro em segundo plano e marca o que só aparece na elaboração: identificadores não declarados, incompatibilidade de tipos e de portas, sinais nunca usados. Ele pode ser ligado e desligado com Ctrl+Alt+S.
Os dois escrevem na mesma lista de problemas do editor, com origens identificadas.
Múltiplos arquivos e módulos¶
O conjunto de fontes da elaboração é a lista de sintetizáveis do projeto, inteira. Você pode dividir o design em quantos arquivos quiser; a resolução de módulos cruza todos. O que importa é um único Top Level marcado, do qual a elaboração parte. Módulos não alcançáveis a partir dele simplesmente não participam.
Quando a validação falha¶
As mensagens chegam no terminal TVERI com link para arquivo e linha. Os casos mais comuns:
Unknown module type: XUm módulo instanciado não existe em nenhum fonte do projeto. Confira o nome e se o arquivo que o define está na lista de sintetizáveis.
- Portas incompatíveis
A instância não bate com a definição do módulo. O analisador semântico costuma apontar isso antes mesmo de você clicar no botão.
- Botão desabilitado
Falta o Top Level. Marque-o pelo menu de contexto na visão Arquivos.
A lista completa de mensagens por fluxo está em Diagnóstico: sintomas e causas.