Menu
Coddy logo textTech

Boucle For

Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 58 sur 90.

Les boucles en Verilog vous permettent d'exécuter un bloc de code plusieurs fois. Elles sont particulièrement utiles dans les testbenches pour générer des motifs de test répétitifs, initialiser la mémoire (memory) et itérer sur des tableaux. Contrairement aux descriptions matérielles qui s'exécutent en parallèle, les boucles s'exécutent de manière séquentielle, ce qui les rend idéales pour la simulation et les tests.

La boucle la plus couramment utilisée est la boucle for, qui se répète un nombre précis de fois. Une boucle for exécute un bloc de code de manière répétée, avec une variable de boucle qui change à chaque itération. Vous contrôlez exactement le nombre de fois qu'elle s'exécute.

Syntaxe :

for (initialization; condition; increment) begin
  // Code à répéter
end
PartieCe que cela faitExemple
initializationDéfinit la valeur de départi = 0
conditionQuand s'arrêteri < 10
incrementChange à chaque bouclei = i + 1

Exemple simple

integer i;

for (i = 0; i < 5; i = i + 1) begin
  $display("i = %d", i);
end

Sortie :

i = 0
i = 1
i = 2
i = 3
i = 4

La boucle s'exécute 5 fois (i = 0, 1, 2, 3, 4).

Boucle For dans les Testbenches

Les boucles for sont fréquemment utilisées pour tester toutes les combinaisons d'entrées :

integer test_value;

for (test_value = 0; test_value < 16; test_value = test_value + 1) begin
  $display("test_value = %d", test_value);
end

Ceci teste les 16 valeurs possibles d'un signal de 4 bits.

For Loop with Arrays

reg [7:0] memory [0:9];
integer i;

initial begin
  for (i = 0; i < 10; i = i + 1) begin
    memory[i] = i * 8;
  end
end

Ceci initialise 10 emplacements memory.

Règles importantes

RègleExplication
La variable de `loop` doit être `integer` ou `reg` Ne peut pas être `wire`
Utilisez `begin`/`end` pour plusieurs instructionsRequis pour plus d'une ligne
Évitez les boucles infiniesAssurez-vous que la `condition` devienne finalement fausse
A utiliser de préférence dans les testbenchesLa plupart des boucles ne sont pas synthétisables
challenge icon

Défi

Ce qu'il faut faire :

Ajoutez la boucle for manquante pour afficher les nombres de 0 à 3.

Essayez vous-même

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: Ajouter une boucle for
    // Initialiser i = 0
    // Boucler tant que i < 4
    // Incrémenter i = i + 1
    // À l'intérieur, afficher i
    
    $finish;
  end
endmodule
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux