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.
Sfida
MedioQuesto è 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;
endmoduleQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Progettazione e verifica RTL
1RTL combinatorio affidabile
I valori predefiniti evitano i latchEncoder di prioritàConvalida one-hotDecodifica sicura dei caseRiepilogo - Router delle richieste2Larghezze e aritmetica con segno
Preservare i bit di riportoConfronti con segnoShift aritmetici a destraOverflow e saturazioneRiepilogo - Differenza con segno3RTL riutilizzabile
Funzioni combinatorieParametri sicuri rispetto alla larghezzaCicli generateGenerate condizionaleRiepilogo - Maschera di bit riutilizzabile6Testbench con verifica automatica
Verifiche a quattro statiTask di verifica riutilizzabiliModelli di riferimento e punteggiCopertura dei limiti e dei controlliRiepilogo - Verifica dell'addizionatoreEsercitati da solo: Compilatore Verilog online