Qu'est-ce que Banc de test (testbench) ?
Description destinée à la simulation qui applique des entrées au circuit à vérifier et contrôle l'exactitude des sorties. N'étant pas synthétisée, elle peut utiliser librement délais, instructions d'affichage, etc.
Nom japonais: テストベンチ
« Banc de test (testbench) » apparaît dans 5 questions d'entraînement réparties sur 1 thèmes, dont HDL et vérification.
Domaine: HDL et vérification
Ce que contient un banc de test
Un banc de test est un module HDL de plus haut niveau, généralement sans ports, qui instancie la conception à vérifier (DUT) et l'entoure de tout ce qu'il faut pour l'exercer. Il génère l'horloge, par exemple always #5 clk = ~clk; qui bascule toutes les 5 unités de temps et donne une période de 10 ns avec une unité de 1 ns, applique le reset, pilote les stimuli d'entrée et observe les sorties. Il peut aussi lire des vecteurs de test dans des fichiers, écrire des journaux et enregistrer des chronogrammes. Le DUT est la conception synthétisable ; le banc de test n'existe qu'en simulation.
Des chronogrammes aux tests autovérifiants
Pour un petit bloc, l'examen visuel des chronogrammes peut suffire, mais cela ne passe pas à l'échelle. Un banc de test autovérifiant calcule ou recherche le résultat attendu pour chaque entrée, souvent avec un modèle de référence, le compare automatiquement à la sortie du DUT et signale les écarts comme des erreurs. Des milliers de tests peuvent alors s'exécuter sans surveillance, par exemple la nuit en régression. Les projets plus importants s'appuient sur ce principe avec des stimuli aléatoires sous contraintes, des scoreboards et la collecte de couverture, et l'effort de vérification égale ou dépasse souvent celui de la conception.
Questions fréquentes
Un banc de test est-il synthétisable ?
Non. Un banc de test est écrit uniquement pour la simulation ; il utilise donc librement délais, instructions d'affichage, entrées-sorties fichier et autres constructions qui ne peuvent pas devenir du matériel.
Qu'est-ce que le DUT dans un banc de test ?
DUT signifie design under test (conception sous test), le module synthétisable que le banc de test instancie, pilote avec des stimuli et vérifie.
Quelle est la différence entre == et === dans un banc de test Verilog ?
L'opérateur == renvoie X si l'un des opérandes contient des bits X ou Z, comme un comparateur matériel. L'opérateur === compare littéralement X et Z et renvoie toujours 0 ou 1 ; les bancs de test l'utilisent donc pour détecter des sorties inconnues.