Menu
Coddy logo textTech

Dumpfile und Dumpvars

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

Wellenformen sind die visuelle Darstellung von Signaländerungen im Laufe der Zeit. Eine Wellenform zeigt, wie sich Signale (wie clk, a, b, out) während der Simulation ändern. Die horizontale Achse zeigt die Zeit, und die vertikale Achse zeigt die Signalwerte (0, 1, X, Z).
 

$dumpfile und $dumpvars sind Systemaufgaben, die zum Erstellen einer Wellenformdatei (VCD-Datei) verwendet werden, die du in einem Wellenform-Viewer wie GTKWave anzeigen kannst. VCD steht für Value Change Dump. Dabei handelt es sich um eine Datei, die während der Simulation alle Signaländerungen aufzeichnet. Du kannst diese Datei in einem Wellenform-Viewer öffnen, um die Signale visuell zu sehen.

$dumpfile

$dumpfile gibt den Namen der zu erstellenden Wellenformdatei an.

Syntax:

$dumpfile("filename.vcd");

Beispiel:

$dumpfile("my_waveform.vcd");

Dies erstellt eine Datei namens my_waveform.vcd.

$dumpvars

$dumpvars legt fest, welche Signale in der Waveform-Datei aufgezeichnet werden.

Syntax:

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

Hinweis: Hierarchie bedeutet Module innerhalb anderer Module. Mit 0 werden alle Signale des obersten Moduls und jedes darin enthaltenen Moduls ausgegeben, während 1 nur die Signale des obersten Moduls ausgibt.

Häufige Verwendung

initial begin
  $dumpfile("dump.vcd");
  $dumpvars(0, testbench);
end
  • $dumpfile("dump.vcd") → erstellt eine Datei mit dem Namen dump.vcd
  • $dumpvars(0, testbench) → gibt alle Signale im Modul testbench und in 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

Beispiele für Dumpvars-Ebenen

EbeneWas wird aufgezeichnet?
0Alle Signale im Modul und in allen Untermodulen
1Nur Signale im angegebenen Modul (keine Untermodule)
challenge icon

Aufgabe

Füge die fehlenden Anweisungen $dumpfile und $dumpvars hinzu, um eine Wellenformdatei zu erstellen.

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 speichern

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

Übe selbstständig: Online-Verilog-Compiler