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);| Parameter | Bedeutung |
|---|---|
level | Wie viele Hierarchieebenen ausgegeben werden sollen (0 = alle Ebenen) |
module_name | Aus 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 namensdump.vcd$dumpvars(0, testbench)→ gibt alle Signale im Modultestbenchund 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
endmoduleDumpvars Level Examples
| Level | What Gets Dumped |
|---|---|
0 | All signals in the module and all sub-modules |
1 | Only signals in the specified module (not sub-modules) |
Aufgabe
Füge die fehlenden $dumpfile- und $dumpvars-Anweisungen hinzu, um eine Waveform-Datei zu erzeugen.
Was zu tun ist:
- Füge
$dumpfilehinzu, um eine Datei namenswaveform.vcdzu erstellen - Füge
$dumpvarshinzu, um alle Signale im Modultestbenchzu 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
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareAbstraktionsebenen im DesignDein erstes ModulKommentare4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – Einfache MathematikBitweise Operatoren7Zuweisung und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-PrimitiveAND OR NOT GatterXOR XNOR GatterZusammenfassung - Logikgatterschaltung10Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher KomparatorCase-AnweisungCasex und CasezWiederholung - ALU-Design5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenShift-OperatorenVerkettungsoperatorBedingter OperatorZusammenfassung – Operator-Challenge11Schleifen
For-SchleifeWhile-SchleifeRepeat-SchleifeEndlosschleifeDisable-AnweisungRückblick – Schleifenmuster14Testbench-Grundlagen
Was ist eine TestbenchErstellen von StimuliDisplay und MonitorDumpfile und DumpvarsSystem-Tasks verwendenZusammenfassung – Vollständige Testbench3Zahlensystem
Binäre DarstellungZahlen mit GrößenangabeZahlen ohne GrößenangabeNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturEingangs- und Ausgangs-PortsInout-PortsModul-InstanziierungPort-Mapping nach NamePort-Mapping nach ReihenfolgeZusammenfassung – Ein Modul erstellen