Display y 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 utilizadas para imprimir información de su simulación. Le ayudan a ver qué está sucediendo dentro de su 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");
endSalida:
Simulation started
Time 10
Time 20$monitor
$monitor imprime un mensaje automáticamente cada vez que cualquiera de sus variables cambia.
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;
endSalida:
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 se imprime | Una vez al ejecutarse | Cada vez que cambia una variable |
| Cuántas veces | Tantas veces como se llame | Continuamente (hasta que se cambie) |
| Uso para | Encabezados, mensajes de prueba | Seguimiento de señales cambiantes |
Especificadores de formato comunes
| Especificador | Significado | Ejemplo |
|---|---|---|
%b | Binario | $display("%b", a); |
%d | Decimal | $display("%d", count); |
%h | Hexadecimal | $display("%h", data); |
%t | Tiempo | $display("%t", $time); |
%0t | Tiempo (sin espacios) | $display("%0t", $time); |
%s | Cadena | $display("%s", "Hello"); |
Reglas importantes
| Regla | Explicación |
|---|---|
$display imprime una vez | Bueno para encabezados y resultados finales |
$monitor imprime al cambiar | Bueno para observar señales |
Solo un $monitor activo | El último anula al anterior |
Usa $finish para detener | De lo contrario, la simulación puede ejecutarse indefinidamente |
Desafío
Agrega las sentencias $display y $monitor que faltan en este banco de pruebas (testbench).
Qué hacer:
- Agrega
$displaypara imprimir un encabezado: "Testing OR Gate" - Agrega
$monitorpara imprimir el tiempo, x, y, y z cada vez que cambie cualquier señal. Formato: "Time %0t: x=%b, y=%b, z=%b" - Agrega
$displayal final para imprimir "Test complete"
Hoja de referencia
$display imprime una vez cuando se ejecuta; $monitor imprime automáticamente cada vez que cualquiera de sus variables cambia.
$display("message", variables);
$monitor("message", variables);Ejemplo:
initial begin
$display("Simulation started");
$monitor("Time %0t: a=%b, b=%b", $time, a, b);
#10 a = 1;
#10 b = 1;
endEspecificadores de formato comunes:
%b— Binario%d— Decimal%h— Hexadecimal%t/%0t— Tiempo (con/sin relleno)%s— Cadena
Reglas clave:
- Solo un
$monitorestá activo a la vez — el último anula a los anteriores. - Usa
$finishpara detener la simulación.
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: Agregar encabezado $display "Testing OR Gate"
// TODO: Agregar $monitor para rastrear 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: Agregar $display "Test complete"
$finish;
end
endmoduleEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1Introducción
¿Qué es Verilog?Hardware vs SoftwareNiveles de abstracción de diseñoTu primer móduloComentarios4Operadores Parte 1
Operadores aritméticosOperador de móduloOperadores de comparaciónRepaso - Matemáticas simplesOperadores bit a bit7Asignación y Compuertas
Asignación ContinuaAsignación con OperadoresPrimitivas de Compuertas IntegradasCompuertas AND OR NOTCompuertas XOR XNORResumen - Circuito de Compuertas Lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU5Operadores Parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalResumen - Desafío de operadores14Fundamentos de Testbench
¿Qué es un Testbench?Creación de estímulosDisplay y MonitorDumpfile y DumpvarsUso de tareas del sistemaResumen: Testbench completo3Sistema de numeración
Representación binariaNúmeros con tamaño definidoNúmeros sin tamaño definidoNúmeros negativosValores especiales X y ZResumen - Formatos de números6Módulos
Estructura del móduloPuertos de entrada y salidaPuertos InoutInstanciación de módulosMapeo de puertos por nombreMapeo de puertos por ordenResumen: Construye un módulo