Menu
Coddy logo textTech

Display et Monitor

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

$display et $monitor sont des tâches système utilisées pour afficher des informations de votre simulation. Elles vous aident à voir ce qui se passe à l'intérieur de votre conception.

$display

$display affiche un message une seule fois au moment où il est exécuté.

Syntaxe :

$display("message", variables);

Exemple :

initial begin
  $display("Simulation started");
  #10;
  $display("Time 10");
  #10;
  $display("Time 20");
end

Sortie :

Simulation started
Time 10
Time 20

$monitor

$monitor affiche un message automatiquement dès que l'une de ses variables change.

Syntaxe :

$monitor("message", variables);

Exemple :

initial begin
  a = 0; b = 0;
  $monitor("Time %0t: a=%b, b=%b", $time, a, b);
  #10 a = 1;
  #10 b = 1;
  #10 a = 0;
end

Sortie :

Time 0: a=0, b=0
Time 10: a=1, b=0
Time 20: a=1, b=1
Time 30: a=0, b=1

$display vs $monitor

 $display$monitor
Moment de l'affichageUne seule fois lors de l'exécutionChaque fois qu'une variable change
Nombre de foisAutant de fois qu'il est appeléEn continu (jusqu'à modification)
UtilisationEn-têtes, messages de testSuivi des signaux changeants

Spécificateurs de format courants

SpécificateurSignificationExemple
%bBinaire$display("%b", a);
%dDécimal$display("%d", count);
%hHexadécimal$display("%h", data);
%tTemps$display("%t", $time);
%0tTemps (sans espaces)$display("%0t", $time);
%sChaîne de caractères$display("%s", "Hello");

Règles importantes

RègleExplication
$display s'affiche une seule foisIdéal pour les en-têtes et les résultats finaux
$monitor s'affiche lors d'un changementIdéal pour surveiller les signaux
Un seul $monitor actif à la foisLe dernier remplace le précédent
Utilisez $finish pour arrêterSinon, la simulation peut s'exécuter indéfiniment
challenge icon

Défi

Ajoutez les instructions $display et $monitor manquantes à ce testbench.

Ce qu'il faut faire :

  1. Ajoutez $display pour afficher un en-tête : "Testing OR Gate"
  2. Ajoutez $monitor pour afficher le temps, x, y et z à chaque fois qu'un signal change. Format : "Time %0t: x=%b, y=%b, z=%b"
  3. Ajoutez $display à la fin pour afficher "Test complete"

Aide-mémoire

$display affiche une fois lors de son exécution ; $monitor affiche automatiquement chaque fois qu'une de ses variables change.

$display("message", variables);
$monitor("message", variables);

Exemple :

initial begin
  $display("Simulation started");
  $monitor("Time %0t: a=%b, b=%b", $time, a, b);
  #10 a = 1;
  #10 b = 1;
end

Spécificateurs de format courants :

  • %b — Binaire
  • %d — Décimal
  • %h — Hexadécimal
  • %t / %0t — Temps (avec/sans remplissage)
  • %s — Chaîne de caractères

Règles clés :

  • Un seul $monitor est actif à la fois — le dernier remplace les précédents.
  • Utilisez $finish pour arrêter la simulation.

Essayez vous-même

module or_gate (
  input x,
  input y,
  output z
);
  assign z = x | y;
endmodule

module testbench;
  reg x, y;
  wire z;
  
  or_gate dut (
    .x(x),
    .y(y),
    .z(z)
  );

  initial begin
    // À FAIRE : Ajouter l'en-tête $display "Testing OR Gate"
    
    
    // À FAIRE : Ajouter $monitor pour suivre le temps, x, y, z
    // Format : "Time %0t: x=%b, y=%b, z=%b"
    
    
    // Appliquer le stimulus
    x = 0; y = 0; #10;
    x = 0; y = 1; #10;
    x = 1; y = 0; #10;
    x = 1; y = 1; #10;
    
    // À FAIRE : Ajouter $display "Test complete"
    
    
    $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