Menu
Coddy logo textTech

Visualizzazione e monitoraggio

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 75 di 90.

$display e $monitor sono task di sistema usati per stampare informazioni dalla simulazione. Ti aiutano a vedere cosa sta succedendo all'interno del tuo progetto.

$display

$display stampa un messaggio una volta nel momento in cui viene eseguito.

Sintassi:

$display("message", variables);

Esempio:

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

Output:

Simulation started
Time 10
Time 20

$monitor

$monitor stampa un messaggio automaticamente ogni volta che una qualsiasi delle sue variabili cambia.

Sintassi:

$monitor("message", variables);

Esempio:

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

Output:

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
Quando stampaUna volta quando viene eseguitoOgni volta che una variabile cambia
Quante volteTutte le volte che lo chiamiContinuamente (finché non cambia)
Da usare perIntestazioni, messaggi di testMonitorare i segnali che cambiano

Specificatori di formato comuni

SpecificatoreSignificatoEsempio
%bBinario$display("%b", a);
%dDecimale$display("%d", count);
%hEsadecimale$display("%h", data);
%tTempo$display("%t", $time);
%0tTempo (senza spazi)$display("%0t", $time);
%sStringa$display("%s", "Hello");

Regole importanti

RegolaSpiegazione
$display stampa una voltaUtile per intestazioni e risultati finali
$monitor stampa a ogni modificaUtile per monitorare i segnali
È attivo un solo $monitorL'ultimo sostituisce il precedente
Usa $finish per fermareAltrimenti la simulazione potrebbe continuare all'infinito
challenge icon

Sfida

Aggiungi le istruzioni $display e $monitor mancanti a questo testbench.

Cosa fare:

  1. Aggiungi $display per stampare un'intestazione: "Testing OR Gate"
  2. Aggiungi $monitor per stampare il tempo, x, y e z ogni volta che cambia un segnale. Formato: "Time %0t: x=%b, y=%b, z=%b"
  3. Aggiungi $display alla fine per stampare "Test complete"

Provalo tu

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: Añade el encabezado con $display "Testing OR Gate"
    
    
    // TODO: Añade $monitor para seguir el tiempo, x, y, z
    // Formato: "Time %0t: x=%b, y=%b, z=%b"
    
    
    // Aplica los estímulos
    x = 0; y = 0; #10;
    x = 0; y = 1; #10;
    x = 1; y = 0; #10;
    x = 1; y = 1; #10;
    
    // TODO: Añade $display "Test complete"
    
    
    $finish;
  end
endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online