Menu
Coddy logo textTech

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.

challenge icon

Défi

Moyen

Il 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;
endmodule
quiz iconTestez-vous

Cette 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

Entraînez-vous par vous-même : Compilateur Verilog en ligne