Menu
Coddy logo textTech

Display And 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 chaque fois 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 contre $monitor

 $display$monitor
Quand il s'afficheUne fois lors de son exécutionChaque fois qu'une variable change
Combien de foisAutant de fois que vous l'appelezContinuellement (jusqu'à ce qu'il soit modifié)
Utiliser pourHeaders, message de testtrack des signaux changeants

Spécificateurs de format courants

SpécificateurSignificationExemple
%bBinary$display("%b", a);
%dDécimal$display("%d", count);
%hHexadécimal$display("%h", data);
%tTime$display("%t", $time);
%0tTime (sans espaces)$display("%0t", $time);
%sChaîne$display("%s", "Hello");

Règles importantes

RègleExplication
$display affiche une seule foisUtile pour les en-têtes et les résultats finaux
$monitor affiche en cas de changementUtile pour surveiller les signaux
Un seul $monitor actifLe dernier remplace le précédent
Utilisez $finish pour arrêterSinon, la Simulation peut s'exécuter indéfiniment
challenge icon

Défi

Add the missing $display and $monitor statements to this testbench.

À faire :

  1. Add $display pour afficher un en-tête : "Testing OR Gate"
  2. Add $monitor pour afficher time, x, y et z chaque fois qu’un signal change. Format : "Time %0t: x=%b, y=%b, z=%b"
  3. Add $display at the end pour afficher "Test complete"

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
    // TODO: Ajouter l'en-tête $display "Testing OR Gate"
    
    
    // TODO: Ajouter $monitor pour suivre time, 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;
    
    // TODO: 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

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