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);| 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 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 namensdump.vcd$dumpvars(0, testbench)→ schreibt alle Signale im Modultestbenchund 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
endmoduleDumpvars-Level-Beispiele
| Level | Was ausgegeben wird |
|---|---|
0 | Alle Signale im Modul und allen Untermodulen |
1 | Nur Signale im angegebenen Modul (keine Untermodule) |
Aufgabe
Fügen Sie die fehlenden $dumpfile und $dumpvars Anweisungen hinzu, um eine Waveform-Datei zu erstellen.
Was zu tun ist:
- Fügen Sie
$dumpfilehinzu, um eine Datei namenswaveform.vcdzu erstellen - Fügen Sie
$dumpvarshinzu, um alle Signale imtestbenchModul 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 Untermodulen1— 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
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