+ All Categories
Home > Documents > Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Date post: 05-Jan-2017
Category:
Upload: ngoque
View: 223 times
Download: 5 times
Share this document with a friend
163
HAL Id: tel-00004726 https://tel.archives-ouvertes.fr/tel-00004726 Submitted on 17 Feb 2004 HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers. L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés. Contribution a l’évaluation de l’efficacité du test fonctionnel de microprocesseurs Bernard Martinet To cite this version: Bernard Martinet. Contribution a l’évaluation de l’efficacité du test fonctionnel de microprocesseurs. Autre [cs.OH]. Institut National Polytechnique de Grenoble - INPG, 1992. Français. <tel-00004726>
Transcript
Page 1: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

HAL Id: tel-00004726https://tel.archives-ouvertes.fr/tel-00004726

Submitted on 17 Feb 2004

HAL is a multi-disciplinary open accessarchive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come fromteaching and research institutions in France orabroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, estdestinée au dépôt et à la diffusion de documentsscientifiques de niveau recherche, publiés ou non,émanant des établissements d’enseignement et derecherche français ou étrangers, des laboratoirespublics ou privés.

Contribution a l’évaluation de l’efficacité du testfonctionnel de microprocesseurs

Bernard Martinet

To cite this version:Bernard Martinet. Contribution a l’évaluation de l’efficacité du test fonctionnel de microprocesseurs.Autre [cs.OH]. Institut National Polytechnique de Grenoble - INPG, 1992. Français. <tel-00004726>

Page 2: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

THESE

Présentée à

l'INSTITUT NATIONAL POLYTECHNIQUE DE GRENOBLE

Pour obtenir le titre de DOCTEUR

(Arrêté ministériel du 23 Novembre 1988)

Spécialité : INFORMATIQUE

par

MARTINET Bernard

------------------------

Contribution à l'évaluation del’efficacité du test fonctionnel de

microprocesseurs

------------------------

Thèse soutenue le 24 Novembre 1992 devant la commission d'examen

Composition du jury :

Guy MAZARE Président

Alain COSTES Rapporteurs

Christian LANDRAULT

Yves-Jacques VERNAY Examinateurs

Raoul VELAZCO

Page 3: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Remerciements

Je voudrais tout d'abord remercier Monsieur Guy MAZARE Professeur à l'INPG, d'avoir accepté de présider le juryde cette thèse.

J'adresse tous mes remerciements à Messieurs Alain COSTES Professeur à l'Institut National Polytechnique deToulouse, et Christian LANDRAULT Directeur de recherche au CNRS, pour m'avoir fait l'honneur de rapporter surmes travaux.

Je remercie également Monsieur Yves-Jacques VERNAY Ingénieur au Centre d'Etude des Télécommunications(Centre Norbert Segard) d'avoir accepté de faire partie de ce jury.

Que Raoul VELAZCO, sans les encouragements de qui cette thèse n'aurait jamais vu le jour, soit remercié ici.Qu'il reçoive par ces quelques mots l'expression de toute mon amitié ; le travail à ses côtés s'est toujours réalisédans la bonne humeur malgré les embûches.

Je tiens également à remercier les ingénieurs du CNET, Messieurs Geoffroy AUVERT et Patrick RIVOIRE, et lesingénieurs de Thomson TMS, Marc SPALANZANI , Guillaume JOSSE, Eric VERLHE pour leur concours dans toutela partie technique de ces travaux. Que soit aussi remercié ici, Monsieur Jean BEAUSSE de Thomson TMS sansl'aide de qui cette expérimentation n'aurait jamais existé.

Je ne peux refermer cette page sans dire merci à tous mes collègues du Laboratoire de Génie Informatique,notamment Chantal ROBACH pour son aide dans la rédaction de ce manuscrit, Catherine BELLON avec qui j’aisouffert sur GAPT, Sylvie PONS et Solange ROCHE, pour leur aide dans la frappe de ce document mais surtoutpour leur grande disponibilité et leur bonne humeur. Que tous soit assuré de ma profonde gratitude, surtout ceuxavec qui j'ai pu tenir ces grandes discussions qui rendent souvent le travail si agréable… ils se reconnaîtront.

Page 4: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

iii

Page 5: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

iv

SITUATION PARTICULIERE

PROFESSEUR D’UNIVERSITE

DETACHEMENT

ENSERG BLIMAN Samuel MutationENSPG BLOCH Daniel Recteur 21/12/93ENSIMAG LATOME Jean-Claude Détachement 01/05/93ENSHMG PIERRARD Jean-Marie Disponible

RETRAITE

ENSEEG BONNETAIN Lucien Mutation

PERSONNE AYANT OBTENU LE DIPLOME D’HABILITATION A DIRIGER DES RECHERCHES

BALESTRA FrancisBALME LouisBECKER MoniqueBIGEON JeanBINDER ZdeneckBOE Louis-JeanCANUDAS DE WIT CarlosCHOLLET Jean-PierreCOEY Jean-PierreCORNUEJOLS GérardCOURNIL MichelCRASTES DE PAULET MichelDALLERY YvesDESCOTES-GENON BernardDUGARD LucDURAND MadeleineFERRIEUX Jean-PaulFEUILLET RenéFREIN YannickGAUTHIER Jean-PaulGHIBAUDO GérardGUILLEMEOT NadineGUYOT AlainHAMAR Sylviane

HAMAR RogerHORAUD PatriceJACQUET PaulLATOMBE ClaudineLE HUY HoangLE GORREC BernardLOZANO-LEAL RogelioMACOVSCHI MihaïlMAHEY PhilippeMETAIS OlivierMONMUSSON-PICQ GeorgetteMORY MathieuMULLER JeanMULLER Jean-MichelNGUYEN TRONG BernadetteNIEZ Jean-JacquesPERRIER PascalPLA FernandRECHENMANN FrançoisROGNON Jean-PierreROUGER JeanROUX Jean-ClaudeTCHUENTE Maurice

Page 6: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

v

DIRECTEURS DE RECHERCHE CNRS

ABELLO LouisALDEBERT PierreALEMANY AntoineALLIBERT ColetteALLIBERT MichelANSARA IbrahimARMAND MichelAUDIER MarcAUGOYARD Jean-FrançoisAVIGNON MichelBERNARD ClaudeBINDER GilbertBLAISING Jean-JacquesBONNET RolandBORNARD GuyBOUCHERLE Jean-XavierCAILLET MarcelCARRE RenéCHASSERY Jean-MarcCHATILLON ChristionCIBERT JoëlCLERMONT Jean-RobertCOURTOIS BernardCRIQUI PatrickCRISTOLOVEANU SorinDAVID RenéDION Jean-MichelDOUSSIERE JacquesDRIOLE JeanDUCHET PierreDUGARD LucDURAND RobertESCUDIER PierreEUSTATHOPOULOS NicolasFINON DominiqueFRUCHARD RobertGARNIER MarcelGIROD Jacques

GLANGEAUD FrançoisGUELIN PierreHOPFINGER EmilJORRAND PhilippeJOUD Jean-CharlesKAMARINOS GeorgesKLEITZ MichelKOFMAN WalterLACROIX ClaudineLANDAU IonLAULHERE Jean-PierreLEGRAND MichelLEJEUNE GérardLEPROVOST ChristianMADAR RolandMARTIN Jean-PierreMERMET JeanMEUNIER GérardMICHEL Jean-MarieNAYROLLES BernardPASTUREL AlainPEUZIN Jean-ClaudePHAM AntoinePIAU MoniquePIQUE Jean_paulPOINSIGNON ChristianePREJAN Jean-JacquesRENOUARD DominiqueSENATEUR Jean-PierreSIFAKIS JosephSIMON Jean-PaulSUERY MichelTEODOSIU ChristianVACHAUD GeorgesVAUCLIN MichelWACK BernardYAVARI Ali-RezaYONNET Jean-Paul

Page 7: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

vi

PERSONNE AYANT OBTENU LE DIPLOME DE DOCTEUR D’ETAT INPG

ABDEL-RAZEK AdelAKSAS HarisALLA HassaneAMER AhmedANCELLE BernardANGENIEUX GilbertATMANI HamidAYEDI Hassine FeriA.BADR OsmanBACHIR AzizBALANZAT EmmanuelBALTER RolandBARDEL RobertBARRAL GérardBAUDON YvesBAUSSAND PatrickBEAUX JacquesBEGUINOT JeanBELLISSENT née FUNEZ Marie-ClaireBELLON CatherineBEN RAIS AbdejettahBERGER-SABBATEL GillesBERNACHE-ASSOLANT DidierBEROVAL AbderrahmaneBERTHOD JacquesBILLARD DominiqueBLANC ép. FOULETIER MireilleBOCHU BernardBOJO GillesBOKSENBAUM ClaudeBOLOPION AlainBONNARD BernardBORRIONE DominiqueBOUCHACOURT MichelBRINI JeanBRION BernardCAIRE Jean-PierreCAMEL DenisCAPERAN PhilippeCAPLAIN MichelCAPOLINO GérardCASPI PaulCHAN-TUNG NamCHASSANDE Jean-PierreCHATAIN DominiqueCHEHIKIAN AlainCHIARAMELLA yvesCHILO JeanCHUPIN Jean-ClaudeCOLONNA Jean-FrançoisCOMITI JacquesCORDET ChristianCOUDURIER LucienCOUTAZ Jean-Louis

CREUTIN Jean-DominiqueDAO TrongtichDARONDEAU PhilippeDAVID BertrandDE LA SEN ManuelDELACHAUME Jean-ClaudeDENAT AndréDESCHIZEAUX née CHERUY Marie-NoëlleDIJON JeanDOREMUS PierreDUPEUX MichelEL ADHAM KarimEL OMAR FovazEL HENNAWY AdelETAY JacquelineFABRE ép. MAXIMOVITCH SuzanneFAURE-BONTE ép. MARET MireilleFAVIER DenisFAVIER Jean-JacquesFELIACHI MovloudFERVAL Haj HassanFLANDRIN PatrickFOREST BernardFORESTIER MichelFOSTER PanayolisFRANC Jean-PierreGADELLE PatriceGARDAN YvonGENIN JacquesGERVASON GeorgesGILORMINI PierreGINOUX Jean-LouisGOUMIRI LouisGROC BernardGROSJEAN AndréGUEDON Jean-YvesGUESSOUS AnasGUIBOUD-RIBAUD SergeHALBWACHS NicolasHAMMOURI HassanHEDEIROS SILIVEIRA HamiltonHERAULT JeannyHONER ClaudeHUECKEL TomaszIGNAT MichelILIADIS AthananiosJANIN GérardJERRAYA Ahmed AmineJUTTEN ChristianKAHIL HassanKUONG QUANG DongKILLIS AndreasKONE AliLABEAU Michel

Page 8: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

LACAZE AlainLACROIX Jean-ClaudeLANG Jean-ClaudeLATHUILLERE ChantalLATY PierreLAUGIER ChristianLE CADRE Jean-PierreLE GARDEUR RenéLE NEST Jean-FrançoisLE THIESSE Jean-ClaudeLAMAIGNAN ClémentLEMUET DanielLEVEQUE Jean-LucLONDICHE HenryL'HERITIER PhilippeMAGNIN ThierryMAISON FrançoisMAMWI AbdullahMANTEL ép. SIEBERT ElisabethMARCON GuyMARTINEZ FrancisMARTIN-GARIN LionelMASSE DominiqueMAZER EmmanuelMERCKEL GérardMEUNIER JeanMILI AliMOALA MohamedMODE Jean-MichelMONLLOR ChristianMONTELLA ClaudeMORET FrédéricMRAYATI MohamedM'SAAD MohamedM'SIRDI Kouider NaceNEPOMIASTCHY PierreNGUYEN Trong KhoiNGUYEN-XUAN-DANG MichelORANIER BernardORTEGA MARTINEZ RoméoPAIDASSI SergePASSERONE AlbertoPEGON PierrePIJOLAT ChristophePOGGI YvesPOIGNET Jean-ClaudePONS MichelPOU Tong Eck

RAFINEJAD PaivizRAGAIE Harie FikriRAHAL SalahRAMA SEABRA SANTOS FernandoRAVAINE DenisRAZBAN-HAGHIGHI TchanguizRAZZOUK MichamREGAZZONI GillesRIQUET Jean-PierreROBACH ChantalROBERT YvesROGEZ JacquesROHMER JeanROUSSEL ClaudeSAAD AbdallahSAAD YoucefSABRY Mohamed NabiSALON Marie-ChristineSAUBAT ép. MARCUS BernadetteSCHMITT Jean-HubertSCHOELLKOPF Jean-PierreSCHOLL MichelSCHOLL Pierre-ClaudeSCHOULER EdmondSCHWARTZ Jean-LucSEGUIN JeanSIWI JacquesSKALLI AbdellatifSKALLI HOUSSEYNI AbdelaliSOUCHON AlainSUETRY JeanTALLAJ NizarTEDJAR FaroukTEDJINI SmailTEYSSANDIER FrancisTHEVENOD-FOSSE PascaleTMAR MohamedTRIOLLIER MichelTUFFELIT DenisTZIRITAS GeorgesVALLIN didierVELAZCO RaoulVERDILLON AndréVERMANDE AlainVIKTOROVITCH PierreVITRANT GuyWEISS FrançoisYAZAMI Rachid

Page 9: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...
Page 10: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...
Page 11: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...
Page 12: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...
Page 13: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Tables des matières

Tables des matières. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xix

Index des figures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxv

Index des tableaux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxvii

Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1

Chapitre 1 : Le Test Fonctionnel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5

I.1. Les différents types de test. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7

I.1.1. Qu’entendons nous par test ?. . . . . . . . . . . . . . . . . . . . . .7

I.1.2. Défauts, fautes, erreurs. . . . . . . . . . . . . . . . . . . . . . . . . . . .8

I.2. Efficacité d’un test. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

I.2.1. Généralités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

I.2.2. Problème du test fonctionnel. . . . . . . . . . . . . . . . . . . .12

II. Le test fonctionnel de microprocesseurs. . . . . . . . . . . . . . . . .14

II.1. Les méthodes de test fonctionnel. . . . . . . . . . . . . . . . . . . . . . . .14

II.1.1.Test comportemental par distinction. . . . . . . . . . . .14

II.1.2.Test comportemental par identification. . . . . . . . .16

II.1.3. Méthodes de test Ad hoc. . . . . . . . . . . . . . . . . . . . . . . .16

II.2. Les problèmes liés a ces méthodes. . . . . . . . . . . . . . . . . . . . . .17

II.2.1. Test par distinction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17

II.2.1.a Les modèles fonctionnels... . . . . . . . . . . . . . . . . . . . . . . . .17

II.2.1.b Les hypothèses d’erreurs... . . . . . . . . . . . . . . . . . . . . . . . .18

II.2.2. Le test ad hoc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19

II.2.3. Le test par identification. . . . . . . . . . . . . . . . . . . . . . . .20

Page 14: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

II.3. La méthode de test GAPT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20

II.3.1. Présentation de la méthode GAPT. . . . . . . . . . . . .20

II.3.1.a Test de conformité.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21

II.3.1.b Test de balayage.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21

II.3.2. Description du logiciel GAPT.... . . . . . . . . . . . . . . . . . . .23

II.3.2.a Le mode conformité.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25

II.3.2.b Le mode de pseudo_conformité... . . . . . . . . . . . . . . . . .26

II.3.2.c Le mode balayage.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28

II.3.3. Description du matériel. . . . . . . . . . . . . . . . . . . . . . . . .30

II.3.3.a Le testeur TEMAC..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31

II.3.3.b Les testeurs FUTÉ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32

II.4. Les défauts et leur modélisation. . . . . . . . . . . . . . . . . . . . . . . . .34

II.4.1. Les défauts physiques. . . . . . . . . . . . . . . . . . . . . . . . . .34

II.4.2. Problèmes de modélisation.. . . . . . . . . . . . . . . . . . . .36

II.4.3. Injection de fautes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45

II.4.4. Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46

Chapitre 2 : Expérimentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49

I. L’Injection physique de defauts . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53

I.1. Le laser de découpe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53

I.1.1. Principe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53

I.1.2. Mise en oeuvre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56

I.2. Le laser à déposition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56

I.2.1. Principe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56

I.2.2. Mise en oeuvre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58

I.3. Expériences réalisées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59

II. Injection de coupures dans le microprocesseur

6800. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60

II.1. Approche expérimentale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60

Page 15: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

II.2. Les méthodes de test évaluées. . . . . . . . . . . . . . . . . . . . . . . . . . .61

II.2.1. Le test aléatoire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61

II.2.2. Test ad hoc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62

II.2.3. Test systématique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62

II.2.4. Le test fabricant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63

II.2.5. Le test minimal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63

II.3. Les équipements de test. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63

II.3.1. Un testeur “aléatoire”. . . . . . . . . . . . . . . . . . . . . . . . . . .63

II.3.2. Des testeurs “fonctionnels”. . . . . . . . . . . . . . . . . . . . .64

II.3.2.a FUTE8..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64

II.3.2.b TEMAC...... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64

II.3.3. Les testeurs classiques. . . . . . . . . . . . . . . . . . . . . . . . . .65

II.4. Résultats obtenus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65

II.4.1. Commentaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66

II.4.2. Analyse des résultats. . . . . . . . . . . . . . . . . . . . . . . . . . . .66

II.5. Analyse des circuits présentants des différences

pour les diverses méthodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68

II.6. Discussion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69

III. Injection de coupures dans le microprocesseur

68000. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71

III.1. Buts de l’expérience. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72

III.2. Mise en oeuvre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73

III.2.1. L’injection de défauts. . . . . . . . . . . . . . . . . . . . . . . . . .73

III.2.2. Les programmes de test. . . . . . . . . . . . . . . . . . . . . . . .73

III.2.2.a Le test pseudo-exhaustif. . . . . . . . . . . . . . . . . . . . . . . . . . .73

III.2.2.b Le test réduit... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74

III.2.3. Le matériel de test. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74

III.3. Résultats. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75

III.3.1. Présentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75

Page 16: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

III.3.2. Discussion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76

IV. Injection de courts-circuits et de coupures dans l e

microprocesseur 68000. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78

IV.1. Approche expérimentale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78

IV.2. Programmes de test. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81

IV.2.1. Le test fonctionnel systématique. . . . . . . . . . . . . .82

IV.2.2. Le test fonctionnel minimal. . . . . . . . . . . . . . . . . . . .82

IV.2.3. Le programme de tri. . . . . . . . . . . . . . . . . . . . . . . . . . . .83

IV.3. Equipement de test. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83

IV.4. Déroulement de l’expérience et résultats. . . . . . . . . . . . . . .84

IV.4.1. Résultats des premiers tests. . . . . . . . . . . . . . . . . . .85

IV.4.2. Analyse des pièces présentant un défaut

non détecté. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85

IV.4.2.a Analyse des pièces déclarées bonnes par

tous les tests.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85

IV.4.2.b Cas de circuits trouvés défectueux par au

moins un test.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86

IV.4.3. Résultats après deuxième test. . . . . . . . . . . . . . . . .91

IV.5. Discussion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93

Chapitre 3 : Analyse Critique des Expériences. . . . . . . . . . . . . . . . . . .95

I. Sur l’expérimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97

II. Sur la méthode d’injection de défaut. . . . . . . . . . . . . . . . . . . . .101

II.1. La méthode d’injection utilisée.. . . . . . . . . . . . . . . . . . . . . . . .102

II.2. Les défauts injectés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103

II.3. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105

III. - Sur l’avenir pour le test fonctionnel . . . . . . . . . . . . . . . . .106

III.1. Description d’expériences de diagnostic. . . . . . . . . . . . . .106

Page 17: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

III.1.1. Diagnostic fonctionnel pour un 68000

défaillant dans une application. . . . . . . . . . . . . . . . . . . . . . . . .107

III.1.2. Analyse de défaillance d’un rejet d e

fabrication.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109

III.1.3. Discussion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112

III.2. Conclusion sur la place du test fonctionnel. . . . . . . . . . .114

IV. - Le test fonctionnel “idéal” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114

IV.1. Logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115

IV.1.1. Les séquences d’instructions.. . . . . . . . . . . . . . . .115

IV.1.2. Le test des signaux. . . . . . . . . . . . . . . . . . . . . . . . . . . .119

IV.2. Matériel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119

Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123

Références bibliographiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127

Annexes

Annexe A : résultats expérimentaux. . . . . . . . . . . . . . . . . . . . . . . . . .139

Annexe B : GAPT .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147

I. Spécification du logiciel GAPT. . . . . . . . . . . . . . . . . . . . . . . . . . . .148

II. Le langage GAPT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158

III. Les différentes unités. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163

Forme générale de l’unité 1. . . . . . . . . . . . . . . . . . . . . . . . . . . .163

Exemple : unité 1 du MC68000. . . . . . . . . . . . . . . . . . . . . . . .164

Forme générale de l’unité2. . . . . . . . . . . . . . . . . . . . . . . . . . . . .165

Exemple : unité 2 du MC68000 (description

partielle). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166

Forme générale de l’unité 3. . . . . . . . . . . . . . . . . . . . . . . . . . . .168

Forme générale de l’unité 4. . . . . . . . . . . . . . . . . . . . . . . . . . . .169

Exemple : unité 4 du MC68000. . . . . . . . . . . . . . . . . . . . . . . .170

Page 18: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Forme générale de l’unité 6. . . . . . . . . . . . . . . . . . . . . . . . . . . .171

Exemple : unité 6 du MC68000. . . . . . . . . . . . . . . . . . . . . . . .172

Forme générale de l’unité7. . . . . . . . . . . . . . . . . . . . . . . . . . . . .174

Exemple : unité 7 du MC68000. . . . . . . . . . . . . . . . . . . . . . . .175

Exemple : programme généré par GAPT pour le

MC68000. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177

Index des figures

Figure 1.1 : le principe du test de circuits intégrés.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Figure 1.2 : la chaîne de test fonctionnel GAPT..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19

Figure 1.3 : fonctionnement du logiciel GAPT..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20

Figure 1.4 : principe du testeur fonctionnel TEMAC..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27

Figure 1.5 : principe du testeur fonctionnel FUTE16..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29

Figure 1.6 : défaut locaux résultant des processus de fabrication :. . . . . . . . . . . . . . . . . .31

Figure 1.7 : types possibles de courts-circuits d’oxyde de grille.. . . . . . . . . . . . . . . . . . . .32

Figure 1.8 : exemples de fautes possibles sur une porte logique.... . . . . . . . . . . . . . . . . .33

Figure 1.9 : correspondance entre diagramme électrique et diagramme logique. . . .33

Figure 1.10 :schéma logique en portes NOR de la fonction booléenne F... . . . . . . . . .35

Figure 1.11 :implantation NMOS d’une partie de la logique aléatoire de la

fonction F..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35

Figure 1.12 :diagramme électrique de la partie de la fonction F implantée.. . . . . . . . . .36

Figure 1.13 :nouvelle représentation logique de la fonction F.... . . . . . . . . . . . . . . . . . . . . .36

Figure 1.14 :implantation avec prise en compte de défauts.... . . . . . . . . . . . . . . . . . . . . . . . . .37

Figure 1.15 :schémas électriques et logiques de la fonction F en présence du

défaut 1.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38

Figure 1.16 :diagramme électrique de la nouvelle fonction en présence du

défaut 2.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39

Page 19: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

xviii

Figure 1.17 :défauts équivalents aux courts-circuits d’oxyde de grille.. . . . . . . . . . . . . .42

Figure 2.1 : le principe expérimental appliqué..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45

Figure 2.2 : schéma de la partie optique du laser à découpe.... . . . . . . . . . . . . . . . . . . . . . . .48

Figure 2.3 : coupures vues au microscope optique.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49

Figure 2.4 : coupures vues au microscope électronique à balayage... . . . . . . . . . . . . . . .49

Figure 2.5 : le laser à déposition..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51

Figure 2.6 : dépôt de nickel entre une connexion et un contact... . . . . . . . . . . . . . . . . . . . .52

Figure 2.7 : taux de couverture en fonction de la taille des programmes en

octets.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62

Figure 2.8 : distributions des défauts sur la surface du circuit.. . . . . . . . . . . . . . . . . . . . . . .71

Figure 2.9 : démarche expérimentale..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73

Figure 2.10 :méthode expérimentale pour l’injection laser de défauts ponctuels. . . .74

Figure 2.11 : répartition des coupures et courts-circuits sur le circuit.. . . . . . . . . . . . . . . .78

Figure 2.12 : taux de couverture en fonction de la taille des programmes de test. . . .86

Figure 3.1 : diagramme logique de l’évaluation de la condition LE en porte

NOR...... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99

Figure 3.2 : identification de l’erreur par le collage à zéro d’une connexion.. . . . . . .99

Figure 3.3 : diagramme électrique de la région suspecte du PLA de décodage.. . . 100

Figure 3.4 : échantillon des erreurs détectées.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Figure 3.5 : résultats obtenus dans la cas de multiplication par 1... . . . . . . . . . . . . . . . . 101

Figure 3.6: plan de masse du 68000..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

Figure 3.7 : schéma de la partie opérative..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

Figure 3.8 : représentation d’un bit du registre suspect... . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

Figure 3.8 : principe de l’approche de diagnostic employée.... . . . . . . . . . . . . . . . . . . . . . 104

Figure 3.9 : utilisation de deux plans mémoire pour le test.. . . . . . . . . . . . . . . . . . . . . . . . . 111

Figure 3.10 : solution mixte : registre de signature et double plan mémoire.. . . . . . . 112

Figure 3.11 : problème à résoudre pour le test des signaux.... . . . . . . . . . . . . . . . . . . . . . . . 113

Page 20: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

19

Index des tableaux

Tableau 1 : résultats des différents tests du 6800.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60

Tableau 2 : résultats du test pour les défauts de type booléen.... . . . . . . . . . . . . . . . . . . . .61

Tableau 3 : résultats des tests pour l’injection d’une faute simple sur des

68000..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65

Tableau 4 : résultats du test du 68000 après injection d’une faute simple.. . . . . . . . . .69

Tableau 5 : les différents programmes utilisés dans la 3ème expérience... . . . . . . . . .77

Tableau 6: résultats des différents types de test... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79

Tableau 7 : répartition des différentes pièces acceptées par tous les tests.. . . . . . . . . .79

Tableau 8 : analyse des 23 pièces acceptées par tous les test.. . . . . . . . . . . . . . . . . . . . . . . .81

Tableau 9 : analyse des 11 circuits acceptés par le test systématique... . . . . . . . . . . . . .83

Tableau 10 : classement des circuits acceptés par le test fonctionnel en fonction

du type d’erreur engendré..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84

Tableau 11 : composition de l’échantillon après renforcement des défauts.. . . . . . . . . .85

Tableau 12 : nombre de pièces acceptées par chacun des tests... . . . . . . . . . . . . . . . . . . . . . .85

Tableau 13 : taux de couverture de fautes booléennes pour chacun des tests.. . . . . . .86

Tableau 14 : taux de couverture des différentes expériences (confiance à 95%). . . . .90

Page 21: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Introduction

Page 22: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Depuis l’apparition des premiers microprocesseurs, jusqu’à nos jours, on a assisté à uneénorme croissance de leur complexité. En effet l’évolution permanente de la technologie rendactuellement possible d’implanter près d’un million de transistors dans une “puce”, ce quipermet d’intégrer l’équivalent d’un ordinateur complet sur un seul circuit. En parallèle avecl’évolution de la technologie, la nécessité de nouvelles techniques de test s’est fait sentir, aussibien du point de vue des équipements que du point de vue des stratégies de test.Quand au milieu des années 60, étaient posées les bases de la méthode de test par cheminssensibles (D-Algorithme), la principale préoccupation se situait au niveau des connexions. Toutmauvais fonctionnement était assimilé à un collage à 0 ou à 1 d’une des lignes du circuit. Au vude la complexité des circuits actuels, il semble illusoire de vouloir appliquer globalement unetelle méthode, à cause du nombre important d’éléments (transistors, connexions,…) àconsidérer. De plus, la connaissance actuelle des mécanismes conduisant à des mauvaisfonctionnements montre la faible représentativité du modèle de collages.A la fin des années 70 apparaît un nouveau concept : bâtir un test à partir seulement desfonctions réalisées par le circuit à tester en s’affranchissant donc complètement de sa structure.La formidable prolifération des microprocesseurs aussi bien dans leur type que dans leurutilisation a mis ces circuits au centre du débat suivant : comment tester de tels circuits sanss’appuyer sur leur structure ?De nombreuses méthodes, dites de test fonctionnel, ont été proposées par les chercheurs et lesingénieurs de test ; cependant il nous semble qu’un aspect important a été négligé : la mesure del’efficacité de ces méthodes. Les rares tentatives effectuées dans ce domaine l’ont été à partird’injection de collages à 0 ou à 1 dans des modèles de simulation des circuits à tester. Dans cettethèse l’efficacité du test fonctionnel sera étudiée par une méthode expérimentale basée surl’injection de défauts dans des circuits réputés bons.

Dans la première partie sont présentées les principales méthodes de test fonctionnel demicroprocesseur, ainsi que la méthode GAPT que nous avons développée. Les outils matérielset logiciels qui lui sont associés sont également présentés. Le problème de la modélisation dedéfauts à différents niveaux d’abstraction est abordé afin de dégager un ensemble représentatifde fautes à injecter.La deuxième partie est consacrée à la méthode d’injection de défauts employée et à laprésentation des résultats des diverses expériences réalisées sur des microprocesseurs 8 bits et16 bits du commerce.Au vu de ces résultats expérimentaux, dans la troisième partie, sont tirées des conclusions sur laméthode d’injection de défauts et sur l’efficacité du test fonctionnel par rapport au test structureldu fabricant. Ceci permettra d’identifier ce qui est, à notre avis, le rôle véritable du testfonctionnel : l’aide à la validation de conception et au diagnostic. Enfin une réflexion sur ce quedevrait être “l’outil idéal” de test fonctionnel terminera cette étude.

Page 23: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 4 - Le Test Fonctionnel

Chapitre 1

Le Test Fonctionnel

Page 24: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 5 - Le Test Fonctionnel

Page 25: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 6 - Le Test Fonctionnel

I. DEFINITIONS

Vu le grand nombre de termes employés dans le domaine du test, il convient tout d’abord d’enrappeler quelques uns :

I.1. Les différents types de test

I.1.1. Qu’entendons nous par test ?

Tester est le processus visant à déterminer si un dispositif est apte à fonctionner correctement.Pour le concepteur d’un circuit intégré, ce sera le moyen d’assurer que le circuit réalisécorrespond à ses spécifications initiales. Pour réaliser ce test il dispose de toutes lesinformations nécessaires (topologiques, électriques,…), et il a à sa disposition les équipementsadéquats (microscopes optiques et électroniques, simulateurs...) lui permettant d’étudier lecomportement de chaque élément du circuit.Pour le fabricant, le test va assurer que le circuit à la sortie des chaînes de fabrication est exemptde tout défaut dû au processus même de fabrication. Il va vérifier qu’il est apte à fonctionnerdans les plages prévues pour divers paramètres tels que la température, la fréquence, laconsommation. Il doit donc vérifier le bon comportement à un niveau logique mais égalementparamétrique. Il dispose de matériels très sophistiqués pour réaliser cela (testeurslogiques/analogiques, simulateurs d’environnement sévère,…).

On distingue 3 types de test appliqués à un circuit intégré :

- le test paramétrique qui vérifie les caractéristiques statiques d’un circuit (courant,

tension, fréquence…) ;

- le test dynamique qui vérifie l’évolution dans le temps des caractéristiques électriques

(temps de commutation, stabilité, …) ;

- le test logique qui vérifie le comportement logique du circuit.

Sous l’étiquette test logique on regroupe en fait deux types de test de nature différente :

- Un test structurel qui prend en compte les connaissances sur l’architecture et la topologie

du circuit. Défini par les fabricants, il exploite des fonctionnalités internes (autotest, test

en ligne,…) souvent inaccessibles à l’usager.

- Un test comportemental ou fonctionnel , tel que peut le définir un utilisateur du circuit,

c’est à dire un test de “boite noire” dont on ne connaît le fonctionnement qu’en présence

de certains stimuli et que l’on ne peut vérifier qu’en contrôlant son comportement en

fonction de l’application de ces stimuli.

Page 26: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 7 - Le Test Fonctionnel

Dans ce travail nous ne parlerons pas de test fonctionnel structurel, et sauf spécificationparticulière, on assimilera les termes fonctionnel et comportemental .

I.1.2. Défauts, fautes, erreurs

En ce basant sur la terminologie développée en [Lap85] nous allons ici définir le vocabulaireemployée dans le reste de cette thèse.Un défaut est la cause phénoménologique d’un mauvais fonctionnement.Une faute est la modélisation d’un défaut à quelque niveau que ce soit. Au chaque niveau demodélisation : physique, logique, fonctionnel correspondra donc une faute physique , une faute logique ou une faute fonctionnelle . Afin de replacer ces termes dans le vocabulaire courammentemployé, le terme “panne” utilisé pour désigner la manifestation d’un défaut au niveau logiquecorrespond donc à une faute logique.Une erreur est la manifestation du défaut à l’extérieur du circuit.

Pour ne pas trop alourdir la terminologie, le défaut et la faute physique qu’il induit sont souventconfondus. Par exemple dans le cas d’une coupure de piste (faute physique), le défaut est enfait la poussière qui à empêché localement de dépôt du matériau conducteur de la connexion.Généralement, on considère que la coupure est le défaut.Si on prend un additionneur au sein d’un processeur par exemple, la coupure d’une piste est undéfaut, le collage à zéro (ou a un) qui pourrait en résulter sur une ligne particulière est la fautelogique induite (que l’on appelle souvent panne logique), le mauvais résultat en sortie del’additionneur est un faute fonctionnelle, et le mauvais adressage par exemple, induit par cettefaute d’addition sera l’erreur.

Nous faisons encore une distinction supplémentaire entre les fautes paramétriques et les fautes booléennes . On considère comme paramétrique toute faute qui ne donnera lieu à une erreur quesous certaines conditions d’environnement (courant, tension, température, contraintemécanique,…). Par exemple, pour une porte NOR, si la vérification de sa table de vérité donnedes résultats corrects en appliquant les valeurs appropriées sur ses entrées, elle sera bonne dupoint de vue fonctionnel , même si pour d’autres conditions de tension ou d’intensité ses sortiesseront erronées. Dans ce cas, elle sera fautive du point de vue paramétrique .Dans notre cas on ne s’attachera donc qu’a vérifier le bon fonctionnement d’un microprocesseurà des fréquences moyennes, sans s’intéresser aux fréquences limites hautes ou basses. Il ensera de même pour d’autres paramètres (tensions d’alimentations, température,…).

I.2. Efficacité d’un test

I.2.1. Généralités

Pour un lot de circuits intégrés, le but d’un test est de séparer les circuits qui fonctionnentcorrectement : les circuits bons , des circuits qui ne réalisent pas la fonction pour laquelle ils ontété conçus : les circuits défectueux . La question que l’on doit se poser est : quel degré deconfiance peut-on accorder à ce tri ?Afin d’établir quelques notions importantes nous allons nous servir de certaines des définitionsdonnées en [Jac89] et illustrées par la figure 1.1.

Page 27: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 8 - Le Test Fonctionnel

testC

B

D

B

Dr

Dp

circuitsacceptés

circuitsrefusés

A

R

C = B + D

Figure 1.1 : le principe du test de circuits intégrés

Soit un ensemble de C circuits à tester. Il est en fait composé des deux sous-ensemblesconstitués respectivement de B circuits bons et de D circuits défectueux. Le test va donc essayerde séparer correctement ces deux sous-ensembles.

Nous considérons les hypothèses suivantes qui sont en pratique souvent vérifiées.

Hypothèse 1 : la séquence de test est imparfaite.

Hypothèse 2 : aucun circuit bon ne sera reconnu défectueux par la séquence de test.

Hypothèse 3 : les équipements de test (testeurs) ne sont pas défectueux.

Ces hypothèses étant admises, nous pouvons faire ressortir plusieurs relations de la figure 1.1.L’imperfection du test (hypothèse 1) fait qu’une partie Dp des D circuits défectueux va êtreacceptée par le test, l’autre partie Dr étant normalement refusée.

A = B + Dp : l’ensemble des A circuits acceptés par le test est formé des B circuits bons et dusous ensemble des Dp circuits défectueux reconnus à tort comme bons.R = Dr : l’ensemble des R circuits refusés est uniquement constitué du sous-ensemble des Drcircuits défectueux effectivement rejetés par le test.

Deux autres rapports sont généralement calculés, ce sont les rapports suivants :- B+Dr / C soit le taux de circuits correctement testés, - B / A soit le taux de circuits acceptés réellement bons.C’est ce dernier rapport qui concerne surtout les utilisateurs. Il faut rajouter un autre indicateurqui intéresse les fabricants : le rendement qui est le rapport A / C

L’imperfection du test est caractérisée par Dp ; plus Dp est petit, plus le test est efficace. Lerapport Dp / C appelé taux d’échappement (escape rate) est utilisé généralement par lesfabricants pour qualifier leurs tests. Cette valeur est donnée en nombre de pièces par million(p.p.m.)1. L’objectif des fabricants est bien entendu le “ zéro défaut ”.

Malheureusement, le degré de confiance que l’on peut accorder à un test ne peut êtrecorrectement évalué qu’a posteriori, lorsque l’on connaît exactement le taux de retour client ,c’est à dire le rapport entre le nombre de pièces commercialisées comme bonnes détectéesdéfectueuses par un utilisateur et le nombre total de pièces commercialisées. Le fabricantassimile cette valeur au taux d’échappement Dp / C alors que cette valeur ne peut représenterqu’une borne minimale, si on admet que tous les circuits défectueux commercialisés ne font pas

1Les valeurs couramment citées vont de quelques dizaines à quelques centaines de p.p.m.

Page 28: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 9 - Le Test Fonctionnel

forcément l’objet d’un retour client. Il suffit pour cela de penser à certaines fautes paramétriquesqui ne sont mises en évidence que sous des conditions particulières.

Afin de fixer à priori une mesure de confiance dans l’efficacité d’un test, on calculegénéralement le taux de couverture de fautes défini comme le rapport entre le nombre de fautesdétectées par une séquence de test et le nombre total de fautes. Ce rapport est calculé à partird’hypothèses d’injection de fautes sur un modèle du circuit à tester. Ce que l’on va mesurer enfait, par des simulations sur ces modèles, c’est la fraction détectée de l’ensemble des fauteshypothétiques que l’on aura créé.Pour pouvoir corréler le taux de couverture de fautes avec le taux d’échappement il manquecertaines valeurs difficiles à évaluer, à savoir : les probabilités d’apparition des différentesfautes. Les calculs, lorsqu’ils existent, se basent généralement sur deux hypothèses :l’équiprobabilité des fautes et l’unicité des fautes. Bien que très intéressantes pour les calculsthéoriques, dans la pratique ces deux hypothèses n’ont en fait que peu de chance d’êtrevérifiées2.

Pour illustrer ceci, prenons un exemple avec des valeurs hypothétiques. Quelle confiance faut-ilaccorder à un test qui détecte 99% de fautes de collage, si on suppose que les fautes de collagene représentent que 50% des fautes possibles ? Pour estimer cette confiance, nous sommesdevant des inconnues du type : quel est le taux d’apparition des défauts conduisant ou pas à desfautes modélisable par des collages ? De même, pour les 1% de fautes de collage non détectées,quelle est la probabilité pour qu’un défaut se traduise effectivement par ce type de collageparticulier ?Même si l’on admet qu’on peut posséder un modèle parfait d’un circuit et un modèle parfait desfautes possibles du circuit, seuls des calculs basés sur la probabilité d’apparition des différentesfautes pourraient donner une idée exacte du taux d’échappement. La seule possibilité qui nousest offerte afin de donner des valeurs à ces probabilités serait l’analyse statistique d’un trèsgrand nombre de circuits défectueux issus des ensembles Dr (défectueux refusés) et Dp(défectueux acceptés).Les probabilités effectives d’apparition des différents défauts n’auront plus d’importance sur lecalcul du taux d’échappement quand le “zéro défaut” sera effectivement atteint. Encore faudra-t-il être sûr que toutes les fautes possibles sont effectivement contrôlées.

I.2.2. Problème du test fonctionnel

Malgré les réserves émises ci-dessus, on évalue de nos jours l’efficacité de tests par des taux decouverture mesurés sur des modèles. Puisque le nombre de fautes possibles est trop important,seule une modélisation des fautes les plus représentatives peut permettre d’établir des calculs.Pour les fautes électriques ceci est fait en utilisant des modèles de bas niveau (électrique ettopologique par exemple), proches de l’implantation réelle du circuit. Pour les fautes logiqueson définit un modèle logique du circuit et un ensemble de fautes logiques. Si dans les années 70on se contentait de raisonner en logique 0 ou 1, les simulateurs actuels introduisent en plus desniveaux 0 et 1, des niveaux transitoires X (inconnu) ou ϕ (indéterminé) et même tout unsystème de pondération (0 faible, moyen, fort,…) permettant de s’approcher le plus prèspossible du comportement électrique du circuit. Les modèles de fautes qui en découlent sont deplus en plus complexes et essaient le plus souvent de prendre en compte des notions detopologie.

Pour un test fonctionnel le problème est plus complexe. On peut, bien sûr, envisager le mêmetype de réponse, à savoir : l’efficacité d’un test fonctionnel est le nombre de fautesfonctionnelles mises en évidences par rapport au nombre total de fautes fonctionnelles d’un

2Les types de fautes dépendent fortement du processus de fabrication, certaines phases étant plus délicates

que d'autres .

Page 29: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 10 - Le Test Fonctionnel

modèle. Mais si au niveau physique les phénomènes sont à peu près connus, commentdéterminer l’ensemble total de fautes au niveau fonctionnel ? De nombreux travaux ont étéconsacrés à la définition de modèles de circuits et de modèles de fautes, mais en se servantd’hypothèses toujours difficiles à vérifier si on se place devant une boîte noire. Si nousreprenons l’exemple de l’additionneur, comment juger de l’ensemble des fautes fonctionnellespossibles sans prendre en compte des caractéristiques de son architecture (structure parallèle ousérie, avec ou sans anticipation de retenue,…) ? La seule démarche sûre serait de vérifier que lerésultat de l’addition de A avec B donnera bien A+B pour toutes les valeurs possibles de A et deB. Il restera encore à résoudre le problème des séquences d’additions puisque l’on sait que pourcertaines technologies (CMOS par exemple), un circuit combinatoire peut se transformer encircuit séquentiel en présence de certains défauts [Wad78].

Page 30: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 11 - Le Test Fonctionnel

II. LE TEST FONCTIONNEL DE MICROPROCESSEURS

Depuis la fin des années 1970, le test fonctionnel a été proposé comme une solution possible auproblème de la génération de test pour les circuits complexes (VLSI) et en particulier pour lesmicroprocesseurs. Depuis, certains auteurs l’ont même présenté comme la solution deremplacement des méthodes structurelles pour la détection de fautes de conception et defabrication des VLSI [Lai83] ; d’autres le considéraient comme la seule solution d’avenir au testdes microprocesseurs futurs [Cor87]

II.1. Les méthodes de test fonctionnel

Le test fonctionnel est un test comportemental, c’est à dire un test généré a partir des fonctionsque le circuit réalise et ce, indépendamment de sa structure interne. Un tel test est censé utiliserles description du jeu d’instructions et les renseignements d’architecture donnés par le manuelutilisateur du microprocesseur fourni par le constructeur. Ce type de test a été très largementétudié depuis 1978 ; les méthodes proposées visent à permettre le test d’un microprocesseurbien que sa structure fine soit inconnue.On peut distinguer deux familles de méthodes :- les méthodes de test par distinction, basées sur des hypothèses de fautes fonctionnelles ;- les méthodes de test par identification, inspirées du principe de vérification expérimentale(“checking experiment”), qui vérifient que l’exécution des fonctions spécifiées est correcte, sanshypothèse sur les erreurs possibles.

II.1.1.Test comportemental par distinction

Ces méthodes visent à distinguer le circuit sans fautes d’un ensemble de circuits fautifspossibles. Les circuits fautifs sont déduits d’un ensemble d’hypothèses de fautesfonctionnelles. La génération d’un test consiste à trouver les ensembles d’activations qui mettenten évidence chacun des comportements fautifs.Ce type de méthode suit l’approche classique d’un test au niveau schéma en portes logiques quiutilise un modèle de collages en tant que modèle de fautes (D-Algorithme). A un niveaufonctionnel, les modèles de fautes de bas niveau vont être remplacés par des modèles de fautesfonctionnelles. Les grandes lignes de cette approche ont été données par les travaux de Thatte etAbraham [Tha78]. Cette approche a d’abord conduit à un modèle d’erreur fonctionnelle, et unensemble de procédures de test ayant pour but la mise en évidence de ces erreurs. Unemodélisation du processeur sous forme de graphe (S-graph) a été ensuite proposée [Tha80]. Cegraphe modélise le flot de données dans un microprocesseur et peut être utilisé pour obtenir unensemble ordonné d’activations de test, qui correspond aux hypothèses de fautes.De nombreux travaux visant a appliquer partiellement ou totalement cette méthode à des circuitshypothétiques ou standards ont été développés. De nombreuses approches dérivées, dontcertaines utilisent les mêmes modèles de circuit et de fautes ont également été développées . Cesméthodes ont pour objectif soit la réduction de la longueur du test, soit l’exploration devariantes des modèles ou des algorithmes des séquences de test [Lin80] [Lin82] [Min82][Sal83] [Fra84] [Kil86].Parmi ces travaux on peut remarquer ceux de Thevenod-Fosse et David, qui portent sur le testaléatoire de microprocesseurs. A partir du S-graph et des hypothèses de fautes proposées parAbraham et Thatte ces auteurs déterminent la faute fonctionnelle la plus difficile à détecter afinde calculer la longueur de la séquence aléatoire de test mettant en évidence cette faute avec uneprobabilité fixée [The81] [The83].D’autres niveaux de modélisation ont été proposés, notamment la modélisation dufonctionnement du microprocesseur au niveau instruction, micro-instruction, ou de transfert de

Page 31: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 12 - Le Test Fonctionnel

registres, toujours en accord avec un modèle d’erreur défini au niveau correspondant (lacontribution la plus importante à ce niveau a été celle de Su [Su82] [Su84 ] [Su85]. Dans toutesces approches le centre d’intérêt a été la détermination d’un test minimal (le test minimum étantla vérification de la correction des accès en lecture et écriture aux registres internes duprocesseur à tester) [Su84][Bra84].

Page 32: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 13 - Le Test Fonctionnel

II.1.2.Test comportemental par identification

Les méthodes par identification ont pour objectif la vérification de la conformité du circuit soustest avec ses spécifications fonctionnelles. Aucun modèle de fautes n’est nécessaire. Lagénération d’un test par identification consiste à déterminer l’ensemble des fonctionnalitésreprésentatives du circuit sous test et de construire une séquence de test pour chacune d’elles.Pour un microprocesseur par exemple, les fonctionnalités représentatives sont en fait fixées parles diverses instructions possibles.Cette méthode est l’extension de la méthode de test par identification d’automates (“checkingexperiment”) étudiée pour les machines d’états finis élémentaires [Bel84a]. En [Jai84] Jain etSusskind ont montré que l’on pouvait étendre la méthode pour traiter des circuits complexes telsque les microprocesseurs.Les méthodes par identification avaient été au préalable proposées par Robach & Saucier[Rob80] puis Annaratone et Sami [Ann82]. Ces différents auteurs proposent une modélisationpour chaque type d’instruction, permettant de déduire un ordonnancement des séquences detest, par rapport à des critères donnés (“start big” ou “start small”).

II.1.3. Méthodes de test Ad hoc

Parallèlement à ces méthodes, des approches ad hoc ont été développées. Toutes ces approchesnécessitent une compréhension préalable de l’architecture du circuit à tester avant la définition dela stratégie de test. En cela, elles ne rentrent pas vraiment dans notre définition de départ c’est-à-dire le test à partir d’informations fournies uniquement par le manuel utilisateur ; cependant, lebut recherché ici est également la bonne exécution des fonctions décrites dans le manuel ducircuit. A partir d’une décomposition en sous-ensembles fonctionnels (UAL, bus, registres ...)[Chi76] ou à partir d’un partitionnement en fonction de la complexité des instructions [Rob80],ces méthodes essaient d’obtenir une activation la plus complète possible du circuitindépendamment de toute hypothèse d’erreur. Des techniques appliquées à la construction deprogrammes pour des exemples particuliers ont été données en [Mar88][Hen86].

II.2. Les problèmes liés a ces méthodes

II.2.1. Test par distinction

Pour le test par distinction deux problèmes se posent : celui de la validité de la représentation ducircuit et celui des modèles de fautes employés.

II.2.1.a Les modèles fonctionnelsDepuis la fin des années 1980, la diminution du nombre de publications sur le test fonctionnelparues dans les congrès spécialisés montre que l’attraction exercée par celui-ci a fortementdécru. Ceci peut s’expliquer par plusieurs raisons :• une analyse des publications parues à ce jour montre que l’utilisation d’un modèle fonctionnelformel sous forme de graphe (S-graph [Tha80], graphe d’exécution réduite [Rob80]...) nevisait qu’à :

- exprimer la contrôlabilité et l’observabilité des registres internes du circuit à tester

[Tha80] [Lin80] [Sal83] [Fra84] [Kil86] ;

Page 33: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 14 - Le Test Fonctionnel

- permettre de déterminer l’ordonnancement des instructions en vue du test [Rob80]

[Ann82].En général, ce n’est généralement pas ce type de difficulté que l’on rencontre lorsque l’on établiun test pour un microprocesseur.

- L’instruction, ou la séquence d’instructions la plus simple permettant de charger ou de

lire le contenu de chaque registre interne est très simple à trouver. L’évolution des

microprocesseurs récents va vers une standardisation de l’accès aux registres internes,

ceci étant encore plus flagrant lorsque le nombre de registres augmente.

- Vouloir ordonner en vu du diagnostic, en utilisant un modèle du circuit simplifié basé sur

un nombre réduit d’hypothèses, semble illusoire. En effet, ces modèles ne prennent en

compte généralement que la partie chemin de données, alors qu’il est facile de se rendre

compte, au vu du plan de masse d’un circuit, de la grande proportion du silicium

occupée par la partie contrôle (environ 50 % pour les processeurs CISC).

• Bien que très attractifs, les modèles proposés (que ce soit sous forme de graphe, de réseaux dePétri ou de descripteur de type transfert de registre) sont difficilement applicables auxmicroprocesseurs 32 bits actuels, la quantité d’information étant prohibitive.

Pour le test aléatoire, le problème qui se pose est de trouver la faute la plus difficile à tester.Pour cela, les mêmes critiques que pour la représentativité du S-graph peuvent être avancées.

II.2.1.b Les hypothèses d’erreursEn ce qui concerne les hypothèses d’erreurs fonctionnelles, les principales réserves s’appliquentà la nature même de ces hypothèses.Si le principe d’une modélisation de haut niveau est généralement admis, l’introduction defautes de bas niveau dans ces modèles est plus controversée [Mal87]. En effet, un ensemble derésultats obtenus lors d’expériences concrètes de diagnostic [Vel85] [Vel87a] [Vel88] a mis enévidence, pour des cas particuliers, la non représentativité des fautes physiques avec lesmodèles couramment proposés. Les informations sur lesquelles se basent les modèles neprenant pas en compte la topologie du circuit, il est difficile de déduire les conséquences à unniveau fonctionnel d’une hypothèse de faute faite à un niveau physique [Gal80] [Hay85]. Miczoen [Mic82], a montré que la validité de résultats obtenus par simulation de fautes sur desschémas logiques équivalents est contestable (le test de 100 % des collages d’une implantationNAND/NAND d’un multiplexeur 4 bits ne détecte que 50 % des collages d’une même fonctionen NOR/NOR). Ces aspects seront plus longuement développés au paragraphe 2.4.

Au niveau des contrôleurs des microprocesseurs, les hypothèses concernant l’exécution desinstructions proposées par Thatte et Abraham [Tha80] correspondent probablement à unegrande partie des mauvais fonctionnements :

- exécution d’une instruction I à la place d’une instruction J ;- exécution d’une instruction I en plus d’une instruction J ;- aucune exécution d’instruction au lieu de l’instruction J.

Néanmoins, au vu du grand nombre d’instructions des microprocesseurs actuels, il estpratiquement impossible de trouver une séquence de test garantissant l’absence de ces erreurs.Enfin, ces hypothèses ont été critiquées parce qu’elles ne prennent pas en compte l’exécution

Page 34: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 15 - Le Test Fonctionnel

partielle d’instructions (exécution d’une partie d’instruction à la place d’une autre partie, de lamême ou d’une autre instruction ...).

En ce qui concerne le test aléatoire, l’applicabilité de telles méthodes à des microprocesseursactuels reste à prouver. En effet, lorsque l’on sait qu’une détection proche de 100 % pour unmicroprocesseur 8 bits tel que le 6800 nécessite un test de 6,5 x 106 instructions [Fed84],l’extension à des microprocesseurs de complexité plusieurs fois supérieures tels que 68000 ou68020 laisse sceptique. De plus il faut développer des machines de test dédiées, si l’on veututiliser au mieux ce type de test et tirer quelques bénéfices de la détection d’erreurs notammentau niveau du diagnostic.

II.2.2. Le test ad hoc

Dans toutes les approches de test ad hoc connues à ce jour [Hen86][Mar88], la nécessitéd’activer plusieurs fois chacune des instructions est une constante, bien que la significationaccordées au terme “instruction” reste souvent très vague. Si pour le 6800, le jeu d’instructionscomplet (combinaison de tout code opération et mode d’adressage possible) représente 197instructions, ce nombre croît très rapidement pour les microprocesseurs 32 bits. Pour illustrerceci on notera que le seul mode d’adressage “address register indirect with index (basedisplacement)” du 68020 représente 3487 cas ; le développement complet de l’instructiond’addition ADD avec toutes les tailles d’opérandes, dans tous les modes d’adressage, avec tousles registres (base et index) et toutes les échelles (scaling) possibles conduit à environ 13 x 106instructions. On ne pourra donc dans ce cas que tester un sous-ensemble de toutes lescombinaisons possibles ; le problème de le constitution de ce sous ensemble reste entier.Aucune solution générale n’est applicable et chaque processeur est un cas spécifique dontl’analyse va croître avec la complexité.

II.2.3. Le test par identification

Les critiques précédentes s’appliquent également au test par identification ; on se heurtegénéralement à la longueur excessive des programmes de test et au manque de généralité desméthodes proposées.

II.3. La méthode de test GAPT

La méthode GAPT pour le test fonctionnel de microprocesseur à été déjà largement décrit[Bel82] [Bel84a], c’est uniquement en temps qu’outil support d’expérience qu’elle seraconsidérée ici.

La méthode GAPT est une méthode de test par identification dont les points forts sont :

- l’absence d’hypothèse de fautes fonctionnelles, comme pour toute méthode par

identification.

- une possibilité de test pseudo-exhaustif des divers blocs architecturaux du circuit,

- l’existence de moyens logiciels et matériels opérationnels associés [Bel84c] [Bel85].

II.3.1. Présentation de la méthode GAPT

Cette méthode a comme caractéristiques :

Page 35: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 16 - Le Test Fonctionnel

- de prendre en compte l’ensemble du fonctionnement du microprocesseur, bien que pour

les signaux asynchrones cela s’avère parfois très délicat [Bel84b] ;

- de pouvoir être étendue pour traiter tout circuit programmable, c’est à dire tout circuit

possédant un jeu d’instruction (processeur, coprocesseur, …)

- de permettre la génération automatisée des programmes de test.

On vérifie le bon fonctionnement d’un microprocesseur en s’appuyant sur le partitionnement dumicroprocesseur en deux parties : un contrôleur et des ressources constituant la partieopérative. On applique donc deux tests :

- le test de la partie contrôle, qui active les fonctions du circuits (instructions, signaux

asynchrones), qui est appelé : test de conformité ;

- le test de la partie opérative, qui vérifie les différents modules de la partie opérative

(registres, opérateurs, bus,…), qui est appelé : test de balayage

II.3.1.a Test de conformitéLe test de conformité vérifie la bonne exécution d’un ensemble de fonctionnementsreprésentatifs du microprocesseur. On s’intéresse aux fonctions exécutables par lemicroprocesseur entre la lecture de deux codes-opération successifs.L’état comportemental d’un microprocesseur est défini par la valeur des éléments demémorisation interne décrits dans le manuel utilisateur. Ces éléments de mémorisations serontreprésentés par :

- les registres adressables (registres données, registres adresses, registre d’état) ;

- le registre instruction et le compteur programme.L’état comportemental est défini à la fin de l’exécution d’une instruction ou après la prise encompte d’un signal asynchrone externe.Chaque fonctionnement à tester est vérifié par un module élémentaire de la forme :

- initialisation de l’état comportemental du microprocesseur ;

- activation du fonctionnement à tester et observation des sorties ;

- observation de l’état comportemental du microprocesseur.L’observation systématique de l’état comportemental permet de vérifier que :

- les éléments de mémorisation qui doivent être modifiés le sont correctement ;

- les autres éléments de mémorisation ne sont pas altérés.Les opérandes à charger dans les éléments de mémorisation au cours de l’initialisation et àutiliser au cours du fonctionnement à tester pourront être aléatoires ou déterministes (déduitsd’hypothèse sur le fonctionnement à tester).

II.3.1.b Test de balayage

Page 36: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 17 - Le Test Fonctionnel

Le but du test de balayage est de vérifier la partie opérative du microprocesseur. Celle-ci serapartitionnée en un ensemble de blocs fonctionnel constitué par :

- les registres programmables ;

- les opérateurs : unité arithmétique et logique, unité de calcul d’adresse, décaleurs, unité

d’incrémentation des différents registres compteurs,…;

- l’interconnexion entre les blocs (bus ).Les opérandes pour tester chaque bloc pouvant être là encore aléatoires ou déterministes.Au cours du test de balayage on cherche uniquement à vérifier le bon fonctionnement d’un blocet non l’exécution d’une fonction. Seuls les registres source seront initialisés et on n’observeraque les registres qui mémoriseront le résultat.Le module de base du test de balayage aura donc la forme suivante :- initialisation des registres sources ;- activation de l’instruction permettant de vérifier au mieux le fonctionnement du bloc ;- observation des registres destination.

Né dans son concept au début des années 1980, le système GAPT est opérationnel depuis 1985tant sur le plan matériel que logiciel. Sa flexibilité a permis son amélioration au cours des annéesau vu des différentes expériences de test de microprocesseur ou de diagnostic de circuits fautifsréalisées.Le système GAPT (figure 1.2) se compose d’un logiciel de génération automatique deprogramme de test, et d’un ensemble de testeurs développés spécialement pour des applicationsde test fonctionnel. Quel que soit le testeur utilisé, le développement d’une carte d’interface estnécessaire pour chaque nouveau circuit à tester.

Page 37: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 18 - Le Test Fonctionnel

FUTE-8

TEMAC Testeurs Fonctionnels

Op�randesde validation

µp �tester

AssemblageEd. de liens

µp

Programme objet

Carte d'interface

Descriptionhaut-niveau

al�atoires,fonctionnels,structurels.

GAPT

modules du prog. de test

¥¥

¥

FUTE-16

Figure 1.2 : la chaîne de test fonctionnel GAPT

II.3.2. Description du logiciel GAPT3

A partir d’une description compacte du circuit à tester, établie à partir du manuel utilisateur, lelogiciel GAPT permet la génération de programmes de test en langage assembleur (figure 1.3).Cette définition se fait dans un langage permettant une description “haut niveau” des différentséléments constituant le microprocesseur (le langage GAPT).

3On trouvera en annexe une partie du manuel utilisateur [Mar89]

Page 38: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 19 - Le Test Fonctionnel

Description dumicroprocesseur- architecture- jeu d'instruction

opérandesutilisateur

opérandesaléatoires

GAPT

programme detest en assembleur

mode de test

Figure 1.3 : fonctionnement du logiciel GAPT

Une description GAPT d’un microprocesseur contient toutes les informations nécessaires à lagénération d’un programme de test.Ce sont des informations sur :

- “l’architecture” du circuit (registres, groupe de registres, adressages ...),- le jeu d’instruction.

L’utilisateur se voit offrir la possibilité de définir des opérateurs et des opérandes ad hoc pourtester des instructions particulières, ou d’utiliser des opérandes aléatoires ou aléatoires parparties (parties fixes - parties aléatoires). Plusieurs modes de test permettent de s’adapter aumicroprocesseur sous test.Les programmes générés se présentent sous forme de concaténation de modules élémentaires dela forme :

- initialisation des registres internes ;- activation d’une instruction ;- observation des registres internes.

Lorsque l’on réalise un test à l’aide de GAPT, plusieurs modes de génération sont à ladisposition de l’utilisateur. Chacun de ces modes à une puissance et un domaine d’utilisationdifférent.

II.3.2.a Le mode conformitéLe test de la partie contrôle, qui active les fonctions du circuit (instructions) est réalisé en modeconformité.Dans ce mode tous les registres internes seront initialisés avant l’exécution de l’instruction, ettous les registres internes seront observés après. Ce mode, qui conduit à des programmes detaille très importante lorsque le nombre de registres internes augmente, est difficilementutilisable. Par contre, il présente un énorme avantage dans le cadre d’un diagnostic. En effet,chaque module élémentaire est totalement indépendant des autres modules. Il sera dans ce casplus aisé, lors d’une phase de diagnostic, de proposer des hypothèses de fautes, au vu desrésultats obtenus, et d’essayer de les confirmer par de nouveaux test (hypothèse aposteriori)[Abr82][Vel85].

Exemple du 68000instruction d’addition en format Word - adressage : indirect mémoire, registre données ;forme du module élémentaire de conformité :

Page 39: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 20 - Le Test Fonctionnel

MOVEA.L #H’B00A41CF,A7 MOVEA.L #H’92BCC411,A6 MOVEA.L #H’A031C9B8,A5 MOVEA.L #H’5E09D830,A4 initialisation de tous les registres d’adresses

avec

MOVEA.L #H’96BBD41A,A3 une valeur aléatoire

MOVEA.L #H’B0FD5B54,A2 MOVEA.L #H’994F285E,A1 LEA (ZDL).L,A0 initialisation du registre

source avec l’adresse

;

mémoire du 2ème opérande

MOVE.L #H’9A2341E2,D7 MOVE.L #H’FFA5A75C,D6 MOVE.L #H’0D37C4A6,D5 MOVE.L #H’E359B840,D4 initialisation de tous les registres

de données avec

MOVE.L #H’A68B94AA,D3 une valeur aléatoire

MOVE.L #H’9F4D0064,D2 MOVE.L #H’5A1FD5EE,D1 MOVE.L #H’00005555,D0 initialisation du registre source

avec la valeur

;

du 1er opérande (ici valeur déterministe)

MOVE #H’D321,CCR initialisation du registre code

condition

;

(valeur aléatoire)

ADD.W (A0),D0 instruction à

tester

MOVE SR,(ZDL+2).L observation du registre d’état

MOVE.L A7,(ZDL+4).L MOVE.L A6,(ZDL+8).L MOVE.L A5,(ZDL+12).L MOVE.L A4,(ZDL+16).L MOVE.L A3,(ZDL+20).L MOVE.L A2,(ZDL+24).L

Page 40: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 21 - Le Test Fonctionnel

MOVE.L A1,(ZDL+28).L MOVE.L A0,(ZDL+32).L MOVE.L D7,(ZDL+36).L observation de tous les

registres de données

MOVE.L D6,(ZDL+40).L et d’adresses

MOVE.L D5,(ZDL+44).L MOVE.L D4,(ZDL+48).L MOVE.L D3,(ZDL+52).L MOVE.L D2,(ZDL+56).L MOVE.L D1,(ZDL+60).L MOVE.L D0,(ZDL+64).L

total : 35 instructionstaille : 204 octets de programme et 68 octets de données ou de résultats

II.3.2.b Le mode de pseudo_conformitéUn mode de pseudo-conformité présentant la même puissance de détection que le test deconformité mais générant des programmes de taille inférieure est en fait employé pour le test dela partie contrôle.

Dans ce mode, le module élémentaire se présente sous la forme suivante :- observation de tous les registres source ou destination de l’instruction à tester,- initialisation des registres source,- activation de l’instruction.

Page 41: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 22 - Le Test Fonctionnel

Exemple du 68000Instruction d’addition en format Word - adressage : indirect mémoire, registre données ;forme du module élémentaire de pseudo-conformité :

MOVE SR,(ZDL+2).L observation des registres source ou

destination

MOVE.L A0,(ZDL+4).L de l’instruction

MOVE.L D0,(ZDL+8).L LEA (ZDL).L,A0 initialisation des registres

source de l’instruction

MOVE.L #H’00005555,D0 ADD.W (A0),D0 instruction à

tester

total : 6 instructionstaille : 32 octets de programme et 12 octets de données ou de résultats

Par ce biais on réduit donc le nombre de registres initialisés ou observés. L’observation d’uneerreur éventuelle se fera dans un module plus éloigné, lorsqu’un registre comportant une valeurerronée sera de nouveau observé.

Exemple du 68000 :

Soit une erreur d’addition qui ne se manifeste qu’avec le mode d’adressage indirect par

registre

MOVE SR,ZDL+96,L module comprenant l’instruction d’addition

MOVE.L A5,ZDL+98,L donnant un résultat faux

MOVE.L D6,ZDL+102,L

LEA ZDL+94,A5

MOVE.L #H’027378F2,D6

ADD.W (A5),D6 D6 contient une

valeur fausse

; ---------------------

MOVE SR,ZDL+108,L ensemble de modules testant d’autres

… …

configurations d’addition (sans se servir de D6)

… …

MOVE.L #H’ACDE92B1,D4

ADD.W D4,-3(A3),A0.W

; ---------------------

MOVE SR,(ZDL+156).L module dans lequel l’erreur sera visible

MOVE.L A2,(ZDL+158).L

Page 42: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 23 - Le Test Fonctionnel

MOVE.L D1,(ZDL+162).L

MOVE.L D6,(ZDL+166).L observation de D6 qui met en évidence

l’erreur

LEA (ZDL-1994).L,A2

MOVE.L #H’00001061,D1

MOVE.L #H’62D377D2,D6

ADD.W D6,-123(A2,D1.L) première instruction utilisant D6

; ---------------------

Le module manifestant l’erreur se situe plus ou moins loin en aval du module contenantl’instruction qui cause réellement l’erreur. Ceci fait que dans une phase de diagnostic, larecherche d’erreur est un peu plus délicate. Mais la grande flexibilité du logiciel GAPT permetune génération dans le mode conformité des instructions suspectes à partir de la mêmedescription de base.La seule possibilité de ne pas détecter une erreur est que le registre contenant la valeur erronéese trouve modifié intempestivement avant sa séquence d’observation, et que la modification luiredonne la valeur attendue.

II.3.2.c Le mode balayageLe test de la partie opérative, qui vérifie les différents blocs de la partie opérative (registres,opérateurs, connexions ...) se fera à l’aide d’un test de balayage. Dans ce cas le moduleélémentaire aura la forme suivante :

- initialisation des registres source de l’instruction ;- activation de l’instruction ;- observation des registres destination de l’instruction.

Exemple du 68000Instruction d’addition en format Word - adressage : indirect mémoire, registre données ;forme du module élémentaire de balayage :

LEA (ZDL).L,A0 initialisation des

registres source de l’instruction

MOVE.L #H’00005555,D0 ADD.W (A0),D0 instruction à

tester

MOVE SR,(ZDL+2).L observation des registres

destination de l’instruction

MOVE.L D0,(ZDL+4).L

total : 5 instructionstaille : 26 octets de programme et 8 octets de données ou de résultats

Ce type de test vérifie que les résultats des diverses fonctions sont corrects, mais ne vérifie pasque d’autres registres ne soient modifiés à tort. On se sert donc de ce test pour vérifier, parexemple, toutes les valeurs d’opérande possibles pour un branchement conditionnel lorsquel’on soupçonne une erreur au niveau d’un PLA de décodage de branchement.

Page 43: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 24 - Le Test Fonctionnel

La puissance de test de tels programmes provient de leur exhaustivité. Pour chaque instructionconsidérée, on peut générer toutes les combinaisons possibles de code opération, moded’adressage et registre avec des opérandes prédéterminés ou aléatoires. Sa principale qualité estégalement son principal défaut. L’exhaustivité entraîne une taille de programme qui, si elle resteacceptable dans le cas d’un processeur 8 bits (exemple M6800 : 5,5 Ko), devient complètementprohibitive dans le cas d’un processeur 32 bits (exemple M68000 : plus de 3 Mo, M68020estimé à plusieurs centaines de MegaOctets). C’est pourquoi, au vu des expérimentations, denombreuses améliorations ont été successivement apportées au logiciel GAPT afin de faire faceau problème de la taille, tout en essayant de conserver la puissance de détection.Pour réduire la taille des programmes générés et permettre ainsi de tester des microprocesseurstels que le 68020, la prise en compte de nouvelles primitives du langage de description,permettant de contrôler les itérations lors de la phase de génération du programme de test, a éténécessaire (tirage aléatoire de nom de registre ...).L’utilisation du langage assembleur comme langage cible du programme de test est égalementun avantage et un inconvénient :

- inconvénient car elle nécessite de disposer d’un assembleur (ou d’un cross assembleur)

pour le circuit à tester,

- avantage car elle permet une grande portabilité sur différentes machines de test. En outre,

la compréhension et leur utilisation dans le cadre de diagnostic est d’autant facilitée.

II.3.3. Description du matériel

Nous allons faire ici une description rapide des divers systèmes de test utilisés dans le systèmeGAPT.Indépendamment du coût ou de la sophistication des environnements de test développés, untesteur doit assurer deux fonctions :

- stimuler le circuit sous test,

- observer les réponses.L’observation des réponses se fait en observant toutes les sorties du circuit sous test. Par contreau niveau de l’acquisition des stimuli deux solutions se présentent :

- soit le circuit sous test est passif , et dans ce cas c’est le testeur qui porte dans sa mémoire

le programme de test et qui impose les valeurs d’entrée sur les broches adéquates du

circuit,

- soit le circuit sous test est actif et c’est lui qui va lire dans une mémoire son propre

programme de test.Un second critère de distinction entre les différents environnements de test est le type deréférence utilisé. Deux stratégies s’opposent : une comparaison avec des résultatsprédéterminés, ou une comparaison temps réel avec un circuit de référence.

Dans le système GAPT, le méthode employée dans les différents testeurs développés (FUTE8,TEMAC, FUTE16/32) est l’utilisation d’un système actif avec comparaison à des résultatsprédéfinis.

Page 44: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 25 - Le Test Fonctionnel

Ce système comporte trois avantages :

- la possibilité d’utiliser directement, lors du test, des programmes en langage

d’assemblage du microprocesseur cible avec comme seule transformation l’assemblage

et l’édition de lien de ces fichiers ;

- la possibilité d’appliquer de longues séquences de test, la seule limitation étant le

chargement en mémoire de test des programmes stockés en mémoire de masse (phase

qu’il est facile d’automatiser) ;

- la facilité du diagnostic dans la mesure ou l’on raisonne en langage d’assemblage et non

en binaire.

II.3.3.a Le testeur TEMACDécrit dans la littérature en [Bel84b], [Bel85] [Zia86]] nous en donnons un schéma de principedans la figure 1.4.

CONTRÔLE(ISBC 86/05)

bus adresses

bus données

bus contrôle

entréesasynchrones

circui tsous test sorties

INTERFACE

registressignature

zonesmémoire

dichotomie

contrôle

OBSERVATION

Mémoire Programme

MémoireSignal

STIMULATION

Mémoirede masse

Figure 1.4 : principe du testeur fonctionnel TEMAC.

Basé sur le principe “circuit sous test actif avec observation de tous les bus par signature”(données, adresses et contrôle), ce testeur permet d’obtenir un contrôle très fin desobservations. Ceci est réalisé grâce à l’emploi de registres à décalage rebouclés [Dav78],enregistrant une combinaison de leurs anciennes valeurs et des nouvelles portées par lesdifférents bus, et ce, chaque fois qu’elles sont valides. La comparaison des résultats se faisantpar rapport à des signatures de référence obtenues par exécution du même programme sur un ou

Page 45: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 26 - Le Test Fonctionnel

plusieurs circuits de référence. Les résultats de recherches sur l’efficacité de l’analyses designatures ont été présentés en [Cas91].Un système de localisation d’erreur (basé sur un principe dichotomique) permet de déterminerl’instruction qui a manifesté l’erreur. Ce qui est impossible au vu de la seule signature erronée.L’analyse de l’erreur est rendue plus aisée par la possibilité d’observer des échanges entre lecircuit sous test et la mémoire du testeur (mémoire pile, afficheurs ...).Deux types de programmes peuvent être employés en même temps :

- des instructions et des données stockées dans une mémoire non accessible en écriture

afin d’éviter les modifications de programme intempestive ;

- des signaux stockés dans une seconde mémoire et préparant l’activation parallèle de

signaux d’environnement externe (reset, halt, interruption...)[Bel84b] ou interne (VMA,

BG, DTACK...).

II.3.3.b Les testeurs FUTÉFamille de testeurs plus légers que TEMAC, les testeurs FUTÉ, dont le premier prototypeFUTE8, a été développé pour les circuits 8 bits [Vel82], sont maintenant opérationnels pour lescircuits 16 et 32 bits [Pro89][Kar92]. La figure 1.5 en donne le schéma de principe.

CPU(68010)

bus VME

Mémoire de test(RAM 1 Mo)

Contrôleurd'interface

PIO

CSTSystème hôte

Memoires de masse

Carte support

bus MEX(68020)(RS 232)

liaisons série

Mise en forme

des signaux (déport)

CST : circuit sous test

Figure 1.5 : principe du testeur fonctionnel FUTE16.Le testeur actuel FUTE16/32 est une version “pseudo-industrielle” bâtie autour d’un bus VME.Le circuit sous test exécute un programme stocké dans la mémoire du testeur, l’observation dessorties est réalisée via des écritures dans la même mémoire.La gestion de la mémoire est donc plus délicate, de même que les diagnostics en cas demodification du programme suite à l’occurrence d’une erreur (écriture intempestive,déséquencement...). Le seul moyen d’observation étant des écritures mémoire, les observationsdes bus adresses ou des signaux de contrôle ne pourront se faire que de manière indirecte.Ceci entraîne certaines limitations :

Page 46: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 27 - Le Test Fonctionnel

- les activités erronées ayant lieu en dehors des cycles d’écriture ne peuvent pas être

détectées directement.

- seule l’activation des signaux d’interruption ou de réinitialisation est possible.

Néanmoins, ce testeur est très largement utilisé notamment pour le test de circuitsprogrammables en environnement sévère [Vel87b][Pro89][Vel89] [Kar91].

Page 47: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 28 - Le Test Fonctionnel

II.4. Les défauts et leur modélisation

II.4.1. Les défauts physiques

On peut classer les défauts intervenant durant la phase de fabrication d’un circuits en deuxfamilles :

- Les défauts globaux (“global defects”) qui vont concerner une surface très large du

circuit et qui seront souvent répétitifs. Ils sont dus à des mauvaises manipulations des

plaquettes, à des défauts d’alignements des masques, à des gravures trop fortes ou trop

faibles, etc. Ces défauts peuvent être limités par une meilleure surveillance des processus

de fabrication et ils sont facilement identifiés pendant la fabrication.

- Les défauts ponctuels (“spot defects”) qui sont des défauts très localisés de petite taille ;

leur surface est comparable à celle d’un élément simple (transistor, contact,…) et leur

emplacement est aléatoire. Il sont dus à des perturbations locales du processus de

fabrication. Généralement ce sont de petites particules chimiques (gouttelettes) ou des

poussières en suspension dans l’air qui se déposent durant les diverses phases du

processus. Elles vont conduire à du matériau supplémentaire ou à une absence de

matériau dans une zone restreinte au sein de l’une des couches du circuit (conductrice,

semi-conductrice, isolante).

Dans la suite de ce travail, nous ne nous intéresserons qu’aux défauts ponctuels. De nombreuxtravaux de recherche ont montré que ce type de défauts étaient à l’origine de la plupart des fautesnon détectées par les programmes de tests fonctionnels (au sens comportemental ou structurel)[Mal87] [Kor90].Les manifestations électriques des défauts ponctuels peuvent être classées comme suit :

- Courts-circuits (“bridges”) occasionnés par du matériau conducteur ou semi-conducteur

supplémentaire dans des zones de conduction (courts-circuits horizontaux), ou par

l’absence de matériau isolant (courts-circuits verticaux).

- Coupures (“opens”) provoquées par l’absence de matériau conducteur ou semi-

conducteur dans des zones de conduction (coupures horizontales), ou par dépôt

supplémentaire de matériau isolant dans les zones de passage prévues dans les couches

isolantes (coupures verticales).

Page 48: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 29 - Le Test Fonctionnel

- Dispositifs parasites (“extra devices”) ; par exemple du Silicium polycristallin ou de la

diffusion supplémentaire peuvent créer un transistor parasite.

- Dégradation de performances des dispositifs existants (modification de la taille d’un

transistor, courant de fuite,…)La figure 1.6 donne des exemples des différentes catégories de défaut couramment citées[Tew91].

1

protrusion

intrusion

pinhole

break

bridge

pinspot

Dielectric

Métal

2

hillock

weak stepcoverage

3

Métal 1

Métal 2

Insulating film

Open contact

Figure 1.6 : défaut locaux résultant des processus de fabrication :

(1)- défauts horizontaux. (2)- défauts verticaux. (3)- défauts de contacts

A ces défauts, conséquences de problèmes durant la phase de fabrication d’un circuit, il fautajouter les défauts qui vont apparaître durant la vie du circuit. Ce sont des défauts dus à desphénomènes de corrosion ou d’électromigration par exemple. Les plus connus sont les défautsappelés sous le termes anglais de “gate oxide shorts”[Sod86][Hon91]. Ces courts-circuitspeuvent apparaître soit pendant la fabrication, soit durant la vie du circuit. Ils sont dus soit à desdéfauts dans l’oxyde de grille, soit à l’application d’un trop fort voltage au travers de l’oxyde degrille. Les divers courts-circuits possibles sont illustrés par la Figure 1.7.

SubstratSource Drain

GrilleOxyde

Figure 1.7 : types possibles de courts-circuits d’oxyde de grille.

II.4.2. Problèmes de modélisation.

Comme nous l’avons vu au paragraphe 1.2, le principe couramment employé pour évaluerl’efficacité d’un test est d’établir une liste de fautes abstraites traduisant le mieux possible, auniveau d’un modèle, les effets des fautes physiques au niveau du circuit ; puis pour chacune deces fautes déterminer la séquence d’activation nécessaire a leur mise en évidence par une erreur

Page 49: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 30 - Le Test Fonctionnel

visible aux sorties du circuit. L’efficacité du test est mesurée par la couverture de fautes dumodèle.

Il est de nos jours clairement admis que le modèle de collages simples à 0 ou à 1 ne peut pasremplir correctement son rôle dans les simulateurs de fautes et ce, pour deux raisons :

- tous les défauts ne peuvent pas être modéli sés par des fautes de collage simple ;

- la représentation des circuits sous forme de diagrammes logiques (ne prenant pas en

compte tout les aspects de la topologie) conduit à des impossibilités .

Ces deux affirmations ont été notamment mises en évidence en [Gal80].

Considérons la porte donnée figure 1.8, qui réalise la fonction z=((a+b).(c+d)+(e.f)). Si l’onétudie les deux courts-circuits notés 1 et 2, et les deux coupures notées 3 et 4, on constate que :- le court-circuit 1 peut être modélisé par un collage à 1 de l’entrée e ;

- la coupure 3 peut être modélisée par un collage à 0 de l’entrée e (ou de l’entrée f , ou des

deux) ;

- le court-circuit 2 et la coupure 4 ne peuvent pas être modélisés par un collage car ces

défauts entraînent une modification de la fonction réalisée par le circuit. Pour la même

raison, un court-circuit entre 2 sorties de 2 portes ne peut être modélisé par aucune faute

de collage.

a b e

d fc

z

VSS

VDD

4

3

2

1

Figure 1.8 : exemples de fautes possibles sur une porte logique.

Reprenons notre exemple, en considérant en plus le diagramme logique (figure 1.9 ).

Page 50: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 31 - Le Test Fonctionnel

a b e

d fc

z

VSS

VDD

2

1

a

b

c

de

f

Diagramme électrique Diagramme logique

Figure 1.9 : correspondance entre diagramme électrique et diagramme logique.

Aucune des connexions marquées d’une croix sur le diagramme électrique n’a de représentationsur le diagramme logique. De même aucune des connexions marquées d’une croix sur lediagramme logique n’a de réalité sur le modèle électrique.De la même façon, le court-circuit possible marqué 2 sur le diagramme électrique ne peut êtrereprésenté logiquement ; le court-circuit marqué 1 sur le diagramme logique n’a aucune réalitéphysique.En conclusion de cet exemple nous pouvons dire que sur des modèles logiques nous allons tester des fautes qui n’existent pas, alors que nous n’allons pas pouvoir représenter des fautes qui peuvent exister physiquement.

En [Mal87] sont rapportés les résultats de travaux de recherche sur la compréhension et lamodélisation de nombreux défauts ponctuels créés par addition ou absence de matériau dans unexemple de circuit. Ce qui suit reprend une partie des exemple développés dans ce travail afind’étayer les conclusions apportées.

Considérons la fonction booléenne simple suivante appelée F :z1 = (x̄ 1 • x̄ 2 + x̄ 3 + x4) • x5,z2 = x̄ 5,z3 = x̄ 4,z4 = x̄ 3,z5 = x̄ 2.

Le diagramme logique donné figure 1.10 en donne une implémentation minimale en portesNOR.

Page 51: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 32 - Le Test Fonctionnel

x1

x2

x3

x4

x5

z5 z4 z3 z2

z1

Figure 1.10 : schéma logique en portes NOR de la fonction booléenne F.

La figure 1.11 montre une implémentation en NMOS d’une partie de ce circuit.

z5 z3 z2z4

x2 x3 x4 x5

Aluminium

Déplétion

Si-Poly

Diffusion

Contact

Contact enterré

x1

Vss

Figure 1.11 : implantation NMOS d’une partie de la logique aléatoire de la fonction F.

Enfin le schéma électrique est donné par le diagramme suivant (figure 1.12) :

Page 52: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 33 - Le Test Fonctionnel

z5

x2

z4

x3

z3

x4

z2

x5

x1

z1

Vdd

Vss

Figure 1.12 : diagramme électrique de la partie de la fonction F implantée.

Ces trois représentations du même circuit sont différentes, et on peut constater que certainsdéfauts visibles au niveau logique n’auront pas de réalité au niveau électrique (par exemple lesdeux collages marqués d’une croix sur le schéma logique). Pour avoir une bonne corrélationentre les défauts physiques et les défauts logiques, la représentation du circuit au niveau logiquedoit être proche de l’implantation réelle.Cette remarque conduit à proposer le diagramme logique suivant (figure 1.13) :

x1

x2

x3 x4

x5

z5 z4 z3 z2

z1

Figure 1.13 : nouvelle représentation logique de la fonction F.

Considérons maintenant les deux défauts ponctuels marqués 1 et 2 sur le schéma del’implantation donné figure 1.14.

Page 53: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 34 - Le Test Fonctionnel

Le défaut 1 est une absence d’oxyde de grille qui va causer un court-circuit entre la grille dutransistor et la masse.Le défaut 2 est un dépôt supplémentaire de diffusion qui va induire un transistorsupplémentaire et un court-circuit avec la ligne d’alimentation.

z5 z3 z2z4

x2 x3 x4 x5

Aluminium

Déplétion

Si-Poly

Diffusion

Contact

Contact enterré

Figure 1.14 : implantation avec prise en compte de défauts

(1) dépôt supplémentaire de diffusion, (2) absence d’oxyde de grille.

Défaut 1 :Les diagrammes logiques et électriques de la fonction F en présence du défaut 1 sont donnésfigure 1.15.L’analyse montre que le défaut 1, peut être modélisé par deux collages simultanés, un collage à0 et un collage à 1.

Page 54: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 35 - Le Test Fonctionnel

z5

x2

z4

x3

z3

x4

z2

x5

x1

z1

Vdd

Vss

x1

x2

x3 x4

x5

z5 z4 z3 z2

z110

Figure 1.15 : schémas électriques et logiques de la fonction F en présence du défaut 1

Défaut 2 :Le dépôt supplémentaire de diffusion entraîne la création d’un transistor parasite connectant laligne d’alimentation et la ligne de masse, et en même temps court-circuite la source de l’un desdeux transistors de la seconde rangée avec la ligne d’alimentation.

En présence du défaut 2, la fonction obtenue est fortement modifiée. La figure 1.16 en donne lenouveau diagramme électrique.

z5

x2

z4

x3

z3

x4

z2

x5

x1

z1

Vdd

Vss

Page 55: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 36 - Le Test Fonctionnel

Figure 1.16 : diagramme électrique de la nouvelle fonction en présence du défaut 2.

De toutes ces expériences Maly tire les conclusions suivantes :

• Les fautes qui sont prises en compte à partir du niveau d’abstraction logique n’existeront

pas toutes dans le circuit réel.

• Les collages à 1 et les collages à 0 sont des fautes qui existent réellement dans les circuits

intégrés VLSI.

• Les fautes de collages multiples sont également présentes dans les circuits intégrés.

• Les fautes de court-circuit peuvent altérer la fonction logique réalisée par le circuit en

bouleversant sa topologie.

• Les transistors parasites et les courts-circuits de noeuds internes des portes peuvent

transformer profondément la fonction réalisée et ne peuvent pas être modélisés par les

modèles de fautes traditionnels.

Donc, l’application des techniques traditionnelles de modélisation de fautes, qui utilisent unereprésentation logique du circuit et des modèles de collages simples conduisent à des séquencesde test qui :

- seront utilisés pour détecter certaines fautes qui n’existent pas :

- ne détecteront pas certaines fautes qui existent ;

- seront utilisés de façon inefficace en ne tirant pas avantage des différentes probabilités

d’occurrence de diverses fautes et des combinaisons de fautes multiples.

Dans le cas de modèle fonctionnel la non représentativité des fautes modélisées par rapport auxfautes réelles a été prouvée [Mic82] [Vel88], ce qui rend totalement illusoire le fait de calculerune couverture par rapport à des hypothèses de fautes. L’évaluation de la couverture de collagesde la méthode proposée par Abraham et Thatte donnait, suivant ces auteurs, une couverture de96 % de fautes de collage par simulation sur un modèle au niveau portes logiques d’unmicroprocesseur 8 bits [Tha80]. L’étude réalisée en 1988 par Klug [Klu88] montre que cettemême méthode appliquée à un processeur de traitement du signal CMOS donne pour un modèlede collages 94 % pour la partie chemin de données et 44 % pour la partie contrôle avec unprogramme de 2300 instructions, développé en 3 hommes/mois. Dans le même article le testaléatoire est évalué et donne des résultats de 94 % pour la partie chemin de données et 64 %pour la partie contrôle et ce, pour un programme de 2500 instructions pseudo-aléatoires.D’autres évaluations de couverture de tests fonctionnels donnent des résultats avoisinant les 70%. Ces résultats étant obtenus pour des modèles de collages qui ne représentent qu’une faiblepartie des fautes réelles, notamment dans les circuits CMOS.

En [Gal80] les auteurs ont observés que, sur des échantillons de processeurs 4 bits défaillants,la grande majorité des fautes physiques étaient des coupures ou des courts-circuits. Cesrésultats ont été confirmés par les travaux décrits en [Fer88]. Dans cette publication, l’auteur faitpart de résultats de simulation de fautes sur deux types de circuits : compteurs et multiplieurs (4

Page 56: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 37 - Le Test Fonctionnel

x 4). Les chiffres montrent que près de 90 % des fautes peuvent être modélisées par descoupures ou des courts-circuits. On notera que ces expériences fixent la limite d’unemodélisation par collage simple à 0 ou à 1 à moins de 50 % des fautes injectées.

Page 57: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 38 - Le Test Fonctionnel

II.4.3. Injection de fautes

Un échantillon de circuits ayant des fautes connues, mélangés à des circuits réputés bons quipourraient constituer une base de mesure de l’efficacité réelle d’un test est pratiquementimpossible à obtenir. Le nombre de circuits défaillants devant être analysés afin de construire unéchantillon représentatif des fautes physiques possibles est trop important.

L’injection de fautes, c’est à dire l’introduction délibérée de fautes, peut être réalisée dans uncomposant selon deux méthodes dépendant du type de cible.Si la cible est un modèle simulant le comportement ou la structure d’un circuit, on parle desimulation de fautes.Si la cible est un prototype matériel ou le circuit lui-même, on parle d’injection physique defautes [Arl88].

Dans le domaine de la validation du matériel des systèmes informatiques, ces deux méthodessont souvent appliquées [Mor82][Sch86][Fin87][Arl90]. On notera cependant que l’on travaillegénéralement sur des prototypes logiciels et matériels des systèmes permettant d’injecterplusieurs types de fautes mais de façon non destructive. Les connexions entre les différentsmodules du système sont généralement remplacées par des dispositifs permettant d’imposer desvaleurs autres que la valeur attendue, simulant ainsi des erreurs dans les modules.Lorsqu’on travaille sur un circuit intégré, l’injection physique d’une faute est généralementdestructive et donc irréversible. On peut néanmoins noter les travaux de Gunneflo [Gun89][Kar91] qui injecte des fautes transitoires par le biais de bombardements avec des ions lourds.Cette méthode reste limitée de par la nature restreinte des fautes injectées (modifications des bitsdans des éléments de mémorisation4).

Si on admet que l’injection de fautes au niveau d’un modèle fonctionnel est très contestable, unesolution possible pour évaluer l’efficacité du test fonctionnel est l’injection de fautes physiquesdans le circuit cible lui-même.Outre les difficultés techniques posés par les dimensions réduites des éléments, l’injectionphysique de fautes dans un circuit intégré soulève un problème économique non négligeablelorsqu’un nombre important de fautes doit être considéré5.

La grande variété des défauts qui peuvent intervenir dans un processus de fabrication impliqueque le nombre de type de fautes injectables physiquement dans un circuit ou dans un modèle esttrop important. De plus il est clair que la reproduction physique de certains défauts est trèsdifficile voire impossible. En effet si on reprend l’exemple du transistor donné dans leparagraphe II.4.2, comme le montre la figure 1.17, on peut reproduire l’équivalent d’un court-circuit drain/grille ou d’un court-circuit source/grille mais le court-circuit grille/substrat estdifficilement reproductible.

4Ce phénomène est connu sous le nom de phénomène de S.E.U. ("Single Event Upset")

5Sur des modèles il n'est pas rare de simuler plus de 10.000 fautes ; le même travail sur des processeurs

coûtant 100 F pièces reviendrait à 1 MF, sans compter le temps passé à l'injection des fautes soit 1700 heures à

raison de 10 minutes par pièce (près de 10 mois à temps plein).

Page 58: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 1 - 39 - Le Test Fonctionnel

SubstratSource Drain

GrilleOxyde

Figure 1.17 : défauts équivalents aux courts-circuits d’oxyde de grille.

II.4.4. Conclusion

Toutes les remarques émises dans les paragraphes précédents nous ont incités à ne pas travaillersur une modèle de fautes et une représentation fonctionnelles du circuit, car ce qui est vrai auniveau logique le sera d’autant plus à un niveau d’abstraction supérieur.Au vu des résultats annoncés dans le paragraphe II.4.2, nous avons choisi de nous limiter, dansun premier temps, à l’injection physique de coupures puis de coupures et de courts-circuits.C’est la possibilité de travailler en collaboration avec la société Thomson qui nous à fait choisirle type de circuit étudié : les microprocesseurs 6800 et 68000.

Notre expérimentation décrite dans la partie suivante va donc être résumée comme suit :injection physique de coupures et de courts-circuits dans des circuits du commerce.

Chapitre 2

Expérimentation

Page 59: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 40 - Expérimentation

Page 60: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 41 - Expérimentation

Dans nos expériences nous nous intéressons uniquement aux circuits défectueux, parconséquent le schéma du principe général du test donné chapitre 1 est modifié. La figure 2.1illustre les nouvelles notions employées.

circuits refusés(f. paramétrique)

tri 1

tri 2

Cd

A

R

Rb

Rp

∆ circuits à défautsn'induisant aucune faute circuits

acceptés

circuits refusés(f. booléenne)

Figure 2.1 : le principe expérimental appliqué

Soit l’ensemble de Cd circuits tous défectueux par injection d’un défaut par circuit. Un premiertri sépare cet ensemble de Cd circuits en deux sous ensembles respectivement de A circuitsacceptés et de R circuits refusés. Un second tri sépare l’ensemble des R circuits refusés en deuxsous-ensembles suivant le type de faute induite par le défaut. Ces ensembles sont constituésrespectivement des Rp circuits refusés pour faute paramétrique et des Rb circuits refusés pourfaute booléenne. Un troisième tri intervient pour corriger les ensembles Cd et A en ôtant lescircuits portant un défaut qui n’induit aucune faute (noté ∆). Dans les notations ci-dessous cesont les valeurs corrigées de Cd et A qui seront prises en compte.Ce que nous allons mesurer sera appelé taux de couverture de fautes simples pour le rapportR / Cd et taux de couverture de fautes booléennes pour le rapport Rb / Cd - RpDans notre cas les hypothèses d’unicité des fautes et d’équiprobabilité sont garanties par laméthode expérimentale employée.

Par rapport à la figure 1.1 du chapitre 1, notre ensemble de départ de Cd circuits ne représentequ’un sous-ensemble des D circuits défectueux. Cette proportion est difficile à évaluer pour lesmêmes raisons que celles avancées plus tôt : nous ne connaissons pas la probabilitéd’apparition des défauts que nous créons. Nous ne pouvons donc pas évaluer le nombre D decircuits défectueux (et donc le nombre C de circuits bons et défectueux) qu’il faudrait en faitconsidérer pour que notre ensemble de départ soit inclus dans un ensemble réellement obtenu àla sortie d’une chaîne de fabrication.Ce que nous avons cherché à faire, c’est de se doter d’un échantillon de quelque centaines depièces, présentant un type de défaut reconnu, afin d’obtenir des valeurs concrètes (pour tel outel rapport…). Ceci aurait probablement nécessité la fabrication de plusieurs millions de piècespour en obtenir un ensemble de taille similaire par les voies du hasard.

Trois expériences successives ont eu lieu.Dans la première expérience nous avons voulu valider la méthode d’injection de défauts etcomparer différentes méthodes de tests. Nous avons travaillé sur le microprocesseur 8 bits 6800et ceci pour deux raisons : d’abord parce qu’il est simple, ensuite parce que nous pouvionsdisposer de plusieurs programmes de test d’origines différentes, notamment des programmes detest d’un fabricant.Dans la seconde expérience, nous avons voulu confirmer les résultats obtenus sur unprocesseur simple, en nous intéressant à un processeur 16 bits, donc de complexité supérieure.Nous avons choisi le 68000 car nous pouvions là encore bénéficier d’aide extérieure poureffectuer les tests du fabricant.

Page 61: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 42 - Expérimentation

La troisième expérience a également été menée autour du 68000. Le but recherché étant icil’extension des défauts aux courts-circuits, afin de couvrir un ensemble de fautes représentatif.Des mesures sur la perte d’efficacité du test fonctionnel par réduction de la taille desprogrammes, déjà esquissées dans la phase précédente, ont été effectuées ici.

Page 62: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 43 - Expérimentation

I. L’INJECTION PHYSIQUE DE DEFAUTS

La solution que nous avons adoptée pour ces expérimentations a été de nous servir d’unéquipement laser développé pour réparer ou modifier des circuits pendant leur phase deconception6 .L’équipement employé est composé de deux systèmes centrés autour d’un faisceau laser àArgon :

- Le premier est un laser de découpe qui utilise un faisceau laser focalisé sur une surface

ponctuelle d’environ 1 micron. Un faisceau laser de 0,4 W coupe localement des lignes

d’aluminium avec une puissance de 2 watts. Une coupure sera significative seulement si

la résistance résultante est supérieure à 10 KOhm [Auv86].

- Le second équipement est un système laser à déposition qui utilise également un faisceau

laser Argon focalisé. Le circuit, placé dans un environnement gazeux adéquat, est

localement chauffé par le laser, et les molécules gazeuses environnantes se décomposent

sur le point chaud en laissant sur place des atomes métalliques. Ceux-ci forment un

dépôt métallique conducteur (nickel dans notre cas) placé entre 2 lignes d’aluminium,

réalisant ainsi un court-circuit électrique [Auv91].

I.1. Le laser de découpe

I.1.1. Principe

La figure 2.2 donne le schéma de principe du laser de découpe.

Le laser est couplé à une station de travail, sur laquelle un logiciel spécifique permet lamanipulation du faisceau grâce à une surveillance vidéo. Les opérations de cadrage de la zone àdécouper, de choix de grossissement par zooms successifs, de correction de l’alignement ducircuit et de déclenchement du faisceau laser se font directement à partir de la station. Chaquemouvement au niveau de la console est répercuté au niveau des tablettes de réglages X, Y, Z dumicroscope optique ; chaque mouvement du zoom déclenche un changement d’objectif réalisantainsi une focalisation de plus en plus importante du faisceau laser. La commande de découpedéclenche l’allumage du faisceau dont la puissance doit être préalablement réglée en fonction dumatériau à couper (environ 0,4 W pour le Silicium polycristallin et 2 W pour l’aluminium).

6Matériel développé au CNET CNS par G. Auvert

Page 63: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 44 - Expérimentation

Figure 2.2 : schéma de la partie optique du laser à découpe.

Les figures 2.3 et 2.4 montrent le résultat de coupures d’une ligne d’aluminium réalisée avec unobjectif de grossissement 50 pour la découpe de gauche (0,8 µm) et un objectif degrossissement 40 pour la découpe de droite (1 µm).La figure 2.3 est une photographie prise au microscope optique montrant ce que l’on voit àl’aide du moniteur vidéo couplé au laser. La figure 2.4 est une vue au microscope électronique àbalayage des 2 mêmes coupures.

Page 64: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 45 - Expérimentation

Figure 2.3 : coupures vues au microscope optique.

(champs de 85 microns × 75 microns)

Figure 2.4 : coupures vues au microscope électronique à balayage.

(largeur 0,8 µm à gauche, objectif 50 × - largeur 1 µm à droite objectif 40 ×)

Un système de déplacement en X, Y précis au 1/10 de micron permet de placer le faisceau laserà l’endroit désiré en déplacement relatif par rapport à une origine. Une correction d’angle θpermet de contrôler l’alignement des axes X, Y avant déplacement.

I.1.2. Mise en oeuvre

Nous pouvons travailler soit sur des circuits encapsulés, soit sur une plaquette complète.Dans le cas de circuits encapsulés, après mise en place sur la platine du microscope, chaquecircuit cible doit subir les différentes phases de correction d’angle, déplacement, choixd’objectif,… avant la découpe proprement dite. Cette procédure doit être répétée entièrement àchaque fois que l’on change de pièce.Si on travaille sur une plaquette complète, une procédure automatique permet, après calcul desdéplacements de base nécessaires, de passer directement d’une puce à la suivante soit endéplacement latéral, soit en déplacement horizontal.Dans ce cas le réglage du θ d’alignement se fait une seule fois sur l’ensemble de la plaquette,seule une correction minime de définition d’origine est nécessaire pour chaque circuit de laplaquette.

I.2. Le laser à déposition

Page 65: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 46 - Expérimentation

I.2.1. Principe

La figure 2.5 ci-dessous donne le schéma de principe du laser à déposition. Comme dans le casdu laser à découpe celui-ci est relié a une station de travail qui permet de contrôler par le biaisd’une vidéo, les déplacements X, Y, Z, l’angle θ d’alignement et les calibres d’objectifs. Deplus, ce système nécessitant de travailler en ambiance gazeuse particulière, un système depompage et d’injection de gaz est nécessaire.

Chambre chimique

Déplacements X, Y, Z, θ

Quartz épais

Quartz mince

Lentille defocalisation

SubstratSilicium

Caméra Ecranvidéo

LampeLaserArgon

Gaz inerte

Gaz Réactant(Ni O2)

Figure 2.5 : le laser à déposition

Un vide assez poussé (10 -3 millibars) doit être réalisé dans la chambre où a été déposé le circuità traiter, avant d’injecter un gaz réactant (NiO2) sous une pression adequate (2 millibars). Lapremière chambre baignant elle même dans une athmosphère spéciale composée d’un gaz inerte.C’est une procédure assez longue qui nécessite également un pompage et une évacuation desvapeurs avant de revenir à un état normal pour retirer le circuit. Chaque opération de ce typeprend environ une demi-journée.

La reproduction de photographie (figure 2.6) d’une vue au microscope électronique à balayagemontre la connexion entre une piste d’aluminium et un contact.

Page 66: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 47 - Expérimentation

Figure 2.6 : dépôt de nickel entre une connexion et un contact.

vue au microscope électronique à balayage

I.2.2. Mise en oeuvre

Pour réaliser un court-circuit entre deux éléments d’un circuit il faut donc, en plus de laprocédure d’alignement, déplacement et choix d’objectif, mettre en branle toute un ensemble demécanismes de pompage, d’injection et de vidange des différents gaz. Sachant que l’on ne peutintroduire qu’un maximum de 4 à 5 circuits encapsulés dans la chambre centrale il estdifficilement envisageable de traiter ainsi un grand nombre de circuits.Comme pour le laser à découpe, il est plus simple de travailler sur des plaquettes complètes, unsystème automatique de gestion de plaquette permettant de passer d’une puce à l’autre endéplacement horizontal ou vertical.

Remarques :

• Afin de déposer le nickel au niveau de l’aluminium il est nécessaire d’opérer sur des

circuits dépassivés. Cette opération peut s’avérer délicate si on ne dispose pas des

informations sur la composition exacte du dépôt de passivation et de son épaisseur afin

de choisir le produit décapant adéquat et de calculer finement le temps de trempage dans

la solution.

Page 67: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 48 - Expérimentation

• L’immersion prolongée d’un circuit dans le gaz réactant peut lui être nocif voir fatal en

créant des courants de fuite importants ; donc en cas de travail sur plaquette, il est

nécessaire d’agir rapidement afin d’éviter au maximum cet inconvénient.

I.3. Expériences réalisées

Dans les deux premières expériences réalisées, décrites ci-après, seul le laser de découpe a étéutilisé. Les circuits testés étaient encapsulés.Dans la troisième campagne, les expériences ont pu être réalisées sur des plaquettes entièresdépassivées. Les deux types de laser ont été employés.

Page 68: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 49 - Expérimentation

II. INJECTION DE COUPURES DANS LE

MICROPROCESSEUR 6800

II.1. Approche expérimentale

Dans cette expérience, notre but a été de comparer objectivement différentes méthodes de test enles appliquant à des circuits réels. Les résultats obtenus ont été publiés en [Mar90]Afin de ne pas se laisser guider par certaines hypothèses liées à la nature de la faute injectée ou àson emplacement, qui auraient pu influencer notre jugement nous avons choisi d’injecteraléatoirement des défauts sur la surface du circuit. Ceux-ci ont été créés par coupure de pistesd’aluminium ou de silicium polycristallin, à l’aide du laser à découpe décrit dans le paragrapheprécédent.Un couple X, Y de coordonnées est tiré au hasard par le biais d’un générateur aléatoire denombres entiers.La démarche choisie à été de couper la piste la plus proche des coordonnées aléatoires,exception faite des gros rails d’alimentation dont la probabilité de coupure accidentelle n’est pastrès élevée vu leur taille et dont les effets seraient sûrement importants. De plus, techniquementleur découpe n’est pas facile à réaliser de façon sûre et efficace.

Nous avons choisi également de tester ces pièces endommagées par plusieurs programmes detest d’origines différentes :

• des tests fonctionnels obtenus par le système GAPT, mais également un test ad hoc et

un test aléatoire ;

• un test fabricant mêlant le paramétrique et le fonctionnel.Afin d’obtenir un éventail plus large de mesures, nous avons essayé, chaque fois que cela étaitpossible, de réaliser ces tests sur plusieurs équipements de test différents.

II.2. Les méthodes de test évaluées

Quatre programmes de test ont été appliquées : un test aléatoire, un test fonctionnel ad hoc, untest fonctionnel systématique et un test de fin de fabrication. Un cinquième test composé dequelques instructions, dit test minimal, a également été utilisé.

II.2.1. Le test aléatoire

Nous avons utilisé la séquence de test et le matériel développés par Fedi et David [Fed84] pourle microprocesseur 6800.Dans ce test, des séquences d’entrées générées aléatoirement sont appliquées à un circuit soustest et à un circuit de référence, leurs sorties respectives étant comparées.Par opposition aux méthodes de test déterministe, le problème n’est pas de trouver la séquencede test mais d’en déterminer sa longueur. Ce calcul est réalisé à partir d’une méthodeprobabiliste de pire cas. La longueur du test à appliquer sera fonction de la probabilité dedétecter la faute la plus difficile f.

Page 69: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 50 - Expérimentation

La longueur du test N est dérivée de l’équation suivante :N = log QD/log(1-P(f))

où N représente la borne maximale de la longueur de la séquence aléatoire nécessaire pourdétecter la faute f avec une probabilité donnée de 1-QD (QD = 10-3 est la valeur généralementadmise).P(f) est la probabilité moyenne de détection de la faute f par chacune des instructions sachantque f est présente. P(f) sera donc déterminée par une analyse du jeu d’instruction.

Le problème majeur de cette méthode est bien entendu ce calcul. Pour le réaliser les auteurs ontutilisé le modèle de fautes fonctionnelle et le S-graph définis par Abraham et Thatte.La séquence de test aléatoire est composée de plus de 6 x 106 instructions (pour QD = 10-3) etnécessite 22 secondes pour s’exécuter sur le testeur aléatoire.

II.2.2. Test ad hoc

Nous nous sommes servis comme test ad hoc d’un test développé par l’université de Dijon[Mil87] pour tester des cartes à base de 6800 lors d’expériences d’irradiation réalisées encollaboration avec le C.E.A..Ce programme est composé de 9 modules vérifiant chacun un sous-ensemble des instructionsdu 6800. Son principe est basé sur le principe dit de “self test” proposé en [Hun84]. Le mêmecalcul (manipulation de données, transfert de données) est réalisé par au moins deux voiesdifférentes ; les différents résultats sont comparés par une instruction adéquate. Si unedifférence intervient, un branchement conditionnel déroute le programme sur une procédured’impression de l’erreur. Chaque interruption est activée et vérifiée une fois durant le test. Ceprogramme, d’une taille de 1400 octets, active en fait près de 4000 motifs du fait desnombreuses boucles qu’il possède.

II.2.3. Test systématique

Le test fonctionnel systématique du 6800 a été généré à l’aide du logiciel GAPT.Chaque instruction (code-opération ? mode d’adressage) a été générée en utilisant le modepseudo-conformité (cf. chapitre précédent), les modules élémentaires obtenus étant donc de laforme :

- observation de tous les registres source ou destination de l’instruction,

- initialisation des registres source,

- activation de l’instruction à tester.

Ce mode nous a permis de réduire la longueur du programme de test à 5 500 octets.Les opérandes de test employés étaient aléatoires, sauf pour certains tests particuliers, commeles branchements conditionnels, qui étaient testés avec des valeur booléennes rendant lacondition de test vraie ou fausse par exemple. Chaque signal asynchrone est activé une foisdurant le test (activation d’un seul signal à la fois).

Page 70: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 51 - Expérimentation

II.2.4. Le test fabricant

Le test employé7 est le test standard Motorola 6800 auquel ont été ajoutés des motifs de testspécifiques dus aux modifications apportées par les changements de technologies ou lescorrections d’erreurs après des retours clients dans la phase de jeunesse du microprocesseur.Ce programme représente 7120 motifs de 40 bits.

II.2.5. Le test minimal

Ce test, composé seulement de quelques instructions, a été conçu dans le but d’obtenir desinformations sur le nombre de défauts créés qui pouvaient être détectés de façon triviale.

II.3. Les équipements de test

Les différents programmes de test obtenus ont été appliqués en utilisant trois typesd’équipements de test. Chaque fois que les combinaisons “type de test”, “type de machine”étaient possibles, elles ont été employées.

II.3.1. Un testeur “aléatoire”

Un générateur pseudo-aléatoire de motifs de test envoie des codes-opération valides et desopérandes de données (données ou adresse) au microprocesseur 6800 sous test. En fait legénérateur adresse aléatoirement dans des tables une instruction valide pour le 6800. Les entréesasynchrones (interruption, halt reset, contrôle trois états ...) sont également contrôlés par legénérateur. Des poids différents sont affectés aux diverses composantes d’un vecteur d’entrée(par exemple, une interruption ne sera pas aussi fréquente qu’une instruction).Les sorties sont compactées par des registres de signature, leurs valeurs sont comparéesplusieurs fois aux valeurs de référence durant l’exécution de la séquence pseudo-aléatoire. Lesvaleurs de référence sont obtenues par application de la même séquence pseudo-aléatoire à uncircuit réputé bon.Ce prototype de testeur développé par David et al [Fed84] nous a permis de réaliser cette partiede l’expérimentation. Les séquences de test aléatoire n’ont pu être utilisée que sur ce matériel.

II.3.2. Des testeurs “fonctionnels”

Dans les diverses expériences que nous avons menées, les testeurs fonctionnels développés aulaboratoire ont été employés. Pour les expériences autour du 6800 les testeurs FUTE et TEMACont été utilisés.

II.3.2.a FUTE8Ses caractéristiques sont : l’exécution d’un programme de test rangé dans la mémoire RAM dutesteur, avec ses opérandes propres, et l’observation des résultats par écriture des valeurs

7Ce test a pu être réalisé grâce à la collaboration de la société Thomson qui s'est servie de son équipement

de test (Sentry 6).

Page 71: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 52 - Expérimentation

obtenues directement dans la même mémoire après l’exécution de chaque instruction. Un teltesteur ne peut supporter que des tests booléens, et seules des fautes de type booléen conduisantà une mauvaise écriture mémoire peuvent être détectées. Il est possible d’activer les signauxasynchrones par le biais de circuits périphériques sous le contrôle du microprocesseur sous test.

II.3.2.b TEMACLe même principe que précédemment est utilisé par le circuit sous test, c’est-à-dire l’exécutiond’un programme stocké en RAM , mais les résultats sont compactés par signature à chaquecycle du processeur. Les séquences de test sont de type booléen. Les signaux asynchrones sontactivés séparément les uns des autres pendant l’exécution du programme.

Page 72: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 53 - Expérimentation

II.3.3. Les testeurs classiques

Le test fabricant a été exécuté sur un testeur Sentry 20 en utilisant toutes les capacités du testeur,c’est-à-dire que des tests paramétriques, dynamiques et booléens ont été réalisés. Seul le testfabricant a été exécuté sur ce testeur. Un second testeur de ce type a néanmoins été utilisé avecles autres programmes de test. Il s’agit d’un testeur Genrad 125 utilisant uniquement le testbooléen. Un traducteur spécifique a été développé afin d’adapter les programmes de test auformat du testeur.Le test systématique et le test ad hoc ont été appliqués sur tous les testeurs mis a part le testeuraléatoire.

II.4. Résultats obtenus

75 circuits MC6800 bons, c’est-à-dire ayant passé avec succès le test du fabricant, ont ététraités. Chaque circuit a reçu une coupure dans une connexion d’aluminium ou de siliciumpolycristallin.Le tableau 1 donne le nombre de circuits acceptés, et la couverture vis à vis d’une faute simplepour chaque circuit.

Méthode de test Type de testeur Nombre de circuits

détectés bons

(sur 75)

Couverture Numéro des circuits détectés bons

Minimal FUTE8 30 60 %

FUTE8 12 84 % 10, 14, 15, 19, 20, 32, 41, 50,

64, 67, 75

Ad hoc TEMAC 11 85,3 % 10, 14, 15, 19, 20, 32, 41, 50,

64, 67, 75

GR 125 8 89,3 % 10, 14, 20, 32, 41, 50, 64, 67

FUTE8 12 84 % 10, 14, 15, 19, 20, 32, 41, 50,

64, 67, 75

Systématique TEMAC 10 86,7 % 10, 14, 15, 19, 20, 32, 41, 64,

67, 75

GR 125 7 90,7 % 10, 14, 15, 20, 42, 64, 67

Aléatoire Aléatoire 5 93,3 % 14, 15, 19, 64, 75

Fabricant Sentry 6 4 94,7 % 10, 19, 64, 75

Page 73: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 54 - Expérimentation

Tableau 1 : résultats des différents tests du 6800.

II.4.1. Commentaires

Un seul circuit a passé avec succès tous les tests : le circuit n°64Les deux méthodes fonctionnelles, la méthode systématique et la méthode ad hoc,

donnent quasiment le même résultat, avec un léger avantage au test systématique. Onremarquera néanmoins qu’il n’y a pas parfaite inclusion des résultats. En effet, pour le testdonnant le meilleur résultat pour chacun d’eux sur le Genrad 125, en plus de l’ensemblecommun 10, 14, 20, 41, 64, 67, le test systématique laisse passer le circuit n°15 détecté fautifpar le test ad hoc, alors que celui-ci laisse passer les circuits n°32 et 50.

La qualité du test dépend du testeur sur lequel il a été exécuté. Les meilleurs résultats étantobtenus sur les testeurs du commerce qui permettent l’observation de toutes les sorties, les plusmauvais au niveau du testeur FUTE8 qui ne détecte que les erreurs booléennes.

II.4.2. Analyse des résultats

Afin de pouvoir évaluer uniquement la couverture de fautes de type booléen, nous avonsexclus les circuits dans lesquels le défaut créé s’est manifesté seulement par des mesuresparamétriques ou dynamiques sur les testeurs classiques. Les circuits n°14, 15, 19, 32 et 75 ontdonc été retirés de la liste.

Seuls ont été conservés les 69 circuits présentant une faute booléenne avec au moins uneméthode de test. Les meilleurs résultats obtenus sur l’ensemble des testeurs sont retenus. Letableau 2 résume cette analyse.

Méthode de test Nbre de circuits acceptés

(sur 69)

Couverture de faute fonctionnelle N° des circuits acceptés

Minimal 24 65,2 %

Ad hoc 5 92,7 % 10, 20, 41, 50, 67

Systématique 4 94,2 % 10, 20, 41, 67

Aléatoire 0 100 %

Fabricant 1 98,6 % 10

Tableau 2 : résultats du test pour les défauts de type booléens.

Les résultats obtenus représentent en fait une borne supérieure, puisque rien ne prouveque le circuit 64 ne porte pas de défaut de type booléen. Aucune analyse complémentaire n’estvenue alors pour confirmer ou infirmer l’hypothèse d’une mauvaise coupure ou d’une erreur demanipulation.

Les résultats des deux tests fonctionnels (systématique et ad hoc) sont proches.Seul le test aléatoire détecte 100 % des circuits défectueux, le test fabricant laissant passer

le circuit n°10.L’analyse des séquences de test aléatoire montre que dans certains cas plus de 80 000

instructions sont nécessaires pour mettre en évidence la faute. En effet, les circuits 3, 10 et 63nécessitent un nombre d’instructions compris entre 80 000 et 250 000 pour être détectésfautifs. Nous ne pouvons malheureusement pas être plus précis, l’observation des résultatscompactés ne se faisant que périodiquement.

Page 74: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 55 - Expérimentation

Le circuit 67 nécessite quant à lui plus de 250 000 instructions. Ceci va à l’encontre desrésultats présentés par David et al [Fed84] ; dans cet article les résultats d’expériences,effectuées sur un lot de 3000 microprocesseurs 6800 supposés défectueux, donnaient unmaximum de 80 000 vecteurs pour détecter toutes les fautes.

Lorsque l’on reporte sur une courbe les résultats obtenus on constate que nous obtenonsun tracé classique d’augmentation de la couverture de test avec le nombre de motifs appliqués,au moins pour les tests de type fonctionnel. Le test fabricant est nettement en dehors de cettecoupe laissant sous entendre une meilleure optimisation (figure 2.7).

100

taille programmeen octets (log)

taux de couverturede fautesimple en %

90

80

70

60

10 100 1K 10K 100K 1M 10M

aléatoire

fabricant

systématiquead-hoc

minimal

Figure 2.7 : taux de couverture en fonction de la taille des programmes.

II.5. Analyse des circuits présentants des différences pour les

diverses méthodes

Les trois circuits 20, 41 et 67 détectés fautifs par le test aléatoire et par le test fabricant, etconsidérés bons par les tests fonctionnels systématiques et ad hoc ont été analysés.

Les vecteurs du test fabricant mettant en cause ces circuits ont été décompilés. Lesrésultats obtenus montrent que, pour chacun d’entre eux, une combinaison de signauxasynchrones particulière est nécessaire à la détection de la faute. Les vecteurs du test aléatoiremettant en évidence les fautes n’ont pas pu être analysés puisque les résultats sont observéscompactés périodiquement. Il est par conséquent impossible de trouver le vecteur responsable.

• Pour le circuit n°20 la séquence détectant la faute nécessite l’activation simultanée de

IRQ, NMI et HALT.

• Pour le circuit n°41, la détection a lieu quand IRQ et HALT sont activés simultanément

pendant une instruction de type WAIT suivie de l’instruction CLI (clear interrupt mask).

• Pour le circuit n°67, l’erreur apparaît lorsque IRQ et HALT sont activés ensemble, une

adresse fausse étant alors émise.

Page 75: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 56 - Expérimentation

II.6. Discussion

Les chiffres obtenus doivent être considérés seulement que comme un ordre de grandeur. Eneffet, les pourcentages obtenus sur un nombre réduits de pièces sont faussés, car dans notre casun circuit représente 1,4 %.Néanmoins, nous pouvons tirer certaines conclusions.

• Les deux tests fonctionnels déterministes vérifient le jeu d’instruction. Par contre, au niveaudu test des signaux, il y a une grande lacune qui peut difficilement être comblée.De même que l’on ne peut pas envisager de tester tous les couples d’instructions afin de détecterles problèmes de séquencement, il est impensable de tester toutes les combinaisons possibles designaux (combinaisons à 2, 3 ou plus ?) avec chacun des codes-opération. Seule uneconnaissance détaillée du circuit comme dans le cas du test fabricant, ou un tirage au hasardcomme dans le cas du test aléatoire, peuvent aboutir à une solution.Cette remarque peut être étendue aux fautes dites “data dépendantes”, c’est à dire aux fautes quine sont détectables qu’en présence d’une combinaison de données particulières. Dans ce cas,seul le test aléatoire semble pouvoir donner des résultats. Pour les autres on peut espérer trouverdes opérandes permettant de vérifier complètement chaque opérateur, mais qu’en sera-t-il descombinaisons d’opérandes ?

• Le test fabricant est très efficace pour un produit stable comme le 6800. Il tire avantage detoutes les connaissances acquises durant la longue vie du produit.

• Le test aléatoire donne le meilleur résultat dans cette expérience, mais il faut néanmoinsapporter quelques remarques. La séquence de test est très longue (6,5 x 106 instructions) pourun circuit ne présentant qu’une faible complexité et ce test nécessite un testeur particulier. Si onse reporte aux chiffres du tableau 1 on voit que ce test souffre également de ce que le testeur neconcerne que le fautes booléennes. Un des avantages majeurs qu’il possède sur les testsfonctionnels déterministes est sa capacité à tester les signaux externes.Ses principaux inconvénients sont donc :

- la longueur du programme de test mais cela n’est pas trop pénalisant car le programme

n’est pas stocké, mais généré au moment même de l’application du test. Cela peut

néanmoins le devenir si la longueur du test s’accroît énormément.

- la nécessité de définir un nouveau testeur pour chaque processeur, ou du moins si

l’existence d’un testeur aléatoire universel est réaliste, de se donner la possibilité de

filtrer les codes invalides différents pour chaque processeur. Il est évident que s’il est

possible de construire des tables d’instructions valides pour le 6800, cela risque fort

d’être irréalisable pour un 68000 voir un 68020. La complexité augmentant encore

avec ce dernier exemple puisque la taille même de l’instruction (sans ses extensions

possibles) va varier suivant son type ; elle peut en effet, être codée sur 1 ou 2 mots de

16 bits. De même, la validité des opérandes (leur taille, leur nature dans certains cas

lorsqu’il s’agit d’adressage en particulier) va dépendre de l’instruction. Il devient assez

difficile donc, dans ce cas, d’imaginer un système similaire.

Page 76: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 57 - Expérimentation

En [Jac90], il est montré que la longueur de la séquence de test aléatoire peut être divisée par 10si la probabilité d’occurrence des fautes est prise en compte.

Page 77: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 58 - Expérimentation

III. INJECTION DE COUPURES DANS LE

MICROPROCESSEUR 68000

Les résultats encourageants de l’expérience ont été immédiatement confirmés par un premieressai de faisabilité sur des microprocesseurs 68000 [Mar90].Une faute simple a été injectée dans un premier jeu de 60 microprocesseurs. Les résultatsobtenus sont donnés dans le tableau 3.Malheureusement pour cette expérience, et toutes celles qui vont suivre pour le 68000, nous nedisposons pas de testeur aléatoire. Les seules comparaisons possibles vont avoir lieu entre lestests systématiques et le test fabricant.

Type de test Circuits déclaré bons (sur 60) Couverture de faute simple

fabricant 2 97,7 %

Systématique 9 85 %

Tableau 3 : résultats des tests pour l’injection d’une faute simple sur des 68000.

Les chiffres obtenus montrent une baisse du taux de couverture pour le test systématique (85%au lieu de 94%) et pour le test fabricant (97% au lieu de 98%) par rapport au 6800. Le faiblenombre de pièces utilisé peut en partie expliquer cet écart, une pièce représentant alors 1,5%.Néanmoins l’ordre de grandeur est intéressant puisque l’on est assez loin des prévisionspessimistes sur l’efficacité du test fonctionnel [Klu88] qui donnent des valeurs de l’ordre de70%.L’analyse des circuits acceptés s’est avéré très difficile. Sur l’ensemble des circuits déclarésfautifs par le test fabricant et déclarés bons par le test systématique, 6 ont été détectés par le testde la ROM de microprogramme (nanoROM). Ce type de test, inapplicable par un utilisateurconsiste à tester séparément la nanoROM et son environnement. Une entrée du circuit est portéeà une valeur particulière permettant alors d’effectuer ces opérations de lecture/écriture. Onremarquera que le mécanisme de décodage des codes invalides est testé par ce biais.Il est à ce niveau difficile de savoir si les fautes détectées ont réellement ou pas une influence surle fonctionnement “normal” du circuit.

Le but de l’expérimentation suivante était de confirmer ces premières valeurs obtenues etd’obtenir un échantillon plus conséquent de circuits traités du même type afin d’affiner lesrésultats quant à l’efficacité du test fonctionnel.

III.1. Buts de l’expérience

Les résultats obtenus lors du premier essai de faisabilité sur le 68000, donnait un taux decouverture de faute simple pour un test fonctionnel respectivement de aux alentours de 85 % (88% si on prend le test fabricant comme référence), alors que pour l’expérience sur le 6800 cetaux était d’environ 90 % (95 % avec le test fabricant comme référence). Il était intéressant à ceniveau de chercher à savoir si cette baisse devait être mis sur le compte de l’imprécision descalculs ou sur celui d’une réelle diminution d’efficacité du à l’accroissement en complexité ducircuit cible.Le diagnostic de certaines fautes s’étant révélé assez aisé sur ce produit et le fait que des circuitspassaient le test fabricant dans l’expérience précédente, nous laissait entrevoir l’espoir dedétecter non pas plus de circuits que celui-ci mais peut être quelques circuits non vus fautifs parcelui-ci.

Page 78: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 59 - Expérimentation

Le principal reproche que l’on fait au test systématique est sa longueur. Nous avons dans cetteseconde expérience tenté de réduire la taille des programmes de test générés par GAPT sansperte d’efficacité. La vérification de cette hypothèse est le second but important de cetteexpérience.Les résultats obtenus dans cette expérience ont été publiés en [Mar91a][Mar91b].

Page 79: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 60 - Expérimentation

III.2. Mise en oeuvre

Pour réaliser cette deuxième expérience nous avons réuni un lot de processeurs 68000encapsulés déclarés bons après le test fabricant.

III.2.1. L’injection de défauts

Le matériel utilisé pour l’injection de défauts est le même que pour la première expérience, àsavoir le laser de découpe. Les circuits étant encapsulés il n’a pas été possible d’envisagerd’injecter des courts-circuits, cette opération nécessitant de dépassiver les circuits, opérationtoujours délicate à réussir et qui peut entraîner la destruction de pièces. Nous avons renoncé afinde conserver un lot assez important numériquement. La seconde raison qui nous a fait renoncerest qu’on ne peut mettre que 4 à 5 circuits maximum encapsulés dans la cloche centrale du laserà déposition. Le temps d’immobilisation des équipements et du personnel spécialisé nécessairepour obtenir un échantillon de taille acceptable (une centaine de pièces) était trop important.

III.2.2. Les programmes de test

Deux types de programmes de test ont été appliqués : le test fabricant et deux programmes detest systématique (un test pseudo-exhaustif et un test réduit.)Comme dans le cas du 6800, le test fabricant est le test Motorola enrichi par des vecteursspécifiques dus aux nombreux retours client dans la phase de jeunesse du circuit.

III.2.2.a Le test pseudo-exhaustifGénéré par la méthode GAPT en mode pseudo-conformité, le programme de test comporte 50modules d’environ 60 KOctets chacun, soit près de 3 MOctets de programme. Il passe en revuechaque code-opération avec un exemplaire de chaque mode d’adressage, dans toutes les taillesd’opérandes possibles (seuls les numéros du registre d’index, lorsqu’ils interviennent dans unmode d’adressage, sont tirés au hasard). Son principal défaut est également sa principalequalité. En effet, de par sa taille importante, le grand nombre d’opérandes aléatoires utilisépermet un test minutieux des blocs de la partie opérative. En cela on tend à se rapprocher du testpurement aléatoire.

III.2.2.b Le test réduitAfin de pouvoir réaliser cette expérience et permettre la génération de programmes de test pourdes circuits encore plus complexes (comme le 68020 par exemple), nous ajoutés des nouvellesprimitives au logiciel GAPT. Ces fonctionnalités permettent de choisir un nombre donnéd’éléments parmi les N d’un même groupe. Par exemple, pour un mode d’adressage du type“déplacement + registre de base + index” le 68000 requiert l’emploi d’un des 8 registres de base(les registres A0 à A7) et d’un des 16 registres d’index (les registres D0 à D7 et A0 à A7). DansGAPT, pour tester ce mode d’adressage, le choix est offert de combiner de 1 à 8 registres pourla base et de 1 à 16 registres pour l’index. Le nombre de cas générés pour ce mode d’adressagevariera donc, suivant les cas, de 1 à 64 cas.On mesure toute l’importance de cette fonctionnalité si on se rappelle les chiffres donnés dans lapremière partie. Le développement complet du mode d’adressage “indirect par registre adresseavec index et base de déplacement” du 68020 conduit à 3487 cas. Si les registres base et indexet le mécanisme d’échelle (scaling) sont considérés comme des paramètres de ce moded’adressage, seuls 18 cas restent à tester. La vérification de toutes les instructions ADDpossibles de ce même microprocesseur demande de passer en revue environ 13 x 106instructions, alors que l’hypothèse de paramétrisation conduit à n’en vérifier que 2100.

Page 80: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 61 - Expérimentation

Le choix que nous avons donc fait est de considérer les registres Données et Adresses commeparamètres des divers modes d’adressage. Nous conservons un exemplaire de chaque tailled’opérande lorsque ceci est possible. L’importance de la réduction est considérable puisquenous obtenons un seul module de 90 KOctets. Ce programme de test sera appelé test réduit.

III.2.3. Le matériel de test

Le test fabricant a été réalisé par la société Thomson sur un testeur Sentry 20.Les tests fonctionnels systématiques ont été appliqués sur le testeur TEMAC. Bien que plusancien dans sa conception ce testeur a donné de meilleurs résultats que le testeur FUTE dans lesprécédentes expériences8. Ceci est dû au mécanisme d’observation par signature de tous les bus(bus données, adresses et contrôle) à chaque cycle, qui est plus complet que la simpleobservation à travers des écritures mémoire de FUTE.

III.3. Résultats

III.3.1. Présentation

Sur 140 circuits traités, 12 ont passé tous les tests sans détection d’erreur. N’ayant pas à cetteépoque les moyens d’analyser finement les causes de cette non détection, nous avons dû nousrésoudre à mettre cela sur le compte d’erreurs de manipulation ou de fautes non efficaces9. Danscette expérience, nous avons donc choisi de prendre comme référence absolue le test dufabricant. Pour un circuit stable comme le 68000, le taux d’échappement du test fabricant(circuits défectueux déclarés bons à tort) est très bas (de l’ordre de la centaine de p.p.m). Vu lataille relativement modeste de notre échantillon, nous avons considéré le test fabricant fiable à100 %. Ceci fera l’objet d’une discussion dans la dernière partie de ce travail.Le tableau 4 résume les résultats obtenus après application des trois différents tests.

Type de test Circuits défectueux déclarés bons (sur

128)

Couverture pour une faute simple

Fabricant 0 100 %

pseudo-exhaustif 11 91,4 %

réduit 11 91,4 %

Tableau 4 : résultats du test du 68000 après injection d’une faute simple.

III.3.2. Discussion

Les valeurs obtenues de 91,4 % pour les tests fonctionnels vont dans le sens d’uneconfirmation des expériences précédentes, néanmoins il faut garder à l’esprit qu’un seul type defaute, à savoir la coupure de pistes d’Aluminium ou de Silicium polycristallin, a été introduit. Il

8 L'expérience a néanmoins du être vérifiée et terminée sur le testeur FUTE16, le testeur TEMAC faisant

preuve d'instabilité avec une montée en température après quelques heures d'activité

9Cette hypothèse sera confirmée dans les expériences suivantes

Page 81: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 62 - Expérimentation

faut se garder de faire des conclusions hâtives mais prendre ces valeurs comme une tendance.En l’absence de modèles de fautes véritablement crédibles, ces chiffres ne sont pas à négliger.Un des objectifs que nous nous étions fixés lors de cette expérience est atteint : pour le type defautes injectées et le type de circuit utilisé, il n’y a aucune différence entre le test pseudo-exhaustif et le test réduit. Il convient néanmoins là aussi d’être prudent : on aurait tort de rejetertrop vite l’apport que peut donner le grand nombre de valeurs aléatoires fourni par le testpseudo-exhaustif. La différence d’efficacité n’ayant pas pu être mesurée dans cette expérience,elle sera donc considérée ici comme négligeable, voire nulle.

La répartition des défauts et leur classement en fonction du type d’erreur générée, ou plutôt dumode de détection entraîné est montré dans la figure 2.8.Cette figure fait ressortir que dans ce type d’expériences, toutes tentatives de corrélation entre lazone concernée par le défaut et la nature du comportement fautif induit semblent être vouées àl’échec si les détails de l’implantation sont inconnus. En effet les différents types d’erreurs issusdes défauts implantés semblent être équiprobablement répartis. Pour pouvoir vérifier ouinfirmer cette première impression, il aurait fallu réaliser une expérimentation spéciale, avec uneinjection ciblée dans chaque partie du microprocesseur (partie opérative, PLAs, ROM demicroprogramme,…). Nous avons choisi de ne pas réaliser ce type d’expérience pour deuxraisons :- le nombre de circuit à traiter pour réaliser une telle expérience avec des échantillonssignificatifs aurait été trop important ;- notre principe de base d’injection totalement aléatoire de défauts n’aurait pas étérespecté.

n

n

n

n

n

nn

nn

n

nnn

nn

n

nn

n

nn

nn

n

n

n

n

n

n

n

nn

n

n

nn

nn

nn

n

n

n

n

n

n

nn

n

nn

n n

n

nnn

n

n

n

n

n

0

1000 0

2000 0

3000 0

4000 0

5000 0

6000 0

0 10 000 2000 0 30000 40 000 500 00 60000

l

l

ll

ll

l

l

l

ll

ll

l

ll

l

l

ll

l

l

l

ll

ll

ll

l

l

l

l

l l

l

:

:

:

:

:

::

:

:

:

:

:

:

:

n

n

n

n

n

n

n

n

n

n

n

n

nn

n

nn

n

n

: défauts qui ne créent pas d’erreurs

l défauts qui créent des erreurs de séquencement (boucles, problèmes de reset, exceptions,…)

Page 82: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 63 - Expérimentation

n défauts qui créent d’autres erreurs (données, adresses, signaux, …)

Figure 2.8 : distribution des défauts sur la surface du circuit.

Page 83: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 64 - Expérimentation

IV. INJECTION DE COURTS-CIRCUITS ET DE COUPURES

DANS LE MICROPROCESSEUR 68000

Afin d’élargir le champs de nos recherches, dans cette expérience, des courts circuits serontcréés.Le but ici est le même que celui des deux expériences précédentes, à savoir essayer d’évaluerl’efficacité de tests fonctionnels de longueurs différentes, afin d’essayer de quantifier et/ou dequalifier cette efficacité et éventuellement de trouver quelle réduction raisonnable on peutappliquer à l’exhaustivité tout en obtenant les mêmes taux de couverture.Les résultats seront publiés en [Mar92].

IV.1. Approche expérimentale

Dans le but de pouvoir injecter des défauts se manifestant par des courts-circuits, nous noussommes procuré des plaquettes non passivées comportant un nombre de circuits bonssuffisamment important pour réaliser ce travail. Les équipements laser décrits au paragraphe Iont été de nouveau employés pour toute la partie technique de la création de défauts.

La figure 2.9 résume l’approche utilisée [Mar91c].

Laser Argon

Test sur plaquette

Création de défauts au moyen d'un équipement Laser(coordonnées X,Y aléatoires)

Montage,Encapsulage

Test

Analyse

Figure 2.9 : démarche expérimentale.

Page 84: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 65 - Expérimentation

Nous disposions au départ de 220 circuits bons disposés sur 5 plaquettes. Nous avons choiside créer des courts circuits sur 2 plaquettes représentant 101 circuits bons et de réserver les 3restants pour réaliser des coupures. Cette phase de l’expérimentation devait se faire assezrapidement afin d’éviter la détérioration des circuits par création d’importants courants de fuitequi apparaissent après un contact prolongé avec le gaz réactant.

Après injection des défauts (1 par circuit) les plaquettes ont été remises à la société Thomson quia réalisé le montage et le test fabricant. Un problème lors de la découpe d’une plaquette àendommagé quelques pièces si bien qu’en sortie du montage nous disposions de 195 piècesprésentant des défauts.La figure 2.10 donne la méthode employée pour l’injection de défauts et le test des circuitsdéfectueux.

Page 85: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 66 - Expérimentation

Test sous pointes de circuits dépassivés en plaquettes.

Pour chaque circuit cible, les coordonées X,Y des défauts sont générées aléatoirement.

test de plaquettes

création de défauts sur des circuits

bons

montage

test

analysetopologique

renforcement du défaut

analyse au niveau

électrique

défautinefficace?oui

non

circuit fautif

circuitbon

test

circuitfautif

défautinéfficace

circuitbon

refusé

défautindétecté circuit

fautifraté

refusé

Elimination des défauts trop faibles et des erreurs de manipulation

circuitfautif refusé bon

accepté

accepté

Figure 2.10 : méthode expérimentale pour l’injection laser de défauts ponctuels.Les deux types de défauts, coupures et courts-circuits, sont injectés dans des circuits bons surplaquette dépassivées. Un défaut est placé dans chaque circuit par utilisation de coordonnées X,Y générées aléatoirement.

Page 86: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 67 - Expérimentation

Après injection des défauts, les circuits sont montés et encapsulés, puis testés par différentesméthodes en utilisant les environnements de test adéquats.Les circuits défectueux qui passent un test donné sont analysés afin de faire la distinction entreles défauts ne créant pas d’erreur et les défauts non détectés par la séquence considérée. Pourchacun des circuits passant les séquences de test utilisées, l’implantation de la région entourantle défaut est analysée afin d’éliminer les circuits portant un défaut sans conséquence électriqueou logique (par exemple : coupure de lignes bouclées ou de lignes de polarisation...). Pour lesautres circuits le défaut est renforcé afin d’éviter les problèmes d’erreur de manipulation ou dedéfaut inefficace (nous rappelons qu’une coupure doit avoir une résistance équivalente de 10KOhm pour être efficace [Auv86]). Ces circuits sont ensuite testés une nouvelle fois. Pour chaque circuit qui continue de passer lestests sans détection d’erreur, une analyse électrique est nécessaire afin de déterminer si lesvecteurs de test destinés à stimuler la partie du circuit concernée sont efficaces ou pas. Ceci peutpermettre d’améliorer la couverture d’une séquence de test par addition de vecteurs de testadéquats.

IV.2. Programmes de test

Outre le test de fin de fabrication réalisé par Thomson avec ses propres programmes de test,issus du test originel Motorola, deux tests fonctionnels ont été utilisés : un test systématiquepseudo-exhaustif et un test fonctionnel minimal. Afin de donner une borne inférieure àl’efficacité des tests, un programme utilisateur simple a été employé pour mettre en évidencesles erreurs triviales à détecter.

Page 87: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 68 - Expérimentation

IV.2.1. Le test fonctionnel systématique

En fait nous nous sommes servi ici de deux programmes de tests différents. Forts des résultatsde l’expérience précédente, le test dit “réduit” a été appliqué. En cas d’échec dans la détection, letest pseudo-exhaustif est venu renforcer la détection. On notera tout de suite qu’aucunedifférence n’a été mise en évidence entre les deux test. Sauf en cas de précision explicite,l’appellation test systématique recouvrira les programmes de test fonctionnel pseudo-exhaustifet réduit.

IV.2.2. Le test fonctionnel minimal

Un programme de test de taille réduite a été spécialement développé pour cette expérience. Ceprogramme de test passe en revue tous les types d’instruction (chaque mnémonique différentconstituant un type d’instruction différente). Chacun d’entre eux n’est utilisé qu’avec une seuletaille d’opérande. Lorsque plusieurs tailles sont possibles c’est aléatoirement qu’une taille estchoisie. Pour chaque instruction on utilise en tant que source et destination de l’instruction(quand c’est possible) un exemple de registre et un exemple d’adressage mémoire. Ceci conduità envisager au maximum 4 cas.

Exemple : instructions ADD et MOVEADD.B D0, D3 MOVEL D0, D7ADD.W D4, (A6) MOVEB D4, -(A2)ADD.L (A3)+, D5 MOVEL 16(A0), D3(ADD mem,mem non valide) MOVEW (0324h).W, 4(PC)

- 3 cas - 4 cas

Cette méthode conduit à construire un test de 13 KOctets (programme + données).

Page 88: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 69 - Expérimentation

IV.2.3. Le programme de tri

Le programme de tri est un programme classique de “quick-sort”. Il effectue un tri d’un tableaude quelques entiers et écrit en mémoire le résultat du tri. Ce programme est obtenu parcompilation d’un programme source écrit en langage C. Sa taille est inférieure à 1 KOctet.

Le tableau 5 résume les particularités de chaque programme de test utilisé.

Nom du programme Taille en octets Activation

Pseudo-exhaustif 24 x 128K Chaque combinaison valide de code-opération et de mode d’adressage

(le N° de registre d’index quand il est nécessaire est tiré au hasard).

Toutes les tailles d’opérandes

Réduit 90 K Chaque code-opération avec une combinaison choisie au hasard de

chaque mode d’adressage (dans chaque mode d’adressage le N° de

registre est un paramètre). Toutes les tailles d’opérandes.

Minimal 13 K Chaque code-opération avec un exemple de registre et de mode

d’adressage mémoire en source et/ou destination (4 possibilités

maximum). La taille des opérandes est choisie au hasard.

Tri 1 K Sous-ensemble de registres, opérateur et instruction dépendant de

l’algorithme et du compilateur utilisé

Tableau 5 : les différents programmes utilisés dans la 3ème expérience.

IV.3. Equipement de test

Pour cette troisième expérience, seul le testeur FUTE16 a pu être utilisé, le testeur TEMAC étantdésormais hors service (matériel obsolète très difficile à remettre en service). Le test fabricantest quant à lui, toujours exécuté sur un testeur Sentry 20.Le problème posé par l’utilisation unique de FUTE16 va donc se situer autour du test dessignaux asynchrones, comme nous l’avons vu par le passé.

Page 89: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 70 - Expérimentation

IV.4. Déroulement de l’expérience et résultats

Les 195 circuits défectueux après montage se répartissent ainsi : 87 courts circuits et 108coupures (57 % de pistes d’aluminium, 43 % de pistes de Silicium polycristallin). La figure2.11 montre la répartition originelle des 220 défauts sur le plan de masse du circuit.

déco

deur

génération d'horloge

plots adresses plots données

partie adresse haute partie adresse basse données

partie opérative

interface de contrôlecontrôle de l'UAL

registresPLA de paramétrisation

PLAbranch

PLAtrap

PLA21

ROM de micro et nanoprogramme

logique d'horloge sélectiondétermination

d'adresse

plots contrôle

logique de contrôle de bus

PLA 3

FC2

FC1

FC0

IPL

0 1000µ 2000µ 3000µ 4000µ 5000µ 6000µ

010

00µ

2000

µ30

00µ

4000

µ50

00µ

6000

µ

;

;

;

; ; ;

;

;;

; ;

;

;;

;

; ;;

;;;

;; ;

;

;;

;

;;

;

;;;;

;;

;

;;

;;

;

;

; ; ;

;

;;;;

;

;

;

;

;

; ;;

;

;

;;

;;

;

;

;;

;;

;

;;

;;

;;

;

;

;

; ;

;

; ; ; ;;

;

;

;;;

; ;; ;

;

n coupure; court-circuit

Figure 2.11 : répartition des coupures et courts-circuits sur le circuit.

Page 90: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 71 - Expérimentation

IV.4.1. Résultats des premiers tests

Le tableau 6 donne l’ensemble des résultats obtenus par chaque test. Les résultats completspièce par pièce sont fournis en annexe (annexe A).

Type de test Nbre courts circuits nondétectés (sur 87)

Nbre de coupures nondétectées (sur 108)

Nbre total de pièces nondétectées (sur 195)

Fabricant 3 20 23

Systématique 9 25 34

Minimal 11 25 36

Tri 19 37 56

Tableau 6: résultats des différents types de test.

IV.4.2. Analyse des pièces présentant un défaut non détecté

L’analyse a lieu à deux niveaux distincts :

- l’analyse des pièces acceptés par tous les tests. Dans ce cas il convient d’éliminer les

erreurs de manipulation et les défauts inactifs ;

- l’analyse des pièces déclarées défectueuses par certains tests et pas par d’autres. Dans ce

cas le but recherché est de fixer les limitations d’un test donné.

IV.4.2.a Analyse des pièces déclarées bonnes par tous les testsCette partie est difficile à réaliser sans connaissance de l’implantation physique et du schémaélectrique équivalent. Ce sont donc des ingénieurs de la société Thomson qui s’en sont chargé.Les 23 pièces à analyser se répartissaient comme suit (tableau 7) :

N° Plaquette Type de défaut Numéro de pièces

A coupure 1 - 2 - 3 - 4

B coupure 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10

C coupure 1 - 2 - 3 - 4 - 5 - 6

D court-circuit 1

E court-circuit 1 - 2

Tableau 7 : répartition des pièces acceptées par tous les tests.La phase de recherche des coordonnées des défauts créés a été longue et fastidieuse. Elle s’estfaite, soit au microscope optique pour certaines pièces, soit grâce au microscope du laser dedécoupe pour d’autres en passant alors en revue l’ensemble des coordonnées d’une plaquette.La deuxième méthode s’est avérée la plus sûre, mais demandant un temps assez long (de l’ordrede 3 minutes pour le premier couple de coordonnées, puis de minute en minute pour les couplessuivants).

Page 91: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 72 - Expérimentation

Le défaut créé n’a pas pu être retrouvé sur 2 circuits (A/3 et E/2). Ceux-ci ont donc été sortis dela liste des circuits à retester et ils sont considérés comme bons suite à une erreur demanipulation (défauts créés sur un circuit voisin sur la plaquette, défaut créé sur un circuitvoisin marqué comme défectueux lors du tri sur plaquette,…).L’ensemble des résultats est donné dans le tableau 8.

Les 8 circuits portant des défauts inefficaces, ou considérés comme erreurs de manipulation ontété retirés du lot, soit les circuits : A/2, A/3, B/5, B/8, C/2, C/3, C/4, E/2. La procédure decréation de courts-circuits étant lourde à mettre en oeuvre, les courts-circuits incomplets n’ontpas été renforcés ; les circuits D/1 et E/1 ont donc été introduits dans la liste précédente portant à10 le nombre de circuits effectivement écartés des mesures.Pour les autres circuits le défaut a été renforcé puis les circuits testés de nouveau (les résultatsde ces test seront donnés et discutés dans le paragraphe c).

IV.4.2.b Cas de circuits trouvés défectueux par au moins un testSi on analyse les résultats des premiers tests (fournis en annexe), on trouve une parfaiteinclusion des résultats des différents tests. On va donc pouvoir étudier les différences trouvéesentre les tests. Seuls les circuits échappant au programme de tri ne seront pas analysés, celui-cin’étant pas un programme de test à proprement parler ; il nous donne seulement une indicationsur le nombre de défauts créant des fautes facilement détectables. On notera une différence de20 circuits avec le test minimal et de 33 circuits avec les test fabricant. 139 circuits sont refuséspar le programme de tri

N° de circuit Type de défaut Observation

Plaquette A

1

2

3

4

coupure incomplète

ligne de Si-Poly d’un PLA coupée en bout de ligne

défaut non identifié

coupure dans l’additionneur d’adresse partie haute bit 17

inefficace ; à refaire

inefficace

erreur de manipulation

vérifier coupure

Plaquette B

1

2

3

4

5

6

7

8

9

10

bus inter PLAs ; coupure douteuse

coupure non faite (Si-Poly trop près d’un Alu qui a absorbé l’énergie)

ligne de sortie utilisée de la nanoROM

bus (adresse ou donnée) de la partie donnée de la P.O.

coupure ligne d’alimentation (Vdd) transfert par le caisson

switch de bus données et adresse basse P.O.

coupure douteuse

colonne non utilisée de la nanoROM

coupure incomplète

vérifier coupure

inefficace

vérifier coupure

vérifier coupure

inefficace

vérifier coupure

vérifier coupure

inefficace

inefficace ; à refaire

inefficace ; à refaire

Page 92: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 73 - Expérimentation

Plaquette C

1

2

3

4

5

6

coupure mal faite

coupure provoquant la déconnexion d’une partie d’accélérateur (aucune

influence fonctionnelle)

alimentation bouclée

coupure ligne de polarisation de substrat

alimentation de grilles ; résistance équivalente de la coupure trop

faible

alimentation de grille

inefficace ; à refaire

inefficace

inefficace

inefficace

inefficace ; à renforcer

vérifier coupure

Plaquette D

1 court circuit entre 2 lignes non utilisées d’un PLA inefficace

Plaquette E

1

2

court circuit incomplet

défaut non identifié

inefficace

erreur de manipulation

Tableau 8 : analyse des 23 pièces acceptées par tous les tests.

Page 93: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 74 - Expérimentation

• Différence entre le test minimal et le test réduit 2 circuits qui échappent au test minimal font la différence avec le test réduit. Ce sont les circuitsD/11 et D/45.

- Pour le circuit D/11 : la mise à 0 ou à 1 du bit V du registre d’état, en accord avec le

résultat d’une instruction ASL (Arithmetic Shift Left) ne se fait pas. Pour mettre en

évidence cette faute, il faut des valeurs d’opérandes ayant les 2 premiers bits dans des

configurations précises.

exemple : 00 ou 11 → mise à zéro puis 01 ou 10 → mise à 1.

Le programme Minimal ne balaie pas assez de valeurs d’opérandes pour cela.

- Pour le circuit D/45 : les instructions de type immédiat (ADDI, SUBI, ANDI ...) en

format “long” montrent une erreur avec le mode d’adressage indirect par registre avec

prédécrémentation. Dans le programme minimal, le format “long” pour ce type

d’instructions n’existe que pour ADDI.L #val, depl(An) et ORI.L #val, Dn ; le mode

d’adressage incriminé n’est testé qu’en format “word” avec SUBI.W #val, (-An) et

EORI.W # val, (-An).

Remarques :

- La première erreur confirme l’hypothèse de perte relative d’efficacité au niveau du test

lorsque l’on réduit la taille du programme donc le nombre d’opérandes aléatoires

engagés dans le test de chaque instruction.

- La deuxième erreur confirme la nécessité de tester un exemplaire de chaque mode

d’adressage pour chaque instruction. Une connaissance approfondie de la partie contrôle

permettrait sûrement de réduire ceci à un exemplaire par famille d’adressage.

• Différence entre le programme réduit et le programme pseudo-exhaustif Comme il a été précisé au début de cette expérience, nous n’avons pas pu mettre en évidencedes différences entre le programme fonctionnel réduit et le programme fonctionnel pseudo-exhaustif. C’est pourquoi dans les tableaux les deux résultats sont regroupés sous le terme “testsystématique”.• Différences entre les programmes systématiques et le test fabricant L’analyse des circuits qui échappent au test systématique s’est fait par décompilation,compréhension et analyse de la séquence de motifs de test du programme du fabricant,concernée par l’erreur. Cette portion en moyenne de 30 vecteurs s’est portée à plus d’unecinquantaine dans certains cas. Le résultat des analyses est donné dans le tableau 9.

N° de pièce Séquence de vecteur détectant la faute Observation

Page 94: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 75 - Expérimentation

Plaquette A

pièce 24 Traitement d’exception :

Lors du traitement d’une adresse impaire en mode

utilisateur on note un mauvais empilement de la valeur

du compteur programme

Exception non testée

Plaquette B

pièce 11

pièce 32

Traitement d’exception :

traitement de code illégal en mode utilisateur.

Traitement des interruptions. Erreurs dans la prise en

compte du masque d’interruption à un niveau donné.

Exception non testée

Toutes les combinaisons possibles

doivent être testée

Plaquette C

pièce 31

pièce 32

Après la séquence de reset, le signal Halt (bidirectionnel)

est modifié à tort.

Détection d’erreurs en mode TEST.

Montée du signal sans cause

fonctionnelle ?

Mode inaccessible à l’utilisateur ;

faute sans conséquence fonctionnelle

Plaquette D

pièce 32

pièce 33

pièce 41

pièce 47

Mise en HALT

Sortie E (émulation du bus 6800) erronée après reset

Mise en HALT après temporisation

Mise en HALT après test de l’arbitre de bus. Erreur sur

les signaux de contrôle.

Pas de conséquence fonctionnelles

Plaquette E

pièce 26

pièce 28

Faute dans test de synchronisation avec des

périphériques. Faute sur signal E

Erreur dans la reconnaissance du masque d’interruption

pour un niveau donné.

Connexion au périphérique non testée

Toutes les combinaisons possibles

niveau masque doivent être traitées.

Tableau 9 : analyse des 11 circuits acceptés par le test systématique.Les fautes pour les 11 circuits qui échappent au test fonctionnel systématique sont résuméesdans le tableau 10.

Type d’erreur rencontré Nombre de circuit

Opération mettant en jeu le signal HALT 4

Opération mettant en jeu le signal de sortie E (émulation du bus 6800) 2

Traitement d’instructions illégales et d’exceptions 2

Traitement d’interruption 2

Mode Test 1

Page 95: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 76 - Expérimentation

Tableau 10 : classement des circuits acceptés par le test fonctionnel en fonction du type d’erreurengendré

Ces résultats confirment les résultats déjà obtenus dans les expériences précédentes. Lesprincipales difficultés rencontrées lorsque l’on génère un programme de test fonctionnel à partirdes instructions utilisateur concernent la vérification des signaux asynchrones.Nous noterons au passage que vu leur manifestation, quelques unes de ces erreurs auraient puêtre mises en évidence en utilisant le testeur TEMAC grâce à sa signature du bus contrôle.Certains phénomènes testés, notamment le comportement en présence du signal HALT en entréeou son positionnement en sortie, sont difficiles à comprendre avec la seule aide du manuelutilisateur.De même, le test des exceptions pose des problèmes. Le premier d’entre eux est qu’il est assezcompliqué de tester des exceptions en mode utilisateur, car dans ce cas un basculement a lieuvers le mode superviseur et il est donc difficile de revenir de façon simple au programmegénéral ; ce qui implique que ces vérifications sont faites pour la plupart en mode superviseur.Le deuxième problème est celui du test des codes invalides. En effet, sans information sur ledécodage des codes invalides la seule solution serait de tester toutes les combinaisons invalides,tâche qui est assez complexe à mettre en oeuvre et qui serait sûrement assez longue à exécuter.De plus, après le traitement des instructions invalides au niveau code-opération, faudrait-ilenvisager de tester toutes les combinaisons invalides avec les extensions quand elles existent ?

IV.4.3. Résultats après deuxième test

Le défaut à pu être renforcé pour 11 des 13 circuits présentant un défaut suspect ; pour les 2autres une dégradation causée par l’opération de décapotage à rendu cela inutile, les circuitsétant définitivement hors service.La composition finale de l’échantillon est résumé dans le tableau 11.

nombre de

circuits après

montage.

pièces

défectueuses

pièces rejetées

(erreur /

inefficaces)

pièces retestées nombre de circuits

de l’ échantillon

final

coupures 108 88 7 (1 / 6) 11 99

courts-circuits 87 84 3 (1 / 2) 0 84

total 195 172 10 (2 / 8) 11 183

Tableau 11 : composition de l’échantillon après renforcement des défauts.

Après renforcement des défauts, les 11 circuits ont été détectés fautifs par le test fabricant. Seulle circuit B/4 n’a pas été refusé par le test systématique. Les résultats enrichis par les nouvellesinformations sont donnés dans le tableau 12.

Type de test Nbre courts circuits non

détectés (sur 84)

Nbre de coupures non

détectées (sur 99)

Nbre total de pièces non

détectées (sur 183)

Fabricant 0 0 0

Systématique 6 6 12

Minimal 8 6 14

Tri 16 21 37

Page 96: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 77 - Expérimentation

Tableau 12 : nombre de pièces acceptées par chacun des tests.Pour chaque type de test et chaque type de défaut, un taux de couverture de fautes booléennes àpu être calculé pour l’échantillon final de 183 pièces. Les résultats sont donnés dans le tableau13.

Type de test taux de couverture pour les

courts-circuits

taux de couverture pour les

coupures

taux de couverture total

Fabricant 100% 100% 100%

Systématique 92,8% 93,9% 93,4%

Minimal 90,5% 93,9% 92,3%

Tri 80,9% 78,8% 79,8%

Tableau 13 : taux de couverture de fautes booléennes pour chacun des tests.

Les résultats ci-dessus peuvent être condensés dans des courbes montrant l’évolution du taux decouverture en fonction de la taille du programme utilisé (figure 2.12).

100 1K 10K 100K 1M 10M

100

90

80

taille programmeen octets (log)

taux de couverturede fautesimple

court-circuitcoupureensemble

Tri

minimal

réduit pseudo-exhaustif

fabricant

Figure 2.12 : taux de couverture en fonction de la taille des programmes de test.

Les courbes obtenues pour les différents types de fautes montrent un tracé classique. Lesvaleurs sont trop proches pour donner une conclusion sur l’efficacité relative par rapport auxcoupures ou aux courts-circuits. On peut assimiler les deux résultats et considérer uniquement lacourbe pour l’ensemble des deux types de fautes.Il est également intéressant de noter que comme pour le 6800, le test fabricant se situe largementen dehors de ces courbes, preuve s’il en fallait que celui-ci est bien compacté, ou plutôt que les

Page 97: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Chapitre 2 - 78 - Expérimentation

programmes de test fonctionnel sont très redondants si on considère le test d’un chemin dedonnées particulier.Un dernier point intéressant à constater est que 80% des fautes sont mises en évidence par unsimple programme de tri de moins de 1 KOctets, données comprises. On peut constater au vudes résultats du premier test, que très peu de circuits ont reçu un défaut créant une faute quej’appellerais “fine”, c’est à dire une faute qui n’est visible qu’avec un nombre restreintd’instructions et/ou de combinaisons d’adressages. Comme fautes fines on peut citer sûrementcelles affectant les 2 circuits qui font la différence entre le test Minimal et le test Systématique.Même si on inclut dans cet ensemble les fautes ratées par le test Systématique, on arriveseulement à une dizaine de pièces sur 200, c’est à dire environ 5%, ce qui est loin de nosprévisions. Nous pensions en effet que certains courts-circuits ou coupures situés dans la partieopérative ou dans la ROM de microprogramme (nanoROM) pouvaient avoir pour conséquencesdes fautes difficiles à mettre en évidence, ce qui ne semble pas être le cas.

IV.5. Discussion

Les résultats obtenus confirment donc ceux des deux expériences précédentes.La borne supérieure du test fonctionnel, pour des défauts de type coupure et court-circuit, sesitue aux alentours de 93 %. Les écarts avec les 100 % obtenus par le test fabricant sontessentiellement dus au traitement inefficace du test des signaux asynchrones et du traitement desexceptions.A ce stade on peut reposer la question soulevée un peu plus tôt : comment tester les signaux ?Sans plus d’information que le manuel utilisateur, cela semble être une tâche difficile. Ladeuxième question posée par ces résultats est comment doit-on tester les codes invalides ? Enfinla dernière question issue de ces résultats provient de l’analyse du circuit B/4 responsable del’écart entre le test fonctionnel et le test fabricant : comment comprendre la signification desmotifs du test fabricant ?En effet le circuit B/4 porte une coupure sur un bus transférant bit à bit les informations desdifférentes parties de la partie opérative. Or, cette coupure, une première fois mise en doute, aété renforcée. Le test fabricant a alors diagnostiqué cette pièce comme mauvaise alors que le testsystématique continue de la trouver bonne. La détection de la défaillance par le test fabricantsoulève la question précédente. En effet, c’est au niveau du test de la nanoROM que cette fauteest mise en évidence, alors que d’après les informations que nous possédons, la partie opérativeest normalement isolée durant ce test. Il est possible que ces chemins de données restent actifsexpliquant le phénomène. Mais alors, comme se fait-il qu’aucune autre partie du test fabricant(partie fonctionnelle par exemple) ne le mette en évidence ?. Pourquoi le test fonctionnel nevoit-il pas cette erreur ? L’explication finale est peut être à chercher du côté des fréquences. Lafréquence du test de la nanoROM n’est que de quelques centaines de Kilo Hertz alors que lafréquence normale de fonctionnement du microprocesseur est comprise entre 4 et 16MégaHertz. Il peut être envisageable que l’utilisation de ce bus, fautif uniquement en transfertde données à basse fréquence, mette en évidence cette faute alors qu’à haute fréquence et enfonctionnement normal la faute soit masquée. Malheureusement nous ne disposons à l’heureactuelle d’aucune information pour confirmer ou infirmer cette dernière hypothèse. Cettedernière analyse soulève encore une nouvelle question : comment doit-on considérer un défautqui ne manifeste une erreur qu’en dehors des plages normales ou du mode normal defonctionnement ? Toutes ces questions issues de cette expérience et des précédentes serontanalysées dans la troisième partie de ce travail.

Page 98: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 79 - Chapitre 3

Chapitre 3

Analyse Critique des Expériences

Page 99: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 80 - Chapitre 3

Page 100: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 81 - Chapitre 3

Nous allons faire porter cette analyse principalement sur trois points :- le bien fondé de la campagne d’expérimentation réalisée et, à un niveau général, surl’ensemble des résultats obtenus ;- la méthode d’injection des défauts employée ;- l’avenir du test fonctionnel en général, et du système GAPT en particulier.

I. SUR L'EXPERIMENTATION

Depuis bientôt dix ans que le système GAPT existe, ou du moins depuis que l’on fait du testfonctionnel au laboratoire, une question nous a été sans cesse posée par les industriels avec quinous étions en relation : quelle est l’efficacité de la méthode de test fonctionnelle utilisée ?Inlassablement nous devions répondre qu’on ne peut chiffrer cette efficacité en taux decouverture puisque la méthode employée n’est pas basée sur des hypothèses d’erreur.

Le but des expériences présentées dans ce travail était donc d’essayer de quantifier et/ou dequalifier l’efficacité du test fonctionnel. On peut dire que ce but est atteint. En effet, nous avonsconstitué des échantillons de circuits, avec une distribution aléatoire de défauts (un défaut parpièce) qui, du point de vue statistique, peuvent s’assimiler à un sondage.

Soient :

N la taille de l’échantillon

n le nombre de “oui” (défauts couverts)

p le pourcentage (inconnu) de “oui” (taux de couverture que l’on cherche a estimer)

n suit une loi binomiale : Prob( n = m) = CmN

pm (1-p)N-m

avec pour moyenne : E(n) = Np et pour variance : sigma2 (n) = Np(1-p)

d’où les propriétés de l’estimateur n/N :

E(n/N) = p

sigma2 (n/N) = p(1-p)/N

Au delà de Np > 10 , n/N suit a peu près une loi Gaussienne de moyenne : E(n/N) = p

et de variance : sigma2 (n/N) = p(1-p)/N

L’application de l’approximation Gaussienne aux valeurs obtenues pour chacune desexpériences, donne les résultats présentés dans le tableau 14. Afin de conserver une cohérenceaux résultats, les valeurs considérées sont celles obtenues par le test fonctionnel par rapport autest fabricant. On ne tient compte que des fautes booléennes. Les résultats des trois expériencessur le 68000 sont présentées, ainsi qu’un résultat global pour ce circuit.

type d’expérience Nbre de

pièces

Nbre de pièces

refusées

taux de

couverture

sigma 2 sigma p à 95%

de confiance

6800 68 3 0,956 0,025 0,050 95,6 ± 5 %

Page 101: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 82 - Chapitre 3

68000 (1) 58 7 0,879 0,043 0,086 87,9 ± 8,6%

68000 (2) 128 11 0,914 0,025 0,050 91,4 ± 5%

68000 (3) 183 12 0,934 0,018 0,036 93,4 ± 3,6%

total 68000 369 30 0,918 0,014 0,028 91,8 ± 2,8%

Tableau 14 : taux de couverture des différentes expériences (confiance à 95%)

On peut noter que l’efficacité du test fonctionnel GAPT est plus élevée pour le 6800 (≈96 %)que pour le 68000 (≈92 %). Bien que l’incertitude sur les résultats du 6800 soit assezgrande(± 5%), ces valeurs montrent une baisse “inversement proportionnelle” à la complexitédu circuit à tester. On peut étayer cette dernière hypothèse en regardant de près le traitement dessignaux asynchrones qui est le point faible du test fonctionnel.Pour le 6800 un seul niveau de masquage existe pour les interruptions de type externe (IRQ)alors qu’il en existe 7 pour le 68000. De même, le décodage des codes invalides est beaucoupplus complexe sur le 68000 puisque, pour les instructions complexes, un code-opération validepeut déboucher sur une instruction invalide à la lecture d’une mauvaise extension. Le codagedes instructions du 68000 peut utiliser jusqu’à 7 mots de 16 bits pour une seule instruction. Cephénomène s’accentue encore si on prend le 68020, élément suivant dans la famille Motorola,où le codage d’une instruction peut nécessiter jusqu’à 11 mots de 16 bits.

Néanmoins quelque soit le chiffre retenu pour l’efficacité du test fonctionnel, mettons 92 %,cette valeur est de beaucoup inférieure au résultat obtenu par le test fabricant. Alors pourquoiréaliser un test fonctionnel s’il existe un meilleur test ?On doit ici faire un léger retour en arrière. Les tests fonctionnels sont nés quand les utilisateurs,ne possédant pas d’autres informations que celles fournies par les manuels d’utilisation, ontvoulu faire des tests, parce qu’ils doutaient des tests fabricants. Si on se reporte aux travaux deHnatek en 1987 [Hna87] et de Westover en 1989 [Wes89] qui mettent en doute les valeursd’efficacité annoncées par les fabricants de circuits intégrés, on a envie de dire que lesutilisateurs ont raison.En effet, d’après les travaux décrits en [Hna87] qui font part de résultats de test obtenus par desutilisateurs, les différences entre les chiffres des fabricants et ceux des usagers sontconsidérables. En nombre de pièces défectueuses échappant aux tests, alors que les fabricantsrevendiquent des résultats entre 10 et 200 ppm pour les tests de sortie des circuits (certainsallant même jusqu’à zéro défauts), les usagers annoncent que leurs tests d’entrée de circuits ducommerce font ressortir des taux d’échec allant de 2000 à 20 000 ppm. Ces chiffres sont mêmepoussés jusqu’à une fourchette de 140 000 à 200 000 ppm pour les circuits destinés à desapplications à haute sûreté de fonctionnement militaires ou spatiales.La polémique sur ces chiffres provient du fait qu’il n’existe pas de normalisation pourl’évaluation de l’efficacité des tests. Les travaux rapportés en [Wes89] qui argumentent pour lanécessité de tests utilisateurs, montrent que les stratégies de test doivent être bâties d’après uncompromis entre le coût du test et le degré de risque accepté. Cela peut aller d’un simple test à25° C sur quelques échantillons pris aux hasard dans certains lots (faible coût, haut risque),jusqu’au test systématique de tous les circuits de tous les lots après leur avoir fait subir touteune gamme de contraintes physiques comme des test à 70°, des cycles et des chocs detempérature, l’application de haut voltage pendant 168 heures, …(fort coût, faible risque). Enappliquant de telles stratégies sur des lots de circuits, la différence entre la qualité annoncée parle fabricant et celle mesurée devient frappante. Par exemple, dans le même article, des tests surdes mémoires annoncées avec un taux d’échappement de 100 ppm montrent pour certains lotsdes taux d’échec de 16 000 ppm.De leurs côté certains fabricants se contenteraient de compter les retours client et de réduireencore ce chiffre d’environ 50 %, partie que représente, selon eux, les retours dus à unemauvaise utilisation des circuits incriminés. Ces résultats sont bien entendu faussés. En effet,pour conserver de bons rapports avec son fournisseur, pour des questions de coût (un renvoi aufournisseur coûtant plus cher que la pièce défectueuse), et pour d’autres raisons plus ou moins

Page 102: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 83 - Chapitre 3

valables [Tho89], de nombreuses de pièces défectueuses finissent dans des poubelles et ne fontpas l’objet de retour au fabricant.De plus, pour les processeurs, et notamment pour les processeurs complexes, il est reconnuque seule une faible partie des potentialités est en fait utilisé lors de leur fonctionnement dansl’application finale. Ce sont d’ailleurs ces réflexions qui sont en partie à la base du retour versune simplification dans le jeu d’instructions pour les processeurs RISC. On peut donc penser,et cela s’est d’ailleurs vérifié dans le passé10, que des fautes peuvent exister à l’état latent dansdes processeurs montés dans diverses applications et que seules quelques unes d’entre elles, lesmanifestent. Ceci provoque un nombre de retours client inférieur au véritable taux d’échec destests du fabricant.S’il est possible de construire des tests efficaces, lorsqu’il s’agit de mémoires ou de circuitslogiques de faible complexité, il n’en est pas de même pour les processeurs. La question quel’on doit se poser est alors : faut-il croire les fabricants, ou doit-on se dire que même si ilsannoncent des chiffres optimistes, on n’a pas les moyens de faire mieux ? Il sembleraitmalheureusement que la dernière remarque soit la bonne.

Après ces quelques critiques sur l’utilité du test utilisateur, nous pouvons nous pencher sur lesrésultats de nos expériences.Les grandes leçons que nous pouvons tirer de ces expériences sont :

- on ne sait pas faire de tests de signaux corrects à partir du manuel utilisateur,

- il est difficile de comprendre la nature des erreurs au vu des résultats du test fabricant.

La première affirmation a été bien étayée au cours de la description de ces expériences. Au vu decertains extraits des séquences de test du fabricant que nous ne pouvons pas reproduire icipuisque strictement confidentiel, il est clair que des informations manquent à l’utilisateur pourbâtir des tests. Si on se reporte aux expériences 6800 et notamment aux fautes non détectées parle test fonctionnel, comment expliquer qu’une séquence du test du fabricant positionne en mêmetemps IRQ, NMI et HALT, si ce n’est pas parce qu’elle est dédiée au test d’un cheminparticulier ? Il en est de même pour les expériences sur le 68000, où la décompilation desséquences de test du fabricant mettant en évidence les différences entre les deux types de test(utilisateur et fabricant), laisse apparaître des enchaînements étranges. Notamment certainsmotifs sont répétés plusieurs fois sans modifications, attentes qui correspondent à coup sûr à unaspect particulier qui nous est totalement inconnu en tant qu’utilisateurs, sinon pourquoiexisteraient-elles lorsque l’on sait dans quel esprit de compaction sont fait ces tests ?La deuxième affirmation a déjà été étayée dans la partie précédente lors de l’essai decompréhension de la faute B/4 ratée par le test fonctionnel.

II. SUR LA METHODE D'INJECTION DE DEFAUTS

La seule possibilité qui s’offrait à nous pour évaluer l’efficacité des programmes de test étaitl’injection de fautes à un niveau physique car nous ne disposions pas d’outils performants desimulation, et nous n’avions pas les moyens d’en élaborer un. Même sans tenir compte desobjections formulées dans la première partie quant à la validité des modèles de simulationfonctionnelle et surtout des modèles de faute associés, cette voie nous était fermée.Il est reconnu dans la littérature que des défauts ponctuels viennent perturber les processus defabrication de circuits intégrés. Ce sont les effets de ces défauts ponctuels qui sont généralementsimulés à des niveaux logiques ou électrique. Par le biais des moyens laser mis à notre

10Le cas d'une faute de conception dans un 68000 de seconde source, créant une erreur d'addition longue,

visible à 125 °C , et qui est restée cachée plusieurs années est bien connu des spécialistes.

Page 103: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 84 - Chapitre 3

disposition, ce sont les effets causés par certains défauts ponctuels que nous avons voulureproduire.

II.1. La méthode d’injection utilisée.

Parmi l’ensemble de défauts possibles à créer, nous avons choisi de nous limiter au deux lesplus simples à mettre en oeuvre : les coupures et les courts-circuits. Si cette notion de simplicitéest réelle pour les coupures, on a pu constater qu’il n’en est pas de même pour les courts-circuits ; dans ce cas, le processus de création réclame un appareillage assez lourd et délicat àmettre en oeuvre. Nous sommes de plus restreints à un travail sur un seul niveau du circuit (leniveau métallisation) bien qu’il soit possible de travailler sur des niveaux plus profonds ou entredeux niveaux. Pour cela la panoplie d’outils doit s’enrichir d’un générateur de faisceau d’ionsafin de creuser pour atteindre les régions enterrées.Si on analyse les résultats obtenus lors de la troisième expérience sur le 68000, en fin depremière passe de test on voit que sur les 23 circuits détectés bons par tous les tests, 15 circuitsétaient porteurs soit d’un défaut mal créé, soit d’un défaut inefficace de par sa création(résistance équivalente trop faible par exemple). Ceci représente un taux d’échec de près de 8%.Parmi ces échecs, ce sont surtout les coupures que nous avons réalisées qui sont en cause, alorsque pour les courts-circuits, qui ont été eux réalisés par un spécialiste, seul un sur la centainecréée s’est avéré défectueux. Ceci pour mettre en évidence que non seulement ces expériencesont nécessité l’emploi d’un matériel sophistiqué, mais également que pour obtenir un taux deréussite maximum, il est nécessaire de bénéficier du concours d’un personnel spécialisé.Une conclusion similaire quant à la difficulté de créer des défauts efficaces à l’aide d’un laser,notamment au niveau des coupures de Silicium Polycristallin, a été énoncée en [Nor91]. Cestravaux sont, à notre connaissance, les seuls publiés décrivant l’utilisation d’une méthoded’injection laser de défauts.

II.2. Les défauts injectés

On va ici pouvoir critiquer le fait que seul deux types de défauts ont été injectés. Les seulsarguments que l’on pourrait opposer à cela sont ceux de temps, de coût et de complexité decréation des autres défauts. Il est évident que d’autres défauts seraient intéressants à étudier,mais leurs nécessité dans le type d’expérience que nous avons mené est difficile à chiffrer. Lecoût du traitement de plusieurs centaines de microprocesseurs afin d’obtenir un échantillon detaille acceptable est lui facilement chiffrable. Nous nous sommes donc limités a des fautesphysiques (coupures et courts-circuits) qui représentent suivant les différents auteurs entre80 % et 90 % des fautes réelles [Gal80][Fer88][Jaco89].Il est un type de défaut que nous voulions étudier dans une seconde phase, c’était les défautsque l’on pourrait qualifier “d’incomplets”, comme des pistes non entièrement coupées ou descourts-circuits pas totalement jointifs par exemple. Il nous semblait intéressant d’étudier lecomportement du circuit en présence de tels défauts espérant voir apparaître des phénomènesdus à des fautes transitoires ou aux fautes fortement liées aux paramètres de fonctionnement ducircuit. Sans le vouloir, nous avons créés quelques défauts incomplets dès cette phased’expérimentation (1 court-circuit incomplet et 10 coupures incomplètes notamment dans latroisième expérience sur le 68000). Dans tous les cas, ces défauts n’ont eu aucun effet, mêmelors du test paramétrique réalisé par le fabricant. Sans vouloir conclure sur l’inefficacité de telsdéfauts, il est clair que c’est un domaine d’étude très délicat. Si on arrive à créer des fautes de cetype, elles seront sûrement difficiles à analyser. Si ce type d’expérience doit avoir lieu, il doitêtre réalisé par et pour des électroniciens et des physiciens des matériaux et non par desinformaticiens.

Page 104: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 85 - Chapitre 3

II.3. Conclusion

Au vu des multiples expériences, on peut conclure que notre méthode d’injection de défauts àl’aide d’équipements laser est intéressante, mais peut-être un peu coûteuse tant sur la planmatériel que sur la plan investissement humain. Seul l’ensemble des fautes injectable peut êtrecritiqué ; encore que d’après les spécialistes la plupart des défauts décrits dans la littératurepeuvent être reproduits ou simulés par l’utilisation des différents moyens laser.Cependant, un telle méthode doit être réservée à ceux qui ont à leur disposition, non seulementtoutes les facilités pour obtenir les pièces, mais aussi les renseignements nécessaires à l’analysedes résultats. En effet, on ne peut pas se contenter de résultats bruts de rejet ou d’acceptationd’une pièce par un test. Nous avons vu dans la troisième expérience que 6% des défauts sontrestés inefficaces (alimentation rebouclée, lignes non utilisées court-circuitées, coupure en boutde ligne, …), ce qui implique que l’on doit absolument analyser les circuits passant le test avantd’annoncer quelque chiffre que ce soit. En un mot ce sont des expériences pour les fabricants decircuits et non pour les utilisateurs.Son gros avantage, réside dans le fait qu’on peut se permettre de ne pas avoir d’a priori sur lesfautes, ni de doutes sur les modèles employés. Sa principale qualité est son impartialité. Eneffet, on ne va pas établir d’hypothèses sur la relation entre les défauts créés et les fautesengendrées. Seuls des défauts pouvant arriver sont injectés.Même dans le cas où l’on va contester les pourcentages obtenus, seuls les résultats quantitatifsseront mis en cause, pas les résultats qualitatifs qui vont déclarer incomplets tous les tests nedéclarant pas défectueux un circuit portant un défaut efficace.

Page 105: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 86 - Chapitre 3

III. - SUR L’AVENIR POUR LE TEST FONCTIONNEL

Une conclusion rapide de ce travail pourrait être : puisque le test fonctionnel ne fait pas mieuxque le test fabriquant, et même ne peut pas mieux faire au moins sur le plan des signauxasynchrones, alors il ne sert à rien.Cette conclusion pessimiste nous est bien entendu assez rapidement venue à l’esprit. Pourtant,depuis de nombreuses années, des programmes issus de notre méthode de test fonctionnel nousont servi pour faire du diagnostic pour des fabricants.

Alors ici on doit se poser une question : que faire lorsque l’on détecte une pièce fautive ?Si la réponse est : on la jette et on la remplace par une bonne, alors le test fonctionnel n’avraiment aucune place. Mais si la réponse est : on va tenter d’expliquer pourquoi elle estmauvaise, alors là, tout peut changer.Pour pouvoir faire une analyse de défaillance on à besoin d’outils performants mais égalementd’utilisation facile. Une faute peut être paramétrique ou booléenne, mais même dans le premiercas, dans les conditions d’erreur, elle peut affecter certaines fonctionnalités et pas d’autres.Dans tous les cas on va avoir besoin de localiser la cause de l’erreur. Ici le test fonctionnelretrouve sa place. Pour mettre en évidence cette affirmation, nous allons décrire des expériencesde diagnostic réalisées parallèlement aux expériences d’injection de défaut.

III.1. Description d’expériences de diagnostic

Les deux expériences décrites ici concernent des microprocesseurs 68000. Dans le premier cas,ce sera un diagnostic pour un microprocesseur défaillant dans une application, dans l’autre cas,ce sera une analyse de défaillance pour un rejet de fabrication. Dans les deux cas dessymptômes préliminaires permettent dès le départ d’orienter le diagnostic.

Page 106: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 87 - Chapitre 3

III.1.1. Diagnostic fonctionnel pour un 68000 défaillant dans une

application

Un microprocesseur présentant une défaillance au coeur d’une application nous a été confié auxfins de diagnostic. Le programme source mettant en évidence le mauvais fonctionnement nous aété également fourni.Nous avons fait subir à ce circuit le programme de test systématique complet. Celui-ci à déceléun problème lors du traitement de la condition “LE” (less or equal) mais uniquement pourcertaines valeur du code condition.Dans une deuxième phase un nouveau programme de test GAPT a été généré en mode balayageafin d’étudier le comportement du microprocesseur en présence de t outes les instructionsconditionnelles (Bcc, DBcc, Scc) et ce pour toutes les conditions et toutes les valeurs possiblesdu registre de code condition.Cette phase à fait ressortir une erreur pour toutes les instructions conditionnelles utilisant lacondition LE, et seulement pour deux configuration du registre code condition :

N Z V C N Z V C

0 1 0 0 0 1 0 1

Au vu de ces résultats, une tentative de diagnostic au niveau logique a été proposée. Ensupposant que l’évaluation de la condition “LE” se fasse par une logique simple, le diagrammelogique en porte NOR donné en figure 3.1 a été proposé.

Z

N

V

Valeurs des entrées manifestant l'erreur :

Z = 1 , N = V = 0

Z + N + V

Figure 3.1 : diagramme logique de l’évaluation de la condition LE en porte NOR.

Les valeurs manifestant l’erreur correspondent à la propagation d’un collage à zéro de la ligne Z(figure 3.2)

Page 107: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 88 - Chapitre 3

Z

N

V

1-> 0

0 -> 1

0 -> 1

0

0

0

1

1

Figure 3.2 : identification de l’erreur par le collage à zéro d’une connexion

Sur le circuit, l’évaluation des conditions est en fait réalisée par un PLA. L’identification de lafaute physique au sein de ce PLA nécessite l’analyse d’au plus quelques transistors (figure 3.3)

Z

V

N

N

V

Figure 3.3 : diagramme électrique de la région suspecte du PLA de décodage.

III.1.2. Analyse de défaillance d’un rejet de fabrication.

Cette expérience rapportée dans [Vel90], est représentative de ce que permet le test fonctionnelpour les phases de diagnostic.

Page 108: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 89 - Chapitre 3

Après test à l’aide du programme systématique généré par GAPT, des erreurs lors del’exécution des instructions de multiplication ont été détectées. Le tableau rapporté figure 3.4donne certaines des valeurs erronées relevées.

Opérande 1 Opérande 2 Résultat attendu Résultat obtenu

3302 04597F75 E7F81D14 BAD424FB 039D

A23C 4594B2B6 7F890A38 AD4344E4 39D4

A379CD6897B182B3

4FE19EDB3114486F

Figure 3.4 : échantillon des erreurs détectées.

L’analyse des valeurs de ce tableau fournie deux indices :

- les 4 bits de poids faible du résultat fautif sont égaux aux 4 bits de poids fort du 2ème

opérande ;

- le motif constitué des 12 bits de poids faible du résultat attendu se retrouve décalé de 4

bits dans le résultat obtenu.Exploiter ces indices nécessite la connaissance de la nature du multiplieur. Dans le cas du68000, les multiplications sont réalisées suivant un algorithme d’additions et décalages à l’aidede l’additionneur de l’UAL et des registres généraux (pour le stockage des opérandes et desrésultats partiels). L’expérience cumulée au cours de diverses séances de diagnostic à mis enévidence l’utilité d’opérandes de test ayant des propriétés connues, par rapport à la fonctiontestée (identité, neutre, absorption,…). Dans le cas étudié, la multiplication par 1 à fourni unepremière hypothèse sur la nature de l’erreur. En effet, le résultat obtenu a été égal au premieropérande décalé à gauche de 4 bits et complété à droite par des zéros (figure 3.5).

000A 3790000C D6800009 7B100008 2B30

0000 A3790000 CD680000 97B10000 82B3

0001000100010001

Opérande 1 Opérande 2 Résultat attendu Résultat obtenu

A379CD6897B182B3

Figure 3.5 : résultats obtenus dans la cas de multiplication par 1.

Ces résultats consistants avec ceux de présentés figure 3.4 ont permis d’établir le diagnosticfonctionnel suivant : “l’instruction de multiplication s’arrête 4 pas avant la fin”.L’étape suivante a été l’identification de la zone suspecte du circuit. Ceci a nécessité desinformations précises sur l’implantation du circuit et sur le séquencement du multiplieurA partir de ce diagnostic et d’informations topologiques obtenues par “reverse engineering” du68000, la faute physique à l’origine de l’erreur de multiplication a été identifiée à l’aide d’unmicroscope électronique à balayage. Il s’agissait d’un défaut dans un contact se traduisant parune initialisation incorrecte d’un registre interne utilisé comme compteur lors de la multiplication(initialisé à la valeur erroné 11, au lieu de 15). Ces résultats sont illustrés par les figures 3.6 à3.8.

Page 109: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 90 - Chapitre 3

PartieOpertative(bit slice)

ROM deMicroprogramme

et Nanoprogramme

PLAA2A3

PLAA1

Bra

nch

PLA Trap

PLA

Clock

Registreinstruction

Multiplexeur

PLA de paramétrisation

bus vertical 16 bits

Val

eur

Imm

édia

te

contrôlede Bus

contrôleUAL

Interface de Contrôle

PLA devaleurs immédiates

Figure 3.6: plan de masse du 68000

Page 110: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 91 - Chapitre 3

Bus 16 bits

17Regs

Inc/dec9

regs8

regs UALInc/dec

partie hauteadresses et données Bus 16 bits

adresses partie basse données partie basse

de/vers partie contrôle

registrevaleur

immédiate

Figure 3.7 : schéma de la partie opérative

1 bit duregistre de

valeurimmédiate

representation en porte

Figure 3.8 : représentation d’un bit du registre suspect.

III.1.3. Discussion

L’approche que nous utilisons pour faire du diagnostic fonctionnel à l’aide de GAPT peut serésumer par le diagramme donné figure 3.8.A partir d’un fonctionnement erroné initial (soit identifié par un utilisateur, soit obtenu aprèsexécution d’un programme de test systématique généré par GAPT) une séquence d’actions dediagnostic est réalisée. Chacune de ces actions est composée des étapes suivantes :- analyse du symptôme ;- élaboration d’une hypothèse d’erreur ;- génération d’une séquence de test adaptée ;- exécution par le circuit sous test ;- analyse des résultats.Une fois qu’un diagnostic fonctionnel plausible est obtenu (au niveau des instructions ou desblocs), une tentative de localisation de la faute à des niveaux plus fins (logique ou électrique) est

Page 111: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 92 - Chapitre 3

réalisée. Cette étape nécessite bien sur des informations structurelles sur les blocs suspects etdoit donc être effectuée en collaboration avec un concepteur.

ECHEC

instructions suspectes

établissement d'une hypothèse

génération d'un programme de validation pour l'hypothèse courante

exécution par le circuit sous test

hypothèse rejetée

OUINON

syndromeutilisateur

OUI

NON

GAPT

TESTEUR

résultats cohérents avec l'hypothèse ?

affinements si informations

disponibles sur la structure des blocs suspects

autres hypothèses ?

execution du programme de

test GAPTGAPT /

TESTEUR

hypothèsevalidée

DIAGNOSTIC

TESTEUR

Figure 3.8 : principe de l’approche de diagnostic employée

III.2. Conclusion sur la place du test fonctionnel

Ces expériences sont à rapprocher d’autres expériences de diagnostic de circuits fautifs réaliséesavec divers partenaires. Je ne peux pas malheureusement en rapporter beaucoup, toujours pourcause de confidentialité, mais ces travaux existent. Ce sont ces expériences qui nous ontconfirmé dans notre opinion : le test fonctionnel en général, n’est pas le meilleur pour détecterdes défauts, mais tel qu’il est utilisé dans GAPT, il est sûrement parmi les outils les plussimples et conviviaux à utiliser pour diagnostiquer. C’est là qu’est peut être la vrai place d’un teltest. Non pas chez un utilisateur mais bien chez un fabricant, et même plus précisément au seindes équipes de conception des fabricants, pour tous les besoins de diagnostic durant la phase deconception d’un circuit ou dans sa phase d’évolution vers une technologie nouvelle plus rapide.

IV. - LE TEST FONCTIONNEL “IDEAL”

Page 112: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 93 - Chapitre 3

Au vu des résultats d’expériences présentées dans cette thèse, on peut dire que la limitationprincipale du test fonctionnel en général, et en particulier du test systématique généré par GAPTen ce qui concerne l’efficacité est l’ incapacité à tester correctement les signaux asynchrones .Les générations actuelles de microprocesseurs possèdent des dispositifs permettant d’accélérerles traitements (mémoires caches, pipes, …). Ces types d’architectures vont faire ressortir uneautre limitation inhérente au test fonctionnel qui n’était pas aussi critique pour les générationprécédentes de processeurs : le test des séquences d’instructions . Nous rappelons ici que vu sastructure en modules élémentaires organisés autour d’une instruction à tester, GAPT ne peut pasapporter de solution à ce problème.Hormis les tests purement aléatoires, une esquisse de solution a été apporté en [Gad86]. Danscet article, il est conclu que de courtes séquences aléatoires d’instructions (2 à 5) seraient trèsefficaces pour mettre en évidence des fautes liées à la sensibilité aux séquences (“patternsensivity”). Une séquence optimale permettant de tester toutes les paires d’instructions estproposée en [Fuj85] pour des procédures de “self test”.

A partir des acquis du système GAPT, nous allons ébaucher ici les évolutions logicielles etmatérielles à apporter à un tel outil pour pouvoir faire face aux deux problèmes évoqués ci-dessus.La philosophie du testeur quant à l’acquisition des données par le circuit sous test seraconservée ; c’est à dire : le microprocesseur est actif lors du test et lit ses données en mémoire.

IV.1. Logiciel

Nous allons présenter ici le résultat de réflexions quant au traitement des problèmes soulevéspar le test des séquences d’instructions et des signaux asynchrones. Ces solutions logiciellesseront souvent liées à des solutions matérielles qui seront développées dans le paragraphesuivant.

IV.1.1. Les séquences d’instructions.

Pour traiter les problèmes du test des séquences d’instructions, l’outil idéal doit pouvoirenchaîner aléatoirement ou pas, un nombre n d’instructions valides.Pour chacune des instructions, les opérandes peuvent être déterministes ou aléatoires. Lepremier cas implique le contrôle total de tous les paramètres des n instructions (nom de registre,mode d’adressage, valeurs, …). Ceci conduit à prendre en compte la sémantique de laséquence, et donc la résolution de multiples cas de conflit que la génération aléatoire peutentraîner.

Exemple du 68000 :Soit la séquence d’instructions donnée ci-après, qui charge à un moment donné un registred’adresse utilisé comme pointeur vers la mémoire dans une autre instruction.

MOVEA.L D0,A1 (D0 → A1) (1)

ADD.B #023h,D3 (D3 + 023h → D3)

: :

MOVE.L (A1),D2 (mem(A1) → D2)

(2)

Pour amener une donnée spécifique au registre D2 , le registre d’adresse A1 devra contenirl’adresse mémoire de la donnée à charger par l’instruction (2). Par conséquent, cette donnéedevra avoir été mise auparavant dans le registre A1 par l’intermédiaire de l’instruction (1).

Page 113: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 94 - Chapitre 3

Même dans ce cas simple, on s’aperçoit de la complexité de l’analyse sémantique que doitréaliser le générateur d’un tel programme de test. Si pour le même exemple on rajoute unetroisième instruction utilisant le registre A1 avec un autre mode d’adressage, des conflitsdifficilement solubles peuvent survenir comme le montre la séquence ci-dessous.

MOVEA.L D0,A 1 ; (D0 → A1)

(1)

ADD.B #023h,D3 ; (D3 + 023h → D3)

: :

MOVE.L (A1),D2 ; (mem(A1) → D2)

(2)

: :

SUB.W 12(A1,D0.W),D6 ; (mem(A1 + D0.W + 12) → D6)

(3)

La valeur dans D0 imposée par les instructions (1) et (2) ne pourra pas correspondre à la valeurnécessaire pour résoudre le mode d’adressage de l’instruction (3)

Une première conclusion serait donc que tous les opérandes soient aléatoires. Pour rendre cecivalide, tout mot de la mémoire susceptible d’être adressé en lecture doit être détenteur d’unedonnée. Pour les écritures mémoire, le problème est différent car le contenu de toute adressemémoire serait également susceptible d’être modifié à tout instant. Bien entendu, cette conditionest inacceptable pour que la propre séquence de test ne soit pas perturbée. Seule une solution auniveau du matériel de test pourrait être alors envisagée (double plan mémoire, observation parsignatures…). Ce point sera développé dans le paragraphe sur le matériel.

Il existe un problème lié au mode de test utilisé par GAPT qu’il faudra essayer de résoudre :: letest des instructions de déséquencement. En effet, nous fonctionnons avec un microprocesseuractif, qui va donc lire ses propres programmes de test en mémoire ; ceci implique que lesprogrammes doivent être cohérents notamment au niveau des instructions de saut de type“JUMP” ou “BRANCH”.Si on admet la solution du tout aléatoire (code opération, mode d’adressage, opérande) quisemble être la plus simple, on risque de se trouver en présence de sauts en dehors des zonesprogrammes pouvant déclencher des cascades d’exceptions pour code invalide, ou encored’introduire des boucles infinies par retour arrière dans le programme. Un programme GAPTest bâti séquentiellement, il n’accepte donc que des sauts vers l’avant d’une longueur limitée.

Le schéma suivant montre la solution actuellement adoptée dans GAPT :INIT initialisation de l’état interneJUMP étiq instruction de saut (adresse calculée relativement à une

étiquette)INSTR instruction témoin du passage en séquence

étiq OBSERV observation de l’état interne.

En cas de passage en séquence l’instruction témoin servira de marqueur pour la séquenced’observation (chargement d’un registre avec une valeur particulière par exemple).L’introduction d’une telle séquence au coeur d’instruction aléatoire briserait la cohérence del’ensemble du test, de même que le retrait pur et simple des instructions de sauts pour le test desséquences d’instructions. En effet, dans le cas de test des mémoires cache, ce sont l’empilementde contexte et les basculements qui vont être intéressants à vérifier, dans les instructions desauts à sous programmes par exemple. Pour les instructions de type JSR (saut à sousprogramme) ou d’exception, on peut envisager des solutions simples de branchement à une

Page 114: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 95 - Chapitre 3

adresse ou une zone mémoire contenant des instruction de retour (retour de sous programme,ou retour d’exception). Pour les branchements relatifs et les sauts simples le problème resteentier.

Afin de conserver une cohérence au test, il conviendrait d’encadrer les séquences d’instructionsà tester par des séquences d’initialisation et d’observation ; ceci dans le but de conserver ce quidonne de la puissance et de la convivialité pour le diagnostic aux programmes GAPT : à chaqueinstruction , l’état interne courant du microprocesseur est connu. On peut, pour des séquencesd’instructions, envisager des initialisations et des observations de tous les registres comme enmode conformité, ou choisir d’appliquer le mode pseudo-conformité, c’est à dire d’observer,puis de n’initialiser que les registres mis en cause par les instructions à tester.Suivant la taille que l’on va donner au nouveau module élémentaire, il va être intéressant de seposer le problème de l’observation. Si la séquence est trop longue, des risques de masquagesd’erreur peuvent intervenir du fait que la probabilité pour qu’un même registre serve plusieursfois augmente.

Exemple 68000 :soit la séquence d’instruction suivante :

ADD.L D3,D0 (D0 + D3 → D0)⋅: :

CLR D0 (0 → D0)

Quelque soit le résultat juste ou faux de l’instruction d’addition (contenu dans D0), il sera écrasépar l’instruction CLR (clear).Bien sur, si seule l’addition est fautive, la probabilité que la prochaine erreur soit égalementmasquée est faible, mais si l’erreur est une conséquence d’un enchaînement d’instructions, alorsc’est la probabilité que cette séquence réapparaisse qui devient très faible. De toutes façon, il y aun risque non nul de masquage, donc d’imperfection du test. On réduira sans doute debeaucoup ces risques en choisissant une longueur de séquence faible (4 à 5 instructions ?), maison n’éliminera pas tous les risques. Seules des observations à chaque instruction (par signaturepar exemple) peuvent palier le problème. Si cette solution est choisie, avec une séquence detaille plus importante, un mécanisme automatique de dichotomie (logiciel ou matériel) devraintervenir pour cerner la ou les instructions mettant en évidence le mauvais fonctionnement

IV.1.2. Le test des signaux

Si nous considérons la structure actuelle, le test des signaux pose un problème. En effet, laconfiguration en module élémentaire fait qu’une instruction à tester est entourée d’un nombreplus ou moins important d’instructions d’initialisation et d’observation toutes du même type“LOAD” ou “STORE” (pour le 68000 en conformité une instruction est entourée par 34instruction de type MOVE ou MOVEA). Si on fait arriver au hasard des signaux asynchronespendant ces phases de test, la probabilité pour qu’ils arrivent toujours sur le même typed’instruction est trop importante.Si on choisit de considérer la structure en séquence d’instructions le problème se réduit de luimême mais reste important. Une solution viable serait de masquer l’arrivée des signauxasynchrones pendant les séquences d’initialisation et d’observation, et de la valider pendant letraitement des instructions. Donc un générateur aléatoire de signaux pourrait injecter dessignaux uniquement pendant les phases actives intéressantes. Le problème du masquage peutintroduire une nouvelle difficulté au niveau du matériel cette fois, le problème de lareproductibilité de la séquence aléatoire de signaux pour cerner les causes d’erreur en phase dediagnostic.

IV.2. Matériel

Page 115: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 96 - Chapitre 3

Au niveau du matériel, les problèmes se situent sur plusieurs plans différents :

- l’écriture en mémoire par des instructions à adressage aléatoire ;

- le test des signaux ;

- l’observation des bus internes ;

- le temps déchargement des programmes en mémoire et le temps de comparaison des

résultats.

L’écriture en mémoire à des adresses aléatoires peut être résolue par deux systèmes :

- l’utilisation de deux plans mémoires distincts, l’un comportant les programmes et les

données, l’autre recevant les résultats. La sélection de l’un ou l’autre plan se faisant

simplement grâce au signal de lecture/écriture (r/w). L’avantage d’une telle solution est

de résoudre également partiellement le dernier point, a savoir les temps de chargement et

de comparaison. En effet si l’on veut tester plusieurs microprocesseurs à la suite, le

même programme source pourra être exécuté sur plusieurs microprocesseurs montés

chacun à leur tour sur la carte d’interface avec le testeur. Seule la mémoire d’observation

devra être nettoyée avant chaque exécution. Un schéma explicatif est donné en figure

3.9.

mémoire programmeet données

mémoire résultats

µp

r/w

bus donnée

bus donnée

bus adresse

remise à zéro

comparaison des résultats

mémoirede masse

Page 116: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 97 - Chapitre 3

Figure 3.9 : utilisation de deux plans mémoire pour le test.

- l’utilisation de registres de signature sans écriture mémoire. Cette seconde méthode

résout également les problème de temps de comparaison, puisqu’il suffit de comparer

deux signatures et non plus deux plans mémoires. L’avantage certain de cette solution se

situe également au niveau de l’observation des bus de contrôle. Toutes les sorties

peuvent être observées, et non uniquement les données et adresses comme dans le cas

d’écriture mémoire. Le problème est reporté au niveau de la phase de diagnostic, une

valeur de signature étant parfaitement incompréhensible, seuls des mécanismes annexes

peuvent permettre une analyse aisée des erreurs. Des mécanismes dichotomiques comme

ceux implantés sur TEMAC doivent alors être mis en place.

Une bonne solution pour résoudre tous les problèmes évoqués ci-dessus est la concaténationdes deux solutions précédentes. Un schéma de la solution qui pourrait être retenue est donnéfigure 3.10.

sélection de bus

données

bus données

bus données

bus adresse

signature

mémoireprogramme

mémoirerésultat

contrôle

mémoirede masse

stockageet

comparaison

chargement comparaison

µp

Figure 3.10 : solution mixte : registre de signature et double plan mémoire.

Le dernier problème à résoudre est celui du test des signaux. Pour cela, on peut bien entendureprendre la solution utilisée dans TEMAC [Bel84b], mais cette méthode présente ledésavantage de déclencher par programme l’émission des signaux externes, ce qui implique quele délai de réception du signal est toujours le même. On ne peut pas parler dans ce cas de

Page 117: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Analyse Critique - 98 - Chapitre 3

génération aléatoire de signaux. Toute solution essayant de s’affranchir de ce problème alourditconsidérablement soit le matériel, soit le logiciel du moniteur pilotant le testeur. Un “cahier descharges” du problème à résoudre est donné figure 3.11.

création dessignaux

sélectionaléatoire

µp

analyse desséquences

(init-instr-observ)

validation

signaux asynchrones

Mémoire bus données et adresses

Figure 3.11 : problème à résoudre pour le test des signaux

Une batterie de LFSR génère de façon aléatoire les différents signaux. Une sélection à lieu surle signal ou la combinaison de signal à appliquer. Pour pouvoir appliquer ce signal il faut que leprocesseur soit dans une phase d’exécution d’instruction ou de séquence d’instruction. Uneanalyse est donc nécessaire pour décoder les phases d’initialisation et d’observation. On peut icifacilement imaginer réaliser ceci par décodage d’une instruction spéciale (exemple lecture à uneadresse précise facilement décodable comme FFFFFFFF) qui pourrait encadrer les instructionsà tester.

En conclusion, l’outil matériel “idéal” devrait être une sorte d’hybride entre TEMAC et FUTE,afin de conserver la légèreté et la grande maniabilité du second, et retrouver la puissance dedétection du premier. Des mécanismes supplémentaires très sophistiqués seraient nécessairespour réaliser un bon test aléatoire de signaux.

Page 118: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Conclusion - 99 -

Conclusion

Page 119: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Conclusion - 100 -

Page 120: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Conclusion - 101 -

Références bibliographiques

Page 121: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

102

Page 122: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

103

[Abr82] Abramovici M, Breuer M.A. : ’Fault Diagnosis in synchronous sequential circuits

based on an effect-cause analysis’, IEEE Transactions on Computers, 1982, Vol. C-

31, N°12

[Ann82] Annaratone M.A., Sami M.G. : ’An approach to functional testing of

microprocessors’ 12ème Fault Tolerant Computing Symposium , Santa Monica,

USA, 1982, pp. 158-164.

[Arl88] Arlat J., Crouzet Y., Laprie J., Amat L. : ’L’injection de fautes pour la validation

de la sûreté de fonctionnement’, 6ème Colloque International de Fiabilité et de

Maintenabilité, Strasbourg, France, 1988, pp. 30-35.

[Arl90] Arlat J. et al : ’Fault injection for dependability validation : a methodology and

some application’, IEEE Transactions on Software Engineering, Février 1990,

Vol. 16, N°2, pp. 166-182.

[Auv86] Auvert G. : ‘Microchirurgie de circuits intégrés’, dans ‘Le vide : les couches

minces’, ed. par Société Française du Vide, N° 233, Août 1986, pp. 135-138.

[Auv91] Auvert G. : ‘C.W. laser induced chemical reaction with integrated circuits’, Journal

of vacuum Sc. Techn. B., Janvier 1991.

[Bel82] Bellon C. et al : ’Automatic generation of microprocessor test programs’, 19ème

Design Automation Conference, Las Vegas, USA, 1982, pp. 566-573.

[Bel84a] Bellon C. : ’Le test fonctionnel de circuits intégrés complexes’, Thèse de Doctorat

d’Etat, Institut National Polytechnique, Grenoble, France, 1984.

[Bel84b] Bellon C., Velazco R. : ’Taking into account asynchronous signal in functional test

of complex circuits’, 21ème Design Automation Conference, Albuquerque, USA,

1984, pp.490-496.

[Bel84c] Bellon C., Velazco R. : ’Hardware and software tools for microprocessor

functional test’, International Test Conference, Philadelphie, USA 1984, pp. 804-

810

Page 123: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

104

[Bel85] Bellon C., Kolokithas E., Velazco R. : ’Le système GAPT : une chaîne de test

pour microprocesseurs’, L’Onde Electrique, Novembre 1985, Vol. 65, N°6.

[Bra84] Brahme D., Abraham J.A. : ’Functional testing of microprocessors’ IEEE

Transactions on Computers, Juin 1984, Vol C-33, N°6, pp. 475-485.

[Cas91] Caspi P., Piotrowski J., Velazco R. : ’An a priori approach to the evaluation of

signature analysis efficiency’, IEEE Transactions on Computers, 1991, Vol 40, N°9,

pp. 1068-1071.

[Chi76] Chiang A.C.L., McCaskill R. : ’Two new approaches simplify microprocessor

testing’, Electronics, Janvier 1976, pp. 25-29

[Cor87] Cortner J.M. : ’Test strategy for the 1990s’ International Test Conference,

Washington, USA, 1987, pp. 532-537

[Dav78] David R. : ’Feedback shift register testing’, 8ème Fault Tolerant Computer

Symposium, Toulouse, France, 1978, pp.103-107.

[Dav84] David R. : ’Signature analysis of multi-output circuits’, 14ème Fault Tolerant

Computer Symposium, Kissimee, USA, 1984.

[Fed84] Fedi X., David R : ’Experimentation results from random testing of

microprocessors’ 14ème Fault Tolerant Computer Symposium, Kissimee, USA,

1984, pp. 225-230

[Fer88] Fergusson F.J., Shen J.P : ’Extraction and simulation of realistic CMOS faults

using inductive fault analysis’, International Test Conference, Philadelphie, USA,

1988, pp. 475-483.

[Fin87] Finelli G.B. : ’Characterization of fault recovery through fault injection on FTMP’,

IEEE Transactions on Reliability, Juin 1987, Vol R-36, pp. 164-170.

[Fra84] Franzel J.F., Marinos P.M. : ’Functional testing microprocessors in a user

environment’, 14ème Fault Tolerant Computer Symposium, Kissimee, USA, 1984,

pp. 219-224

[Fuj85] Fuji R., Abraham J.A. : ’Self test for microprocessors’, International Test

Conference, Philadelphie, USA, 1985, pp. 356-361.

Page 124: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

105

[Gad86] Gadenz R.N., Hays W.P. : ’A method for extensive verification of programmable

VLSI devices’, VLSI System Design, Juillet 1986, pp. 84-89.

[Gal80] Galiay J., Crouzet Y., Vergniault M. : ’Physical versus logical faults models in

MOS LSI circuits - Impact on their testability’, IEEE Transactions on Computers,

1980, Vol C-29, N°6, pp. 527-531

[Gun89] Gunneflo U., Karlsson J., Torin J. : ’Evaluation of error detection schemes using

fault injection by using heavy ion radiation’, 19ème Fault Tolerant Computer

Symposium, Chicago, USA, 1989, pp.340-347.

[Kar91] Karlsson J., Gunneflo U., Lidén P, Torin J. : ’Two fault injection techniques for

test of fault handling mechanisms’, International Test Conference, Nashville, USA,

1991, pp. 140-149.

[Hay85] Hayes J.P. : ‘Fault Modeling’, IEEE Design and Test of Computer, Avril 1985,

pp. 88-95

[Hao91] Hao H., McCluskey E.J : ’On the modeling and testing of Gate oxide shorts in

CMOS logic gates’, IEEE International Workshop on Defect and Fault Tolorance on

VLSI Systems, Hidden Valley, USA, 1991, pp. 161-174.

[Hen86] Henshaw B. : ’An MC68020 users test program’, International Test Conference,

Washington, USA, 1986, pp. 386-393.

[Hna87] Hnatek E.R. : ‘IC quality - Where are we ?’, International Test Conference,

Washington, USA, 1987, pp. 430-445.

[Hun84] Hunger A., Gartner A. : ’Functional charcaterization of microprocessors’,

International Test Conference, Philadelphie, USA, 1984, pp. 794-803.

[Jac89] Jacomino M., : ’Sur la théorie du test des circuits digitaux : mesure de la

confiance’, Thèse de Doctorat, Institut National Polytechnique, Grenoble, France,

1989.

Page 125: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

106

[Jac90] Jacomino M., David R. : ’Influence of faults hypothesis on random test length’,

Rapport interne N°90/119, Décembre 1990, L.A.G., Institut National

Polytechnique, Grenoble, France, 1989.

[Jaco89] Jacomet M. : ‘Fantestic, toward a powerful fault analysis and test pattern generation

for integrated circuits’, International Test Conference, Washington, USA, 1989,

pp. 631-641.

[Jai83] Jain S.K, Susskind A.K. : ’Test strategy for microprocessors’, 20ème Design

Automation Conference, Miami Beach, USA, 1983, pp. 703-708.

[Kar91] Karoui S., Velazco R., Chapuis T. : ’A new approach for S.E.U testing’, ICM 91,

Le Caire, Egypte, 1991, pp.

[Kar92] Karoui S., Martinet B., Velazco R. : ’A low cost functional test system, the

FUTE16 tester’ ICM92, Monastir, Tunisie, Décembre 1992 (à paraître).

[Kil86] Kildiran G., Marinos P.M. : ’Functional testing of microprocessors-like

architectures’, International Test Conference, Washington, USA, 1983, pp. 913-

920.

[Klu88] Klug H.P. : ’Microprocessor testing by instruction sequences derived from random

patterns’, International Test Conference, Washington, USA, 1988, pp. 73-80.

[Kor90] Koren I., Singh A.D. : ’Fault tolerance in VLSI circuits’, Computer, Special issue

on fault tolerant systems, Juillet 1990, Vol. 23, pp.73-83.

[Lai83] Lai K., Sieworiek D.P. : ’Functional testing of digital systems’, International Test

Conference, Philadelphie, USA, 1983, pp.207-213.

[Lap85] Laprie J.C. : ’Sûreté de fonctionnement des systèmes informatiques et tolérance

aux fautes : concepts de base’, Technique et Sciences Informatiques (TSI), 1985,

Vol. 4, N°5, pp. 419-429.

[Lin80] Lin M.G., Witz M., Yuen A.K., Rose K. : ’Testing the 8086’, International Test

Conference, Philadelphie, USA, 1980, pp. 426-432.

Page 126: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

107

[Lin82] Lin M.G., Rose K. : ‘Applying test theory to VLSI testing’, International Test

Conference, Philadelphie, USA, 1982, pp. 580-586.

[Mal87] Maly W. : ’Realistic fault modeling for VLSI testing’, 24ème Design Automation

Conference, Miami Beach, USA, 1987, pp. 173-180.

[Mar88] Marshall M. : ’Techniques for user test of the 68882’ , International Test

Conference, Washington, USA, 1988, pp. 942-947.

[Mar89] Martinet B., Bellon C., Velazco R. : Manuel d’utilisation GAPT, Version V2.1.

Rapport de Recherche LGI-IMAG, 1989.

[Mar90] Martinet B., Bellon C., Velazco R. : ‘Failure coverage of functional test

methods : a comparative experimental evaluation’’, International Test Conference,

Washington, USA, 1990, pp. 1012-1017.

[Mar91a] Martinet B., Velazco R. : ’Physical fault injection : a suitable method for the

evaluation of functional test efficiency’ IEEE International Workshop on Defect and

Fault Tolorance on VLSI Systems, Hidden Valley, USA, 1991, pp. 179-182.

[Mar91b] Martinet B., Velazco R. : ’New results on functional testing of complex

microprocessors’ European Symposium on Reliability of Electron devices, Failure

physics and analysis (ESREF), Bordeaux, France, 1991, pp. 523-528.

[Mar91c].Martinet B., Velazco R. : ’An experimental evaluation of functional test efficiency’,

ICM91, Le Caire, Egypte, 1991, pp. 164-168.

[Mar92] Martinet B., Velazco R., Auvert G. : ’Laser injection of spot defects on integrated

circuits’, 1er Asian Test Symposium, Hiroshima, Japon, Novembre 1992 (à

paraître).

[Mic82] Miczo A. : ’Fault modeling for functional primitives’ , International Test

Conference, Cherry Hill, USA, 1982, pp.43-49.

[Mil87] Milan M., Janin M. : ’Microprocessor board for testing irradiated 6800’, Rapport

Interne, Université de Dijon, France, Juin 1987.

Page 127: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

108

[Min82] Min Y., Su S.H.Y. : ’testing functional faults in VLSI’, 19th Design Automation

Conference, Las Vegas, USA, 1982, pp. 384-392.

[Mor82] Morillon F. : ‘Physical fault simulation’, International Symposium EUROCON’82,

Copenhague, Danemark, 1982, pp. 489-492.

[Nor91] Nordsieck A. : ’Two stage faults location’, International Test Conference,

Washington, USA, 1991, pp.916-925.

[Pro89] Provost-Grellier A. : ’Test aux ions lourds de VLSI programmables’, Thèse de

Doctorat en Informatique, Institut National Polytechnique, Grenoble, 1989.

[Rob80] Robach C., Saucier G. : ’Microprocesseur functional testing’, International Test

Conference, Philadelphie, USA, 1980, pp.433-443.

[Sal83] Saluja K.K., Shen L., Su S.Y.H. : ’A simplified algoritm for testing

microprocessors’, International Test Conference, Philadelphie, USA, 1983,

pp. 668-675.

[Sch86] Schuette M.A., Shen J.P., Siewiorek D.P., Zhu Y.X. : ’Experimental evaluation

of two concurrent error detection schemes’, 16ème Fault Tolerant Computer

Symposium, Vienne, Autriche, 1986, pp. 138-143.

[Sod86] Soden J.M., Hawkins C.F. : ’Test consideration for gate oxide shorts in CMOS

ICs’, IEEE Design & Test, Août 1986, pp. 56-64.

[Su82] Su S.Y.H., Hsieh Y. : ’Testing functional faults in digital systems described by

register transfer languages’, Journal of Digital Systems, 1982, Vol 6, N°2/3,

pp.161-183.

[Su84] Su S.Y.H., Lin T. : ’Functional testing techniques for digital VLSI systems’,

21ème Design Automation Conference, Albuquerque, USA, 1984, pp. 517-528.

[Su85] Su S.H.Y., Lin T. : ’VLSI functional test pattern generation - a design and

implementation’, International Test Conference, Philadelphie, USA, 1985, pp. 922-

929.

Page 128: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

109

[Tew91] Tewksbury S.K. : ’Physical boundaries of performance : the interconnection

perspective’, IEEE International Workshop on Defect and Fault Tolorance on VLSI

Systems, Hidden Valley, USA, 1991, pp. 227-246.

[Tha78] Thatte S.M., Abraham J.A. : ’A methodology for functional level testing of general

microprocessor architectures’, 8ème Fault Tolerant Computer Symposium,

Toulouse, France, 1978, pp. 90-95.

[Tha80] Thatte S.M., Abraham J.A. : ’Test generation for microprocessors’, IEEE

Transactions on Computers, Juin 1980, Vol C-29, N°6, pp. 429-441.

[The81] Thevenod-Fosse P., David R. : ’Random testing of the data processing section of a

microprocessor’, International Test Conference, Philadelphie, USA, 1980, pp.275-

280.

[The83] Thevenod-Fosse P., David R. : ’Random testing of the control section of a

microprocessor’, 13ème Fault Tolerant Computer Symposium, Milan, Italie, 1983,

pp.366-375.

[Tho87] Thomas R.W. : ’How to use military standards follow the evolution from SSI to

VLSI’, 3ème Colloque International : la Qualité des Composants Electroniques,

Bordeaux, France, 1987, pp. 35-44.

[Tho89] Thomas R.W. : ’The US Department of defense procurement strategy and the

semiconductor industry in the 1990s’, 4ème Colloque International : la Qualité des

Composants Electroniques, Bordeaux, France, 1989

[Vel82] Velazco R. : ’Test comportemental de microprocesseurs’, Thèse de doctorat,

Institut National Polytechnique, Grenoble, France, 1982.

[Vel85] Velazco R. : ’Fault localisation when testing complex circuits’, IEE Proceedings,

1985, Vol. 132, N°5, pp. 241-245.

[Vel87a] Velazco R., Ziade H. : ‘Towards and automated system for the verification and

diagnosis of “intelligent” VLSI circuits’, International Symposium on Electronic

Devices, Circuits and Systems, Kharagpur, Inde, pp. 607-609.

Page 129: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

110

[Vel87b] Velazco R., Provost-Grellier A. : ’Stratégie de validation de circuits intégrés

intelligents destinés à des application spatiales’, 3ème Colloque International : La

Qualité des Composants Electroniques, Bordeaux, France, 1987, pp. 232-237.

[Vel88] Velazco R., Bellon C., Ziade H. : ’An analysis of experimental results on

functional testing and diagnosis of complex circuits’, International Test Conference,

Washington, USA, 1988, pp. 64-72.

[Vel89] Velazco R. et al. : ‘Comparison between californium and cyclotron S.E;U. tests’,

IEEE Transactions on Nuclear Science, 1989, Vol 36, N°6, pp. 2383-2387.

[Vel90] Velazco R., Conard D., Guyot A., Ziade H. : ’Top down IC failure analysis using

an E-beam system coupled to a functional tester’, Microelectronic Engineering 12,

Publishers E.S., pp. 113-120.

[Wad78] Wadsack R.L. : ‘Fault modeling and logic simulation of CMOS and MOS

integrated circuits’, Bell System Technical Journal, Juin 1978, Vol. 57, N°4.

[Wes89] Westover J.H. : ’Practical test strategies for users of 100 PPM ICs’, International

Test Conference, Washington, USA, 1989, pp. 295-303.

[Zia86] Ziade H. : ’Méthodes et outils pour le diagnostic fonctionnel de microprocesseurs’,

Thèse de Doctorat, Institut des Sciences Appliquées, Toulouse, France, 1986.

Page 130: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Résultats Expérimentaux - 111 - Annexe A

Annexes

Annexe A : résultats expérimentaux

Résultats pour chacun des 4 tests : fabricants (Fabr), systématique (Syst), minimal (Min) et

programme de tri (Tri). Chaque pièce reconnue comme bonne est notée B ; Une notation

différente suivant l’erreur détectée sera attribuée à chacune des pièces défectueuses, suivant la

légende ci-dessous.

test fabricant tests comportementaux

F : Fonctionnel (structurel) M : Mauvais (plus de 50

erreurs)

CC : Court Circuit TO : Time Out

(déséquencement)

CO : Circuit Ouvert nE : n erreurs

NR : NanoROM

RP : Refus Paramétrique

Plaquette A - Coupures -24 pièces.

Fabr. Syst. Min. Tri

1 B B B B

2 B B B B

3 B B B B

4 B B B B

5 NR M TO TO6 NR M TO M7 NR TO TO TO8 NR M TO TO9 NR TO TO TO10 NR TO M TO11 NR TO M TO12 NR TO TO TO

13 F 26E 3E B

14 F M TO M15 F TO M M16 F M M 3E

17 F M M M18 F M 46E M

19 F M 29E B

20 F TO M M

21 F M 4 B

22 F M M B

23 F M 5 M

24 F B B B

Page 131: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Résultats Expérimentaux - 112 - Annexe A

Pièces non détectées :

Fabricant : 4

Systématique : 5

Minimal : 5

Tri : 9

Plaquette B - Coupures -42 pièces.

Fabr. Syst. Min. Tri

1 B B B B

2 B B B B

3 B B B B

4 B B B B

5 B B B B

6 B B B B

7 B B B B

8 B B B B

9 B B B B

10 B B B B

11 F B B B

12 F M TO TO13 F M M M14 F M M TO15 F M TO TO

16 F M M B

17 F TO TO TO18 F TO M M19 F TO TO M20 F M M TO

21 F M M B

22 F M TO M23 NR TO TO TO24 NR TO TO M25 NR TO M M26 NR M M M27 NR M M M28 NR TO TO TO29 NR TO TO TO30 NR TO TO TO31 NR TO TO TO

32 NR B B B

33 NR TO TO TO34 NR TO TO TO35 NR TO TO TO36 NR TO TO TO37 NR TO TO TO38 NR TO TO TO39 NR TO TO M40 NR M M M41 CC TO TO TO

42 RP B B B

Page 132: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Résultats Expérimentaux - 113 - Annexe A

Pièces non détectées :

Fabricant : 10

Systématique : 12

(+ 1 paramétrique)

Minimal : 12

(+ 1 paramétrique)

Tri : 15

(+ 1 paramétrique)

Plaquette C - Coupures -42 pièces.

Fabr. Syst. Min. Tri

1 B B B B

2 B B B B

3 B B B B

4 B B B B

5 B B B B

6 B B B B

7 CC M M TO

8 CO TO TO B

9 CO TO TO TO10 CO TO TO TO11 F M M M12 F TO TO TO13 F TO TO TO

14 F M M B

15 F TO TO TO16 F TO TO TO17 F TO TO TO18 F M M M19 F TO TO TO20 F TO TO M21 F M TO M22 F TO TO TO23 F TO TO TO24 F M TO M25 F M M TO26 F M M M27 F M TO M28 NR TO TO TO29 NR TO TO TO30 NR TO TO TO

31 NR B B B

32 NR B B B

33 NR TO TO TO34 NR TO TO M35 NR TO M TO

36 NR M TO B

37 NR TO TO TO38 NR TO M TO39 NR TO M B40 NR M M M

41 NR TO TO TO

42 RP B B B

Page 133: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Résultats Expérimentaux - 114 - Annexe A

Pièces non détectées :

Fabricant : 6

Systématique : 8

(+ 1 paramétrique)

Minimal : 8

(+ 1 paramétrique)

Tri : 12

(+ 1 paramétrique)

Plaquette D - Courts-circuits -47 pièces.

Fabr. Syst. Min. Tri

1 B B B B

2 CC TO TO TO3 NR TO TO TO4 NR TO TO TO5 NR TO TO TO6 NR M M 40E7 NR TO TO TO8 NR M TO TO9 NR M M M10 NR M M TO11 NR TO TO TO

12 NR TO B B

13 NR TO M TO14 NR TO TO TO

15 NR TO TO B

16 NR M TO TO17 NR TO TO TO18 NR M M M19 NR M M TO20 NR M TO 25E21 NR TO TO TO22 NR TO TO TO23 NR TO TO TO24 NR TO TO TO25 NR M M M26 NR TO TO TO27 NR TO TO TO28 NR TO TO TO29 NR M M 4E30 F TO TO M

31 F M 5E B

32 F B B B

33 F B B B

34 F M M M

35 F M 7E B

36 F M 12E B

37 F M M M38 F TO TO M

39 F M 8E B

40 F TO TO TO

41 F B B B

42 F TO TO TO

43 F M TO M

44 F M M B

45 F 5E B B

46 F M M M

47 F B B B

Page 134: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Résultats Expérimentaux - 115 - Annexe A

Pièces non détectées :

Fabricant : 1

Systématique : 5

(+ 1 paramétrique)

Minimal : 7

(+ 1 paramétrique)

Tri : 13

(+ 1 paramétrique)

Plaquette E - Courts-circuits -40 pièces.

Fabr. Syst. Min. Tri

1 B B B B

2 B B B B

3 CC TO TO 4E4 CC TO M M5 CC TO TO M6 CO TO TO TO7 CO TO TO TO8 CO M TO M9 CO TO TO TO10 CO TO TO TO11 F TO TO M12 F TO TO TO13 F M M 4E14 F M M M15 F TO TO TO16 F M M M17 F M M M18 F M M M19 F TO TO 9E20 F TO TO 9E

21 F M M B

22 F TO TO TO23 F M M 7E24 F TO TO TO25 F M TO TO

26 F B B B

27 NR TO TO TO

28 NR B B B

29 NR TO TO M30 NR M M M31 NR M 11E M32 NR TO TO TO33 NR TO TO TO

34 NR M M B

35 NR TO TO M36 NR TO TO TO37 NR TO M TO38 NR TO TO TO39 NR M M TO40 NR TO TO M

Page 135: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 116 - Gapt

Page 136: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 117 - Gapt

Pièces non détectées :

Fabricant : 2

Systématique : 4

Minimal : 4

Tri : 6

Annexe B : GAPT

Pour tester un microprocesseur, la méthode GAPT distingue :

- le test de la partie contrôle, qui active les fonctions du circuit (instructions : test de

conformité, ou pseudo-conformité),

- le test de la partie opérative, qui vérifie les modules de la partie opérative (registres,

opérateurs, connexion...), ou test de balayage.

Le test de conformité vérifie la bonne exécution d’un ensemble de fonctionnementsreprésentatifs du circuit. On s’intéresse aux fonctions exécutables par le microprocesseur entrela lecture de deux codes opération successifs, ou fonctionnements élémentaires.En d’autres termes, le problème des séquences d’instructions n’est pas pris en compte : ladescription comportementale d’un microprocesseur ne permet pas de déterminer quelles sont lesséquences critiques, et il est impossible de tester tous les couples d’instructions, par exemple.

Le logiciel GAPT génère automatiquement le programme de test d’un microprocesseur (enlangage assembleur) à partir de sa description “haut niveau” en langage GAPT et éventuellementde la base de données des opérandes de test.

Les programmes de test générés par GAPT, après assemblage, sont des programmesexécutables, et le test peut être effectué :

- sur un système de développement : le processeur exécute normalement le programme, et

les résultats du test sont observés en mémoire centrale,

- sur le testeur FUTE16/32, qui est un testeur fonctionnel défini dans le cadre du projet

GAPT, pour les processeurs d’usage général 8, 16 ou 32 bits : le processeur exécute

normalement le programme, mais toutes ses sorties sont observées,

Page 137: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 118 - Gapt

- sur un testeur de composants classique : cela nécessite une interface assez sophistiquée,

surtout si on veut utiliser les capacités algorithmiques propres au testeur.

I. Spécification du logiciel GAPTA partir de la description du microprocesseur dans le langage GAPT, le système génère lesprogrammes de test du microprocesseur, à l’aide de la base de données des opérandes de test.

Le langage GAPT est basé sur la notion de groupes, permettant la description d’un grandnombre de fonctionnements représentatifs à l’aide d’une seule primitive du langage. Desgroupes de valeurs, de registres, de modes d’adressage, et de formats peuvent être définis etutilisés pour décrire de manière compacte de nombreuses instructions effectives.

A partir d’une telle description, le générateur GAPT :

- détermine l’ensemble des instructions effectives,

- produit les séquences d’initialisation et d’observation correspondantes d’après le mode

de test (conformité, pseudo-conformité ou balayage),

- génère les opérandes en mémoire.

1. Modes de test

Les programmes de test comportemental d’un microprocesseur sont des programmes longs,mais très répétitifs, composés de modules élémentaires indépendants les uns des autres.

a) Modules élémentairesPour chaque fonctionnement à tester sera créé un module élémentaire de test, de la formesuivante :

- initialisation de l’état interne du microprocesseur,

- activation du fonctionnement à tester,

- observation de l’état interne.

Pour un microprocesseur, l’initialisation est une séquence d’instructions du type “LOAD”,permettant de charger les registres internes du microprocesseur. L’observation est une séquenced’instructions du type “STORE” en mémoire, permettant au testeur d’observer les registresinternes ; les instructions choisies seront les plus simples possibles.Suivant le mode de test choisi : (conformité, pseudo-conformité, balayage), les modulesélémentaires auront une forme et une fonctionnalité différentes.

b) Le test de conformitéIl consiste à vérifier que :

- les blocs fonctionnels qui doivent être activés par la transition sont activés effectivement

et correctement,

- les blocs fonctionnels qui ne doivent pas être activés ne le sont pas.Un module élémentaire de conformité a la forme suivante :

Page 138: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 119 - Gapt

- initialisation de tous les registres,

- instruction à tester,

- observation de tous les registres.

On initialise et observe donc tous les registres internes du microprocesseur, de telle sorte que :

- les registres sources contiennent les valeurs de test,

- les registres “destination” et les registres non utilisés aient une valeur différente des

registres source (valeur aléatoire). Ce mode permet de vérifier qu’un registre qui doit être

non utilisé n’est pas pris à tort comme source ou puits de l’opération,Ce mode de test qui mène à des programmes de test très longs, sert dans la phase de diagnosticà localiser rapidement une erreur. L’état interne du microprocesseur étant réinitialisé à chaquemodule élémentaire, un seul bloc du programme est à mettre en cause afin de détecter l’originede l’erreur.

Page 139: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 120 - Gapt

c) Le test de pseudo-conformitéL’utilisation de ce mode de test permet de réduire la longueur d’un test d’identification, sansdiminuer les capacités de détection d’erreurs.Un module élémentaire en mode pseudo-conformité est de la forme :

- observation de tous les registres internes qui doivent être modifiés (sources et

destinations de l’instruction à tester),

- initialisation des sources de l’instruction,

- instruction à tester.

La concaténation de telles séquences, précédée d’une initialisation globale de tous les registres etsuivie par une observation globale, constitue un programme de test aussi puissant mais pluscourt qu’en mode conformité. L’inconvénient est que les données ne sont pas locales à unmodule élémentaire, donc quand une erreur est détectée une large portion du programme de testdoit être analysée pour identifier les instructions suspectes. Une autre possibilité serait degénérer à nouveau le même test en mode conformité.

d) Le test de balayageLe module de test a la forme suivante :

- initialisation des sources de l’instruction,

- instruction à tester,

- observation des puits de l’instruction.

Ce type de test vérifie que les résultats sont corrects, mais non que d’autres registres ne sont pasmodifiés. Ce test est en général utilisé pour vérifier les blocs de la partie opérative (UAL,registres...).

2. Opérandes de test

Les opérandes de test peuvent être :

- déterministes,

- aléatoires.

L’utilisateur peut définir ses opérandes de test ; ils peuvent être des ensembles de valeurs ou desensembles de chaînes de caractères. Un ensemble d’opérandes de test est appelé groupes devaleurs.Considérons une instruction à n sources ; à chaque source sera associé un groupe de valeurs.GAPT combine les opérandes de test dans les différents groupes ; il y a donc ainsi itération surles opérandes de test. On peut avoir une itération complète (listes de valeurs séparées par desvirgules) ou itération partielle (listes de valeurs séparées par des points virgules).Exemple :

pour une instruction à 2 sources : itération complète

GV1 = (V1,V2) GV2 = (V3,V4)

tests générés V1,V2

Page 140: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 121 - Gapt

V1,V4

V2,V3

V2,V4

itération réduite

GV1 = (V1;V2) GV2 = (V3;V4)

tests générés V1,V3

V2,V4

L’utilisateur peut également utiliser des opérandes aléatoires, ou associer des opérandesdéterministes et des opérandes aléatoires.L’ensemble des valeurs aléatoires étant considéré comme un groupe de valeurs de longueurindéterminée.

Page 141: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 122 - Gapt

3. Notion de groupe

A un même code mnémonique (ADD, SUB, MOVE, BR...) correspond un grand nombred’instructions ; toutes celles qui sont considérées comme des fonctionnements représentatifsdevront être activées au cours du test de conformité.

Exemple :

Instruction ADD <ea>, Dn du MC68000

Cette instruction peut se faire en 3 tailles (B,W,L) ; <ea> représente 1 parmi 14 modes

d’adressage, Dn est 1 parmi les 8 registres de données. Dans le test de conformité, toutes

les instructions correspondantes doivent être activées, c’est à dire toutes les combinaisons

possibles de format, de mode et de registre d’adressage, et de registre données (environ

7600 combinaisons).

Il n’est pas question de décrire une à une chaque instruction effective associée à un mêmemnémonique. Le langage GAPT permet une description compacte d’une famille d’instructionseffectives. Cette description est basée sur la notion de groupe.

Un groupe est un ensemble de registres, ou de modes d’adressage, ou de conditions, ou deformats, qui peuvent former un champ opérande associé à un code mnémonique.

Par exemple, pour l’instruction ADD size <ea>, Dn il faudra avoir défini :

- le groupe des formats size = (B,W,L)

- le groupe des modes d’adressage autorisés pour chacun des opérandes dans les

différents formats.

Les groupes de modes d’adressage sont définis progressivement, par la définition :

- des groupes de registres, utilisés soit comme registres opérandes, soit comme registres

adresses,

- des modes d’adressage élémentaires, en faisant appel éventuellement aux groupes de

registres ; dans ce cas, un mode d’adressage élémentaire est en fait un groupe

d’adressage,

- des groupes de modes d’adressage.

Exemples :

- groupes de registres

DN = (D0,... D7)

Page 142: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 123 - Gapt

AN = (A0,... A7)

RN = (D0,... D7, A0, ... A7)

- modes d’adressage

l’adressage indirect indexé : d8 (AN,RN.W) correspond à 120 combinaisons.

- groupes de mode d’adressage

Pour l’instruction ADD.size <ea>, Dn, il faut utiliser 2 groupes :

• celui formé de tous les modes d’adressage : EA

• celui qui exclut l’adressage des registres adresse (interdit en format B) : EA’

Ces groupes étant définis, les 7600 instructions associées à “ADD size <ea>, Dn” peuvent

être décrites par 2 pseudo-instructions :

• ADD.size EA, DN avec size = (W,L)

• ADD.size EA’, DN avec size = (B)

A partir de ces deux pseudo-instructions, le système GAPT peut générer par itération les

modules de test de toutes les instructions effectives.

4. Gestion de l’espace mémoire

Le programme de test est un programme en assembleur formé :

- d’une zone programme,

- et en général d’une ou plusieurs zones données.

Pour simplifier la gestion de la mémoire, chaque zone est remplie séquentiellement. Le systèmeGAPT range séquentiellement chaque module élémentaire dans le fichier programme et réserveet initialise séquentiellement dans le fichier données adéquat les emplacements nécessaires auxopérandes et aux résultats.

Le nombre de zones données dépend étroitement des caractéristiques de l’adressage dumicroprocesseur, par exemple :

- formats d’adresse différents (ex MC68000)

- adressage segmenté (ex 8086)De plus, l’utilisateur peut définir des zones résultats distinctes des zones opérandes.La taille d’un programme de test est soumise à des limitations dues :

- soit au système hôte (capacité mémoire),

- soit aux caractéristiques de l’adressage du microprocesseur testé.

Page 143: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 124 - Gapt

Ces limitations sont indiquées par l’utilisateur dans la description du microprocesseur ; lescontraintes de taille peuvent porter sur les zones individuellement et/ou sur l’ensemble deszones.Le logiciel GAPT gère automatiquement le partitionnement du programme de test en portions :modules de test, vérifiant ces contraintes.

5. Sources et puits d’une instruction

a) DéfinitionsA chaque instruction sont associés deux ensembles d’éléments de mémorisation : l’ensembledes sources et l’ensemble des puits.L’élément de mémorisation S est une source pour l’instruction I si S est support d’uneinformation utilisée (traitée) pendant l’exécution de I.

Page 144: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 125 - Gapt

On distingue :

- les sources immédiates qui sont les informations contenues dans l’instruction (opérandes

immédiats, adresse ou déplacement).

- les sources externes : l’information n’est pas immédiate et son support de mémorisation

est externe au microprocesseur (mémoire centrale ou circuit périphérique).

- les sources internes : l’information n’est pas immédiate et le support de l’information est

un élément de mémorisation interne du microprocesseur (registre ou bascule d’état).

L’élément de mémorisation P est dit puits pour l’instruction I si P est un support d’informationdont la valeur est, ou peut être modifiée par l’exécution de I.

On distingue de même :

- les puits implicites , qui sont le compteur programme et le registre d’état, qui sont

modifiés par l’exécution de presque toutes les instructions. Le compteur programme sera

cependant mentionné explicitement comme puits dans le cas de rupture de séquence.

- les puits externes

- les puits internes

Suivant la nature de l’information qu’elle contient, une source peut être :

- une source de type adresse : son contenu sert à calculer l’adresse d’un support mémoire

effectivement accédé au cours de l’exécution de l’instruction (comme source ou comme

puits)

- une source de type opérande dans le cas contraire.

Une source de type opérande peut contenir :

- soit un opérande adresse

- soit un opérande donnée .

Page 145: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 126 - Gapt

Exemples : MC6800

- instruction LDAA n,X

X est une source interne de type adresse

n est une source immédiate de type adresse

le mot mémoire d’adresse (X)+n est une source externe de type opérande (donnée)

Le registre A est puits interne.

- instruction JMP n,X (branchement à l’adresse (X)+n)

X est une source de type opérande adresse, ainsi que n, car le mot mémoire

d’adresse(X)+n n’est pas effectivement accédé.

b) Initialisation des sources et puits d’une instructionL’initialisation de l’état interne du microprocesseur, précédant l’activation d’une instruction,consiste à :

- initialiser les sources de type opérande donnée soit avec les valeurs de testprédéterminées correspondant à l’opération référencée, soit avec des valeurs aléatoires.On initialisera la mémoire grâce à une directive assembleur de définition de donnée et un registregrâce à une instruction de type “LOAD”.

- initialiser les sources de type opérande adresse et les sources de type adresse avec desadresses (étiquettes).On initialisera la mémoire grâce à une directive assembleur de définition d’adresse (dans le casd’adressage indirect par mémoire), et un registre grâce à une instruction de type “LEA” (LoadEffective Address).

- initialiser tous les autres registres internes (ceux qui ne sont pas sources) avec unevaleur aléatoire s’il s’agit du test de conformité.

Le système GAPT désigne une adresse mémoire à l’aide d’une étiquette (appelée pointeur).On aura un pointeur ZDi sur le début de chaque zone données i.Une adresse mémoire dans la zone donnée i aura la forme :

ZDi + j avec j ≥ 0.La valeur absolue de cette adresse ne sera connue qu’après assemblage.

Le système GAPT initialise séquentiellement, au fur et à mesure de ses besoins, une zonedonnées i. A un instant donné (K mots de la zone données i étant utilisés), l’adresse libre danscette zone est égale à ZDi + K (valeur du pointeur courant sur cette zone).

II. Le langage GAPTLe langage GAPT est un langage de description fonctionnelle de microprocesseurs et de circuitsprogrammables.La description d’un microprocesseur dans ce langage est décomposée en 3 parties :

- la description de l’architecture (registres, groupes de registres, mode d’adressage,

groupes de modes d’adressage,...),

Page 146: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 127 - Gapt

- la description du fonctionnement (jeu d’instructions),

- la description des opérandes de test spécifiques au microprocesseur testé.

Le découpage physique de la description d’un microprocesseur en 8 unités permet uneindépendance relative dans l’écriture des unités et leur compilation :

- unité1 : formats, registres et groupes de registres

- unité2 : modes d’adressage et groupes de modes d’adressage

- unité3 : opérandes de test

- unité4 : utilitaires assembleur

- unité5 : signaux asynchrones

- unité6 : séquences d’initialisation et d’observation des éléments de mémorisation du

microprocesseur

- unité7 : jeu d’instructions

- unité8 : description du test du comportement du microprocesseur face aux signaux

asynchrones.

L’unité5 et l’unité8 concernent les signaux, et sont liées au testeur TEMAC. Elles ne sont pasdéveloppées dans ce manuel.Il existe une unité0 : opérandes de test standard, qui permet de définir une base de donnéesd’opérandes de test non spécifiques à un microprocesseur.

Le langage GAPT permet de décrire le jeu d’instructions d’un microprocesseur de manièrecompacte (similaire à celle proposée dans le manuel d’utilisation).En conséquence, on décrira dans une unité7, des familles d’instructions paramétrées (unparamètre peut être un format, un mode d’adressage, un groupe de modes d’adressage,...). Ilest possible de diviser la description du jeu d’instructions en un nombre variable d’unités detype 7, compilées séparément, afin de générer progressivement le programme de test.La compilation d’une telle unité consiste à développer chaque famille d’instructions en unnombre fini de modules élémentaires ; il s’agit de la génération proprement dite du programmede test en assembleur.Les unités de type 1 à 6 sont des unités “déclaratives”, dont la compilation se résume, pardéfinition, à mémoriser :

- les paramètres qui seront référencés dans la description d’une famille d’instructions,- les informations nécessaires à la génération d’un module élémentaire.

Nous présentons ici les principales caractéristiques du langage sur un exemple.Exemple :

Famille d’instructions du MC68000 : addition avec résultat stocké dans un registre.

ADD.size <ea>, Dn <ea> + Dn → Dn

Cette instruction a trois paramètres :

Page 147: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 128 - Gapt

- “size” spécifie le format (B octet, W mot, L double mot),

- “ea”représente les modes d’adressages données du 68000,

- “Dn” désigne 1 parmi les 8 registres données (D0,...,D7).

Cette famille d’instructions effectives est décrite dans l’unité7 par

gen

‘ADD.’ size ‘ ‘ GDATAMA ‘ ,’ DRD : ← α

CCR, DDR PLUS (DDR, GDATAMA) ← β

size = (B ; W ; L) ← γ

fin_gen

La description d’une famille d’instruction est donc composée de trois parties :

α ) la syntaxe assembleur de l’instruction,

β ) la description fonctionnelle de l’instruction,

γ ) des compléments d’information.

Chaque famille d’instructions est décrite dans un pseudo-assembleur : suite de parties fixes(entre quotes) et de parties variables (mode d’adressage : DRD, groupe de modes d’adressage :GDATAMA, format : size, ...)L’utilisateur référence l’opérateur correspondant à la fonction de l’instruction (PLUS), en luiassociant le ou les modes d’adressage des sources (GDATAMA, DRD) et des puits (DRD,CCR : registre code condition).La description d’une instruction est éventuellement complétée par, entre autres, les valeursd’itération du format (B, W ou L).

Toutes les informations nécessaires à la description et à la compilation d’une familled’instructions (unité7) sont définies dans les unités de type déclaratif (unité0 à unité6).L’opérateur PLUS ainsi que les opérandes qui lui sont associés dans les différents formats sontspécifiés dans l’unité3.Les modes d’adressage (ou groupes de modes d’adressage) GDATAMA et DRD ont été définisau préalable dans l’unité2.Le registre CCR et les registres (ou groupes de registres) impliqués dans les modes d’adressageont été définis dans l’unité1, ainsi que les formats données B,W et L.Les utilitaires assembleur nécessaires à la génération d’un programme sont décrits dans l’unité4.On trouve dans l’unité6, les séquences d’initialisation et d’observation des registres.

Lors de la compilation d’une famille d’instructions, les fonctions essentielles de GAPT sont :- l’itération sur les divers paramètres en vue d’obtenir toutes les instructions effectives

correspondantes (itération sur les valeurs de format, les modes d’adressage, les registres, lesvaleurs d’opérandes). Cette phase met en oeuvre un processus de substitution qui consiste àremplacer toute partie variable, référencée dans la description syntaxique d’une familled’instructions ou d’un mode d’adressage par sa “valeur assembleur”.

- la gestion de l’adressage permettant de générer la séquence d’initialisation de chaquemodule élémentaire et les différentes zones données utiles à l’exécution des instructions testées.

Un module élémentaire du test de conformité des instructions du MC68000 contient 35instructions :

Page 148: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 129 - Gapt

- initialisation de 17 registres (D0, ..., D7, A0, ..., A7, CCR)

- instruction à tester

- observation des 17 registres.

La taille d’un module élémentaire de pseudo-conformité varie avec l’instruction testée. Parexemple, pour l’instruction : ADD.B (A0),D2 il y a 6 instructions :

- observation de CCR, A0 et D2,

- initialisation de A0 et D2,

- instruction ADD.B (A0),D2.

De même pour la taille d’un module élémentaire de balayage qui, pour la même instruction serade 5 instructions :

- initialisation de A0 et D2

- instruction ADD.B (A0),D2

- observation de CCR et D2.

Le logiciel GAPT permet la génération du test comportemental d’une grande variété de circuitsprogrammables. Il est évident que l’effort de description en langage GAPT n’est rentable que sila génération du test fait appel aux possibilités “intelligentes” de GAPT : itérations (en particuliersur les modes d’adressage), gestion de l’espace mémoire... Notons que l’utilisation du logicielGAPT n’est pas limitée par les fonctions (au sens d’opérations) réalisées par le circuit :l’utilisateur peut définir des opérations en leur associant des opérandes de test (dans l’unité3),ou faire appel à la génération aléatoire de vecteurs.

On distingue deux types de circuits programmables :

- circuits maîtres (microprocesseurs, micro-ordinateurs...),

- circuits esclaves (coprocesseurs, circuit d’interface...).En ce qui concerne les circuits maîtres, le test est effectué par exécution normale d’unprogramme par le circuit testé. Les difficultés possibles sont liées à la commandabilité etl’observabilité des éléments de mémoire internes, qui influent sur la longueur et la qualité duprogramme de test.Le système GAPT peut traiter les circuits esclaves, si le test est effectué à travers le processeurmaître. On décrit alors dans le langage GAPT, le sous-ensemble d’instructions du processeurmaître qui active le circuit esclave. La commandabilité et l’observabilité des registres internes ducircuit esclave est un problème d’autant plus critique qu’il s’agit d’un accès indirect à travers lesinstructions et les registres du processeur maître.

Page 149: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 130 - Gapt

III. Les différentes unités

Forme générale de l’unité 1

unite1nom du microprocesseurtaille_mot_memoire notation entière ! utilisé comme unité de référence sous le

! terme mot mémoire adréssable (mma)taille_code_operation notation entière [mma]format_operandesdonnees(taille du format [mma] nom GAPT du format [‘nom assembleur du format’],...)adresses(taille du format [mma] nom GAPT du format, ...)compteur_programme notation entière nom GAPT du compteur ordinalregistre_code_condition nom GAPT du registre [masque]registrestaille du registre nom GAPT du registre ['nom assembleur du registre'] [@]

registre simple

nom GAPT du registre ['nom assembleur du registre'] [@] (...(,), ...)

registre formé par l'association des 2

registres

description de registres simples ou associations

groupes_registresnom GAPT de groupe de registres = (nom GAPT de registre,...)f in

Page 150: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 131 - Gapt

Exemple : unité 1 du MC68000unite1MC68000taille_mot_memoire 8taille_code_operation 16format_operandesdonnees (8 B, 16 W, 32 L)adresses (16 ADR16B, 16 ADR16H, 24 ADR24)compteur_programme 32 PCregistre_code_condition CCR masqueregistres 32 D0 32 D1 32 D2 32 D3

32 D4 32 D5 32 D6 32 D732 A0 @ 32 A1 @ 32 A2 @ 32 A3 @32 A4 @ 32 A5 @ 32 A6 @ 32 A7 @ 8 CCR

groupes_registresDN = (D0,D1,D2,D3,D4,D5,D6,D7)AN = (A0,A1,A2,A3,A4,A5,A6,A7)ANB = (A0,A1,A2,A3,A4,A5,A6)

fin

Page 151: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 132 - Gapt

Forme générale de l’unité2unite2Nom microprocesseurdonneesmodes_adressagenom mode d’adressage : syntaxe assembleur du mode / description GAPT du mode / taille dumodegroupes_modesnom groupes modes = (nom mode,...) liste de modes

ou= nom groupe modes sauf liste modes

ou= nom groupes modes et liste modes

ou= nom groupes modes + nom groupe modes

branchementsmodes_adressage

.

.

.

groupes_modes...

f in

Page 152: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 133 - Gapt

Exemple : unité 2 du MC68000 (description partielle)unite2MC68000donneesmodes_adressageARI : ‘(‘AN’)’ / mem * size (AN.ADR24) / 0DRD : DN / DN.size / 0ARD : AN / AN.size / 0ARIWP : ‘(‘AN ‘+)’ / mem * size (AN.ADR24) / 0ARIWPR : ‘(-’AN’)’ / mem * size (AN.ADR24-size) / 0ARIWD : depl ‘(‘AN’)’ / mem * size (AN.ADR24+depl.16) / 2ARIWIW : depl ‘(‘AN’,’RN’)’ / mem * size (AN.ADR24+depl.8+RN.W) / 2ARIWIL : depl ‘(‘AN’,’RN’.L)’ / mem * size (AN.ADR24+depl.8+RN.L) / 2ASAB : adr / mem * size (adr.ADR16B) / 2ASAH : adr / mem * size (adr.ADR16H) / 2ALA : adr / mem * size (adr.ADR24) / 4PCWD : adr ‘(PC)’ / mem * size (PC+depl.16) / 2PCWIW : adr ‘(PC, ‘RN’)’ / mem * size (PC+depl.8+RN.W) / 2PCWIL : adr ‘(PC,’RN’.L)’ / mem * size (PC+depl.8+RN.L) / 2IMMB ‘#’vi / vi.B / 2IMMW ‘#’vi / vi.W / 4IMML ‘#’vi / vi.L / 4groupes_modesIMM = (IMMB, IMMW, IMML)AD = (ASAB, ALA, ASAH)IMMAD = IMM + ADbranchementsmodes_adressageBALA : adr / adr.ADR24 / 2BPCWDL : ‘.S ‘ adr / PC + depl.8 / 0BPCWD : adr / PC + depl.16 / 1groupes_modes . . .fin

Page 153: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 134 - Gapt

Forme générale de l’unité 3unite3nom du microprocesseurgroupes_valeursnom de groupe de valeurs [base] =

(‘V’,....;....; alea [et ‘V1’] [ ou ‘V2’], ...) : nom de formatnom de groupe de valeurs [base] =

nom de groupe de valeurs + nom de groupe de valeursgroupes_chaine_carnom de groupe de chaîne de caractères = (‘chaîne de caractère’,...;...;...)nom de groupe de chaînes de caractères =

nom de groupe de chaîne de caractères + nom de groupe de chaîne de caractères...

operateursnom d’opérateur (alea, adr, nom de groupe de valeurs, nom de groupe de chaînes de caractères)nom d’opérateur (nom de groupe de valeurs, ..., nom de groupe de valeurs)...

f in

La base, dans laquelle sont définies les valeurs, est par défaut la base hexadécimale.Les mots clé définissant la base sont : hexadecimal, decimal, binaire.

Page 154: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 135 - Gapt

Forme générale de l’unité 4unite4nom microprocesseurzones_donneesnom zone donnée ram_externe [taille limite] . .notation entièredefinition_donneesnom format donnée : [align = notation entière] def_cte = [‘chaîne’] cte [‘chaîne’]

[notation entière mma]definition_adressesnom format adresse : [align = notation entière] [ def_cte = [‘chaîne’] cte [‘chaîne’] ]

[notation entière mma] nom zone donnée associée

symboles_constanteshexadecimal[‘symbole’] valeur [‘symbole’]decimal [‘symbole’] valeur [‘symbole’]binaire [‘symbole’] valeur [‘symbole’]

commentaire [‘chaîne’]NOP ‘mnémonique’ taille instructionBRINC ‘mnémonique’ [; ‘mnémonique’...] taille instructionf in

Toutes les tailles indiquées ici sont en nombre de mma.

Page 155: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 136 - Gapt

Exemple : unité 4 du MC68000unite4MC68000zones_donneeZDC1 ram_externeZDL ram_externeZDC2 ram_externelongueur_max_memoire 4096definition_donneesB : def_cte = ‘DC.B ‘ cteW : align = 2 def_cte = ‘DC ‘ cteL : align = 2 def_cte = ‘DC.L ‘ ctedefinition_adressesADR16B : ZDC1ADR24 : 4 mma ZDLADR16H : ZDC2symboles_constanteshexadecimal ‘0’ valeur ‘h’decimal valeurbinaire ‘0’ valeur ‘b’commentaire ‘;’NOP ‘NOP’ 2BRINC ‘BRA.S’ 2fin

Page 156: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 137 - Gapt

Forme générale de l’unité 6unite6nom microprocesseurinitialisationreg nom registre : degré commandabilité / taille Si / Si

[degré commandabilité / taille Si / Si]observationreg nom registre : degré observabilité / taille So / So

[degré observabilité / taille So / So]f in

Page 157: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 138 - Gapt

Exemple : unité 6 du MC68000unite6MC68000initialisationreg D0 : 1 / 6 / ‘MOVE.L #’ vi ‘, D0’reg D1 : 1 / 6 / ‘MOVE.L #’ vi ‘, D1’reg D2 : 1 / 6 / ‘MOVE.L #’ vi ‘, D2’reg D3 : 1 / 6 / ‘MOVE.L #’ vi ‘, D3’reg D4 : 1 / 6 / ‘MOVE.L #’ vi ‘, D4’reg D5 : 1 / 6 / ‘MOVE.L #’ vi ‘, D5’reg D6 : 1 / 6 / ‘MOVE.L #’ vi ‘, D6’reg D7 : 1 / 6 / ‘MOVE.L #’ vi ‘, D7’reg A0 : 1 / 6 / ‘MOVEA.L #’ vi ‘, A0’

1 / 6 / ‘LEA ‘ vi ‘, A0’reg A1 : 1 / 6 / ‘MOVEA.L #’ vi ‘, A1’

1 / 6 / ‘LEA ‘ vi ‘, A1’reg A2 : 1 / 6 / ‘MOVEA.L #’ vi ‘, A2’

1 / 6 / ‘LEA ‘ vi ‘, A2’reg A3 : 1 / 6 / ‘MOVEA.L #’ vi ‘, A3’

1 / 6 / ‘LEA ‘ vi ‘, A3’reg A4 : 1 / 6 / ‘MOVEA.L #’ vi ‘, A4’

1 / 6 / ‘LEA ‘ vi ‘, A4’reg A5 : 1 / 6 / ‘MOVEA.L #’ vi ‘, A5’

1 / 6 / ‘LEA ‘ vi ‘, A5’reg A6 : 1 / 6 / ‘MOVEA.L #’ vi ‘, A6’

1 / 6 / ‘LEA ‘ vi ‘, A6’reg A7 : 1 / 6 / ‘MOVEA.L #’ vi ‘, A7’

1 / 6 / ‘LEA ‘ vi ‘, A7’reg CCR : 1 / 4 / ‘MOVE #’ vi ‘, CCR’

observationreg D0 : 1 / 6 / ‘MOVE.L D0,’ adr.ADR24reg D1 : 1 / 6 / ‘MOVE.L D1,’ adr.ADR24reg D2 : 1 / 6 / ‘MOVE.L D2,’ adr.ADR24reg D3 : 1 / 6 / ‘MOVE.L D3,’ adr.ADR24reg D4 : 1 / 6 / ‘MOVE.L D4,’ adr.ADR24reg D5 : 1 / 6 / ‘MOVE.L D5,’ adr.ADR24reg D6 : 1 / 6 / ‘MOVE.L D6,’ adr.ADR24reg D7 : 1 / 6 / ‘MOVE.L D7,’ adr.ADR24reg A0 : 1 / 6 / ‘MOVE.L A0,’ adr.ADR24reg A1 : 1 / 6 / ‘MOVE.L A1,’ adr.ADR24reg A2 : 1 / 6 / ‘MOVE.L A2,’ adr.ADR24reg A3 : 1 / 6 / ‘MOVE.L A3,’ adr.ADR24reg A4 : 1 / 6 / ‘MOVE.L A4,’ adr.ADR24reg A5 : 1 / 6 / ‘MOVE.L A5,’ adr.ADR24reg A6 : 1 / 6 / ‘MOVE.L A6,’ adr.ADR24reg A7 : 1 / 6 / ‘MOVE.L A7,’ adr.ADR24reg CCR : 1 / 6 / ‘MOVE SR,’ adr.ADR24

1 / 10 / ‘ANDI.B #’ masque ‘, CCR’ ; ‘MOVE SR,’adr.ADR24fin

Page 158: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 139 - Gapt

Forme générale de l’unité7unite7nom microprocesseur[nb_modules_elementaires nombre entier][taille ‘INSTR’ [;...]]modegen [entier]syntaxe de l’instruction : description fonctionnelle[size = (liste de formats)][masque = ‘valeur masque’][taille supplémentaire en nombre de mma]fin_gen[taille ‘INSTR’ [;...]][mode]gen

.

.fin_gen

fin

Page 159: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 140 - Gapt

Exemple : unité 7 du MC68000

unite7

M68000

pseudo_conformite

gen

‘ADD.’ size ‘ ‘ DRD ‘,’ ARI :

CCR OPAL2 (DRD, ARI)

size=(L)

fin_gen

gen

‘ADD.’ size ‘ ‘ ARIP ‘,’ DRD :

CCR OPAL2 (DRD, ARIP)

size=(B)

fin_gen

gen

‘ADD.’ size ‘ ‘ DRD.1 ‘,’ DRD.2 :

CCR OPAL2 (DRD.1, DRD.2)

size=(W)

fin_gen

gen

‘ADD.’ size ‘ ‘ DRA ‘,’ DRD :

CCR OPAL2 (DRD, DRA)

size=(W)

fin_gen

gen

‘AND.’ size ‘ ‘ DRD ‘,’ ARIPR :

CCR OPAL2 (DRD, ARIPR)

size=(L)

fin_gen

gen

‘AND.’ size ‘ ‘ ARIP ‘,’ DRD :

CCR OPAL2 (DRD, ARIP)

size=(B)

fin_gen

gen

‘AND.’ size ‘ ‘ DRD.1 ‘,’ DRD.2 :

CCR OPAL2 (DRD.1, DRD.2)

size=(W)

fin_gen

gen

‘EOR.’ size ‘ ‘ DRD ‘,’ ARID :

CCR OPAL2 (DRD, ARID)

size=(L)

fin_gen

:

:

:

:

:

gen

‘SUB.’ size ‘ ‘ DRD.1 ‘,’ DRD.2 :

CCR OPAL2 (DRD.1, DRD.2)

size=(W)

fin_gen

gen

‘SUB.’ size ‘ ‘ DRA ‘,’ DRD :

CCR OPAL2 (DRD, DRA)

size=(W)

fin_gen

gen

‘ADDI.’ size ‘ ‘ IMM ‘,’ ARID :

Page 160: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 141 - Gapt

CCR OPAL2 (IMM, ARID)

size=(L)

fin_gen

gen

‘ADDI.’ size ‘ ‘ IMM ‘,’ DRD :

CCR OPAL2 (IMM, DRD)

size=(B)

fin_gen

gen

‘SUBI.’ size ‘ ‘ IMM ‘,’ ARID :

CCR OPAL2 (IMM, ARID)

size=(B)

fin_gen

gen

‘SUBI.’ size ‘ ‘ IMM ‘,’ DRD :

CCR OPAL2 (IMM, DRD)

size=(W)

fin_gen

gen

‘ANDI.’ size ‘ ‘ IMM ‘,’ ARIP :

CCR OPAL2 (IMM, ARIP)

size=(W)

fin_gen

gen

‘ANDI.’ size ‘ ‘ IMM ‘,’ DRD :

CCR OPAL2 (IMM, DRD)

size=(L)

fin_gen

gen

‘ANDI.’ size ‘ ‘ IMMB ‘,CCR’ :

CCR OPAL2 (CCR, IMMB)

size=(B)

fin_gen

gen

‘ORI.’ size ‘ ‘ IMM ‘,’ ABSC :

CCR OPAL2 (IMM, ABSC)

size=(W)

fin_gen

gen

‘ORI.’ size ‘ ‘ IMM ‘,’ DRD :

CCR OPAL2 (IMM, DRD)

size=(L)

fin_gen

gen

‘ORI.’ size ‘ ‘ IMMB ‘,CCR’ :

CCR OPAL2 (CCR, IMMB)

size=(B)

fin_gen

gen

‘EORI.’ size ‘ ‘ IMM ‘,’ ABSL :

CCR OPAL2 (IMM, ABSL)

size=(W)

fin_gen

:

:

fin

Page 161: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 142 - Gapt

Exemple : programme généré par GAPT pour le MC68000Ce programme correspond à l’exemple d’unité7 donné précédemment

; zone programme;

MOVE SR,ZDL+4MOVE.L A4,ZDL+6MOVE.L D1,ZDL+10LEA ZDL,A4MOVE.L #H’9D12FE15,D1ADD.L D1,(A4)MOVE SR,ZDL+16MOVE.L D2,ZDL+18MOVE.L A1,ZDL+22MOVE.L #H’46B379E0,D2LEA ZDL+14,A1ADD.B (A1+),D2MOVE SR,ZDL+26MOVE.L D0,ZDL+28MOVE.L D7,ZDL+32MOVE.L #H’A31DE4F4,D0MOVE.L #H’DC6FBEFE,D7ADD.W D7,D0MOVE SR,ZDL+36MOVE.L D7,ZDL+38MOVE.L A0,ZDL+42MOVE.L #H’9173CBF2,D7MOVEA.L #H’117561EC,A0ADD.W A0,D7MOVE SR,ZDL+50MOVE.L A5,ZDL+52MOVE.L D1,ZDL+56LEA ZDL+50,A5MOVE.L #H’EC0B442A,D1AND.L D1,(-A5)MOVE SR,ZDL+62MOVE.L D3,ZDL+64MOVE.L A4,ZDL+68MOVE.L #H’CF4FDEB1,D3LEA ZDL+60,A4AND.B (A4+),D3MOVE SR,ZDL+72MOVE.L D7,ZDL+74MOVE.L D0,ZDL+78MOVE.L #H’4AD234D5,D7MOVE.L #H’17CC8BE7,D0AND.W D0,D7MOVE SR,ZDL+86MOVE.L A4,ZDL+88MOVE.L D0,ZDL+92LEA ZDL-5607,A4MOVE.L #H’170A382D,D0EOR.L D0,5689(A4)

MOVE SR,ZDL+96MOVE.L D1,ZDL+98MOVE.L D6,ZDL+102MOVE.L #H’DD38B42F,D1MOVE.L #H’BEA71118,D6EOR.B D6,D1MOVE SR,ZDL+108MOVE.L D7,ZDL+110MOVE.L A0,ZDL+114MOVE.L #H’3319B235,D7LEA ZDL+106,A0MOVE #H’D708,CCRCMP.B (A0+),D7MOVE SR,ZDL+118MOVE.L D2,ZDL+120MOVE.L D7,ZDL+124MOVE.L #H’377705E6,D2MOVE.L #H’DF998380,D7MOVE #H’2E9C,CCRCMP.W D7,D2MOVE SR,ZDL+128MOVE.L D6,ZDL+130MOVE.L A3,ZDL+134MOVE.L #H’695AB13D,D6MOVEA.L #H’1A941B8F,A3MOVE #H’A4FB,CCRCMP.W A3,D6MOVE SR,ZDL+142MOVE.L A5,ZDL+144MOVE.L D2,ZDL+148LEA ZDL+2172,A5MOVE.L #H’E2933892,D2OR.L D2,-2034(A5)MOVE SR,ZDL+154MOVE.L D0,ZDL+156MOVE.L A4,ZDL+160MOVE.L #H’7C9DD7C6,D0LEA ZDL+152,A4OR.B (A4+),D0MOVE SR,ZDL+164MOVE.L D3,ZDL+166MOVE.L D4,ZDL+170MOVE.L #H’D15B043A,D3MOVE.L #H’809DCC74,D4OR.W D4,D3MOVE SR,ZDL+178MOVE.L A5,ZDL+180MOVE.L D6,ZDL+184LEA ZDL+174,A5MOVE.L #H’72F3A772,D6SUB.L D6,(A5)

Page 162: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 143 - Gapt

MOVE SR,ZDL+190MOVE.L D3,ZDL+192MOVE.L A1,ZDL+196MOVE.L #H’372FA659,D3LEA ZDL+188,A1SUB.B (A1+),D3MOVE SR,ZDL+200MOVE.L D5,ZDL+202MOVE.L D7,ZDL+206MOVE.L #H’EF1A5FFD,D5MOVE.L #H’4E54C04F,D7SUB.W D7,D5MOVE SR,ZDL+210MOVE.L D4,ZDL+212MOVE.L A1,ZDL+216MOVE.L #H’E6A89353,D4MOVEA.L #H’66526255,A1SUB.W A1,D4MOVE SR,ZDL+224MOVE.L A2,ZDL+226LEA ZDL-6587,A2ADDI.L #H’AF2061EB,6807(A2)MOVE SR,ZDL+230MOVE.L D3,ZDL+232MOVE.L #H’AFD43E91,D3ADDI.B #H’98,D3MOVE SR,ZDL+238MOVE.L A3,ZDL+240LEA ZDL+16374,A3SUBI.B #H’10,-16138(A3)MOVE SR,ZDL+244MOVE.L D3,ZDL+246MOVE.L #H’62AE6141,D3SUBI.W #H’3688,D3MOVE SR,ZDL+252MOVE.L A2,ZDL+254LEA ZDL+250,A2ANDI.W #H’F64B,(A2+)MOVE SR,ZDL+258MOVE.L D4,ZDL+260MOVE.L #H’4C7851E3,D4ANDI.L #H’5AA2F565,D4MOVE SR,ZDL+264MOVE #H’4EBD,CCRANDI.B #H’14,CCRMOVE SR,ZDL+266ORI.W #H’B67B,ZDC,W

; : :; : :

;; zone donnees courtes

ZDC DC.W H’E2F0DC.L H’EC75D0ECDC.B H’62DC.B H’D7DC.W H’40C6DC.B H’6E

DC.B H’E4DC.B H’2ADC.B H’C0DC.B H’26DC.B H’DCDC.B H’62DC.B H’38DC.B H’DE: :: :

; zone donnees longues;ZDL DC.L H’17684113

DC.W H’CBA1DC.L H’453F748EDC.L H’F96D5204DC.B H’ABDC.B H’FCDC.W H’6457DC.L H’6A8265C5DC.L H’D5585743DC.W H’78BADC.L H’7FD07FDBDC.L H’33B64629DC.W H’8748DC.L H’5D6EB101DC.L H’2BE4579FDC.L H’5CD9CBC0DC.W H’1C26DC.L H’22DC1AB7DC.L H’C1620125DC.B H’38DC.B H’7DDC.W H’26D4DC.L H’FC3B239ADC.L H’F7898BB0DC.W H’71D3DC.L H’A661C728DC.L H’F9FF964EDC.L H’BFA0B06BDC.W H’6906DC.L H’40BC6117DC.L H’6842AC85DC.W H’1E7ADC.L H’6790089BDC.L H’CD76B8E9DC.B H’ACDC.B H’2EDC.W H’ABC1DC.L H’4FA42C5FDC.L H’39EA6F8DDC.W H’67E5DC.L H’D0635F22DC.L H’B4714CF8DC.W H’1370DC.L H’12568A49DC.L H’F38C38A7DC.L H’C121B6E8

Page 163: Contribution a l'évaluation de l'efficacité du test fonctionnel de ...

Annexe B - 144 - Gapt

DC.W H’EEBFDC.L H’B6ED9984DC.L H’E92BACCADC.B H’F9DC.B H’02DC.W H’3345

DC.L H’14D818C3DC.L H’E27ED1D1DC.W H’8F50DC.L H’A7366BA9

; : :; : :


Recommended