Dumpfile y Dumpvars
Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 76 de 90.
Las formas de onda son la representación visual de los cambios de las señales a lo largo del tiempo. Una forma de onda muestra cómo cambian las señales (como clk, a, b, out) durante la simulación. El eje horizontal muestra el tiempo y el eje vertical muestra los valores de las señales (0, 1, X, Z).
$dumpfile y $dumpvars son tareas del sistema utilizadas para crear un archivo de formas de onda (archivo VCD) que puedes visualizar en un visor de formas de onda como GTKWave. VCD significa Value Change Dump. Es un archivo que registra todos los cambios de las señales durante la simulación. Puedes abrir este archivo en un visor de formas de onda para ver las señales visualmente.
$dumpfile
$dumpfile especifica el nombre del archivo de formas de onda que se creará.
Sintaxis:
$dumpfile("filename.vcd");Ejemplo:
$dumpfile("my_waveform.vcd");Esto crea un archivo llamado my_waveform.vcd.
$dumpvars
$dumpvars especifica qué señales registrar en el archivo de formas de onda.
Sintaxis:
$dumpvars(level, module_name);| Parámetro | Significado |
|---|---|
level | Cuántos niveles de jerarquía volcar (0 = todos los niveles) |
module_name | De qué módulo volcar las señales |
Nota: La jerarquía significa módulos dentro de otros módulos. Usar 0 vuelca todas las señales del módulo superior y de cada módulo que contiene, mientras que 1 vuelca solo las señales del módulo superior.
Uso común
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
end$dumpfile("dump.vcd")→ crea un archivo llamadodump.vcd$dumpvars(0, testbench)→ vuelca todas las señales del módulotestbenchy de todos los submódulos
Ejemplo con banco de pruebas
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
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
$display("Creating waveform file...");
x = 0; y = 0; #10;
x = 0; y = 1; #10;
x = 1; y = 0; #10;
x = 1; y = 1; #10;
$finish;
end
endmoduleEjemplos de niveles de Dumpvars
| Nivel | Qué se vuelca |
|---|---|
0 | Todas las señales del módulo y de todos los submódulos |
1 | Solo las señales del módulo especificado (no de los submódulos) |
Desafío
Añade las instrucciones $dumpfile y $dumpvars que faltan para crear un archivo de formas de onda.
Qué hacer:
- Añade
$dumpfilepara crear un archivo llamadowaveform.vcd - Añade
$dumpvarspara volcar todas las señales del módulotestbench
Pruébalo tú mismo
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmodule
module testbench;
reg a, b;
wire c;
and_gate dut (
.a(a),
.b(b),
.c(c)
);
initial begin
// TODO: Añade $dumpfile para crear "waveform.vcd"
// TODO: Añade $dumpvars para volcar todas las señales en testbench
// Pista: $dumpvars(0, testbench);
if ($test$plusargs("vcd")) begin
$display("VCD file created successfully");
end
$display("Simulation running...");
a = 0; b = 0; #10;
a = 0; b = 1; #10;
a = 1; b = 0; #10;
a = 1; b = 1; #10;
$display("Simulation complete. Open waveform.vcd");
$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 VerilogHardware frente a softwareTu primer móduloComentariosNiveles de abstracción del diseño4Operadores, parte 1
Operadores aritméticosOperador móduloOperadores de comparaciónRepaso: matemáticas simplesOperadores bit a bit7Asignaciones y compuertas
Asignación continuaAsignación con operadoresPrimitivas de compuertas integradasCompuertas AND, OR y NOTCompuertas XOR y XNORRepaso: 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 condicionalRepaso: desafío de operadores11Bucles
Bucle ForBucle WhileBucle de repeticiónBucle infinitoInstrucción DisableRepaso: patrones de bucles14Fundamentos de los testbench
¿Qué es un testbench?Creación de estímulosVisualización y monitorizaciónDumpfile y DumpvarsUso de tareas del sistemaRepaso: testbench completo3Sistema numérico
Representación binariaNúmeros con tamañoNúmeros sin tamañoNúmeros negativosValores especiales X y ZRepaso: formatos numéricos6Módulos
Estructura de módulosPuertos de entrada y salidaPuertos inoutInstanciación de módulosAsignación de puertos por nombreAsignación de puertos por ordenRepaso: construir un móduloPractica por tu cuenta: Compilador de Verilog online