Menu
Coddy logo textTech

Wiederverwendbare Checker-Tasks

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

Eine Verilog-task fasst prozedurale Arbeit zusammen und kann Ergebnisse über output- oder inout-Argumente zurückgeben. Testbench-Tasks reduzieren doppelte Prüfungen. Im Gegensatz zu einer kombinatorischen function kann eine task bei Bedarf Zeitsteuerungen enthalten, aber diese Checker-Tasks führen nur zeitlose Vergleiche durch. Verwende automatische Tasks, wenn separate nebenläufige Aufrufe unabhängigen lokalen Speicher benötigen; die hier bereitgestellten Aufrufe erfolgen sequenziell.

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

task check_value;
    input [7:0] actual,expected;
    output ok;
    begin ok = (actual === expected); end
endtask

Der Aufrufer erhält das Prüfergebnis über ein explizites Ausgabeargument.

Definiere die Argumentrichtungen von task und setze die Ergebnisvariablen pro Aufruf zurück, bevor du Fehler sammelst.

challenge icon

Aufgabe

Mittel

Implementiere check_value, sodass ok den Wert eins hat, wenn actual und expected gemäß der Vierzustands-Gleichheit übereinstimmen, und andernfalls den Wert null. Dieses Modul enthält eine nur für die Simulation bestimmte task, die von der gesperrten Testbench aufgerufen wird. Ausgabespalten: ok.

Vervollständige design.v und bewahre die Modulnamen und Ports. Die gesperrte testbench.v liefert Eingangsänderungen und gibt die Ausgaben aus, nachdem sie sich stabilisiert haben. Sie wählt ein Szenario mithilfe eines Simulatorarguments wie +CASE=1; eine Standardeingabe ist nicht erforderlich. Belasse die Ausgabe und die Szenariosteuerung in der gesperrten Testbench; 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_value;
        input [7:0] actual,expected;
        output ok;
        begin
            // Vervollständige die Checker-Task.
            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