• Aucun résultat trouvé

Preuve par induction sur les intervalles de temps:

ESP1 est calcule sous l'application de l'etat initial qui est s^ur d'^etre correct. ESP1 contient les etats qui peuvent ^etre atteints en remplacant un seul composant au plus. Il existe deux possibilites:

1. L'erreur n'a ecte pas les lignes d'etats suivants, et dans ce cas l'etat suivant correct est celui obtenu sans remplacer aucun composant.

2. L'erreur a ecte les lignes d'etats suivants, et donc l'etat suivant correct sera obtenu en remplacant l'un des composants, a savoir le composant errone.

Supposons que l'etat correct existe dans ESPi,1; le m^eme raisonnement conclut que ESPi contient l'etat correct.

4.4 L'algorithme de diagnostic sequentiel

Le diagnostic commence par appliquer une sequence de test qui detecte l'er-reur. Cette sequence peut ^etre le contre-exemple genere par un veri cateur ou par n'importe quel autre moyen.

Sous l'application d'un vecteur de test V T et avec un etat courant E, l'algo-rithme e ectue deux fonctions principales:

1. Simuler l'implementation et la speci cation, comparer les valeurs de leurs sorties et appliquer les algorithmes de diagnostic combinatoire pour cor-riger les valeurs des sorties erronees ou garder les valeurs correctes des sorties correctes. Cette etape permet de diminuer l'espace de recherche

EDR-Restreint(E)et les ensemblesEnsemble-P-Restreint(C,E) de ses com-posants.

2. Trouver les etats suivants possibles atteignables de E et calculer pour cha-cun de ces etats l'espace de recherche restreint et lesEnsemble-P-Restreint. Avant d'appliquer l'algorithme de diagnostic, l'Espace-de-Recherche contient tous les composants du circuit et l'Ensemble-P(C) de chacun de ses composants, C, contient tous les types de composant qui sont dans la m^eme classe de rempla-cement,Classe-R, que le type de C.

Si la premiere sequence de test contient k vecteurs, alors apres l'analyse du circuit dans l'intervalle de tempsk un nouvel Espace-de-Recherche est calcule et un nouvel Ensemble-P(C) est calcule pour chacun de ses composants:

Espace-de-Recherche=S

E2ESPk ,1 EDR-Restreint(E) Ensemble-P(C) =S

E2ESPk ,1 Ensemble-P-Restreint(C,E)

Si l'Espace-de-Recherchecontient plusieurs composants ou un composant ayant plusieurs elements dans son Ensemble-P, des sequences de test supplementaires sont exigees. Un composantC est selectionne dans l'Espace-de-Recherche, un type T est selectionne dans son Ensemble-P, et une sequence de test capable de de-tecter le remplacement de C par un autre composant de type T est generee. La speci cation et l'implementation sont ensuite simulees sous l'application de cette sequence, et les valeurs des sorties primaires sont comparees. Si l'erreur n'est pas detectee, alors T n'est pas le type correct de C parce que la sequence de test utilisee est capable de detecter le remplacement de C par un autre composant de type T. T est donc enleve de l'Ensemble-P(C). Si l'erreur est detectee, nous ne pouvons rien decider en ce qui concerne le typeT. Dans les deux cas, l'algorithme de diagnostic est ensuite execute exactement comme dans la premiere sequence de test.

La m^emeprocedure est repetee jusqu'a ce qu'il ne reste aucun composant dans l'espace de recherche, ce qui signi e que l'erreur n'est pas due au remplacement de composants, ou jusqu'a ce que des sequences de test soient generes pour tous les composants restants.

Nous donnons ici le pseudo-code de notre algorithme de diagnostic que nous appelonsdiagnostic-composant-sequentiel. Cet algorithme prend comme entree la sequence de test S fournie par le veri cateur comme contre-exemple.

algorithmdiagnostic-composant-sequentiel(S);

begin

Teste ;

Espace-de-Recherche tous les composants dansIMPL;

EDR-Restreint(Etat initial) Espace-de-Recherche;

fortout composant C 2Espace-de-Recherchedo

T = type(C);

Ensemble-P(C)=fT1 j(T1

2classe de remplacement de T)^(T 6= T1)g;

endfor;

Etats:=fEtat initialg;

diagnostiquer sequentiel(S,Etats);

while(jEspace-de-Recherchej> 1)and(Espace-de-Recherche 6Teste)do

Soit Ce un composant dansEspace-de-Recherchea la plus grande sortance, et Ce2=Teste Teste Teste[fCeg;

fortout T 2Ensemble-P(Ce)do

generer une sequence detectant le remplacement de Ce par un autre composant de type T, Sd;

SimulerSPECetIMPLsous l'application de Sd;

if8i;1im;yi= wi then;

Ensemble-P(Ce) = Ensemble-P(Ce),T;

endif;

EDR-Restreint(Etat initial):=Espace-de-Recherche;

fortout composant C 2EDR-Restreint(Etat initial)do Ensemble-P-Restreint(C,Etat initial)=Ensemble-P(C);

endfor;

Etats:=fEtat initialg;

diagnostiquer sequentiel(Sd,Etats)

endfor endwhile

% Ici l'Espace-de-Recherchecontient un ou plusieurs composants, parmi lesquels se trouve % le composant errone.

fortout composant C 2Espace-de-Recherchedo print(C,Ensemble-P(C));

endfor end.

procedurediagnostic-sequentiel(Sequence,Etats);

begin

longueur:= Nombre de vecteurs de test dansSequence; Simuler SPEC sous l'application deSequence;

fori := 1tolongueurdo

Wi:= Valeurs des sorties de SPEC dans l'intervalle de temps i;

endfor;

fori := 1tolongueurdo fortout E2Etatsdo

Espace:=EDR-Restreint(E);

Tableau:= Tableau d'Ensemble-P-Restreint(C,E),8C 2Espace; Appliquer V Ti sur les entrees primaires d'IMPL;

Appliquer E sur les lignes d'etat courant d'IMPL; Simuler IMPL;

Yi:= Valeurs des sorties d'IMPL;

diagnostic-combinatoire(VTi,Espace,Tableau,Yi,Wi); Calculer les etats suivants possibles: esp(E;V Ti);

Calculer pour chaque composant C, l'Ensemble-P-Restreint(C;Ep),

8Ep 2esp(E;V Ti); CalculerEDR-Restreint(Ep),8Ep2esp(E;V Ti);

endfor;

Calculer ESPi; % de nition 4.8

Calculer pour chaque composant C, l'Ensemble-P-Restreint(C;Ep),

8Ep2ESPi; % de nition 4.8 CalculerEDR-Restreint(Ep),8Ep2ESPi; % de nition 4.8

Etats:= ESPi;

endfor;

Espace-de-Recherche=S

E2ESPlong ueur EDR-Restreint(E);

fortout composant C 2Espace-de-Recherchedo Ensemble-P(C)=S

E2ESPlong ueur Ensemble-P-Restreint(C,E) endfor;

end.

Exemple 4.4

:

Supposons que dans le circuit de l'exemple 4.2, le composant C7 soit errone et qu'il faille le remplacer par un autre composant de type NAND. Une sequence de test qui detecte l'erreur est (x0;x1;x2;x3) = ((0;0;1;1);(1;0;0;1)). En com-mencant par l'etat initial (Y 0;Y 1;Y 2) = (0,0,0), et sous l'application de cette sequence de test, l'erreur est detectee dans le deuxieme intervalle de temps. Apres la simulation dans le premier intervalle de temps, sous l'application du vecteur

(0;0;1;1), la valeur de la sortie z est egale a 0 dans l'implementation et dans la speci cation. Apres la simulation dans le deuxieme intervalle de temps, sous l'ap-plication du vecteur (1;0;0;1), la valeur de sortie de la speci cation est 0 tandis que celle de l'implementation est 1. Nous montrons ici comment l'algorithme de diagnostic est applique.