Menu
Coddy logo textTech

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);
ParametroSignificato
levelQuanti livelli della gerarchia scaricare (0 = tutti i livelli)
module_nameDa 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 chiamato dump.vcd
  • $dumpvars(0, testbench) → scarica tutti i segnali nel modulo testbench e 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
endmodule

Esempi di livelli di dumpvars

LivelloCosa viene scaricato
0Tutti i segnali nel modulo e in tutti i sottomoduli
1Solo i segnali nel modulo specificato (non nei sottomoduli)
challenge icon

Sfida

Aggiungi le istruzioni $dumpfile e $dumpvars mancanti per creare un file di forma d’onda.

Cosa fare:

  1. Aggiungi $dumpfile per creare un file denominato waveform.vcd
  2. Aggiungi $dumpvars per registrare tutti i segnali nel modulo testbench

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
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