Merci de me rejoindre. Bienvenue dans « Détection des fautes de frappe avec des données de test ». Je m'appelle Nathan Gambles et je suis ingénieur produit principal chez Frontgrade Technologies. Mon rôle chez Frontgrade est de contribuer à la fabrication et aux tests de circuits intégrés haute fiabilité. Nos clients se concentrent sur les applications médicales, aérospatiales, militaires et tout autre secteur exigeant des composants électroniques garantissant une sécurité maximale.
Aujourd'hui, je vais vous raconter une enquête d'analyse des causes profondes à laquelle j'ai participé. Nous avions constaté des anomalies intéressantes dans les données, et il s'est avéré que des erreurs de frappe étaient à l'origine de problèmes dans nos résultats de test. Je vais vous expliquer la démarche que nous avons suivie pour identifier et approfondir ces situations.
Je vais commencer par vous expliquer brièvement en quoi consistait mon travail. Comme je l'ai dit, je fabriquais des circuits intégrés. J'ai un exemple de circuit intégré à l'écran. On les appelle souvent des puces informatiques. Les circuits intégrés existent dans une grande variété de formes, de tailles et de nombres de broches. Beaucoup possèdent de très nombreuses broches aux fonctions diverses. Lors des tests, nous sommes souvent amenés à effectuer le même test sur un grand nombre de ces broches. Nous verrons cela dans les données de test, dans un instant.
Un autre point important concernant les circuits intégrés est le marquage apposé sur le dessus. Généralement, ce marquage indique le fabricant, le nom du produit et le numéro de lot, ou encore un code de date de lot. Parfois, ils comportent un numéro de série. La plupart des produits sur lesquels je travaille possèdent un numéro de série, ce qui nous permet de suivre leur fabrication. Ce numéro de série sera essentiel pour la suite de notre explication.
L'usine où je travaille fabrique des pièces en petites séries et avec une grande diversité de produits. Nous ne produisons pas beaucoup de pièces simultanément, mais chaque jour, nous pouvons fabriquer plusieurs produits différents.
Lors de la production en série, nous organisons les pièces. Je vais vous décrire la procédure pour chaque test. Lors d'un test, nous chargeons le programme sur notre équipement automatisé. Un opérateur, une fois le programme chargé, prend une pièce, l'examine, lit le marquage, la place dans le dispositif de test, saisit son numéro de série et lance le test. Le test s'exécute et les données sont collectées. Une fois le test terminé, l'opérateur retire la pièce, la remet dans le bac et répète l'opération pour toutes les pièces du lot.
Pour résumer, je viens de décrire le déroulement général d'une opération de test. Concrètement, nous testons les pièces à température ambiante. Ensuite, nous les soumettons à des contraintes mécaniques. Nous les testons à nouveau à température ambiante, puis à basse et haute température. Ces températures correspondent aux températures minimales et maximales de fonctionnement, conformément aux spécifications.
Nous poursuivons ces tests en testant à nouveau les pièces à température ambiante, puis à froid et à chaud. Ce second cycle de tests fait partie de nos contrôles qualité et nous permet de nous assurer qu'un nombre excessif de défaillances ne passe pas le premier tri lors des opérations deux et trois. L'enquête sur les causes profondes à laquelle j'ai participé a été déclenchée par un taux de défaillance plus élevé que prévu lors des opérations quatre et cinq, alors que nous ne nous attendions pas à un tel nombre de défaillances.
L'enquête a pris plusieurs directions différentes. Je vais me concentrer sur celle où nous avons analysé les données relatives aux défaillances constatées lors des tests. Généralement, pour un paramètre mesuré donné, si les données à froid se situaient dans la partie supérieure de la distribution, elles se situaient également dans la partie supérieure de la distribution à température ambiante et à chaud. De même, on observait le même phénomène pour un dispositif donné dont les valeurs se situaient dans la partie inférieure ou moyenne de la distribution.
Certains dispositifs défaillants en fin de processus ne suivaient pas ce schéma. Leur comportement était erratique : tantôt des données indiquaient des valeurs élevées, tantôt des valeurs faibles, puis de nouveau des valeurs élevées. Ce comportement était incohérent, notamment du point de vue de la physique des semi-conducteurs.
Après quelques séances de brainstorming, il a été décidé que la cause la plus probable de ces données était que nous n'analysions peut-être pas les données provenant des appareils attendus, et que des erreurs de frappe s'étaient peut-être glissées dans nos données, provoquant cette confusion.
Au fil de cette enquête, nous souhaitions identifier une technique d'analyse permettant d'exploiter les données de n'importe laquelle de nos équipes. Nous nous trouvions, une fois de plus, dans un environnement très hétérogène. L'objectif était de recueillir nos données. Nous voulions nous assurer que la méthode ne nécessite pas une expertise trop pointue. Nous recherchions une procédure simple et permettant une analyse rapide des résultats. Tel était notre but tout au long de cette enquête.
Voilà le contexte de notre travail et ses raisons. Les données d'exemple que je vais utiliser sont disponibles dans le journal JMP ici. En cliquant sur ce bouton, un jeu de données sera généré. Je l'ai déjà ouvert. Je vais commencer par vous présenter brièvement ces données ; nous les comprenons déjà.
Voici des données. Ce tableau contient 441 lignes. Chaque ligne correspond à un lot lors d'une opération de test. Cela correspond à la présentation PowerPoint que nous venons de consulter. On y trouve la température du test et le numéro de série saisi par l'opérateur. Cet ensemble de données comporte également 300 colonnes de valeurs mesurées. Chaque ligne du tableau représente une exécution du programme de test. On constate que nous avons effectué 300 tests.
J'ai mentionné que nous utilisons plusieurs broches différentes. On constate que les mesures du test A ont été effectuées sur la broche 1. Le test A a également effectué des mesures sur la broche 2. En faisant défiler rapidement, on voit que nous réalisons de nombreux tests sur différentes broches. D'autres tests ne sont pas effectués broche par broche. Certains tests ne fonctionnent pas de cette manière, mais beaucoup le font. Nous avons en quelque sorte tout un alphabet de tests, ce qui nous donne 300 colonnes de valeurs mesurées.
Je tiens à préciser que notre tableau de données contient des données empilées. Certaines lignes correspondent à la température ambiante, d'autres à des températures basses, et d'autres encore à des températures élevées. Lors de la préparation des données, j'utiliserai la fonction GROUP BY de JMP afin de m'assurer que les statistiques calculées ne tiennent pas compte des différences de température observées.
Je fais un rapide tour d'horizon des données. J'ouvre un outil de création de graphiques. Sur ce graphique, on voit l'opération en cours, la température de collecte des données et tous les numéros de série testés. L'axe des ordonnées représente les valeurs mesurées. On constate que les données à température ambiante se situent approximativement ici. À basse température, elles diminuent. À haute température, elles se déplacent à nouveau. Retour à la température ambiante, retour au froid, retour au chaud.
Les variations des valeurs mesurées sont assez courantes dans le domaine des semi-conducteurs. Excusez-moi, les variations sont assez courantes lors de la collecte de données sur les semi-conducteurs. Si je parcours plusieurs de ces tests, on constate que nous effectuons le même test sur de nombreux stylos. On se retrouve donc avec de nombreux paramètres fortement corrélés. Si je continue, beaucoup de ces tests se ressemblent beaucoup. Si je passe à d'autres tests qui pourraient sembler différents, on trouve d'autres tests avec des données d'apparence différente. Certains tests réagissent différemment à la température.
Voici un exemple. Certaines valeurs mesurées présentent des valeurs aberrantes assez extrêmes. Il n'est pas rare, dans le domaine des semi-conducteurs, qu'un composant défectueux tombe en panne, et cette panne est souvent grave. La gestion des valeurs aberrantes est donc essentielle. Nous constatons des variations des valeurs mesurées dues à la température. Là encore, nous devrons utiliser la fonction de regroupement de JMP pour traiter ce problème, car nos données sont organisées en colonnes.
Un rapide coup d'œil à la distribution de nos numéros de série révèle que nous avons 65 numéros de série uniques dans cet ensemble de données. Nous avons exploré les données et nous avons une idée de ce qu'elles contiennent. L'étape suivante consiste à appliquer le processus qui s'est avéré efficace pour détecter les erreurs de frappe dans nos données.
La première étape consiste à préparer les données en supprimant les valeurs aberrantes à l'aide de l'outil « Explorer les valeurs aberrantes ». Nous allons également calculer un score Z standardisé à l'aide des colonnes de formules. Pour ce faire, nous utiliserons l'outil « Analyser », puis « Sélectionner » et enfin « Explorer les valeurs aberrantes ». Nous allons extraire nos 300 valeurs mesurées et effectuer cette analyse en fonction de la température.
Je souhaite utiliser la détection des valeurs aberrantes par intervalle quantile. À noter que, pour toutes les plateformes utilisées dans cette présentation, j'utiliserai les paramètres par défaut de JMP. J'appliquerai donc la détection des valeurs aberrantes par intervalle quantile avec ces paramètres. À froid, pour supprimer les valeurs aberrantes du tableau, j'utiliserai l'option « Créer une colonne de formule ».
Je vais conserver les paramètres par défaut. Je vais passer à la colonne « Pièce ». Pour cette colonne, je vais procéder de la même manière : colonne de formule. Pour la colonne « Chaleur », je vais faire de même : colonne de formule. Nous avons maintenant généré plusieurs colonnes de formule dans notre tableau. Après un léger nettoyage, nous obtenons 300 nouvelles colonnes de données, les valeurs aberrantes ayant été supprimées.
Ensuite, je souhaite configurer l'opération et la température pour qu'elles servent de critère de regroupement… Car je vais utiliser la nouvelle fonctionnalité de colonne de formule, mais je veux bénéficier de la fonctionnalité de regroupement que nous pouvons obtenir en configurant cela afin que les statistiques soient calculées par température et par opération pour l'ensemble de nos 300 paramètres aberrants.
Une fois les valeurs aberrantes éliminées de nos 300 colonnes, un clic droit sous la colonne « Formule », puis « Distribution », nous donne « Standardiser ». Cette option calcule le score Z standardisé pour tous nos paramètres, créant ainsi un nouveau groupe de colonnes. Après un léger nettoyage, nous obtenons 300 colonnes de données standardisées.
Pour visualiser rapidement ce que nous venons de réaliser, si j'ouvre le générateur de graphiques et que je regarde le test E8, on constate qu'auparavant, une valeur aberrante extrême masquait les données. Après avoir supprimé cette valeur aberrante, les données sont devenues visibles, mais des écarts importants subsistaient entre les valeurs mesurées pour les différentes opérations et températures. Après avoir standardisé les données par opération et par température, nous avons centré chaque distribution sur zéro et leur avons attribué un écart type de un. Ainsi, la quasi-totalité des données se situe entre ±3.
Nous nous sommes trompés de point sur cette échelle. Nous pouvons maintenant nous poser des questions comme : ces points se situaient-ils dans la partie supérieure de la distribution pour cette opération et cette température ? Dans la partie inférieure ? Ou au milieu ? C’est ce que nous avons fait lors de la préparation des données.
L'étape suivante consiste à identifier, parmi ces 300 paramètres, ceux qui permettent de prédire efficacement le numéro de série. Pour ce faire, nous allons procéder à un filtrage des prédicteurs. Les données révèlent un grand nombre de paramètres fortement corrélés. Je sais que le filtrage des prédicteurs mettra en évidence certains de ces paramètres fortement corrélés. Après ce filtrage, nous utiliserons des variables de regroupement pour éliminer les paramètres les plus corrélés et ne conserver que les plus représentatifs des tests recherchés.
Pour ce faire, nous allons utiliser le filtrage par prédicteurs. Nous allons intégrer toutes nos colonnes standardisées et demander au logiciel de déterminer le numéro de série. Plusieurs options sont disponibles ci-dessous. J'ai utilisé les paramètres par défaut tout au long de cette présentation. JMP va traiter ces données et générer un rapport classant par ordre de pertinence les paramètres permettant de décrire au mieux le numéro de série de l'appareil.
En jetant un coup d'œil rapide, il semble que le premier paramètre soit excellent, suivi de plusieurs autres qui paraissent tout aussi pertinents. Si l'on continue à descendre, on constate qu'après une vingtaine de paramètres, l'ajout de nouveaux n'apporte plus grand-chose. Je vais donc sélectionner les 20 meilleurs paramètres. Ceux-ci sont déjà sélectionnés dans le tableau de données. Maintenant, dans l'outil « Analyse du clustering », je vais utiliser le clustering pour identifier les variables fortement corrélées parmi ces 20 paramètres.
Si j'insère ces 20 valeurs dans les colonnes Y, j'obtiens ce rapport où je repère généralement les couleurs rouge vif et bleu vif. Je compte les cases. Il semble y en avoir 1, 2, 3, 4, 5 et 6. À l'issue de cette analyse, je m'attends à obtenir environ six paramètres que nous pourrons utiliser pour notre vérification des fautes de frappe.
Avant de poursuivre, je vais m'assurer qu'aucune colonne n'est sélectionnée afin que, lorsque je les sélectionnerai dans ce rapport, elles le soient également. D'après ce regroupement, ici dans le résumé des clusters, il semble que le système ait pris en compte nos 20 paramètres et les ait regroupés en quatre groupes. Voici les éléments les plus représentatifs de chaque groupe.
C'est super. Mais j'ai constaté que cette plateforme a tendance à regrouper les éléments. Il semble que deux de mes paramètres ne présentent aucune corrélation avec les 20 autres. Ils ont été ajoutés à certains de ces groupes, ce que je préfère éviter. Je ne me contente pas d'examiner l'élément le plus représentatif ; je vérifie également cette colonne et je m'assure que si un paramètre se retrouve dans un groupe, sa corrélation au sein de ce groupe est bonne.
En regardant plus bas, on constate que beaucoup de ces valeurs sont très proches de un. Cela signifie qu'elles sont fortement corrélées. Mais il y a aussi cette valeur, très proche de zéro. Elle n'est pas bien corrélée avec le groupe auquel elle appartient. Elle ne s'intègre pas bien non plus avec le groupe suivant. En fait, elle ne s'intègre bien avec aucun groupe. Je souhaite néanmoins conserver ce paramètre. Plus bas encore, il semble qu'une autre valeur ne soit pas bien corrélée avec son groupe. Avec ces quatre valeurs et ces deux autres, j'arrive aux six que j'attendais d'après l'image.
Nous avons ainsi six colonnes sélectionnées dans notre tableau de données. En réorganisant légèrement ces colonnes, en les dissociant puis en les regroupant, nous obtenons une liste de ce que j'appelle nos meilleurs prédicteurs pour interpréter les numéros de série à partir des données dont nous disposons.
Nous avons maintenant identifié nos paramètres importants. Nous sommes prêts à procéder à l'analyse qui nous permettra de déterminer si nous avons des erreurs de saisie dans les numéros de série. Pour cela, nous utiliserons la plateforme de classification hiérarchique. Dans l'onglet « Analyse de la classification », sous « Classification hiérarchique », nous utiliserons les six meilleurs prédicteurs que nous venons d'identifier et nous les étiqueterons avec le numéro de série.
Là encore, d'autres options sont possibles. J'ai conservé les paramètres par défaut de JMP. Ceci nous donne le rapport pour le clustering hiérarchique. J'aimerais apporter quelques modifications : la couleur des clusters facilite la distinction entre les différents groupes. Je préfère contrôler le nombre de clusters créés. Lors de l'analyse initiale des données, ce lot contenait 65 numéros de série différents. J'ai constaté que cette procédure fonctionne mieux si l'on ne fixe pas le nombre de clusters à 65, mais légèrement en dessous du nombre total d'appareils attendus dans le lot. Dans cet exemple, je vais fixer ce nombre à… 58.
La dernière étape pour lancer cette analyse consiste à appliquer un filtre aux données du tableau, en le paramétrant sur le numéro de série. Cela me permettra de sélectionner toutes les lignes où le numéro de série est égal à un, par exemple. On peut alors observer dans le dendrogramme que les lignes de données associées au numéro de série un sont regroupées. Elles sont toutes de la même couleur et alignées verticalement.
Cela suggère que notre algorithme de clustering a fonctionné correctement avec les six paramètres que nous lui avons fournis. En parcourant les données, on constate que le numéro de série deux s'est également bien regroupé. En observant la qualité des regroupements pour chaque numéro de série… Au numéro de série 17, la plupart des données semblent se situer en bas, et au moins un point de données semble se trouver en haut.
Il y a une distance verticale assez importante entre ces points. Mais plus important encore que cette distance, c'est de savoir si l'on pourrait tracer une ligne suivant ces lignes pour relier les points observés. Il semble que je doive tracer cette ligne. La question est alors : jusqu'où faut-il regarder vers la droite ? Nous avons dû aller assez loin vers la droite pour établir cette connexion. Plus on va loin vers la droite, plus il est probable que ces données ne ressemblent pas vraiment à celles-ci.
D'après mon interprétation de ce dendrogramme, ces données semblent assez différentes. Si je me concentre sur ce point apparemment isolé, il semble que, sur la base des six paramètres testés, lors des tests, la plupart des appareils présentant ces caractéristiques d'après leurs données électriques avaient le numéro de série 12, sauf une fois où il s'agissait du numéro 17.
Il s'agit probablement d'une erreur de lecture du symbole sur la pièce. Il est fort probable que, selon la police et la taille du symbole, un deux puisse ressembler à un sept. C'est l'une des erreurs de frappe les plus fréquentes que nous avons constatées dans nos données. Cette méthode a permis de les identifier. Oui, nous avons pu identifier des erreurs de frappe dans cet ensemble de données grâce à cette méthode.
Passons à la suite : sélectionnons tous les points correspondant au numéro de série 18. Il semble y avoir un certain écart entre certains d'entre eux. En zoomant sur les données et en traçant une ligne entre les points, on constate qu'il est possible de les relier.
La question est donc de savoir jusqu'où j'ai dû aller vers la droite. Je n'ai pas eu à aller très loin. Il semble que toutes ces données se ressemblent beaucoup. On dirait que les appareils 18 et 29 sont quasiment identiques, ce qui a entraîné un léger décalage dans les entrées concernant l'appareil 18. Cela ne ressemble pas à une erreur de frappe. Il semble simplement que deux éléments se ressemblent. Je ne vais certainement pas approfondir la question.
Si nous continuons avec quelques autres numéros de série, on constate un bon regroupement, et on arrive à 25. Il semble y avoir une séparation. Si nous jouons le jeu, on dirait qu'il a fallu se déplacer assez loin vers la droite, donc ces données ne sont pas très similaires. Si nous zoomons sur le point sélectionné, en zoomant encore plus, il semble que la plupart du temps, les pièces qui ressemblent à ça lors des tests obtiennent un numéro de série de 26, mais nous avons un cas où nous avons obtenu 25.
Si l'on examine de plus près les autres points de données sélectionnés, le point 25 ressemble généralement à ceci, sauf… Il semble qu'il y ait eu une occurrence du numéro 26. En observant attentivement la sélection dans le dendrogramme et en passant d'un numéro de série à l'autre (25 et 26), on constate que… Il s'agit d'un cas où deux appareils, les appareils 25 et 26, ont été testés. Cependant, lors du test de l'appareil 25, le numéro de série enregistré était 26, tandis que lors du test de l'appareil 26, le numéro de série enregistré était 25.
Il y a un problème avec ces numéros de série : ils ont été désorganisés ou quelque chose du genre a provoqué cette erreur dans nos données de test. C'est un autre type d'erreur que nous avons identifié grâce à cette méthode. Nous pourrions continuer à examiner tous ces numéros de série. C'est ce que nous ferions si nous devions tout analyser. Mais par souci de temps, je ne traiterai que ceux-ci.
Dans le cadre de cette démarche, une question s'est posée : pouvons-nous trouver une méthode simple, ne nécessitant pas une expertise pointue, pour analyser les données et détecter d'éventuelles fautes de frappe ? La démarche que nous venons de suivre s'est avérée plutôt efficace pour identifier un processus facile à appliquer. Bien que nous ne possédions pas une grande expertise sur les paramètres de test, nous avons pu mener à bien cette démarche et établir une liste non exhaustive de fautes de frappe potentielles, que nous pourrons ensuite examiner avec les experts du domaine.
Le processus est suffisamment simple pour que nous ayons pu l'utiliser aussi bien avec des ingénieurs expérimentés qu'avec des débutants. Il exploite uniquement les fonctionnalités intégrées de JMP, et nous avons même utilisé tous les paramètres par défaut, ce qui facilite l'automatisation et la création de scripts. C'est ce que nous avons fait dans notre environnement. Ils n'ont pas besoin de le faire manuellement, mais tous les ingénieurs suivent et comprennent le processus que je viens de vous présenter aujourd'hui.
L'expérience a été concluante. Nous avons tiré des enseignements précieux. Nous avons pu identifier des fautes de frappe dans nos données de test et, grâce à ces informations, repérer des erreurs systématiques et récurrentes. Par exemple, certaines erreurs se produisent fréquemment. Quelles en sont les causes ? D'autres, comme celle-ci, sont assez fréquentes. Quelles en sont les causes ? Nous avons ainsi pu améliorer nos processus et nos systèmes. Cela nous a également permis d'améliorer la formation et s'est avéré un outil très utile pour échanger avec les opérateurs de test et leur faire part de nos observations et des problèmes rencontrés. Mieux informés, ils sont plus à même de suivre la situation et de contribuer aux améliorations possibles afin d'optimiser la qualité de nos produits.
Voici le processus que nous avons mis au point et utilisé. Si vous disposez de données longitudinales, c'est-à-dire de données issues de tests répétés d'un appareil ou d'un produit dans des conditions identiques ou quasi identiques, certaines de ces méthodes pourraient vous aider à identifier d'éventuels problèmes dans vos données. Merci de votre attention. J'espère que ces informations vous seront utiles. Bonne journée.