Menu
Coddy logo textTech

Referenzmodelle und Bewertungen

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

Ein selbstprüfender Testbench berechnet das erwartete Verhalten unabhängig von der Ausgabe des Entwurfs. Ein Referenzmodell kann einfache arithmetische Berechnungen verwenden, selbst wenn die Implementierung eine andere Struktur nutzt. Ein Scoreboard zählt Beobachtungen und Abweichungen. Initialisiere seine Zähler einmal pro Szenario und vergleiche erst, nachdem sich die Ausgabe des Entwurfs stabilisiert hat.

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

expected = {1'b0,a} + {1'b0,b};
checked = checked + 1;
if(actual !== expected) errors = errors + 1;

Der erwartete Wert ergibt sich aus dem angegebenen Eingabeverhalten, nicht durch das Kopieren von actual.

Berechne erwartete Werte unabhängig voneinander, führe zu einem festgelegten Zeitpunkt eine Stichprobe durch und verfolge jedes überprüfte Ergebnis.

challenge icon

Aufgabe

Mittel

Implementiere eine Referenzprüfung für einen vorzeichenlosen Vier-Bit-Addierer. Berechne die vollständige mathematische Fünf-Bit-Summe von a+b und gib dann nur dann ok=1 zurück, wenn actual in einem Vierzustandsvergleich exakt diesem Ergebnis entspricht. Dieses Modul enthält eine simulationsbasierte task, die vom gesperrten Testbench aufgerufen wird. Ausgabespalten: ok.

Vervollständige design.v und bewahre die Modulnamen und Ports. Der gesperrte testbench.v liefert Eingabeänderungen und gibt die Ausgaben aus, nachdem sie sich stabilisiert haben. Er wählt ein Szenario mithilfe eines Simulatorarguments wie +CASE=1 aus; eine Standardeingabe ist nicht erforderlich. Belasse die Ausgabe und die Szenariosteuerung im gesperrten Testbench und implementiere nur den Körper der task. Die erwartete Ausgabe besteht aus einer Zeile dezimaler Werte pro Beobachtung, durch ein Leerzeichen getrennt und mit einem Zeilenumbruch abgeschlossen.

Probier es selbst

module dut;
    task check_sum;
        input [3:0] a,b;
        input [4:0] actual;
        output ok;
        reg [4:0] expected;
        begin
            // Vervollständige die Checker-Aufgabe.
            ok=0;
        end
    endtask
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