Menu
CoddyTech

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 verwendet werden, um eine Wellendatei (VCD-Datei) zu erstellen, die du in einem Wellenform-Viewer wie GTKWave ansehen 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 legt den Namen der zu erstellenden Wellenformdatei fest.

Syntax:

$dumpfile("filename.vcd");

Beispiel:

$dumpfile("my_waveform.vcd");

Dadurch wird eine Datei namens my_waveform.vcd erstellt.

$dumpvars

$dumpvars gibt an, welche Signale in der Wellenformdatei aufgezeichnet werden sollen.

Syntax:

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

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

Häufige Verwendung

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

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 ausgegeben wird
0Alle Signale im Modul und in allen Untermodule
1Nur Signale im angegebenen Modul (nicht in Untermodulen)
challenge icon

Aufgabe

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

Aufgabe:

  1. Füge $dumpfile hinzu, um eine Datei mit dem Namen waveform.vcd zu erstellen.
  2. Füge $dumpvars hinzu, um alle Signale im Modul testbench aufzuzeichnen.

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