Menu
Coddy logo textTech

Verifiche a quattro stati

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

Un testbench deve gestire consapevolmente i valori sconosciuti. L'uguaglianza ordinaria può restituire X, nascondendo così un errore in una condizione if. L'uguaglianza e la disuguaglianza case, === e !==, confrontano letteralmente tutti e quattro i valori e restituiscono un valore booleano noto. Lo XOR di riduzione seguito da un confronto case con X può rilevare bit sconosciuti. Usali come controlli di simulazione, non come modello di hardware che rileva valori fisici X.

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

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

Una differenza che coinvolge X o Z viene conteggiata invece di scomparire in una condizione sconosciuta.

Usa confronti espliciti a quattro stati nei verificatori di simulazione e definisci come devono essere trattati i valori sconosciuti.

challenge icon

Sfida

Medio

Questo è un verificatore utilizzabile solo in simulazione, non una logica di datapath sintetizzabile. Imposta mismatch quando actual ed expected differiscono nel confronto a quattro stati. Se entrambi hanno la stessa X o Z nelle stesse posizioni, risultano uguali. Il risultato deve always essere uno 0 o 1 noto. Colonne di output: mismatch. Tutti i valori di stimolo sono valori binari noti.

Completa design.v e mantieni i nomi dei moduli e delle porte. Il testbench.v bloccato fornisce le modifiche degli ingressi e stampa le uscite dopo che si sono stabilizzate. Sceglie uno scenario usando un argomento del simulatore come +CASE=1; non è richiesto alcun input standard. Non aggiungere stampe, ritardi o terminazioni della simulazione al design. L'output previsto consiste in una riga di valori decimali per ogni osservazione, separati da uno spazio e terminati da un carattere di nuova riga.

Provalo tu

module dut (input [3:0] actual, input [3:0] expected, output mismatch);
    // Sostituisci questo segnaposto con il tuo progetto.
    assign mismatch = 0;
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