Menu
Coddy logo textTech

Dumpfile And 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 waveform-Datei (VCD-Datei) zu erstellen, die du in einem Waveform-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 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.

Syntax:

$dumpvars(level, module_name);
ParameterBedeutung
levelWie viele Hierarchieebenen gedumpt werden sollen (0 = alle Ebenen)
module_nameAus welchem Modul signals gedumpt 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 file namens dump.vcd
  • $dumpvars(0, testbench) → dumps all signals im module testbench und allen sub-modulen

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 wird gedumpt
0Alle signals im module und in allen sub-modules
1Nur signals im angegebenen module (nicht in sub-modules)
challenge icon

Aufgabe

Add die fehlenden $dumpfile- und $dumpvars-Anweisungen hinzu, um eine waveform-Datei zu create.

Was zu tun ist:

  1. Add $dumpfile, um eine file namens waveform.vcd zu create
  2. Add $dumpvars, um alle signals im testbench-module zu dump

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