Zusammenfassung – vollständiger Testbench
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 78 von 90.
Aufgabe
Diese Herausforderung prüft alles, was du über Testbenches gelernt hast: Stimulus, Anzeige, Monitor, Dumpfile, Dumpvars und System-Tasks. Du erhältst ein XOR-Gattermodul zum Testen.
Was zu tun ist:
Erstelle eine vollständige Testbench, die:
- Signale deklariert (
regfür Eingänge,wirefür den Ausgang) - das XOR-Gatter mit dem Namen
dutinstanziiert - eine Waveform-Datei mit dem Namen
xor_waveform.vcderstellt - alle Signale in der Testbench aufzeichnet
- eine Kopfzeile ausgibt: "Testing XOR Gate"
$monitorverwendet, um time, x, y und z zu verfolgen- alle vier Eingangskombinationen (00, 01, 10, 11) mit einer Verzögerung von
#10zwischen den einzelnen Kombinationen testet - am Ende "Test complete" ausgibt
- die Simulation mit
$finishbeendet
Probier es selbst
module xor_gate (
input x,
input y,
output z
);
assign z = x ^ y;
endmodule
module testbench;
// TODO: Deklariere reg für x und y
// TODO: Deklariere wire für z
// TODO: Instanziiere xor_gate mit dem Namen dut
// Verbinde .x(x), .y(y), .z(z)
initial begin
// TODO: Füge $dumpfile "xor_waveform.vcd" hinzu
// TODO: Füge $dumpvars (0, testbench) hinzu
// TODO: Füge $display "Testing XOR Gate" hinzu
// TODO: Füge $monitor für time, x, y, z hinzu
// Format: "Time %0t: x=%b, y=%b, z=%b"
// TODO: Füge Stimulus für alle vier Kombinationen hinzu
// 00, 01, 10, 11 mit #10 Verzögerung
// TODO: Füge $display "Test complete" hinzu
// TODO: Füge $finish hinzu
end
endmoduleAlle 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