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
endtaskL’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.
Défi
MoyenImplé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
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