INF3500 – Hiver 2017 Devoir #7 – Vérification de systèmes

publicité
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
Téléchargement