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 verwendet werden, um eine Wellendatei (VCD-Datei) zu erstellen, die du in einem Wellenform-Viewer wie GTKWave ansehen 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 legt den Namen der zu erstellenden Wellenformdatei fest.
Syntax:
$dumpfile("filename.vcd");Beispiel:
$dumpfile("my_waveform.vcd");Dadurch wird eine Datei namens my_waveform.vcd erstellt.
$dumpvars
$dumpvars gibt an, welche Signale in der Wellenformdatei 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 die Signale ausgegeben werden sollen |
Hinweis: Hierarchie bedeutet Module innerhalb anderer Module. Mit 0 werden alle Signale des obersten Moduls und jedes darin enthaltenen Moduls gespeichert, während mit 1 nur Signale des obersten Moduls gespeichert werden.
Häufige Verwendung
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, testbench);
end$dumpfile("dump.vcd")→ erstellt eine Datei namensdump.vcd$dumpvars(0, testbench)→ zeichnet alle Signale im Modultestbenchund allen Untermodulen auf
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 ausgegeben wird |
|---|---|
0 | Alle Signale im Modul und in allen Untermodule |
1 | Nur Signale im angegebenen Modul (nicht in Untermodulen) |
Aufgabe
Füge die fehlenden Anweisungen $dumpfile und $dumpvars hinzu, um eine Wellenformdatei zu erstellen.
Aufgabe:
- Füge
$dumpfilehinzu, um eine Datei mit dem Namenwaveform.vcdzu erstellen. - Füge
$dumpvarshinzu, um alle Signale im Modultestbenchaufzuzeichnen.
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 aufzuzeichnen
// 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