Menu
Coddy logo textTech

Disable Statement

Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 62 sur 90.

L’instruction disable arrête l’exécution d’un bloc nommé (comme une boucle forever, un bloc begin-end ou une tâche). Elle est utile pour sortir des boucles qui, autrement, s’exécuteraient indéfiniment.

Syntaxe :

disable block_name;

Le bloc doit être étiqueté avec un nom.

Disable avec une boucle Forever

initial begin : counter // counter donne au bloc le nom counter.
  forever begin
    #10 count = count + 1;
    if (count == 5) begin
      disable counter;   // disable counter arrête l'intégralité de ce bloc nommé.
    end
  end
end

La boucle forever se trouve dans un bloc nommé counter. L’instruction disable counter est placée à l’intérieur de la boucle. Lorsque count atteint 5, disable counter s’exécute et arrête le bloc entier counter, ce qui arrête immédiatement la boucle forever également.

Désactiver dans un bloc séparé

initial begin : counter
  forever begin
    #10 count = count + 1;
  end
end

initial begin
  #50;
  disable counter;   // Arrête le bloc counter de l'extérieur
end

Ici, la boucle forever s’exécute en continu à l’intérieur du bloc nommé counter. L’instruction disable counter est placée dans un bloc initial séparé. Après 50 unités de temps, disable counter s’exécute et arrête le bloc counter, ce qui met fin à la boucle forever depuis l’extérieur.

Règles importantes

RègleExplication
Le bloc doit être nommébegin : block_name
Disable arrête immédiatement l’exécutionLe code s’arrête à ce moment-là
Peut être utilisé de n’importe oùDepuis n’importe quel bloc du module
Utile pour arrêter les boucles foreverSinon, elles ne s’arrêtent jamais
challenge icon

Défi

Un module avec un compteur qui s’exécute forever vous est fourni. 

À faire :

Complétez le block vide en remplaçant chaque commentaire par le code correct :

  1. Ajoutez #50; pour attendre 50 unités de time
  2. Ajoutez disable counter; pour arrêter le block du compteur
  3. Ajoutez $display("Counter stopped"); pour afficher le message
  4. Ajoutez $finish; pour terminer la simulation

Essayez vous-même

module disable_challenge;
  integer count;
  
  initial begin
    count = 0;
    fork
      begin : counter
        forever begin
          #10 count = count + 1;
          $display("count = %d", count);
        end
      end
      
      begin
        // Étape 1 : Attendre 50 unités de temps
        
        // Étape 2 : Désactiver le bloc counter
        
        // Étape 3 : Afficher "Counter stopped"
        
        // Étape 4 : Terminer la simulation
        
      end
    join
  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

Entraînez-vous par vous-même : Compilateur Verilog en ligne