Menu
Coddy logo textTech

Dumpfile und Dumpvars

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 76 von 90.

Waveforms sind die visuelle Darstellung von signal changes over time. Ein waveform zeigt, wie sich signals (wie clk, a, b, out) während der simulation verändern. Die horizontale Achse zeigt die Zeit, und die vertikale Achse zeigt die Signalwerte (0, 1, X, Z).
 

$dumpfile und $dumpvars sind Systemaufgaben, die verwendet werden, um eine waveform-Datei (VCD-Datei) zu erstellen, die Sie in einem Waveform-Viewer wie GTKWave anzeigen können. VCD steht für Value Change Dump. Es ist eine Datei, die alle Signaländerungen während der sim-ulation aufzeichnet. Sie können diese Datei in einem Waveform-Viewer öffnen, um signals visuell zu sehen.

$dumpfile

$dumpfile gibt den Namen der zu erstellenden Waveform-Datei an.

Syntax:

$dumpfile("filename.vcd");

Beispiel:

$dumpfile("my_waveform.vcd");

Dies erstellt eine Datei namens my_waveform.vcd.

$dumpvars

$dumpvars gibt an, welche signals in der waveform-Datei aufgezeichnet werden sollen.

Syntax:

$dumpvars(level, module_name);
ParameterBedeutung
levelWie viele Hierarchieebenen ausgegeben werden sollen (0 = alle Ebenen)
module_nameAus welchem Modul Signale ausgegeben werden sollen

Hinweis: Hierarchie bedeutet Module innerhalb anderer Module. Die Verwendung von 0 führt zum Dumpen aller Signale des Top-Moduls und jedes darin enthaltenen Moduls, während 1 nur Signale des Top-Moduls dumpt.

Häufige Verwendung

initial begin
  $dumpfile("dump.vcd");
  $dumpvars(0, testbench);
end
  • $dumpfile("dump.vcd") → erstellt eine Datei namens dump.vcd
  • $dumpvars(0, testbench) → gibt alle Signale im Modul testbench und allen Untermodulen aus

Beispiel mit Testbench

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

Dumpvars Level Examples

LevelWhat Gets Dumped
0All signals in the module and all sub-modules
1Only signals in the specified module (not sub-modules)
challenge icon

Aufgabe

Füge die fehlenden $dumpfile- und $dumpvars-Anweisungen hinzu, um eine Waveform-Datei zu erzeugen.

Was zu tun ist:

  1. Füge $dumpfile hinzu, um eine Datei namens waveform.vcd zu erstellen
  2. Füge $dumpvars hinzu, um alle Signale im Modul testbench zu dumpen

Probier es selbst

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: Füge $dumpfile hinzu, um "waveform.vcd" zu erstellen
    
    
    // TODO: Füge $dumpvars hinzu, um alle Signale in testbench zu dumpen
    // Hinweis: $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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen