Menu
Coddy logo textTech

Task di verifica riutilizzabili

Fa parte della sezione Progettazione e verifica RTL del percorso Verilog di Coddy. Lezione 27 di 38.

Un task di Verilog raggruppa il lavoro procedurale e può restituire risultati tramite argomenti di output o inout. I task del testbench riducono i controlli duplicati. A differenza di una function combinatoria, un task può includere controlli temporali quando opportuno, ma questi task di verifica eseguono solo confronti a tempo zero. Usa task automatici se chiamate concorrenti separate necessitano di memoria locale indipendente; le chiamate fornite qui sono sequenziali.

Estratto pertinente; le dichiarazioni e i collegamenti circostanti sono forniti nella sfida.

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

Il chiamante riceve il risultato del controllo tramite un argomento di output esplicito.

Definisci le direzioni degli argomenti di task e reimposta le variabili dei risultati per ogni chiamata prima di raccogliere gli errori.

challenge icon

Sfida

Medio

Implementa check_value in modo che ok sia uno quando actual ed expected corrispondono secondo l'uguaglianza a quattro stati e zero altrimenti. Questo modulo contiene un task esclusivamente per la simulazione, chiamato dal testbench bloccato. Colonne di output: ok.

Completa design.v e conserva i nomi dei moduli e le porte. Il testbench.v bloccato fornisce le modifiche agli input e stampa gli output dopo che si sono stabilizzati. Sceglie uno scenario usando un argomento del simulatore come +CASE=1; non è richiesto alcun input standard. Lascia la stampa e il controllo dello scenario nel testbench bloccato; implementa solo il corpo del task. L'output previsto è una riga di valori decimali per ogni osservazione, separati da uno spazio e terminata da un carattere di nuova riga.

Provalo tu

module dut;
    task check_value;
        input [7:0] actual,expected;
        output ok;
        begin
            // Completa il task checker.
            ok=0;
        end
    endtask
endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Progettazione e verifica RTL

Esercitati da solo: Compilatore Verilog online