Grazie per avermi seguito. Questo è "Caccia agli errori di battitura con i dati di test". Mi chiamo Nathan Gambles e sono un Principal Product Engineer presso Frontgrade Technologies. Il mio ruolo in Frontgrade è quello di contribuire alla produzione e al collaudo di circuiti integrati ad alta affidabilità, concentrandoci su applicazioni mediche, aerospaziali, militari e qualsiasi altra situazione in cui necessitiamo di componenti elettronici che garantiscano un elevato livello di sicurezza.
Oggi condividerò con voi la storia di un'indagine di analisi delle cause profonde a cui ho partecipato, in cui abbiamo riscontrato alcune interessanti anomalie nei dati e si è scoperto che c'erano degli errori di battitura che causavano problemi nei risultati dei nostri test. Condividerò con voi il processo che abbiamo utilizzato per identificare e approfondire queste situazioni.
Inizierò con un breve cenno su cosa stessi facendo esattamente. Come ho detto, stavo producendo circuiti integrati. Ho un esempio di circuito integrato qui sullo schermo. Molti li chiamano chip per computer. Il punto dei circuiti integrati è che sono disponibili in tutte le forme, dimensioni e numero di pin. Molti di essi hanno moltissimi pin diversi che svolgono funzioni diverse. Quando testiamo questi componenti, finiamo per dover eseguire lo stesso test su moltissimi pin diversi. È qualcosa che vedremo nei dati di test quando ci arriveremo tra un minuto.
L'altra cosa che vorrei sottolineare sui circuiti integrati è il marchio sulla parte superiore. Generalmente, questi hanno un marchio che indica chi li ha realizzati, di che prodotto si tratta e da quale numero di lotto provengono, oppure un codice data di lotto. A volte hanno numeri di serie. La maggior parte dei prodotti su cui lavoro ha numeri di serie, ed è così che li tracciamo durante il nostro processo di produzione. Il numero di serie sarà importante man mano che andiamo avanti con questa storia.
Quando produciamo i componenti, lo stabilimento in cui lavoro è un impianto ad alta variabilità e basso volume. I lotti che produciamo... Non produciamo troppi componenti contemporaneamente, ma in un dato giorno potremmo realizzare molti prodotti diversi.
Quando produciamo un lotto, lo organizziamo. Descriverò cosa facciamo quando arriviamo a un'operazione di test. Quando arriviamo a un'operazione di test, carichiamo il programma di test sulla nostra apparecchiatura di test automatizzata e abbiamo un operatore che, una volta caricato il programma di test, prende un pezzo, lo posiziona... Scusate. Prende un pezzo, lo guarda, legge il marchio sul pezzo, lo posiziona nell'attrezzatura di prova, inserisce il numero di serie del pezzo e preme il pulsante "Test". Il test viene eseguito e i dati vengono raccolti. Al termine, l'operatore estrae il pezzo dall'attrezzatura di prova, lo rimette nel vassoio e ripete il processo per tutti i pezzi del lotto.
Facendo un passo indietro, ho appena descritto l'operazione generale che potremmo svolgere durante un'operazione di prova. Il flusso più ampio che eseguiamo consiste nel testare i componenti a temperatura ambiente. Poi li prendiamo, li sottoponiamo a sollecitazione. Quindi li testiamo nuovamente a temperatura ambiente, e poi li testiamo a freddo e a caldo. Queste saranno le temperature di esercizio minima e massima secondo le specifiche.
Proseguiamo con i test a temperatura ambiente e poi di nuovo a freddo e a caldo. Eseguiamo il secondo ciclo di test come parte dei nostri controlli di qualità per garantire che non ci sia un numero eccessivo di guasti che superino il primo ciclo di screening qui, nelle operazioni due e tre. La storia, l'indagine sulla causa principale a cui ho partecipato, è nata perché stavamo riscontrando un tasso di guasti superiore alle aspettative nelle operazioni di prova quattro e cinque, dove non ci aspettavamo troppi guasti.
Molti rami diversi dell'indagine hanno preso direzioni diverse. Mi concentrerò su un ramo dell'indagine in cui avevamo... Avevamo preso i dati da alcuni dei guasti che stavamo osservando in queste fasi di test e li abbiamo analizzati un po'. In genere, ciò che vedevamo nei dati era che, per un dato parametro misurato, se esaminassimo i dati a freddo, vedremmo che per un dato dispositivo, se si trovava all'estremità superiore della distribuzione a freddo, si troverebbe all'estremità superiore della distribuzione a temperatura ambiente. Si troverebbe anche all'estremità superiore della distribuzione a caldo. Allo stesso modo, la stessa situazione si verificherebbe per un dato dispositivo se si trovasse all'estremità inferiore o se si trovasse nel mezzo.
Alcuni dei dispositivi che si guastavano più avanti nel processo non seguivano questo schema. Avevano uno schema in cui a volte alcuni dati indicavano che si trovavano nella fascia alta, poi altri dati indicavano che si trovavano nella fascia bassa, e poi altri ancora dati indicavano che si trovavano di nuovo nella fascia alta. Questo non aveva molto senso. Questo non ha senso dal punto di vista della fisica dei dispositivi per i semiconduttori.
Dopo un po' di brainstorming, si è deciso che la causa principale più probabile di ciò che stava causando questi dati che stavamo visualizzando era che forse non stavamo effettivamente esaminando i dati provenienti dai dispositivi che ci aspettavamo e forse stavamo mescolando degli errori di battitura con i nostri dati, causando questa confusione.
Nel corso di questa indagine, volevamo identificare una tecnica di analisi che ci consentisse di acquisire i dati da qualsiasi parte del nostro team. Anche in questo caso, ci siamo trovati di fronte a un ambiente altamente eterogeneo. Ottenere i nostri dati. Volevamo assicurarci che non richiedesse troppe competenze specifiche per essere eseguita. Volevamo una procedura che fosse abbastanza semplice e che consentisse di analizzare i risultati in modo abbastanza immediato. Questo era il nostro obiettivo durante questa indagine.
Questo è il contesto di ciò che stiamo facendo, il motivo per cui lo stiamo facendo. I dati di esempio che utilizzerò sono disponibili nella rivista JMP qui. Cliccando su quel pulsante, verrà generato un set di dati. Ho già aperto questo set di dati. Vorrei prima illustrare brevemente i dati che abbiamo capito.
Questi sono dati. Ho 441 righe di dati in questa tabella. Ogni riga contiene una voce per un lotto in un'operazione di test. Questo corrisponde alla presentazione PowerPoint che abbiamo appena esaminato. A quale temperatura si stava svolgendo il test e quale numero di serie è stato inserito quando l'operatore ha inserito il numero di serie durante l'operazione di test. Questo set di dati ha anche 300 colonne di valori misurati. Ogni riga in questa tabella dati rappresenta fondamentalmente un'esecuzione del programma di test. Possiamo vedere che abbiamo un gran numero di test, 300.
Ho detto che abbiamo più pin diversi. Possiamo vedere che abbiamo misurazioni per il test A eseguite sul pin uno. Il test A ha ricevuto misurazioni per il pin due. Scorrendo velocemente, possiamo vedere che eseguiamo molti test su molti pin diversi. Abbiamo altri test che non vengono eseguiti pin per pin. Alcuni test non hanno questo comportamento. Molti sì. Abbiamo praticamente un intero alfabeto di test qui, che ci fornisce 300 colonne di valori misurati.
Una cosa che voglio sottolineare è che abbiamo la tabella dati e i dati sono impilati. Alcune righe contengono dati a temperatura ambiente, alcune righe contengono dati a bassa temperatura, altre righe contengono dati a temperatura elevata. Questo è un aspetto che, quando prepariamo i dati, utilizzerò in JMP, utilizzando la funzionalità di raggruppamento, per assicurarmi che le statistiche che calcoliamo non tengano conto delle differenze che potremmo riscontrare tra alcune di queste temperature.
Faccio una rapida revisione di alcuni dati. Se apro un Graph Builder qui. Se osserviamo questo grafico, ho l'operazione in cui ci troviamo, la temperatura a cui stiamo raccogliendo i dati e ho tutti i numeri di serie che sono stati testati. Sull'asse Y, ho i valori misurati e possiamo vedere che ho i dati a temperatura ambiente, che è più o meno qui. A temperatura fredda, si sposta verso un valore diverso. A temperatura calda, si sposta di nuovo. Di nuovo a temperatura ambiente, di nuovo a temperatura fredda, di nuovo a temperatura calda.
Le variazioni nei valori misurati sono piuttosto comuni nei semiconduttori. Scusate. Le variazioni sono piuttosto comuni nella raccolta dati sui semiconduttori. Se scorro molti di questi test, possiamo vedere che stiamo eseguendo lo stesso test su molte di queste penne. Ci ritroviamo con molti parametri altamente correlati. Se continuo, molti di questi test sembrano molto simili tra loro. Se passo ad altri test che potrebbero sembrare diversi, abbiamo altri test con dati dall'aspetto diverso. Alcuni test hanno risposte diverse alla temperatura.
Ecco un esempio. Alcuni dei valori misurati presentano valori anomali piuttosto estremi. Non è raro nei semiconduttori che, se un dispositivo presenta un difetto e si guasta, il guasto sia grave. Occuparsi dei valori anomali è sicuramente un aspetto che dobbiamo tenere in considerazione nel nostro processo. Notiamo che i valori misurati presentano variazioni dovute alla temperatura. Anche in questo caso, dovremo utilizzare alcune delle funzionalità di raggruppamento di JMP per gestire questo problema, poiché i nostri dati sono raggruppati in colonne.
Uno sguardo veloce alla distribuzione dei nostri numeri di serie: mostra che abbiamo 65 diverse voci di numeri di serie univoci in questo set di dati. Abbiamo 65 numeri di serie in questo set di dati campione. Abbiamo esplorato i dati. Abbiamo un'idea di cosa stiamo osservando. Il prossimo passo è iniziare a seguire il processo che abbiamo identificato come efficace per identificare errori di battitura nei nostri dati.
Il nostro primo passo è preparare i dati, rimuovendo i valori anomali tramite "Esplora valori anomali". Calcoleremo anche uno Z-score standardizzato utilizzando le colonne formula. Per farlo, utilizzeremo le funzioni "Analizza", "Screening" ed "Esplora valori anomali". Acquisiremo tutti i 300 valori misurati e faremo questa analisi in base alla temperatura.
A questo scopo, vorrei utilizzare l'outlier dell'intervallo dei quantili. Come nota per tutta la presentazione, sto utilizzando le impostazioni predefinite di JMP per tutte le piattaforme che utilizzerò. Userò gli outlier dell'intervallo dei quantili con le impostazioni predefinite. A freddo, per cancellare gli outlier nella tabella, userò l'opzione "Crea una colonna formula".
Lascerò le impostazioni predefinite. Passerò a "stanza". Per "stanza", farò la stessa cosa: colonna formula. Per "caldo", farò la stessa cosa: colonna formula. Ora, abbiamo generato diverse colonne formula nella nostra tabella. Se faccio un po' di pulizia qui, abbiamo 300 nuove colonne di dati in cui sono stati rimossi i valori anomali.
La prossima cosa che voglio fare è impostare l'operazione e la temperatura da utilizzare come gruppo per... Perché userò la nuova funzionalità della colonna formula, ma voglio ottenere la funzionalità di gruppo per che possiamo ottenere impostando questo in modo che le statistiche siano calcolate in base alla temperatura, all'operazione per tutti i nostri 300 parametri anomali.
Con tutte le 300 colonne da cui abbiamo eliminato i valori anomali, se clicco con il pulsante destro del mouse qui sotto la nuova colonna formula, sotto "distribuzionale", abbiamo "standardizza", che calcolerà lo Z-score standardizzato per tutti i nostri parametri. Questo crea un intero nuovo gruppo di colonne. Se faccio un po' di pulizia qui, ora abbiamo 300 colonne di dati standardizzati.
Giusto per dare una rapida occhiata a ciò che abbiamo appena realizzato, se apro questo Graph Builder e osservo il test E8. In precedenza, avevamo un valore anomalo estremo, che rendeva difficile visualizzare i dati. Dopo aver rimosso i valori anomali, siamo riusciti a visualizzare i dati, ma abbiamo continuato ad avere salti tra i valori misurati tra le diverse operazioni e le diverse temperature. Dopo aver standardizzato il tutto per operazione e temperatura, abbiamo centrato ciascuna di queste distribuzioni sullo zero e assegnato a tutte una deviazione standard di uno, il che significa che tutti i dati rientrano più o meno in questo caso tra più o meno tre.
Ho sbagliato punto su questa scala. Ora siamo in grado di porci domande come: questi punti si trovavano all'estremità superiore della distribuzione a quella operazione e temperatura? Si trovavano all'estremità inferiore della distribuzione a quella operazione e temperatura? O si trovavano al centro della distribuzione a quella operazione e temperatura? Questo è ciò che abbiamo fatto nella fase di preparazione dei dati.
Il passo successivo che vogliamo fare è identificare quali di questi 300 parametri sono efficaci nel predire il numero seriale. Per farlo, useremo lo screening predittivo. Dai dati so che ho un sacco di parametri altamente correlati tra loro. So che i risultati dello screening predittivo daranno origine ad alcuni parametri altamente correlati. Dopo aver utilizzato lo screening predittivo, useremo le variabili cluster per eliminare molti dei parametri altamente correlati e mantenere solo i più rappresentativi dei test che stiamo cercando.
Per farlo, useremo lo screening, lo screening predittivo. Inseriamo tutte le nostre colonne standardizzate e chiediamo al programma di calcolare il numero di serie. Anche in questo caso, ci sono alcune opzioni qui sotto. Ho utilizzato le impostazioni predefinite per tutta la presentazione. JMP elaborerà questi dati e ci fornirà un report in cui ordina i parametri più adatti a descrivere il numero di serie del dispositivo.
Dando una rapida occhiata, sembra che il primo parametro sia davvero buono, seguito da altri che sembrano altrettanto validi. Se scorriamo verso il basso, sembra che dopo, non so, dopo circa 20, non stiamo ottenendo molti benefici dall'inclusione di nuovi parametri. Selezionerò i 20 parametri migliori qui. Sono stati selezionati nella tabella dati. Ora, in "Analizza clustering", userò le variabili cluster per identificare le variabili altamente correlate in questo elenco di 20.
Se inserisco quei 20 nelle colonne Y, otteniamo questo report in cui in genere cerco il rosso brillante e il blu brillante. Gioco al gioco in cui conto i quadrati. Sembra che ci siano 1, 2, 3, 4, 5, 6. Da questa analisi, mi aspetto di avere circa sei parametri che potremo utilizzare per il nostro controllo degli errori di battitura.
Prima di procedere, mi assicurerò che la mia selezione di colonne non abbia colonne selezionate, in modo che quando le selezionerò in questo report, vengano selezionate. Da questo clustering, qui sotto in questo riepilogo dei cluster, sembra che abbia preso tutti i nostri 20 parametri e abbia detto: "Posso trasformarli in quattro gruppi, ed ecco i più rappresentativi di ogni gruppo".
Fantastico. Ma ho scoperto che questa piattaforma tende a raggruppare le cose. Sembra che qui ci siano due parametri che non hanno una buona correlazione con nessuno degli altri 20 parametri. Sono stati aggiunti ad alcuni di questi altri gruppi, e non voglio che accada. Non solo guardo qual è il più rappresentativo, ma analizzo anche questa colonna e mi assicuro che, se un parametro finisce in quel cluster, sia ben correlato al suo interno.
Guardando qui sotto, vediamo che molti di questi valori sono molto vicini a uno. Significa che sono altamente correlati. Ma poi abbiamo questo tizio. È molto vicino allo zero. Non correla bene con il gruppo in cui è stato inserito. Non si raggruppa bene nemmeno con il cluster più vicino. Non si raggruppa bene con nulla. Voglio mantenere anche questo parametro nel mix. Poi guardando in basso, sembra che ce ne sia un altro che non correla bene con il suo gruppo. Abbiamo questi quattro più questi due, il che mi porta ai sei che mi aspettavo in base all'immagine.
Questo ci fornisce sei colonne selezionate nella nostra tabella dati. Se organizzo un po' le colonne, le separo e le raggruppo. Questo ci fornisce un elenco di quelli che chiamo i nostri migliori predittori, che abbiamo per cercare di comprendere i nostri numeri seriali in base ai dati che abbiamo.
Ora abbiamo identificato i parametri più importanti. Siamo pronti per eseguire l'analisi che ci informerà se riteniamo di aver commesso errori di battitura nei numeri di serie o meno. Per farlo, utilizzeremo la piattaforma di clustering gerarchico. In "Analisi clustering", clustering gerarchico, utilizzeremo i sei migliori predittori che abbiamo appena identificato e li etichetteremo con il numero di serie.
Di nuovo, ci sono più opzioni. Ho mantenuto le impostazioni predefinite di JMP per tutto. Questo ci fornisce il report per il clustering gerarchico. Vorrei apportare alcune modifiche qui, dove imposto i cluster di colore per rendere un po' più facile la visualizzazione dei diversi gruppi. Mi piace controllare quanti cluster vengono creati. Quando abbiamo esaminato i dati inizialmente, c'erano 65 numeri di serie diversi in questo lotto. Ho scoperto che questa procedura funziona meglio se non si imposta il valore a 65, ma solo leggermente inferiore al numero totale di dispositivi che ci si aspetta nel lotto. Per questo esempio, lo imposterò a qualcosa... Non lo imposterò a 65. Lo imposterò a 58.
L'ultima cosa di cui ho bisogno per avviare questa analisi è ottenere un filtro dati dalla tabella dati e impostarlo su seriale. Questo mi permetterà di selezionare tutte le righe in cui il seriale è, ad esempio, uno. Se lo faccio, possiamo vedere qui nel report del dendrogramma che le righe di dati relative al numero seriale uno sono tutte raggruppate insieme. Sono tutte dello stesso colore e sono tutte verticalmente una accanto all'altra.
Ciò suggerisce che il nostro algoritmo di clustering ha funzionato con i sei parametri che gli abbiamo assegnato. Se analizziamo i dati, sembra che anche il numero di serie due si sia ben clusterizzato, anche quello. Se analizziamo i dati, ogni numero di serie, osservando quanto bene si siano raggruppati... Arriviamo al numero di serie 17, dove sembra che la maggior parte dei nostri dati sia qui sotto, e almeno uno dei nostri punti dati, a quanto pare, sia lì sopra.
C'è una distanza verticale piuttosto significativa tra questi. Ma ciò che è più importante della distanza verticale tra loro è se si tracciasse una linea che segue queste linee e che permette di collegare i punti che si stanno osservando. Sembra che dovrei tracciare questa linea. Quindi la domanda è: quanto a destra abbiamo dovuto guardare? Abbiamo dovuto andare parecchio a destra per creare questa connessione. Più a destra bisogna andare, più è probabile che questi dati non assomiglino davvero a questi dati.
In base alla mia comprensione di questo dendrogramma, direi che questi dati sembrano piuttosto diversi. Se mi concentro su questo punto, che sembra isolato, mi sembra di avere un caso in cui, in base ai sei parametri che avevamo, quando sono stati testati, la maggior parte delle volte, i dispositivi che apparivano così in base ai dati dei test elettrici, il numero di serie inserito era il 12, tranne in un caso in cui il numero di serie inserito durante il test era il 17.
Probabilmente si tratta di un caso in cui il segno sul componente è stato letto male. Sembra piuttosto probabile che, a seconda del carattere e della dimensione del segno, un due possa apparire come un sette. Questo è uno dei modi più comuni in cui abbiamo visto errori di battitura comparire nei nostri dati. Questo metodo ha appena identificato. Sì, siamo stati in grado di identificare errori di battitura in questo set di dati utilizzando questo metodo.
Proseguendo, selezioniamo tutti i punti in cui abbiamo una corrispondenza con il numero di serie del dispositivo 18. Sembra che ci sia una piccola distanza tra alcuni di questi. Ingrandendo i dati, se giochiamo allo stesso gioco, tracciamo una linea tra i punti e sembra che possiamo collegarli lì.
Quindi la domanda è: quanto a destra ho dovuto spostarmi? Non ho dovuto spostarmi molto a destra. Sembra probabile che tutti questi dati siano molto simili tra loro. Sembra una situazione in cui il dispositivo 18 e il dispositivo 29 sembrano praticamente uguali, il che ha causato una piccola separazione per le voci relative al dispositivo 18. Non mi sembra un errore di battitura. Sembra solo un caso in cui due parti sembrano simili. Non è sicuramente qualcosa su cui spenderei tempo per approfondire ulteriormente.
Se continuiamo con altri numeri di serie, questi si raggruppano bene e arriviamo a 25. Sembra che ci sia una separazione. Se giochiamo, sembra che abbiamo dovuto spostarci di una certa distanza a destra, quindi questi dati non sembrano molto simili. Se ingrandiamo il singolo punto selezionato, ingrandiamo meglio. Sembra che ci troviamo in una situazione in cui, la maggior parte delle volte, i componenti che appaiono così quando testati ottengono un numero di serie 26, ma in un caso abbiamo ottenuto un 25.
Se ingrandiamo gli altri punti dati selezionati, il 25 di solito appare così, tranne... Sembra che abbiamo un caso in cui si è verificato un inserimento di 26. Se teniamo d'occhio ciò che è selezionato nel dendrogramma qui, e salto tra il numero di serie 25 e 26, sembra... Questo è un caso che abbiamo identificato in cui avevamo due dispositivi, il dispositivo 25 e il 26. Entrambi sono stati testati. Ma quando il dispositivo 25 è stato testato, è stato testato con il numero di serie 26. Quando è stato testato il 26, il numero di serie inserito era 25.
C'è qualcosa in questi numeri, sono fuori ordine o qualcosa che ha causato questo tipo di errore di battitura nei nostri dati di test. Questo è un altro tipo di errore di battitura che abbiamo identificato utilizzando questa metodologia. Potremmo continuare a esaminare il resto di questi numeri di serie. È quello che faremmo se dovessimo fare tutto questo. Ma per motivi di tempo, questi sono gli unici che esaminerò.
Come processo, ci siamo chiesti: possiamo trovare un modo semplice che non richieda troppa competenza in materia per analizzare i dati e vedere se ci sono errori di battitura o meno? Credo che siamo riusciti a identificare un processo facile da seguire con questo processo che abbiamo appena illustrato. Non abbiamo molta competenza in materia su quali fossero questi parametri di test, ma siamo comunque riusciti a seguire questo processo e ad arrivare almeno a una breve lista di possibili errori di battitura che possiamo analizzare e discutere con gli esperti in materia.
Il processo è così semplice che abbiamo avuto ottime esperienze nell'utilizzarlo sia da parte di ingegneri esperti che di nuovi ingegneri. Ha utilizzato solo le funzionalità JMP integrate e abbiamo persino utilizzato tutti i parametri predefiniti, il che lo rende facile da automatizzare e da programmare. Questo è ciò che abbiamo fatto nel nostro ambiente. Non devono farlo manualmente, ma tutti gli ingegneri lo seguono e capiscono il processo che ho appena illustrato con voi oggi.
Ha avuto successo. Abbiamo acquisito conoscenze. Siamo riusciti a identificare errori di battitura nei nostri dati di test e abbiamo utilizzato queste conoscenze per identificare alcuni errori sistematici. Questo tipo di errore di battitura si verifica spesso. Qual è la causa? Questo accade piuttosto spesso. Qual è la causa? Siamo riusciti ad apportare alcuni miglioramenti ai sistemi di processo. Ci ha aiutato a migliorare anche la formazione, ed è stato uno strumento molto utile per discutere e fornire feedback agli operatori di test su ciò che possiamo vedere e sui problemi che stiamo riscontrando. Quando sono più informati, sono più in grado di tenere d'occhio la situazione e fornire suggerimenti sui cambiamenti e su come possiamo continuare a fare le cose meglio e continuare a realizzare un prodotto di qualità superiore dalla nostra struttura.
Questo è il processo che abbiamo sviluppato e utilizzato. Se avete dati longitudinali, in cui avete testato un dispositivo o un prodotto più volte nelle stesse condizioni o approssimativamente nelle stesse condizioni, forse alcuni di questi metodi potrebbero aiutarvi a identificare possibili problemi anche nei vostri dati. Grazie per avermi seguito. Spero che abbiate trovato utile questo articolo. Buona giornata.