Menu
Coddy logo textTech

Forever Loop

Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 61 de 90.

El bucle forever repite un bloque de código continuamente, para siempre. Nunca se detiene por sí solo.

Un bucle forever se ejecuta repetidamente sin end. Es útil para generar relojes y otras señales continuas en bancos de pruebas.

Sintaxis:

forever begin
  // Código que se repite para siempre
end

Ejemplo sencillo

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

Esto se imprimirá sin parar y bloqueará tu simulación. Añade siempre un retraso o una condición de detención.

Generar un reloj (uso común)

El uso más común de forever es generar un reloj:

initial begin
  clk = 0;
  forever begin
    #5 clk = ~clk;   // Alternar cada 5 unidades de tiempo
  end
end

Esto crea un reloj que se ejecuta durante toda la simulación.

Forever con Disable

Puedes detener un bucle forever usando una instrucción disable:

initial begin : clock_gen   // Nombre añadido aquí
  clk = 0;
  forever begin
    #5 clk = ~clk;
  end
end
initial begin
  #100;
  disable clock_gen;   // Ahora esto funciona
end

forever frente a otros loop

loop¿Se detiene?Cuándo usarlo
forSí (después de un número fijo de iteraciones)Número conocido de repeats
whileSí (cuando la condición es falsa)Condición de detención desconocida
repeatSí (después de un número fijo de iteraciones)Número conocido de repeats
foreverNo (nunca)Señales continuas (reloj)

Reglas importantes

ReglaExplicación
Debe incluir un retraso#10 o @(posedge clk)
Sin retraso, la simulación se bloqueaBucle infinito sin avance del tiempo
Usa disable para detenerloO la simulación nunca termina
Se usa mejor en bancos de pruebasNo sintetizable
challenge icon

Desafío

Qué hacer:

Add the missing forever loop to generate a clock that toggles every 10 time units.

Pruébalo tú mismo

module forever_challenge;
  reg clk;
  
  initial begin
    clk = 0;
    // TODO: Añade un bucle forever para alternar clk cada 10 unidades de tiempo
  end
endmodule
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Verilog online