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 über die Zeit. Eine Wellenform zeigt an, wie sich Signale (wie clk, a, b, out) während der Simulation ändern. Die horizontale Achse zeigt Zeit, und die vertikale Achse zeigt Signalwerte (0, 1, X, Z).
 

$dumpfile und $dumpvars sind System-Tasks, die verwendet werden, um eine Waveform-Datei (VCD-Datei) zu erstellen, die Sie in einem Waveform-Viewer wie GTKWave betrachten können. VCD steht für Value Change Dump. Es ist eine Datei, die alle Signaländerungen während der Simulation aufzeichnet. Sie können diese Datei in einem Waveform-Viewer öffnen, um Signale 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 legt fest, welche Signale 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 gibt alle Signale des Top-Moduls und jedes darin enthaltenen Moduls aus, während 1 nur Signale des Top-Moduls ausgibt.

Häufige Verwendung

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

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

LevelWas ausgegeben wird
0Alle Signale im Modul und allen Untermodulen
1Nur Signale im angegebenen Modul (keine Untermodule)
challenge icon

Aufgabe

Fügen Sie die fehlenden $dumpfile und $dumpvars Anweisungen hinzu, um eine Waveform-Datei zu erstellen.

Was zu tun ist:

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

Spickzettel

Verwenden Sie $dumpfile und $dumpvars innerhalb eines initial-Blocks, um eine VCD (Value Change Dump)-Wellendatei zur Anzeige in Tools wie GTKWave zu erzeugen:

initial begin
  $dumpfile("dump.vcd");   // erstellt die VCD-Datei
  $dumpvars(0, testbench); // gibt alle Signale in der Testbench und den Untermodulen aus
end

$dumpvars(level, module_name) Ebenen:

  • 0 — alle Signale im Modul und allen Untermodulen
  • 1 — nur Signale im angegebenen Modul (keine Untermodule)

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: $dumpfile hinzufügen, um "waveform.vcd" zu erstellen
    
    
    // TODO: $dumpvars hinzufügen, um alle Signale in der Testbench auszugeben
    // 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