Menu
Coddy logo textTech

Instruction Disable

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 de boucles qui, autrement, s'exécuteraient indéfiniment.

Syntaxe :

disable block_name;

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

Désactiver avec une boucle Forever

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'ensemble de ce bloc nommé.
    end
  end
end

La boucle forever se trouve à l'intérieur d'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 l'ensemble du bloc counter — ce qui arrête également immédiatement la boucle forever.

Désactiver dans un bloc séparé

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 continuellement à 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 l'exécution immédiatementLe 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

On vous donne un module avec un compteur qui s'exécute indéfiniment. 

Ce qu'il faut faire :

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

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

Aide-mémoire

L'instruction disable arrête l'exécution d'un bloc nommé (par exemple, une boucle forever). Le bloc doit être étiqueté en utilisant begin : block_name.

Désactiver depuis l'intérieur du bloc :

begin : counter
  forever begin
    #10 count = count + 1;
    if (count == 5) disable counter;
  end
end

Désactiver depuis un bloc séparé :

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

initial begin
  #50;
  disable counter; // arrête le bloc nommé depuis l'extérieur
end

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