Menu
Coddy logo textTech

Display And Monitor

Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 75 de 90.

$display y $monitor son tareas del sistema que se utilizan para imprimir información de tu simulación. Te ayudan a ver qué sucede dentro de tu diseño.

$display

$display imprime un mensaje una vez en el momento en que se ejecuta.

Sintaxis:

$display("message", variables);

Ejemplo:

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

Salida:

Simulation started
Time 10
Time 20

$monitor

$monitor imprime un mensaje automáticamente cada vez que cambia cualquiera de sus variables.

Sintaxis:

$monitor("message", variables);

Ejemplo:

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

Salida:

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
Cuándo imprimeUna vez al ejecutarseCada vez que cambia una variable
Cuántas vecesTantas veces como lo llamesContinuamente (hasta que cambie)
Se usa paraheader, mensajes de TestSeguir señales cambiantes

Especificadores de formato comunes

EspecificadorSignificadoEjemplo
%bBinary$display("%b", a);
%dDecimal$display("%d", count);
%hHexadecimal$display("%h", data);
%tTime$display("%t", $time);
%0tTime (sin espacios)$display("%0t", $time);
%sCadena$display("%s", "Hello");

Reglas importantes

ReglaExplicación
$display imprime una vezÚtil para encabezados y resultados finales
$monitor imprime al cambiarÚtil para observar señales
Solo un $monitor activoEl último reemplaza al anterior
Usa $finish para detenerDe lo contrario, la simulación puede ejecutarse para siempre
challenge icon

Desafío

Add las instrucciones $display y $monitor que faltan a este testbench.

Qué hacer:

  1. Add $display para imprimir un encabezado: "Testing OR Gate"
  2. Add $monitor para imprimir time, x, y y z cada vez que cambie alguna señal. Formato: "Time %0t: x=%b, y=%b, z=%b"
  3. Add $display al final para imprimir "Test complete"

Pruébalo tú mismo

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 $display "Testing OR Gate"
    
    
    // TODO: Añade $monitor para rastrear el tiempo, x, y, z
    // Formato: "Time %0t: x=%b, y=%b, z=%b"
    
    
    // Aplicar estímulo
    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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Verilog online