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 zum Erstellen einer Wellenformdatei (VCD-Datei) verwendet werden, die du in einem Wellenform-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 Wellenform-Viewer öffnen, um die Signale visuell zu sehen.
$dumpfile
$dumpfile gibt den Namen der zu erstellenden Wellenformdatei 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);| Parameter | Bedeutung |
|---|---|
level | Wie viele Hierarchieebenen aufgezeichnet werden sollen (0 = alle Ebenen) |
module_name | Aus welchem Modul Signale aufgezeichnet 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 Datei mit dem Namendump.vcd$dumpvars(0, testbench)→ gibt alle Signale im Modultestbenchund in 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
endmoduleBeispiele für Dumpvars-Ebenen
| Ebene | Was wird aufgezeichnet? |
|---|---|
0 | Alle Signale im Modul und in allen Untermodulen |
1 | Nur Signale im angegebenen Modul (keine Untermodule) |
Aufgabe
Füge die fehlenden Anweisungen $dumpfile und $dumpvars hinzu, um eine Wellenformdatei zu erstellen.
Was zu tun ist:
- Füge
$dumpfilehinzu, um eine Datei namenswaveform.vcdzu erstellen - Füge
$dumpvarshinzu, um alle Signale im Modultestbenchzu speichern
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. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – einfache MathematikBitweise Operatoren7Zuweisungen und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-GrundelementeUND-, ODER- und NICHT-GatterXOR- und XNOR-GatterRückblick – Logikgatter-Schaltung10Entscheidungsfindung
If-AnweisungIf – ElseRückblick – Einfacher KomparatorCase-AnweisungCasex und CasezRückblick – ALU-Entwurf13Zeitsteuerung und Verzögerungen
Was sind Verzögerungen?GatterverzögerungenZuweisungsverzögerungenTimescale-DirektiveTakterzeugungZusammenfassung – Zeitsteuerung2Datentypen
Wire-TypReg-TypInteger und RealVektorenArraysParameterZusammenfassung – Signale deklarieren5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenSchiebeoperatorenVerkettungsoperatorBedingter OperatorRückblick – Operatoren-Herausforderung11Schleifen
For-SchleifeWhile-SchleifeWiederholungsschleifeEndlosschleifeAnweisung deaktivierenRückblick – Schleifenmuster14Grundlagen von Testbenches
Was ist ein TestbenchStimuli erzeugenDisplay und MonitorDumpfile und DumpvarsSystem Tasks verwendenZusammenfassung – vollständiger Testbench3Zahlensystem
Binäre DarstellungZahlen mit fester BreiteZahlen ohne feste BreiteNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturInput- und Output-PortsInout-PortsModulinstanziierungPortzuordnung nach NamenPortzuordnung nach ReihenfolgeRückblick – Ein Modul erstellenÜbe selbstständig: Online-Verilog-Compiler