Menu
Coddy logo textTech

Initial Block

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

Verilog tem dois blocos procedurais: initial (é executado uma vez) e always (é executado continuamente). Agora, vamos abordar o bloco initial.

O que é um bloco Initial?

O bloco initial é executado apenas uma vez no início da simulação (time 0). Quando termina, não é executado 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 Initial Block para Sinais de Test

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
ExecuçãoUma vezContinuamente (para sempre)
Usado paraTestbenches, inicializaçãoHardware (flip-flops, contadores)
Sintetizável?Não (apenas simulação)Sim (com lista de sensibilidade)

Notas importantes

  • initial blocks are not synthesizable. Eles não podem ser transformados em hardware
  • Use initial apenas em testbenches
  • Se o testbench contiver um clock de execução contínua (por exemplo, always #5 clk = ~clk;), a simulação será executada para sempre, a menos que você chame $finish; com apenas um bloco initial, o simulador para por si só quando não restam eventos, mas adicionar $finish ainda é uma boa prática
challenge icon

Desafio

Add o initial block ausente que define a como 0 e, depois de 10 unidades de time, define a como 1.

O que fazer:

  1. Add initial begin e end
  2. Defina a = 0
  3. Wait #10
  4. Defina a = 1
  5. Add $finish para encerrar a simulation

Experimente você mesmo

module test;
  reg a;
  
  // TODO: Adicione o bloco initial aqui
  // Defina a = 0
  // Aguarde #10
  // Defina a = 1
  // Adicione $finish; para encerrar 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

Pratique por conta própria: Compilador de Verilog online