Menu
Coddy logo textTech

Bloco Initial

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 47 de 90.

O Verilog possui dois blocos procedurais: initial (executa uma vez) e always (executa continuamente). Agora vamos cobrir o bloco initial.

O que é um Bloco Initial?

O bloco initial é executado apenas uma vez no início da simulação (tempo 0). Quando ele termina, não executa novamente.

É usado principalmente em testbenches para:

  • Definir valores iniciais
  • Gerar sinais de teste
  • Exibir mensagens
  • Iniciar a simulação

Sintaxe

initial begin
  // As instruções executam uma vez, em sequência
end

Exemplo Básico

initial begin
  $display("Simulation started");
  $display("This runs once");
  $finish;
end

Saída:

Simulation started
This runs once

Usando o Bloco Initial para Sinais de Teste

initial begin
  a = 0;
  #10 a = 1;
  #10 a = 0;
  #10 $finish;
end

Isso altera a nos tempos: 0, 10 e 20.

Initial vs Always

 initialalways
RunsOnceContinuamente (para sempre)
Usado paraTestbenches, inicializaçãoHardware (flip-flops, contadores)
Sintetizável?Não (apenas simulation)Sim (com lista de sensibilidade)

Observações Importantes

  • Blocos initial não são sintetizáveis — eles não podem ser convertidos em hardware
  • Use initial apenas em testbenches
  • Se o testbench contiver um clock de execução livre (ex: always #5 clk = ~clk;), a simulação será executada indefinidamente, a menos que você chame $finish; com apenas um bloco initial, o simulador para sozinho quando não restam eventos, mas adicionar $finish ainda é uma boa prática
challenge icon

Desafio

Adicione o bloco initial ausente que define a como 0, e depois de 10 unidades de tempo define a como 1.

O que fazer:

  1. Adicione initial begin e end
  2. Defina a = 0
  3. Aguarde #10
  4. Defina a = 1
  5. Adicione $finish para encerrar a simulação

Experimente você mesmo

module test;
  reg a;
  
  // TODO: Adicione o bloco initial aqui
  // Defina a = 0
  // Aguarde #10
  // Defina a = 1
  // Adicione $finish; para terminar a simulação
  
endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos