Dumpfile e Dumpvars
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 76 di 90.
Le forme d'onda sono la rappresentazione visiva dei cambiamenti dei segnali nel tempo. Una forma d'onda mostra come cambiano i segnali (come clk, a, b, out) durante la simulazione. L'asse orizzontale mostra il tempo, mentre quello verticale mostra i valori dei segnali (0, 1, X, Z).
$dumpfile e $dumpvars sono task di sistema utilizzati per creare un file della forma d'onda (file VCD) che puoi visualizzare in un visualizzatore di forme d'onda come GTKWave. VCD sta per Value Change Dump. È un file che registra tutte le variazioni dei segnali durante la simulazione. Puoi aprire questo file in un visualizzatore di forme d'onda per vedere i segnali visivamente.
$dumpfile
$dumpfile specifica il nome del file della forma d’onda da creare.
Sintassi:
$dumpfile("filename.vcd");Esempio:
$dumpfile("my_waveform.vcd");Questo crea un file chiamato my_waveform.vcd.
$dumpvars
$dumpvars specifica quali segnali registrare nel file della forma d'onda.
Sintassi:
$dumpvars(level, module_name);| Parametro | Significato |
|---|---|
level | Quanti livelli della gerarchia scaricare (0 = tutti i livelli) |
module_name | Da quale modulo scaricare i segnali |
Nota: la gerarchia indica i moduli all'interno di altri moduli. Usando 0 vengono scaricati tutti i segnali del modulo principale e di ogni modulo al suo interno, mentre con 1 vengono scaricati solo i segnali del modulo principale.
Uso comune
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
end$dumpfile("dump.vcd")→ crea un file chiamatodump.vcd$dumpvars(0, testbench)→ scarica tutti i segnali nel modulotestbenche in tutti i sottomoduli
Esempio con banco di prova
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
endmoduleEsempi di livelli di dumpvars
| Livello | Cosa viene scaricato |
|---|---|
0 | Tutti i segnali nel modulo e in tutti i sottomoduli |
1 | Solo i segnali nel modulo specificato (non nei sottomoduli) |
Sfida
Aggiungi le istruzioni $dumpfile e $dumpvars mancanti per creare un file di forma d’onda.
Cosa fare:
- Aggiungi
$dumpfileper creare un file denominatowaveform.vcd - Aggiungi
$dumpvarsper registrare tutti i segnali nel modulotestbench
Provalo tu
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: Add $dumpfile to create "waveform.vcd"
// TODO: Add $dumpvars to dump all signals in testbench
// Hint: $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
endmoduleQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
1Introduzione
Cos'è VerilogHardware e software a confrontoIl tuo primo moduloCommentiLivelli di astrazione della progettazione4Operatori - Parte 1
Operatori aritmeticiOperatore moduloOperatori di confrontoRiepilogo - Matematica sempliceOperatori bitwise7Assegnazioni e porte
Assegnazione continuaAssegnazioni con operatoriPrimitive di porte integratePorte AND, OR e NOTPorte XOR e XNORRiepilogo: circuito con porte logiche10Decisioni
Istruzione ifIf-ElseRiepilogo - Comparatore sempliceIstruzione caseCasex e casezRiepilogo - Progettazione di una ALU5Operatori Parte 2
Operatori logiciOperatori di riduzioneOperatori di scorrimentoOperatore di concatenazioneOperatore condizionaleRiepilogo - Sfida sugli operatori14Fondamenti del testbench
Cos'è un testbenchCreazione degli stimoliVisualizzazione e monitoraggioDumpfile e DumpvarsUso dei task di sistemaRiepilogo - testbench completo3Sistema numerico
Rappresentazione binariaNumeri con dimensione specificataNumeri senza dimensione specificataNumeri negativiValori speciali X e ZRiepilogo - Formati numerici6Moduli
Struttura di un moduloPorte di input e outputPorte InoutIstanziazione di un moduloMappatura delle porte per nomeMappatura delle porte per ordineRiepilogo - Costruire un modulo9Blocchi procedurali
Blocco alwaysBlocco initialLista di sensibilitàAssegnazione bloccanteAssegnazione non bloccanteRiepilogo: always vs initial12Progetto Multiplexer
Progettazione di un mux da 2 a 1Progettazione di un mux da 4 a 1Esercitati da solo: Compilatore Verilog online