INF3500 – Hiver 2017 Devoir #7 – Vérification de systèmes numériques 0701 Principes généraux 1. Énumérez et décrivez les cinq qualités d’un bon ensemble de vecteurs de test. 0702 Tests exhaustifs 2. Considérez la déclaration d’entité en VHDL suivante pour une unité arithmétique d’un microprocesseur. Combien de vecteurs de test seraient nécessaires pour effectuer un test exhaustif de cette unité? Combien de temps serait nécessaire pour effectuer ce test à raison de 106 tests par seconde? Montrez tous vos calculs. entity unitearithmetique is generic ( W : positive := 32 -- largeur des opérandes ); port ( A, B : in signed(W - 1 downto 0); -- les opérandes choix : in std_logic_vector(7 downto 0); -- le sélecteur d'opération F : out signed(W - 1 downto 0) -- le résultat ); end unitearithmetique; 0703 Tests de boîte noire 3. Vous êtes responsable de la vérification d’un système de contrôle de la vitesse de l’autopilote d’une voiture autonome. Le système a quatre entrées : la limite de vitesse (50, 70, 90 ou 100 km/h), la période de la journée (jour ou nuit), la visibilité (au mètre près), et l’état de la chaussée (sèche, mouillée ou enneigée). La sortie du système est la vitesse désirée. La vitesse désirée doit être la plus grande possible sans dépasser la limite de vitesse. Quand la visibilité est inférieure à 10 m, la voiture doit s’arrêter. Quand la visibilité est entre 10 m et 100 m, la vitesse désirée doit être réduite de moitié. Pour une visibilité supérieure à 100 m, il n’y a pas de contrainte. La nuit, la vitesse désirée maximale doit être réduite de 10%. Quand la chaussée est mouillée ou enneigée, la vitesse désirée doit être réduite de 15%. Par exemple, dans une zone de 90 km/h, la nuit, chaussée mouillée, visibilité de 37 m, la vitesse doit être : 90 × 0.5 × 0.9 × 0.85 = 34.4 km/h. i. Proposez un partitionnement en classes pour chacune des quatre entrées. ii. Donnez un ensemble de vecteurs de tests pour un test faible selon votre partitionnement proposé. iii. Combien de vecteurs de tests sont nécessaires pour effectuer un test fort ? Montrez vos calculs. Polytechnique Montréal page 1/3 Département de génie informatique et génie logiciel INF 3500 : Conception et réalisation de systèmes numériques 0704 Tests de boîte blanche 4. Considérez le code VHDL suivant pour une machine à états qui implémente un contrôleur simple avec une entrée et une sortie. Donnez un ensemble de vecteurs de tests permettant d’atteindre une couverture de code de 100% des énoncés. La séquence devrait être la plus courte possible. library IEEE; use IEEE.std_logic_1164.all; entity machineAEtats2 is port ( reset, CLK : in STD_LOGIC; dat : in STD_LOGIC; sortie : out STD_LOGIC ); end machineAEtats2; architecture arch of machineAEtats2 is type type_etat is (S1, S2, S3); signal etat : type_etat := S1; begin process(etat) begin case etat is when S1 | S2 => sortie <= '0'; when S3 => sortie <= '1'; end case; end process; process(CLK, reset) is begin if (reset = '0') then etat <= S1; elsif (rising_edge(CLK)) then case etat is when S1 => if dat = '0' then etat <= S2; else etat <= S3; end if; when S2 => if dat = '0' then etat <= S3; else etat <= S1; end if; when S3 => etat <= S1; end case; end if; end process; end arch; Polytechnique Montréal page 2/3 Département de génie informatique et génie logiciel INF 3500 : Conception et réalisation de systèmes numériques Solutions 1. Réponse : Efficace pour découvrir des bogues, c’est-à-dire que chaque vecteur de test vérifie plusieurs fonctionnalités en même temps, et donc que peu de vecteurs de tests sont nécessaires. Identifie la source des bogues, pour aider à leur éradication. Reproductible, donc il est facile de recréer le bogue. Automatisé à l’aide d’un banc d’essai. Exécutable dans un temps raisonnable, où ‘temps raisonnable’ dépend de la taille et de la complexité du circuit et de l’ampleur du projet. 2. Réponse Pour W = 32, il y a 2 × 32 + 8 = 72 ports d’entrée. Il faudrait donc 272 = 4.7 × 1021 vecteurs de test. À raison de 106 tests par seconde, il faudrait environ 4.7 × 1015 secondes, soit 150 × 1012 ans. 3. Réponses i limite de vitesse, 4 classes : {50}, {70}, {90}, {100} période de la journée, 2 classes {jour}, {nuit} visibilité, 3 classes : {[0, 10[}, {[10, 100]}, {]100, ∝[} chaussée, 2 classes : {sèche}, {mouillée, enneigée} ii. Il y a plusieurs réponses possibles. Il faut quatre vecteurs de test au minimum. Chaque classe doit être représentée par un élément, au moins une fois dans l’ensemble. {50, jour, 5, sèche}, {70, nuit, 15, mouillée}, {90, jour, 125, sèche}, {100, nuit, 7, enneigée} iii. On fait le produit du nombre de classes pour chaque entrée, donc 4 × 2 × 3 × 2 = 48 vecteurs de test. 4. Solution Il y a plusieurs réponses possibles. À partir d’un reset, la séquence suivante appliquée à l’entrée dat, une entrée par coup d’horloge, permet de couvrir tous les énoncés. ('0', '0', '-', '0', '-', '-', '-') Polytechnique Montréal page 3/3 Département de génie informatique et génie logiciel