Menu
Coddy logo textTech

Modèles de référence et scores

Fait partie de la section Conception et vérification RTL du Journey Verilog de Coddy. Leçon 28 sur 38.

Un banc de test doté d’une vérification automatique calcule le comportement attendu indépendamment de la sortie de la conception. Un modèle de référence peut utiliser une arithmétique simple même lorsque l’implémentation utilise une structure différente. Un scoreboard compte les observations et les divergences. Initialisez ses compteurs une seule fois par scénario et comparez uniquement après que la sortie de la conception s’est stabilisée.

Extrait pertinent : les déclarations et connexions environnantes sont fournies dans le défi.

expected = {1'b0,a} + {1'b0,b};
checked = checked + 1;
if(actual !== expected) errors = errors + 1;

La valeur attendue provient du comportement d’entrée spécifié, et non de la copie de actual.

Calculez les valeurs attendues indépendamment, effectuez l’échantillonnage à un moment défini et suivez chaque résultat vérifié.

challenge icon

Défi

Moyen

Implémentez une vérification de référence pour un additionneur non signé de quatre bits. Calculez la somme mathématique complète sur cinq bits de a+b, puis renvoyez ok=1 uniquement si actual correspond exactement à ce résultat lors d’une comparaison à quatre états. Ce module contient une task utilisable uniquement en simulation, appelée par le banc de test verrouillé. Colonnes de sortie : ok.

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. Conservez l’affichage et le contrôle du scénario dans le banc de test verrouillé ; implémentez uniquement le corps de la task. 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;
    task check_sum;
        input [3:0] a,b;
        input [4:0] actual;
        output ok;
        reg [4:0] expected;
        begin
            // Complétez la tâche du checker.
            ok=0;
        end
    endtask
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