Menu
Coddy logo textTech

Vierzustandsprüfungen

Teil des Abschnitts RTL-Design und Verifikation der Verilog-Journey von Coddy. Lektion 26 von 38.

Eine Testbench muss Unbekannte bewusst behandeln. Gewöhnliche Gleichheit kann X zurückgeben, wodurch ein Fehler in einer if-Bedingung verborgen werden kann. Fallgleichheit und Fallungleichheit, === und !==, vergleichen alle vier Werte wörtlich und geben einen bekannten booleschen Wert zurück. Ein Reduktions-XOR, gefolgt von einem case-Vergleich mit X, kann unbekannte Bits erkennen. Verwende dies als Simulationsprüfungen, nicht als Modell einer Hardware, die physische X-Werte erkennt.

Relevanter Ausschnitt; umgebende Deklarationen und Verbindungen werden in der Aufgabe bereitgestellt.

if(actual !== expected) errors = errors + 1;

Ein Unterschied, der X oder Z beinhaltet, wird gezählt, anstatt in einer unbekannten Bedingung zu verschwinden.

Verwende in Simulationsprüfern explizite Vergleiche mit vier Zuständen und lege fest, wie Unbekannte behandelt werden sollen.

challenge icon

Aufgabe

Mittel

Dies ist ein ausschließlich für die Simulation bestimmter Prüfer, keine synthetisierbare Datenpfadlogik. Setze mismatch, wenn sich actual und expected im Vierzustandsvergleich unterscheiden. Wenn beide an denselben Positionen dasselbe X oder Z enthalten, sind sie gleich. Das Ergebnis muss always ein bekannter Wert 0 oder 1 sein. Ausgabespalten: mismatch. Alle Stimuluswerte sind bekannte Binärwerte.

Vervollständige design.v und bewahre die Modulnamen und Ports. Das gesperrte testbench.v liefert Eingabeänderungen und gibt die Ausgaben aus, nachdem sie sich stabilisiert haben. Es wählt ein Szenario mithilfe eines Simulatorarguments wie +CASE=1 aus; eine Standardeingabe ist nicht erforderlich. Füge dem Design keine Ausgaben, Verzögerungen oder Simulationsbeendigung hinzu. Die erwartete Ausgabe besteht aus einer Zeile mit Dezimalwerten pro Beobachtung, durch ein Leerzeichen getrennt und mit einem Zeilenumbruch abgeschlossen.

Probier es selbst

module dut (input [3:0] actual, input [3:0] expected, output mismatch);
    // Ersetzen Sie diesen Platzhalter durch Ihr Design.
    assign mismatch = 0;
endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in RTL-Design und Verifikation

Übe selbstständig: Online-Verilog-Compiler