• Aucun résultat trouvé

Vérification – Code coverage

N/A
N/A
Protected

Academic year: 2022

Partager "Vérification – Code coverage"

Copied!
7
0
0

Texte intégral

(1)

Vérification de systèmes intégrés - ENSEIRB _________________________________________

B. LE GAL

Vérification – Code coverage

L’environnement logiciel utilisé pour ce TP est ModelSim avec le langage de description matériel VHDL. L’objectif de ce TP est d’analyser l’intérêt d’outils de type code coverage.

Rappel : code coverage  analyse non statique (stimuli obligatoire)

Les différents fichiers .vhd utilisés se trouvent sur le le serveur WEB de l’école et plus particulièrement sur le site pédagogique de votre enseignant dans la partie « TP de Test ».

http://uuu.enseirb.fr/~legal/download/Electronique/Test_Verification/

Créez un répertoire sur votre compte et copiez les fichiers.

Partie 1 : prise en main, généralités

1) Créer un projet modelsim, compiler les fichiers compteur.vhd et bench_compteur.vhd (test- bench du compteur) et lancer la simulation (bench_compteur) pour vérifier le bon fonctionnement du compteur.

2) Maintenant, compilez les fichiers en mode coverage (instrumentation du code) : vcom -coverAll compteur.vhd bench_compteur.vhd

Remarque: il est possible de spécifier le mode coverage en cliquant du bouton droit sur les fichiers puis en sectionnant les cases adéquates dans l’onglet proprieties.

charger la simulation de l’entity bench_compteur : vsim –coverage bench_compteur

puis lancer la simulation : run –all

Note : il est bien entendu possible d’analyser pas à pas la simulation (run [-…])

Analyser les différents outils de code coverage disponibles sous ModelSim.

====================================

Différents types de code coverage sont possibles avec ModelSim.

(2)

L’outil renseigne directement le code source quant au nombre d’exécutions de chaque instruction (placer la souris sur l’instruction)

La fenêtre « missed coverage » renseigne spécifiquement sur les structures (statement, branch,

…) non exécutées. (cliquer sur la ligne affichée dans missed coverage pour avoir des informations (Details) sur la non-exécution de la structure en question)

(3)

Vérification de systèmes intégrés - ENSEIRB _________________________________________

La fenêtre « instance coverage » indique les différents taux de couverture.

Il est également possible d’avoir le détail des basculements des signaux (toggle coverage) : Ouvrir une fenêtre objects (view>objects)

Afficher (tools>toggle coverage>add>signals in design) (à faire avant de lancer la simulation)

3) Le fichier compteur précédent ne permet pas d’exploiter le « condition coverage ». Créer un nouveau projet, compiler les fichiers composent.vhd et sim_composent.vhd en mode coverage et lancer la simulation. Analyser les résultats du coverage. Observer les « missed conditions » entre autre. Modifier le testbench pour avoir les plus grands taux de couverture (100%) sans pour autant exécuter toutes les combinaisons des données d’entrée.

(4)

Vérification de systèmes intégrés - ENSEIRB _________________________________________

Partie 2 : la vérification, « c’est pas un problème !»

Le fichier C2.vhd correspond au schéma ci-dessous.

Vérifier le fonctionnement de C2 par une simulation en mode normal (sans code coverage) en complétant le fichier test-bench c2_sim.vhd.

Modifier C2.vhd si nécessaire pour que C2 fonctionne (soit simulable).

Peut-on garantir que C2 fonctionne bien avec les quelques stimulus utilisés ? Passer en mode coverage et observer entre autre les taux de couverture. Un taux de couverture de 100% signifie- t-il que tout à été vérifié ?

Partie 3 : la vérification, « c’est pas un problème » (bis)

Le fichier Operateur_3.vhd correspond à un multiplieur en format flottant IEEE-754 32 bits (A*B).

Pour ce rendre compte de la complexité de l’étape de vérification (peut-on vraiment dire que ce qui a été développé est fonctionnellement correct ?), on se propose d’analyser ce fichier.

On ne possède malheureusement pas de modèle de référence exécutable du multiplieur flottant mais seulement de quelques valeurs pour la vérification (voir dernière page de ce document) et des quelques informations ci-dessous concernant le format flottant.

Quelques erreurs ont été faites lors du codage (Operateur_3), (mais on suppose qu’on ne le sait pas).

On veut vérifier qu’Opérateur_3 est fonctionnellement correct. Créer un fichier de test_bench avec quelques stimuli pour cela. Vérifier les valeurs résultats et bien sur faire une analyse code coverage.

* +

B 8

16

T1

T4

T5

Cd

8

16

16

Clk

(5)

Vérification de systèmes intégrés - ENSEIRB _________________________________________

================================================

Quelques informations sur les flottants : Principe :

22

Format flottant IEEE 754 -1985

Représentation biais ée de l’exposant ( bias : 127)

23

Format flottant IEEE 754 -1985

Domaine de repr ésentation et valeurs particuli ères :

(6)

24

Format flottant IEEE 754 -1985

25

Format flottant IEEE 754 -1985

Calculs :

Exemple : multiplication Soient A = sa.2 ea-bias.ma

B = sb.2 eb-bias.mb P=A.B=sp.2 ep-bias.mp avec sp= sa xor sb

ep= ea+eb- bias mp= ma .mb

Toujours penser à : gérer les exceptions, si besoin : renormaliser la mantisse (+ intervenir sur l ’exposant), arrondir (+ renormaliser ?)

Voir documents compl émentaires sur le format flottant sur disque r éseau ogam\ !enssat \Elec\TP Enssat \FPU…

+ site internet sur le format flottant d ’Alain Guyot :

http://tima -cmp.imag.fr/~guyot/Cours/Oparithm/francais/Op_Ar2.htm

(7)

rification de systèmes ingrés - ENSEIRB _________________________________________ FlottantBinaireFlottantBinaireFlottantBinaire 1.0001111111000000000000000000000001.0001111111000000000000000000000001.000111111100000000000000000000000 1.11001111111000111000010100011110111.11001111111000111000010100011110111.232100111111100111011011010101110100 1.11111111001111111000111000111000111001001.11111111001111111000111000111000111001001.2345700111111100111100000011001010011 1.42001111111011010111000010100011111.35001111111010110011001100110011011.91700111111111101010110000001000001 1.25001111111010000000000000000000001.567001111111100100010010011011101011.9587500111111111110101011100001010010 1.5001111111100000000000000000000001.5001111111100000000000000000000002.2501000000000100000000000000000000 1.5001111111100000000000000000000001.987001111111111111001010110000001002.980501000000001111101100000010000011 6.250100000011001000000000000000000094.12501000010101111000100000000000000588.28101000100000100110001001000000000 1.000111111100000000000000000000000-1.010111111100000000000000000000000-1.010111111100000000000000000000000 -1.0101111111000000000000000000000001.000111111100000000000000000000000-1.010111111100000000000000000000000 -1.010111111100000000000000000000000-1.0101111111000000000000000000000001.000111111100000000000000000000000 6.23299110000001100011101110100101001114.12991100000010000100001010000010010025.741601000001110011011110111011011001 1.99101111111111111010111000010100102.13110000000000100001010001111011004.238701000000100001111010001101101111 7.131100000011100100001010001111011097.111111000010110000100011100011100010692.40201000100001011010001100110111101 Env. 000000000100000000000000000000000Env. 0000000010000000000000000000000000X0000000000000000000000000000000 Env. +Inf01111110000000000000000000000000Env. +Inf01111110000000000000000000000000+Inf01111111100000000000000000000000 0X000000000000000000000000000000011311000010111000100000000000000000000000000000000000000000000000000 113110000101110001000000000000000000X0000000000000000000000000000000000000000000000000000000000000000 +Inf011111111000000000000000000000000X0000000000000000000000000000000NaNX11111111XXXXXXXXXXXXXXXXXXXXXXX -Inf111111111000000000000000000000000X0000000000000000000000000000000NaNX11111111XXXXXXXXXXXXXXXXXXXXXXX 0X0000000000000000000000000000000+Inf01111111100000000000000000000000NaNX11111111XXXXXXXXXXXXXXXXXXXXXXX 0X0000000000000000000000000000000-Inf11111111100000000000000000000000NaNX11111111XXXXXXXXXXXXXXXXXXXXXXX NaNX11111111XXXXXXXXXXXXXXXXXXXXXXX?NaNX11111111XXXXXXXXXXXXXXXXXXXXXXX ?NaNX11111111XXXXXXXXXXXXXXXXXXXXXXXNaNX11111111XXXXXXXXXXXXXXXXXXXXXXX NaNX11111111XXXXXXXXXXXXXXXXXXXXXXXNaNX11111111XXXXXXXXXXXXXXXXXXXXXXXNaNX11111111XXXXXXXXXXXXXXXXXXXXXXX -Inf11111111100000000000000000000000-Inf11111111100000000000000000000000+Inf01111111100000000000000000000000 +Inf01111111100000000000000000000000-Inf11111111100000000000000000000000-Inf11111111100000000000000000000000 -Inf11111111100000000000000000000000+Inf01111111100000000000000000000000-Inf11111111100000000000000000000000 +Inf01111111100000000000000000000000?+Inf01111111100000000000000000000000 ?+Inf01111111100000000000000000000000+Inf01111111100000000000000000000000 -Inf11111111100000000000000000000000?-Inf11111111100000000000000000000000 ?-Inf11111111100000000000000000000000-Inf11111111100000000000000000000000

rification des exceptions sortantes. rification des exceptions entrantes.

rification du calcul de la mantisse sans considérer la retenue, l'arrondi, et la normalisation. rification de la Normalisation (sans l'arrondi). rification du calcul du signe rification de la gestion de l'arrondi.

Nombre ANombre BResultat (C=A*B) Remarques

Références

Documents relatifs

Pour le reste, si vous observez bien les figures 6a et 7 et la liste des compo- sants, vous n’aurez aucune difficulté de montage et cela vous prendra à peine un peu plus

Bien entendu vous pouvez modifier le répertoire dans lequel sont stockés les fichiers de statistiques et le répertoire dans lequel sont stockés les téléchargements, attention

Simuler le montage durant un temps suffisant afin de valider le bon fonctionnement des broches RESET et des étages de sorties.. Pour faire apparaître d'autres traces dans le

Au cours du quatrième semestre, nous devons réaliser un projet d'étude et réalisation, seul ou par binôme. Ayant un projet qui était propre à ma passion qui est le tir à l’arc,

Une flèche a été tirée L’évènement est compté Affichage... Détecteur de

• Variable : Objet algorithmique dont la valeur peut changer pendant l'exécution de l’algorithme.. Observons attentivement le formulaire de la page précédente et

En raison de son évidement existant dans l‘insert de mesure, le compteur d‘eau peut être équipé à tout moment par des modules de lecture à distance. Le rééquipement peut être

Il faut alors utiliser les tableaux de Karnaugh qui optimiseront les équations en utilisant au mieux les valeurs indifférentes (notées Φ )... Le schéma complet du compteur utilisera