Menu
Coddy logo textTech

Tâches de vérification réutilisables

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

Une task Verilog regroupe un travail procédural et peut renvoyer des résultats par l’intermédiaire d’arguments output ou inout. Les tâches du banc de test réduisent la duplication des vérifications. Contrairement à une function combinatoire, une task peut inclure des contrôles temporels lorsque cela est approprié, mais ces tâches de vérification effectuent uniquement des comparaisons sans durée. Utilisez des tâches automatiques si des appels concurrents distincts doivent disposer d’un stockage local indépendant : les appels fournis ici sont séquentiels.

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

task check_value;
    input [7:0] actual,expected;
    output ok;
    begin ok = (actual === expected); end
endtask

L’appelant reçoit le résultat de la vérification par l’intermédiaire d’un argument de sortie explicite.

Définissez les directions des arguments de task et réinitialisez les variables de résultat à chaque appel avant de collecter les échecs.

challenge icon

Défi

Moyen

Implémentez check_value afin que ok vaille un lorsque actual et expected correspondent selon l’égalité à quatre états, et zéro dans le cas contraire. Ce module contient une task réservée à la 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 celles-ci 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_value;
        input [7:0] actual,expected;
        output ok;
        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