Vérifications à quatre états
Fait partie de la section Conception et vérification RTL du Journey Verilog de Coddy. Leçon 26 sur 38.
Un banc de test doit traiter les valeurs inconnues délibérément. Une égalité ordinaire peut renvoyer X, ce qui peut masquer un échec dans une condition if. L’égalité et l’inégalité de cas, === et !==, comparent littéralement les quatre valeurs et renvoient un booléen connu. Un XOR de réduction suivi d’une comparaison case avec X peut détecter les bits inconnus. Utilisez-les comme vérifications de simulation, et non comme un modèle matériel qui détecte des valeurs physiques X.
Extrait pertinent : les déclarations et connexions environnantes sont fournies dans le défi.
if(actual !== expected) errors = errors + 1;Une différence impliquant X ou Z est comptabilisée au lieu de disparaître dans une condition inconnue.
Utilisez des comparaisons explicites à quatre états dans les vérificateurs de simulation et définissez la manière dont les valeurs inconnues doivent être traitées.
Défi
MoyenIl s’agit d’un vérificateur destiné uniquement à la simulation, et non d’une logique de chemin de données synthétisable. Définissez mismatch lorsque actual et expected diffèrent selon une comparaison à quatre états. S’ils contiennent tous deux le même X ou Z aux mêmes positions, ils sont considérés comme égaux. Le résultat doit always être un 0 ou un 1 connu. Colonnes de sortie : mismatch. Toutes les valeurs de stimulation sont des valeurs binaires connues.
Complétez design.v et préservez les noms de ses modules et de ses ports. Le testbench.v verrouillé fournit les changements d’entrée et affiche les sorties une fois stabilisées. Il choisit un scénario à l’aide d’un argument du simulateur tel que +CASE=1 ; aucune entrée standard n’est requise. N’ajoutez ni affichage, ni délais, ni terminaison de simulation au design. La sortie attendue est une ligne de valeurs décimales par observation, séparées par un espace et se terminant par un saut de ligne.
Essayez vous-même
module dut (input [3:0] actual, input [3:0] expected, output mismatch);
// Remplacez ce placeholder par votre design.
assign mismatch = 0;
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Conception et vérification RTL
1RTL combinatoire fiable
Les valeurs par défaut évitent les latchsEncodeurs de prioritéValidation one-hotDécodage sûr avec caseRécapitulatif - Routeur de requêtes2Largeurs et arithmétique signée
Préserver les bits de retenueComparaisons signéesDécalages arithmétiques vers la droiteDépassement et saturationRécapitulatif – différence signée3RTL réutilisable
Fonctions combinatoiresParamètres à largeur sûreBoucles generateGenerate conditionnelRécapitulatif - Masque de bits réutilisable6Bancs de test auto-vérifiants
Vérifications à quatre étatsTâches de vérification réutilisablesModèles de référence et scoresCouverture des limites et du contrôleRécapitulatif - Audit de l’additionneurEntraînez-vous par vous-même : Compilateur Verilog en ligne