Menu
Coddy logo textTech

Laço Forever

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

O loop forever repete um bloco de código continuamente, para sempre. Ele nunca para por conta própria.

Um loop forever é executado repetidamente sem fim. Ele é útil para gerar clocks e outros sinais contínuos em testbenches.

Sintaxe:

forever begin
  // Código que se repete para sempre
end

Exemplo Simples

forever begin
  $display("This prints forever");
end

Isso será impresso infinitamente e vai travar sua simulação. Sempre adicione um atraso ou uma condição de parada.

Gerando um Clock (Uso Comum)

O uso mais comum de forever é gerar um clock:

initial begin
  clk = 0;
  forever begin
    #5 clk = ~clk;   // Alterna a cada 5 unidades de tempo
  end
end

Isso cria um clock que é executado por toda a simulação.

Forever com Disable

Você pode parar um loop forever usando uma instrução disable:

initial begin : clock_gen   // Nome adicionado aqui
  clk = 0;
  forever begin
    #5 clk = ~clk;
  end
end
initial begin
  #100;
  disable clock_gen;   // Agora isso funciona
end

Forever vs outros loops

LoopPara?Quando usar
forSim (após iterações fixas)Número conhecido de repeats
whileSim (quando a condição for falsa)Condição de parada desconhecida
repeatSim (após iterações fixas)Número conhecido de repeats
foreverNão (nunca)Sinais contínuos (clock)

Regras Importantes

RegraExplicação
Deve incluir um atraso (delay)#10 ou @(posedge clk)
Sem atraso, a simulação travaLoop infinito sem avanço de tempo (time)
Use com disable para pararOu a simulação nunca termina (end)
Melhor utilizado em testbenchesNão sintetizável
challenge icon

Desafio

O que fazer:

Adicione o laço forever ausente para gerar um clock que alterna a cada 10 unidades de tempo.

Experimente você mesmo

module forever_challenge;
  reg clk;
  
  initial begin
    clk = 0;
    // TODO: Adicione um loop forever para alternar clk a cada 10 unidades de tempo
  end
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