Académique Documents
Professionnel Documents
Culture Documents
Plan
annotation
des dlais
code HDL
schma
diagramme
dtats
gnration
de code
HDL
synthse
implmentation
contraintes
(temps et
espace)
Extraction statique des mtriques dimplmentation
(ressources, dlai, puissance)
gnration du
fichier de
configuration
puce
la comprhension de la spcification;
gnrer des vecteurs de test et les appliquer aux ports dentre du circuit;
[utile]: comparer les rponses du circuit aux rponses attendues, et indiquer toute
diffrence entre les deux par une condition derreur.
rponses attendues
observation
des rponses
gnration de
vecteurs de
test et de
rponses
attendues
fichier de
stimuli et
rponses
succs/chec
comparaison
aux rponses
attendues
vecteurs de test
circuit vrifier
rponses
fichier des
rsultats
banc dessai
pas de ports dentre
ni de sortie
library ieee;
use ieee.std_logic_1164.all;
le module vrifier
qui est add3bits
entity add3bitsTB is
end add3bitsTB;
architecture arch1 of add3bitsTB is
component add3bits -- dclaration du module vrifier
port (Cin, X, Y : in std_logic; Cout, S : out std_logic);
end component;
-- signaux
signal Cin
signal X :
signal Y :
signaux internes du
banc dessai
stimulation laide
de trois noncs
concurrents utilisant
la clause after
pendant 10ns
end arch2;
Conception et implmentation des systmes numriques
Vrification pseudo-alatoire
CLK
Q'
Z
CLK
Q'
Plan
les mthodes de test: comment le systme sera-t-il vrifi? quelles sont les
conditions de russite et dchec des cas de test?
Exemple de fonctionnalit
Par exemple, le plan de test peut comporter un tableau dans lequel on identifie
les fonctionnalits vrifier ainsi que leur priorit, assigner une personne
responsable et suivre leur statut dans le temps: en dveloppement, dbute,
crite, applique, rvise, etc.
Fonctionnalit
Priorit
Responsable
Statut de la tche
1. Rinitialisation
Mehdi
Assigne
Mehdi
crite
3. Lire de la pile
Asma
crite
Alexis
En dv.
5. Pile pleine
a.
Fonctionnement du signal full
b.
criture impossible
Alexis
En dv.
6. Pile vide
a.
Fonctionnement du signal empty
b.
Lecture impossible
Armand
Assigne
Armand
Assigne
Plan
Le terme test de bote noire fait rfrence un test qui ne suppose aucune
connaissance de limplmentation du systme.
En anglais: black box, opaque box, closed box, functional test.
Les tests de bote noire sappuient uniquement sur les spcifications du systme.
Plus le systme est complexe, et plus il faut utiliser ce genre de test.
Il est difficile de dterminer quel point le systme a t vrifi par ce genre de
test.
Les tests de bote noire ne permettent pas en gnral de dcouvrir des
comportements non spcifis du systme.
Pour un test fort, on devrait choisir au moins un vecteur de test pour chacune des
combinaisons de classes. Par exemple, l'ensemble de vecteurs de test devrait inclure le cas
du mois de 31 jours avec les quatre classes de jour et les trois classes dannes.
Couverture de code
(test de bote blanche)
Plan
En VHDL et dans les autres HDL, une analyse statique peut dtecter des erreurs
potentielles et augmenter la qualit du code. Ces erreurs potentielles peuvent
se situer plusieurs niveaux, et la liste suivante donne quelques exemples:
noncs conditionnels dont tous les cas ne sont pas couverts et qui crent
des tats implicites;
Units (p. ex. une UAL): choisir des vecteurs de test partir des
spcifications, bonne bonne visibilit de linterface entre les modules,
vrification des interactions entre les modules {gnie logiciel: test
dintgration}
Exemple:
assert (estPremier(k) = (F = '1'))
report "erreur pour l'entre " & integer'image(k) severity error;
assert k < kmax
report "simulation termine" severity failure;
Suspend la simulation
Banc dessai
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use std.textio.all;
use ieee.std_logic_textio.all; -- pour l'affichage sur console
entity detecteurPremierTB is
end detecteurPremierTB;
Banc dessai
process
variable tampon : line;
-- pointeur vers un objet de type string
variable n : integer;
variable c : character;
begin
while not endfile(vecteurs) loop
readline(vecteurs, tampon);
if tampon(1 to 2) /= "--" then -- passer les lignes de commentaires
read(tampon, n); -- lecture de l'entier
read(tampon, c); -- lecture du sparateur
read(tampon, c); -- lecture de l'indication: premier ('P') ou non ('N')
I <= to_unsigned(n, 6);
wait for 10 ns;
assert ((c = 'P') = (F = '1') and (c = 'N') = (F = '0'))
report "erreur pour l'entre " & integer'image(n) severity error;
end if;
end loop;
deallocate(tampon); -- relcher la mmoire du tampon
report "simulation termine" severity failure;
end process;
end arch2;
Banc dessai
process
variable tampon : line; -- pointeur vers objet de type string
variable tampon2 : line;
begin
-- La procdure writeline libre le pointeur quand elle a fini,
-- donc il faut construire une copie de l'objet si on veut l'afficher 2 fois.
-- partir d'un pointeur, on va chercher le contenu avec '.all'.
write(tampon, string'(" ** sortie de simulation, detecteurPremierTB.vhd ** "));
write(tampon2, tampon.all); -- copier la chane de caractres
writeline(resultats, tampon); -- criture dans le fichier
writeline(output, tampon2); -- criture la console
for k in 0 to 63 loop -- application exhaustive des vecteurs de test
I <= to_unsigned(k, 6);
wait for 10 ns;
write(tampon, string'("temps: ")); write(tampon, now, unit => ns);
write(tampon, string'(", entier: ") & integer'image(k));
write(tampon, string'(", sortie: ") & std_logic'image(F));
write(tampon2, tampon.all); -- copie la chane de caractres
writeline(resultats, tampon); -- criture dans le fichier
writeline(output, tampon2); -- criture la console
end loop;
report "simulation termine" severity failure;
end process;
Conception et implmentation des systmes numriques