Unternehmen greifen häufig auf veraltete Software für die statistische Prozesskontrolle (SPC) zurück, um Fertigungsprozesse zu überwachen. Zahlreiche andere SPC-Programme sind zwar in der Industrie im Einsatz, doch halten Unternehmen oft an älteren Programmen fest, was die Datenanalyse und -präsentation für die Anwender erschwert.
Dieses Poster stellt eine Methode zur Erstellung von SPC-Diagrammen vor, um Schichtdickendaten für Öfen darzustellen, die häufig zur Verarbeitung großer Wafer-Chargen in der Halbleiterindustrie eingesetzt werden. Bei diesen Großchargenöfen können zahlreiche Faktoren die Schichtdickenmessungen beeinflussen. Die Darstellung dieser Informationen im JMP Graph Builder bietet mehrere Vorteile, darunter:
Da JMP Informationen schnell und einfach darstellen kann und über eine hohe Interaktivität zur Problemerkennung verfügt, hilft es Ingenieuren, Entscheidungen mit größerer Zuversicht zu treffen.
Hallo. Mein Name ist Cody Sandquist, und ich bin Prozessingenieur bei NXP in Austin, Texas. Vor einigen Jahren habe ich mich mit JMP-Scripting beschäftigt, was sowohl eine Herausforderung als auch äußerst hilfreich für meine tägliche Arbeit war. Heute präsentiere ich Ihnen eine Benutzeroberfläche, die ich mit JMP für die statistische Prozesskontrolle (SPC) erstellt habe.
Ich bin sicher, dass jeder, der in der Fertigungsindustrie tätig ist, mit SPC vertraut ist. Ich habe im Laufe der Zeit verschiedene SPC-Systeme verwendet. Manche sind besser als andere, aber alle haben ihre Schwächen. Ihnen fehlt es an Interaktivität oder der Möglichkeit, schnell und einfach zwischen Informationen zu wechseln, wie es JMP bietet.
Ich zeige Ihnen heute eine Möglichkeit, SPC-Diagramme und JMP zu erstellen, um schnellere technische Entscheidungen zu treffen und die Informationen besser zu teilen. Ein Problem, das wir mit einigen der verfügbaren SPC-Programme haben – wenn wir beispielsweise unser System zur Bewertung von NXP verwenden –, ist, dass es ziemlich veraltet ist. Ich nutze diese Systeme im Büro.
Kurz zur Erklärung: Wir verwenden große Vertikalöfen mit einer Kapazität von bis zu 150 Produktionswafern – ein wichtiger Punkt – bzw. 6 Chargen. Jede Charge umfasst 25 Wafer. Der Ofen verfügt über mehrere Zonen, in denen wir Wafer-Monitore einsetzen, um die Schichtdicke nicht nur innerhalb einer Charge, sondern in jeder einzelnen Zone zu überwachen.
Das von mir verwendete SPC-Programm zeigt immer nur einen Ofen an, obwohl es besser wäre, alle Öfen in einem Diagramm zu betrachten, um eventuelle Auffälligkeiten zu erkennen. Außerdem werden die einzelnen Zonenstärken nicht angezeigt, sondern nur der Mittelwert aller Zonen. Bei Problemen in einer Zone ist es daher sehr schwierig, diese mit diesem SPC-Programm zu identifizieren.
Darüber hinaus ist es sehr schwierig, weitere häufige Fehlerquellen zu analysieren. Dazu gehört beispielsweise die Anzahl der Produktionslose in einer Charge. Auch die Beladungsgröße spielt eine Rolle: Bei 25 statt 150 Wafern können unterschiedliche Dickenmessungen erfolgen. Die Messgeräte, die die Dicke messen, könnten fehlerhaft qualifiziert sein, und ungenaue Messgeräte sind keine Seltenheit. Diese Informationen sind mitunter schwer zu erfassen, wenn man sich ausschließlich auf das SPC-System verlässt.
Mithilfe von JMP Scripting habe ich ein eigenes Dashboard erstellt, in dem ich alle Öfen in einem Diagramm darstellen kann. Ich kann die Daten nach Ofenposition anzeigen lassen, also oben, unten usw., und so erkennen, ob an der jeweiligen Stelle des Ofens etwas vor sich geht.
Wie bereits erwähnt, kann ich anhand vieler gängiger Faktoren erkennen, ob weitere Faktoren eine Rolle spielen. Beispielsweise könnte es sich um eine Messung aus der Metrologie handeln oder um die Beladungsgröße. Ich kann sogar weitere Informationen, wie etwa den Waferhersteller, in die Tabelle einbinden und prüfen, ob ein neuer Waferhersteller Dickenschwankungen verursacht. Genau diese Funktionalitäten machen JMP benutzerfreundlicher und bieten mehr Möglichkeiten als gängige SPC-Programme.
Mit meiner Konfiguration kann ich schnell zum gewünschten Prozessrezept gelangen. Falls Sie mit Rezepten nicht vertraut sind: Wir haben viele verschiedene Prozesse mit unterschiedlichen Zieldicken. Ich möchte das gewünschte Prozessrezept schnell finden. Deshalb habe ich ein Popup-Fenster erstellt, in das ich einfach den Namen eingebe und auf „OK“ klicke.
Dabei wird der Name des Prozesses mit der entsprechenden Datei abgeglichen. Anschließend werden die Dickengrenzwerte und Zielwerte für die jeweilige Prozessrezeptur gefiltert. Ich habe eine Rohdatendatei zur Dickenmessung. Die Daten aus unserem SPC-System enthalten die Dickenmesswerte für mehrere Rezepturen. Nach erneutem Ausfüllen der Datei und Filtern nach der gewünschten Rezeptur werden alle Daten im Graph Builder visualisiert.
Graph Builder gefällt mir wieder einmal sehr gut, weil er so interaktiv ist. Sie sehen hier die beiden Diagramme nebeneinander: Oben habe ich nur einen Ofen, unten hingegen mehrere Öfen, und ich kann die Daten für alle Zonen anzeigen lassen. Ich habe das Programm so eingerichtet, dass ich Berechnungen durchführen kann, bei denen ich nicht nur die mittlere Dicke, sondern auch die Standardabweichung und die Spannweite für jede einzelne Zone benötige. Ich kann es also auch entsprechend anpassen.
Wenn ich dann nach gängigen Faktoren wie Messgeräten oder Lastgröße filtern möchte, kann ich das schnell tun. Ich kann auch nach einzelnen Öfen filtern. Der Vorteil liegt natürlich in der besseren Anpassbarkeit und Flexibilität bei der Erstellung von SPC-Diagrammen. Man kann schnell verschiedene Faktoren analysieren, die Abweichungen verursachen, die Ergebnisse erfassen, an Kollegen senden und Lösungen finden. Vielleicht ist auch eine Zone nicht optimal und ich muss Anpassungen vornehmen – auch das ist möglich.
Der einzige Nachteil ist, dass ich die Dickendaten manuell abrufen und als CSV- oder Textdatei speichern muss. Idealerweise könnte ich mich direkt mit unserer Datenbank hier bei NXP verbinden, aber dafür habe ich keine Berechtigung. Es liegt also nicht an JMP, sondern daran, dass mir diese Möglichkeit in meinem Unternehmen nicht zur Verfügung steht.
Um auf das Skript etwas genauer einzugehen: Ich weiß, es ist nicht besonders spannend, ein langes Skript und jeden einzelnen Punkt zu erläutern, aber ich halte es einfach und konzentriere mich auf die wichtigsten Punkte und die Funktionsweise. Wie bereits erwähnt, benötige ich eine Rohdatendatei mit den Dickenmesswerten, die alle Dickenmessdaten aus verschiedenen Prozessrezepten enthält. Zusätzlich speichere ich eine weitere Datei mit den SPC-Grenzwerten und -Zielen. Mithilfe der Modal-Funktion in JMP öffnet sich ein Popup-Fenster. Dort gebe ich den gewünschten Rezeptnamen ein, woraufhin die Informationen aus der Rohdatendatei sowie die zugehörigen Grenzwerte angezeigt werden.
Daraus werden die Grenzwerte und Zielwerte als Variablen gespeichert. Diese Variablen werden später verwendet, um die Linien, Zielwerte und Grenzwerte sowie die Inkrementierung und Größe im Graph Builder zu erstellen. Dies verdeutlicht die Flexibilität der Skripterstellung in JMP: Die Datendateien enthalten nicht alle identische Zeilen. Jeder einzelne Batch variiert. Manchmal werden in unseren Testwafer-Monitoren zwei Wafer im oberen und unteren Bereich getestet. Manchmal sind es drei, manchmal fünf Wafer. Daher enthält eine Zeile zwei ausgefüllte Spalten, eine andere drei, eine weitere fünf usw.
Mit einer Reihe von Wenn-Dann-Anweisungen – ich werde hier nicht näher darauf eingehen – kann ich anhand der ausgefüllten Spalten ermitteln, auf welche Zone sich jede einzelne Zelle bezieht, und ihr somit die richtige Position zuweisen, sodass es keine Fehler oder Verwirrung gibt und sie nicht in der falschen Zone angezeigt wird, wenn ich sie im Graph Builder anzeige.
Um kurz auf den Punkt beim Beenden des Skripts im Graph Builder zurückzukommen: Die Variablen werden im Graph Builder eingefügt, um die Linien zu erstellen, und ich kann den Graph Builder so anpassen, dass die Informationen nach meinen Wünschen angezeigt werden. Ein kurzes Beispiel für eine Problemlösung, die ich bei der Arbeit hatte: In unserem Haupt-SPC-Diagramm gab es einen Ofen für eine der Prozessrezepturen, der die Standardabweichung nicht einhielt. Unser SPC-System zeigt leider keine Details an.
Mithilfe meines JMP-Skripts konnte ich die Informationen für die verschiedenen Zonen aufteilen. In der untersten Zone zeigte sich ein bimodales Muster. Hier spielten also zwei Dinge gleichzeitig eine Rolle. Anschließend filterte ich die Daten für diesen einzelnen Ofen heraus und berücksichtigte dabei einige gemeinsame Faktoren. In diesem Fall war es die Beladungsgröße. Eine Ladung von sechs Chargen, also ein voller Durchgang, bedeutet, dass der Ofen mit 150 Produktionswafern vollständig gefüllt war. So konnten wir das Problem genau eingrenzen.
Das Problem trat ganz unten im Ofen bei vollen Produktionschargen auf; die Temperaturspanne schnellte in die Höhe. Anschließend konnte ich diese Daten mit den Koordinaten unserer Messtechnik verknüpfen, um Wafer-Maps zu erstellen und sogar zu untersuchen, welcher Teil des Wafers bzw. welcher Abschnitt des Ofens die Probleme verursachte.
Indem wir diese Informationen mit unseren Anlagentechnikern teilen, können wir die genaue Fehlerursache im Heizkessel ermitteln, die betroffenen Teile austauschen und den Heizkessel wieder in einen einwandfreien und stabilen Zustand versetzen. Das war nur ein kurzes Beispiel. Vielen Dank für Ihre Aufmerksamkeit. Ich hoffe, Sie konnten etwas daraus mitnehmen und wir sehen uns auf der Konferenz.