35 / 37 · Conceito
Compilação, lint e síntese: alcance dos diagnósticos
Fixe fontes, top e linguagem e diferencie sintaxe, largura, latches e verificação funcional.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
Defina o que foi pedido à ferramenta
O resultado depende de fontes, top, parâmetros, linguagem e versão. Compile DUT com dependências e banco como top separado. Não sintetize seu gerador de clock nem confunda módulo não instanciado com o testado. Os exemplos usam subconjunto sintetizável prático; simulador e motor de produto podem suportar partes diferentes. .sv não ativa magicamente todos os recursos.
Compilar e simular têm alcances distintos
Compilação pode rejeitar sintaxe, módulos ausentes e referências inválidas, não prova aritmética nem prioridade. Simulação compara cenários exercitados; PASS vale para essas comparações e fonte. No laboratório:
iverilog -g2012 -s tb -o sim.vvp modulo_tick.sv tb.sv
vvp sim.vvpRegistre ambos status. Executar sim.vvp antigo após compilação falha pode gerar PASS enganoso. Gere arquivo novo por configuração e pare se não compilar.
Examine as causas
| Diagnóstico | Pergunta |
|---|---|
| Módulo ausente | Arquivo e nome corretos? |
| Truncamento | Quais bits, carry ou sinal se perdem? |
| Latch inferido | Qual caminho combinacional não atribui? |
| Múltiplos acionamentos | Quem é dono da variável? |
| Sinal não usado | Intencional ou conexão ausente? |
| Laço combinacional | Retorna à entrada sem registrador? |
Não silencie tudo para limpar log. Corrija ou documente exceção restrita, intencional e testada. Categorias variam por versão. A referência oficial de avisos do Verilator explica WIDTH, LATCH. Se instalado, uma opção adicional:
verilator --lint-only --top-module periodic_accumulator modulo_tick.sv periodic_accumulator.svEsse é caminho sugerido, não prova de execução. Distinga comandos usados dos propostos.
Síntese é outra fronteira
Uma checagem genérica de Yosys:
yosys -p 'read_verilog -sv modulo_tick.sv periodic_accumulator.sv; hierarchy -check -top periodic_accumulator; proc; opt; check -assert; stat'Confere front end e estrutura genérica, não recursos de FPGA específica, posicionamento, roteamento, fechamento temporal ou fabricação. Mapeamento tecnológico e restrições são trabalho adicional.
Prática: mantenha falhas fora do DUT entregue
Crie três cópias descartáveis: nome filho errado, soma de nove bits em oito, atribuição combinacional ausente. Veja o que cada ferramenta detecta e o que exige teste funcional. Largura pode ser intencional e latch pode compilar; compare com requisitos. Guarde uma falha relevante junto da fonte restaurada. Diagnósticos sem explicação continuam pendentes.