Siltronic AG è uno dei leader tecnologici mondiali nel settore dei wafer di semiconduttori. Per la produzione di wafer di silicio sono necessarie numerose fasi di processo, a partire dalla crescita dei cristalli fino al confezionamento dei wafer.
In un ambiente di produzione complesso, vengono generati molti dati, quindi dettagli diversi sono importanti da prospettive diverse. I dati possono essere salvati in database e altre risorse che JMP è generalmente in grado di caricare. Questi dati non rientrano certamente in un'unica tabella dati. In questo intervento, mostrerò come una tabella dati master può essere estesa con dati aggiuntivi, a seconda del contesto. Fornirò anche esempi di come interrogare tabelle aggiuntive che contengono informazioni più dettagliate e che sono collegate alla tabella dati master.
La tabella dei dati master è dotata di un set di script per implementare le funzionalità descritte. Vengono inoltre illustrati frammenti JSL dettagliati per realizzare le funzionalità descritte.
Ciao a tutti. Grazie per aver guardato questo video. E benvenuti alla mia presentazione, "Data Cockpit: modi per estendere una tabella master al clic con dati aggiuntivi". Vorrei innanzitutto parlare della mia azienda, Siltronic. Abbiamo quattro siti produttivi di livello mondiale, 4.500 dipendenti, una presenza e una portata globali e oltre 50 anni di storia nelle tecnologie del silicio. Siamo stati fondati come parte di Wacker e abbiamo prodotto il nostro primo wafer da 200 millimetri nel 1984 e il primo da 300 millimetri nel 1990. Ciò che accade costantemente è la riduzione delle dimensioni, come potete vedere qui con la regola di progettazione di 11 nanometri, sette, otto, cinque, tre e attualmente due.
Nel 2015 siamo diventati una società per azioni e attualmente ci stiamo espandendo con il nuovo stabilimento FAB di Singapore e il reparto di estrazione dei cristalli di Friburgo. Qui potete vedere la catena del valore dell'elettronica e come il valore aumenta, a partire dal polisilicio ultrapuro fino ai wafer di silicio semiconduttore. Questa è la nostra fase produttiva per semiconduttori ed elettronica, e il valore è più di 1000 volte superiore. Qui potete vedere la rete di produzione internazionale. In Germania, a Friburgo e Burghausen, abbiamo la nostra linea di produzione di piccolo diametro e gli impianti di estrazione dei cristalli e wafer, mentre Burghausen è il nostro polo centrale di ricerca e sviluppo.
Disponiamo di un impianto per wafer da 200 millimetri a Portland e a Singapore. Disponiamo anche di un impianto per la produzione di cristalli e di un impianto per wafer da 300 millimetri a Singapore. Questi FAP a Singapore sono tra i più nuovi e grandi al mondo. Per noi, la posizione tecnologica all'avanguardia e un elevato livello di qualità sono altrettanto importanti. E sì, attualmente stiamo lavorando su nodi da due nanometri e contemporaneamente stiamo ottimizzando oltre 50 parametri per il wafer, oltre a disporre della tracciabilità del singolo wafer. Quindi vengono generati moltissimi dati. Questo è il nostro flusso di lavoro produttivo, a partire dalla materia prima, silicio ultrapuro, passando per la produzione di cristalli con il metodo Czochralski o la produzione di cristalli a zona flottante, quindi la rettifica dei lingotti, il taglio multifilo, l'arrotondamento dei bordi, la marcatura laser, la lappatura, la pulizia e l'incisione, la lucidatura e infine l'epitassia. Qualche parola su di me. Sono un ingegnere elettrico e ho un dottorato di ricerca in simulazione di processi elettrotermici simili a quelli che svolgiamo nella nostra azienda. Ho una formazione statistica e il mio lavoro principale è lo sviluppo di processi di crescita dei cristalli di silicio presso Siltronic Freiburg. Vorrei ringraziare la mia azienda che mi ha permesso di partecipare al Discovery Summit e di svolgere il mio lavoro con JMP, il che è fantastico.
Sono anche responsabile del supporto del software JMP all'interno di Siltronic, con circa 500 utenti. Ora, per quanto riguarda l'applicazione, Data Cockpit: modi per estendere una tabella principale al clic con dati aggiuntivi. Il problema che avevamo era che una tabella doveva contenere una panoramica sui prodotti o lotti, e dovevano esserci dei grafici per valutare le prestazioni e altri parametri. Vorremmo avere tabelle aggiuntive generate in base al contenuto e alla selezione della tabella principale, e colonne aggiuntive da aggiungere con valori specifici. Inoltre, vorremmo fornire link per approfondire i dati. Abbiamo visto che JMP è un'ottima interfaccia grafica utente. La tabella dati JMP è un'ottima interfaccia grafica utente per farlo. Per risolvere questo problema, abbiamo utilizzato molte query di database, in particolare il nuovo oggetto query SQL. Abbiamo preso la tabella dati JMP per la panoramica e il gestore eventi per agire al clic e abbiamo utilizzato molti script di tabella per avviare le piattaforme, aggiungere colonne, generare tabelle di dettaglio o eseguire tutto con un clic. Quindi JSL è un ottimo strumento per implementare tutte queste funzioni. Nell'applicazione reale, i nostri dati provengono dai database aziendali.
In questa presentazione, simulo questo processo utilizzando la tabella dati di esempio "Anodic Bond". Il riepilogo del cockpit viene compilato tramite query su molte tabelle diverse nella realtà. Vengono aggiunte tabelle aggiuntive dalle stesse o da altre tabelle o da altri database, e potrebbero essere implementate anche altre fonti disponibili per JMP, come file, figure, video. In questa presentazione, utilizzo la tabella "Anodic Bond", perché la query del database è molto simile all'accesso al database aziendale. In questa tabella dati "Anodic Bond", abbiamo diverse informazioni sui batch e, per ogni wafer, il batch è l'ID del wafer. Per ogni wafer, abbiamo una funzione di dati come queste cinque variabili: carica, flusso, posizione, forza del pistone, vuoto e tensione, lungo l'ordine mostrato qui. Abbiamo una valutazione, come "buono" o "cattivo", per ogni wafer. Ecco come appare il cockpit con dati e script. Contiene l'ID del wafer, la valutazione e alcuni dati aggregati come potete vedere qui, e contiene molti script di tabella. Ecco un link per approfondire. Qui abbiamo delle colonne, e altre colonne sono raggruppate nel dettaglio del gruppo di colonne. Lo vedremo più avanti. Abbiamo anche una colonna del grafico di tipo espressione.
Ecco come appare più in dettaglio, e questa è la volta in cui passerò a JMP. Qui vediamo il cockpit, che ora è vuoto. Qui ho uno script in cui possiamo vedere l'abstract della mia presentazione per vedere il contesto. Qui fornisco uno script con un po' di documentazione su come utilizzare questa tabella. Spiegherò in dettaglio. Ho raggruppato gli script. Possiamo aprire il gruppo di script e premere semplicemente "Aggiorna cockpit" per ottenere i dati principali del cockpit. Come potete vedere, abbiamo 30 wafer elencati qui con anche i dati aggregati.
Ecco uno script per cancellare la tabella e poterla ripopolarla. Possiamo dare un'occhiata al database completo, cosa che non è possibile per l'applicazione reale. Ma qui posso aprirlo. Questa è una tabella dati di esempio JMP. Possiamo vederla con 122 righe e 2.000 ID wafer. In questo grafico, possiamo vedere i dati funzionali presenti nella tabella di esempio del legame anodico, come carica, flusso e così via. Ho cercato alcuni dati di dettaglio interessanti qui per entrare nel cockpit. Questa potrebbe essere la posizione 43 della carica. Potete vedere che varia molto qui. Oppure la posizione 40 del flusso, che è caratteristica qui, questa posizione e la forza del pistone.
Qui abbiamo la posizione 30 come posizione caratteristica, il vuoto, che è la posizione tre. Potrebbe essere interessante. E la tensione, dove la posizione 27 è interessante. Abbiamo qui un commutatore di colonna per passare facilmente da una variabile all'altra. Questo è il database che usiamo. Lo chiudo. Eccoci di nuovo nella cabina di pilotaggio e possiamo dare un'occhiata a come funziona. Aggiorniamo la cabina di pilotaggio. Modifichiamo lo script. Vediamo che è piuttosto piccolo e utilizza principalmente una nuova query SQL. Come potete vedere qui, ma non per un database, bensì per una tabella JMP. Questa è la differenza principale tra l'accesso a una tabella JMP o a un database. Uso anche SQL personalizzato per inserire la query, per definirla. Potete vedere qui che ho filtrato solo una parte degli ID wafer per avere una piccola quantità nella cabina di pilotaggio con cui lavorare. Ho ottenuto alcuni dati aggregati come massimo o media, come potete vedere qui. Il codice SQL sembra un po' sgradevole perché devo usare l'escape delle virgolette doppie all'interno della stringa SQL personalizzata.
Più avanti vedremo un modo più semplice per farlo. La query viene eseguita e aggiorna la tabella, il cockpit. Qui devo chiudere la tabella dati JMP perché JMP apre questa tabella e non la chiude alla fine della query. Qui elimino alcuni script che non mi servono quando viene eseguita la query. È uno script piuttosto piccolo, pratico da usare e facilmente gestibile. Per cancellare la tabella dati, vediamo cosa faccio qui. Elimino tutte le righe. Elimino la colonna del grafico che vedremo più avanti. Elimino tutte le colonne dei dettagli del gruppo di colonne che appariranno qui più avanti ed elimino la proprietà dell'ID wafer. Eseguiamo tutto. Qui possiamo vedere come viene popolato il cockpit completo. Vediamo che otteniamo alcune tabelle di dettaglio aggiuntive con grafici. Qui, per i wafer nel cockpit, otteniamo i dettagli su questi ID wafer, 30 come quelli che ho interrogato, e i dati di dettaglio del flusso qui. All'interno della tabella, inserisco lo script per visualizzare il generatore di grafici per vedere la curva di dettaglio. Posso chiuderlo qui. Lo stesso vale per l'accusa.
Qui potete vedere un riferimento al collegamento e qui un ID del collegamento. In questo generatore di grafici, posso visualizzare il pannello di controllo e utilizzare questa tabella di dettaglio... In questa tabella di dettaglio, posso utilizzare i dati della tabella principale del cockpit, come qui, la condizione, come se fossero nella stessa tabella, semplicemente collegandoli. Qui l'ho usata come sovrapposizione per visualizzare wafer buoni e cattivi in colori diversi. Ecco a cosa servono i collegamenti. Diamo un'occhiata al cockpit e diamo un'occhiata ai dettagli. Qui sotto i grafici, vediamo un grafico di riepilogo come la carica massima sull'ID del wafer, sempre con il selettore di colonna per visualizzare diverse variabili. Se passo il mouse su un punto, vedo un grafico di dettaglio. Questo perché ho incluso il grafico nella tabella dati come colonna e ho creato questa colonna come etichetta, come potete vedere qui. Questo è il motivo per cui posso visualizzare i dettagli qui nel grafico come etichetta. Forse possiamo valutare qui se c'è una differenza nella media del vuoto, perché buono e cattivo?
Oppure possiamo fare un'analisi unidirezionale, ad esempio. Anche in questo caso, abbiamo i dettagli anche qui. Come si fa questo come script? È semplicemente un generatore di grafici. Ho creato il generatore di grafici, ne ho estratto lo script e l'ho incollato nello script della tabella come qui. Qui potremmo fare uno screening del predittore come questo con tutti i valori aggregati e anche con i valori di dettaglio, come potete vedere qui. Potete vedere quale parametro può rendere la condizione buona o cattiva. Come si fa, lo possiamo vedere qui. Prende semplicemente... Cerca la colonna di dettaglio, i dettagli del gruppo, se sono presenti, e se non sono presenti, chiama semplicemente lo screening del predittore con i valori aggregati. Se i dettagli del gruppo della colonna di dettaglio sono presenti, aggiunge anche i dettagli del gruppo di colonne, quindi queste colonne qui anche allo screening del predittore. Ora, abbiamo visto cosa c'è nei grafici di sezione. Diamo un'occhiata a maggiori dettagli. Dettagli per l'ID wafer. Questo è solo un suggerimento per cliccare sull'ID wafer che si trova qui. Cliccando qui, otteniamo i dettagli dell'ID wafer 1971 o 1973.
Viene semplicemente generata una nuova tabella, corredata da uno script che mostra questo grafico.
Come si può fare? Qui la tecnologia utilizzata è il gestore eventi. Sotto "Informazioni sulla colonna", vediamo che abbiamo il gestore eventi. Nel gestore eventi, il frame di scripting è già fornito da JMP. Ho implementato uno script per avviare una query e in questa query posso usare la colonna e la riga in cui ci troviamo. Si tratta di un ID wafer e del numero dell'ID wafer a cui posso accedere. Qui ho bisogno della connessione al database. All'interno di questo SQL che ho qui, vediamo un modo diverso per inserire una stringa in cui non è necessario l'escape delle virgolette doppie di cui abbiamo bisogno qui. Sembra un po' più gradevole. Utilizzando Eval Insert, inserisco il filtro di query, la condizione di query, in questa query. Prendo qui l'ID della colonna corrente, che è il mio ID wafer, inserisco un filtro nella query e, al termine, chiudo di nuovo la tabella dati, elimino alcuni script e aggiungo lo script, carica rispetto all'ordine, alla tabella. Ecco cosa ho fatto. Premo qui per ottenere la tabella e qui per ottenere un grafico. Potremmo farlo anche in un solo passaggio.
Non ne abbiamo più bisogno. Diamo un'occhiata a... Nello script successivo, deseleziono tutte le colonne e tutte le righe. Deseleziona le righe selezionate. Devo selezionare alcune righe. Lasciatemi fare. Selezionerò una, tre, cinque righe, premendo il pulsante Ctrl, e deseleziona le righe selezionate. Così facendo, ottengo la curva del vuoto per questi tre ID wafer con la condizione "buono" o "cattivo" in diverse colonne, i termini del grafico. Posso confrontare. Come si fa? Potete vedere qui, se vado alla finestra principale di JMP, che in background viene creata la tabella "legame anodico", ma è nascosta, e vediamo solo il grafico qui, che è questa finestra. Posso dare un'occhiata alla tabella facendo doppio clic su di essa. A quel punto non è più nascosta. Vediamo come funziona. C'è un'altra funzione: se chiudo il grafico, anche la tabella scomparirà. Vedo solo la tabella. Diamo un'occhiata a come si fa. Qui, innanzitutto, questa è una finestra pop-up se non è selezionato nulla. Se viene selezionato qualcosa, compilo la stringa dell'elenco dei wafer. È una stringa contenente un elenco degli ID dei wafer e uso substitute per sostituire la parentesi quadra con queste parentesi qui.
Poi è la stessa storia con questo elenco. Invio una nuova query SQL alla tabella dati JMP e tramite Eval Insert, introduco questo elenco di wafer come condizione per il codice SQL. Al completamento dell'esecuzione, faccio la stessa cosa e poi il generatore di grafici viene aggiunto come script. Viene eseguito qui, il generatore di grafici. Dico all'oggetto del generatore di grafici che alla chiusura, dovrebbe chiudere la tabella dati, i dettagli del legame anodico e non salvare nulla. È un piccolo script e ha una funzione utile, credo, per fornire una curva di questi ID di wafer selezionati. Quando lo chiudo, tutto scompare di nuovo. Fin qui, i dettagli.
Ora, passiamo ad aggiornare i dettagli. Come potete vedere qui, queste sono colonne di dettaglio aggiuntive che sono state aggiunte. Ho mostrato perché i punti sono interessanti e vengono aggiunti tramite questo script. Lasciatemi di nuovo svuotare la tabella e aggiornare il cockpit per visualizzare i dati principali. Iniziamo questo script dalle colonne di dettaglio. Vedete questi dettagli apparire qui. Come funziona, ve lo mostrerò qui. Per prima cosa, compilo un elenco dei nomi delle colonne di cui ho bisogno qui, dei nomi di cui ho bisogno per la query e dei valori di filtro di cui ho bisogno per la query.
Compilo ogni set di dati in un array associativo e creo un elenco di array associativi. Se le colonne di dettaglio non esistono, le creo, come puoi vedere qui. Poi rivedo l'elenco dei dettagli e creo... Il passaggio successivo è stato creare il gruppo di colonne "dettagli" qui su tutte le colonne di dettaglio. Ed ecco il ciclo su tutti i dettagli per inserire la query per ogni dettaglio, come puoi vedere qui. Di nuovo, con Eval Insert, introduciamo il nome e introduciamo qui il valore necessario per la query. E questo è il ciclo per creare una tabella per ogni colonna di dettaglio. E questo aggiornamento introdurrà i valori nella colonna di dettaglio, come abbiamo visto prima. E alla fine, all'interno del ciclo, ovviamente devo chiudere la tabella di dettaglio. Quindi vediamo di nuovo come funziona. Svuoto la tabella, aggiorno la cabina di pilotaggio e aggiungo colonne di dettaglio come puoi vedere qui. Non è uno script molto lungo, penso che sia abbastanza facile da gestire se vuoi capire come funziona. Il dettaglio successivo è aggiungere un grafico per il vuoto.
Funziona così. Premo e il grafico viene generato. Scorro leggermente verso destra. Il procedimento è il seguente. Genera la colonna, quindi disattiva l'aggiornamento della tabella dati e, per ogni riga, inseriamo una query sul dettaglio di cui abbiamo bisogno, come fatto in precedenza, quindi creiamo l'oggetto del generatore di grafici e lo salviamo come immagine nel grafico a colonne vuoto. Alla fine, ovviamente, chiudiamo il generatore di grafici e la tabella dati. Quindi imposti l'altezza della cella per poter visualizzare il grafico. Ecco come funziona.
Il dettaglio successivo è la query dei dettagli di addebito. È qui che si trova la tabella aggiuntiva con il generatore di grafici, come possiamo vedere qui. È piuttosto semplice. Si tratta semplicemente di cercare l'elenco dei wafer in questo modo. Quindi si interroga la tabella dei dettagli, si aggiunge una proprietà alla tabella, si esegue lo script per il generatore di grafici ed si esegue lo script. Inoltre, qui genero l'ID del collegamento e il riferimento per poterlo utilizzare. Lo chiudo. Eseguirò di nuovo per poterlo utilizzare per questo ID wafer. Non c'è alcuna valutazione qui.
La valutazione è presente solo qui, nella tabella "Cockpit", a condizione. Questo mi permette di utilizzarla nei dettagli e di rappresentarla graficamente. Chiudiamola di nuovo. Per il flusso, è lo stesso. Se, ad esempio, non vi piace che appaiano tutte le finestre, e ne hanno molte, e quindi svuoto di nuovo la tabella, potreste spostare tutto in un progetto come possiamo fare qui. Possiamo creare un progetto della tabella dati corrente, che è il "Cockpit". Possiamo... Questo non ci serve più. Possiamo usare la tabella come se fosse da sola. Possiamo chiudere i pannelli di sinistra come qui per avere la schermata intera. Qui tutto funziona in modo simile. Possiamo aggiornare il "Cockpit" e così via. Quando creiamo alcuni dettagli, come i dettagli delle query per la tariffa, li otterremo in schede e non in finestre diverse come possiamo vedere qui. Ho finito la mia presentazione. Grazie per l'attenzione. Per qualsiasi domanda, incontratemi al Discovery Summit, al gruppo utenti o allo Scripters Club. Grazie ancora e buona giornata. Ciao.