Bisher erforderte der Vergleich von Kammerkonfigurationen zwischen Kammern auf demselben oder auf verschiedenen Mainframes ein manuelles Verfahren, das einen Tag in Anspruch nahm. Kürzlich wurde ein automatisierter Prozess mit dem Workflow Builder in JMP 17 entwickelt. Um die Effizienz des Prozesses zu steigern, wurden individuelle Workflow-Dateien erstellt, die je nach Anzahl der zu vergleichenden Kammern einen eigenen Workflow verwenden. Die Workflows nehmen die Konfigurationsdatei und vergleichen die Referenzkammer mit den abgefragten Kammern. Das Ergebnis ist ein Bericht mit Grafiken und Tabellen, der die Kritikalität der Konfigurationsabweichungen darstellt.
Diese Präsentation demonstriert die Effektivität der neuen bedingten Funktion des Workflow-Builders in JMP 18. Diese Funktion ermöglicht es, alle Vergleichs-Workflows in einem einzigen Workflow zu kombinieren. Der relevante Workflow-Abschnitt wird dabei anhand der Anzahl der zu vergleichenden Kammern bestimmt, die der Benutzer in einer Eingabeaufforderung angibt. Basierend auf dieser Eingabe wird der entsprechende Workflow ausgewählt. Das Endergebnis bleibt unverändert, jedoch entfällt die manuelle Auswahl der Workflow-Datei. So lässt sich ein Vergleichsbericht für verschiedene Plattformen innerhalb von ein bis zwei Minuten erstellen.
Hallo zusammen. Mein Name ist Gary O'Driscoll. Ich arbeite für die Firma Applied Materials und werde heute einen Vortrag über die Verwendung des Workflow Builders und der bedingten Eingabeaufforderungen zur Überwachung der Temperaturgrenzen der Atomlagenabscheidung halten. Ich werde erläutern, wie wir den Workflow Builder dafür nutzen können, insbesondere bei Eingabeaufforderungen für JMP-Abbrüche, wo die Anwendung gestartet wurde und wann der JMP-Abbruch erfolgte.
Ein paar Informationen zu mir. Wie bereits erwähnt, arbeite ich für Applied Materials in Dublin. Ich bin Verfahrenstechniker und beschäftige mich mit verschiedenen Prozessen. Ich verfüge über fast 30 Jahre Erfahrung in der Halbleiterindustrie. In meiner Freizeit fahre ich Rad, spiele Golf und trainiere Camogie. Camogie ist ein irischer Sport für Damen. Bei den Herren heißt er Hurling. Falls Sie schon einmal in Irland waren und von diesem wilden Spiel mit Stöcken gehört haben – genau das ist Camogie, und genau das trainiere ich.
Eine kurze Umfrage zum Thema JSL-Nutzung: Wenn wir uns JSL und alle seine Nutzer ansehen, wie viele davon nutzen es wirklich? Es gibt zwei Gruppen: Die einen sind die „Ja“-Nutzer, für die JSL fester Bestandteil ihrer Arbeit ist, die es lieben. Vielleicht bin ich ein Code-Experte und nutze es täglich. Die anderen sind die „Nein“-Nutzer, für die JSL nicht relevant ist. Ich verstehe Code nicht und habe ihn noch nie verwendet. Ich persönlich gehöre zur „Nein“-Gruppe. Ich verstehe Code nicht wirklich. Manchmal versuche ich, mir nebenbei etwas anzueignen. Es gibt einen Weg, von der „Nein“-Seite fast zur „Ja“-Seite zu gelangen. Einen Teil davon werde ich Ihnen heute zeigen.
Bei der Einführung von JMP 17, die wir noch gut in Erinnerung haben, auf dem Discovery Summit in Cary, North Carolina, stattfand, wurde der Workflow Builder vorgestellt. Ein Workflow ist im Grunde der Ort, an dem wir festhalten, was wir mit Datenmanipulationen tun möchten. Er kehrt das Verhältnis zwischen Code und Ausgabe um. Aus JSL-Sicht entwickeln wir den Code, um die benötigte Ausgabe zu erhalten. Mit dem Workflow Builder haben wir die Ausgabe bereits, bearbeiten die gewünschten Daten, und der Code wird im Hintergrund generiert. Workflows ermöglichen es Benutzern, JSL-Code ohne Vorkenntnisse zu erleben und zu lernen.
Wenn wir uns den Workflow-Builder ansehen, sehen wir, dass ich dort meine eigenen Aufgaben erstelle, die ich durch die Bearbeitung ausführen möchte. In den Schritteinstellungen des Workflow-Builders ist zu sehen, dass der Code für jede einzelne Aufgabe im Hintergrund generiert wird. Workflows werden für wiederkehrende Aufgaben verwendet. Sie steigern die Effizienz erheblich, da man nicht immer wieder dasselbe tun muss. Der Code des Workflows ist einsehbar und bearbeitbar.
Als ich das selbst ausprobiert habe, insbesondere zu Beginn meiner Arbeit mit dem Workflow Builder, habe ich festgestellt, dass ich die benötigten Dateien zwar auswählen konnte – der Name war also vorgegeben –, aber nicht immer genau diese Datei verwenden wollte. Anpassungen im Code waren problemlos möglich. Vieles, was ich über die Auswahl generischer Dateien gelernt habe, stammt jedoch aus der JMP-Community. Wenn man zum ersten Mal programmiert, ist das Problem nicht neu. Jemand aus der JMP-Community hat es bereits gelöst und den Code geteilt.
Dann denken wir an die Veröffentlichung von JMP 18. JMP 18 wurde in Manchester auf dem Discovery Summit vorgestellt. Dort erfuhren wir von den sechs Ps. Zusätzlich gab es ein siebtes P, das in JMP 18 enthalten ist und von dem ich erst nach dem Summit hörte: Eingabeaufforderungen, genauer gesagt bedingte Eingabeaufforderungen im Workflow Builder.
Wie ich die Eingabeaufforderungen und bedingten Eingabeaufforderungen in meiner Rolle nutze. Ich erkläre Ihnen, was, warum und wie ich das in meiner Rolle mache. Was mache ich? Ich überprüfe die Temperatureinstellungen auf Fehleralarme und Warnmeldungen bei der Atomlagenabscheidung (ALD). Die Gasleitungen in der Kammer werden wahrscheinlich im Rahmen von vorbeugenden Wartungsarbeiten überprüft. Warum mache ich das? Weil jede Temperaturänderung, die nicht durch Alarme erfasst wird, zu Ausschuss führen kann. Wie ich die Einstellungen überprüfe? Ich nutze dafür die erweiterten Workflow-Builder, die bedingte Eingabeaufforderungen verwenden.
ALD, für diejenigen, die damit noch nicht vertraut sind, wird in vielen Anwendungen in allen unseren Branchen eingesetzt. Es handelt sich um ein Verfahren, bei dem Material direkt auf Oberflächen aufgebracht wird, jeweils eine Monolage. Es erzeugt hauchdünne und gleichmäßige Schichten, die selbstlimitierend sind. Beispiele hierfür sind Beschichtungen auf Laborfläschchen in der chemischen und biomedizinischen Industrie, Beschichtungen auf Medizinprodukten und sogar Schichten in Halbleiterbauelementen. Auch im Inneren von Chips kann eine solche Schicht vorhanden sein. Hier kommt ALD in all unseren Branchen zum Einsatz.
Wie wird das in der Halbleiterindustrie eingesetzt? Wahrscheinlich ähnlich wie in anderen Branchen. Ich habe einen Behälter mit einer flüssigen Chemikalie, die im Prozess verwendet wird. Chemikalien kommen zwar zum Einsatz, werden aber nicht flüssig, sondern gasförmig von einem Behälter in einer Vakuumkammer über einen Tiegel zur Chipoberfläche transportiert. In diesem Fall handelt es sich um eine Gasleitung. Dies ist eine vereinfachte Darstellung des gesamten Chemikalienflusses. Zur Veranschaulichung: Wir verwenden mehrere Heizmatten, die den gesamten Tiegel vom Behälter bis zur Kammer auf der Chipoberfläche abdecken.
Die hier dargestellte Chipoberfläche zeigt beispielhaft einen einzelnen Chip. In der Halbleiterindustrie befinden sich jedoch mehrere Chips nebeneinander auf einem Substrat oder Wafer in einer Kammer. Darauf wird das Material aufgebracht. Die Einstellungen der Heizmatte müssen nach jedem Behälterwechsel überprüft werden. Wie bereits erwähnt, können Kältezonen zur Kondensation von Gasen führen und dadurch Defekte auf dem Chip verursachen. Denn ein kondensierendes Gas kann beim Abkühlen wieder verflüssigt werden, austrocknen und sich dann erneut verfestigen, um sich auf dem Chip abzulagern und so ein Problem zu verursachen.
Die alte Methode mit den Einstellungen und deren Überprüfung für mehrere Kammern. Stellen Sie sich vor: Ich hatte einen Workflow-Builder, wenn ich eine einzelne Kammer betrachten wollte. Wollte ich zwei verschiedene Kammern betrachten, benötigte ich einen weiteren Workflow-Builder. Das Diagramm zeigt hier nur bis zu sechs Kammern, es könnten aber beliebig viele weitere vorhanden sein. Die alte Methode bestand darin, eine Datei zu erstellen, die der gewünschten Anzahl an Kammern entsprach. Diese Datei wählte ich dann aus und führte den Workflow aus.
Wenn wir zu den Eingabeaufforderungen zurückkehren, bietet der Workflow Builder nun eine Funktion, mit der wir nicht nur eine einzelne Eingabeaufforderung auswählen, sondern auch eine Eingabeaufforderung erstellen können, die besagt: „Anstatt sechs separate Eingabeaufforderungen zu erstellen, kombiniere sie zu einer einzigen.“ In JMP 18 finden Sie im Workflow Builder den Bereich „Erweitert“. Dort befindet sich ein weiteres Menü. Darin sehen Sie die vier Optionen „Wenn hinzufügen“, „Sonst hinzufügen“, „Rückgabe hinzufügen“ und „Für jedes hinzufügen“. Mit diesen Optionen können Sie einen Schritt verzweigen. Es gibt also nicht nur einen Pfad. Je nach Eingabe kann ich den einen oder anderen Pfad wählen. Diese neue Funktion ist in JMP 18 enthalten und wird hier verwendet.
Um Ihnen einen Einblick in die neue Methode zu geben: Aus Sicht eines Ablaufdiagramms würde ich beginnen und dann eine Eingabeaufforderung erhalten. Ich würde fragen: „Verwende ich eine Kammer?“ Wenn ja, würde ich meinen Workflow ausführen, einen Bericht erhalten und wäre fertig. Wenn meine Eingabeaufforderung nicht „eins“ lautete, würde ich fortfahren. Dann würde ich fragen: „Verwende ich zwei Kammern?“ Ja, dann können wir diesen Vorgang ausführen. Wenn nein, würde ich fortfahren. Das System würde kontinuierlich jeden dieser Fälle prüfen und, abhängig von der Anzahl, die eingegebenen Daten überprüfen. Für die übereinstimmende Eingabe würde dann der entsprechende Bericht erstellt. Die neue Methode verwendet eingebettete if-else-Anweisungen innerhalb eines größeren Workflows. Das ist meine Vorgehensweise.
Als Büroingenieur beherrsche ich JSL nicht. So bin ich auf dieses Konzept gekommen und so funktioniert es für mich. Es mag andere Methoden geben, aber dies ist meine. Ich zeige es Ihnen nun in einer Demo.
Wenn ich die alte Methode anwenden würde, würde ich wahrscheinlich eine Vier-Kammer-Prüfung durchführen. Dabei würde ich die zu prüfende Datei auswählen. Aus dieser Datei würde ich die Datentabelle generieren und als JMP-Datei speichern. Anschließend würde ich meine Referenzdatei öffnen. Ich vergleiche die Grenzwerte mit einem festgelegten Satz von Grenzwerten, da bei der vorbeugenden Wartung die Grenzwerte manchmal erweitert werden. Wenn ich beispielsweise etwas abkühle, lege ich die Grenzwerte so fest, dass ich es von beispielsweise 200 Grad auf 20 Grad abkühle.
Meine Grenzwerte sind im Verhältnis zu den 200 Grad eigentlich sehr eng, aber da ich die Anlage abgekühlt habe, liegen sie außerhalb unserer Toleranz, was zu ständigen Alarmen führt. Viele erweitern die Grenzwerte während der vorbeugenden Wartung. Nach Abschluss der Wartung werden die Grenzwerte wieder verkleinert. Genau das ist der Sinn dieses Systems. Die Grenzwerte befinden sich in Ihrer Referenzdatei und werden wieder auf die korrekten Werte eingestellt. Ich würde meine Referenzdatei in einer Tabelle speichern und die Daten verknüpfen. Anschließend würde ich die Spalten abgleichen und prüfen, ob alle Werte korrekt sind. In diesem Fall handelt es sich beispielsweise um vier Kammern. Bei Abweichungen würde ich eine Teiltabelle erstellen.
Von dort aus, in einem großen Vertriebsnetz, frage ich mich dann: Welches Heizkissen, welcher Controller, welche Kategorie wäre das richtige? Ich hätte, wie gesagt, mehrere Workflows – einen für Ein-, Zwei-, Drei-, Vier-, Fünf- und Sechskammergeräte usw. Ich habe sie alle kombiniert, sodass ich nicht mehr einzeln auswählen muss.
Was ich in den Eingabeaufforderungen gemacht habe, und was Sie hier sehen können, bevor ich das mache, lasse ich das hier ausführen. In JMP 18 gehe ich zu meinen Dateien. Ich sage, ich möchte zum Beispiel eine Vier auswählen. Ich klicke auf „Öffnen“. Das Ganze wird ausgeführt. Wie möchte ich es speichern? Ich wähle „Vierkammer“. Speichern. Ich speichere die vorhandene Datei einfach doppelt. Ich suche die optimale Datei, die dann an dem gewünschten Ort gespeichert wird, und ich kann diese speichern. Wie gesagt, ich kann meinen Ordner auswählen, egal wo er sich befindet. Dadurch wird alles generiert, was ich brauche.
Bei einem Vierer-Test, wie Sie hier sehen, würde angezeigt: „Ich habe zwei Probleme mit Heizkissen 2. Beides kommt von Controller 2, und eines davon ist eine Warn- und ein Fehlergrenzwert.“ Anschließend würde eine Tabelle mit den Fehlern, ihren aktuellen Werten und den Sollwerten erstellt, sodass ich meinen Bericht hätte. Ähnlich würde ich auch eine Sechs-Kammer-Prüfung durchführen. Dann komme ich zu meinen bedingten Eingabeaufforderungen. Und wie Sie jetzt sehen, ist es dieselbe Datei. Ich habe sie folgendermaßen aufgeteilt: Ich öffne meine Prüfdatei und speichere sie. Meine Referenzdatei liegt im CSV-Format vor. Ich speichere sie als JMP-Tabelle. Und hier gelangen ich zu meinen Eingabeaufforderungen.
Wie Sie sehen, lasse ich das Programm im Eingabeaufforderungsfenster eine Nachricht eingeben. In dieser Nachricht gebe ich an, welche Kammern ich benötige. Wenn die Antwort vier lautet, wird dieser Vorgang ausgeführt. Andernfalls wird mit dem nächsten Vorgang fortgefahren. Im „Sonst“-Zweig ist ein weiterer Workflow eingebettet, der beispielsweise für eine Kammer gedacht ist, und innerhalb dieses „Sonst“-Zweigs befindet sich ein weiterer eingebetteter Workflow. So geht es weiter. Jeder Workflow scheint sich über das gesamte System zu erstrecken. Am Ende erhalte ich meine Diagramme und meinen Bericht. So nutze ich das. Wenn ich nun zu diesem Vorgang zurückkehren würde, würde ich meine Prüfdatei erneut öffnen. Diesmal wähle ich die sechs Kammern aus.
Es fragt mich: „Wo möchte ich speichern?“ Ich sage dann einfach: „Ich möchte meine Schecks 6 hier speichern.“ Ich könnte eine Werkzeug-ID, eine Maschinen-ID oder einen Prozess angeben, je nachdem, wie ich meine Datei speichern möchte. Wenn ich es so einstelle, dass ich immer die Option habe, die Tabelle später zu speichern, falls sie gerade nicht verfügbar ist, wird sie sofort gespeichert. Ich hätte dann wieder die Schecks 6, also sage ich: „Ja, ich möchte diese als Referenzdatei speichern.“
Jetzt werde ich gefragt: „Wie viele Kammern möchte ich vergleichen?“ Ich wähle hier sechs. Da ich das Ganze schon ein paar Mal ausgeführt habe, werde ich gefragt, welche Datei ich verwenden möchte. Ich wähle „Sechs auswählen“. Im Hintergrund läuft der Prozess. Wie Sie sehen, überspringt er je nach Eingabeaufforderung bestimmte Abschnitte und meldet, dass diese übersprungen wurden. Hier sehe ich dann meine Dateien. Die Abweichungen sind hier zu sehen.
Sie sehen hier meine Tabelle mit allen Grenzwerten. Sie zeigt im Prinzip alle Zeilen zusammen, aber aufgrund meiner Abweichungen habe ich zwei. Die Abweichungen in den anderen Zeilen habe ich an anderer Stelle erfasst. Je nach den vorhandenen Daten erhalte ich einen vollständigen Bericht. Wenn ich zu den Abweichungen der vier Geräte zurückkehre, sehe ich, dass bei dieser Maschine zwei Probleme mit dem Heizkissen auftraten. Ich habe zwei solcher Probleme. Ich weiß, dass es sich um Heizkissen 2 und Controller 2 handelt. Eines ist ein Fehlergrenzwert, das andere ein Warngrenzwert. Ich sehe, dass es sich um eine niedrigere Warnung und einen niedrigeren Fehlerwert handelte. Ich kann sehen, wie diese Werte eingestellt waren. Sie sind beispielsweise auf 100 und -80 eingestellt, sollten aber eigentlich -10 und -80 sein.
Ich würde dann zurückgehen, und wir würden diese Einschränkungen beheben, und dann wäre alles gut.
Das ist für mich lediglich eine Kontrollmaßnahme, um sicherzustellen, dass die Grenzwerte korrekt eingestellt sind. Es geht nicht darum, ob diese Werte möglicherweise nicht überwacht werden. Ich denke, viele Kunden, die das tun würden, wollen die Grenzwerte gar nicht überwachen. Es gibt ja genügend Sollwerte für die Temperaturregelung. Wir kommen gut zurecht. Sie werden die Grenzwerte nicht überwachen. Das ist eine weitere Kontrollmaßnahme, die ich für mich selbst durchführe.
Das ist meine Demonstration. Zusammenfassend lässt sich sagen, dass Workflow-Bedingungen sehr hilfreich sein können, um mehrere Workflows mithilfe von Eingabeaufforderungen zu einem größeren Ablauf zu kombinieren. Die Eingabeaufforderungen können numerisch sein, es gibt aber auch zeichenbasierte Varianten. Nehmen wir an, ich wäre in der chemischen Industrie tätig und hätte zwei Workflows: einen für saure Chemikalien und einen für basische. Dann könnte ich in meiner Eingabeaufforderung angeben: „Arbeite ich gerade an meinem Workflow für saure oder an meinem Workflow für basische Chemikalien?“
Man kann verschiedene Zeichen verwenden, oder ich gehe zu einer Aufgabe und frage: „Ist das passiert? Ja oder nein?“ Abhängig vom Ergebnis erstelle ich dann einen Bericht. Wie gesagt, das ist meine Lösung. Es gibt aber auch andere Möglichkeiten, meinen Workflow zu optimieren. Nachdem ich das erstellt habe, ist es hilfreich, sich anschließend mit JSL auseinanderzusetzen, und es kann eine gute Lehrmethode sein.
Wie gesagt, wenn ich jetzt in meinen eigentlichen Workflow zurückkehre, sofern ich ihn finde, sehe ich dort meine Aufgaben für jeden einzelnen Schritt. Ich kann also mit dem Erlernen von JSL anhand der in meinem Workflow erstellten Aufgaben beginnen. Als nächsten Schritt könnte ich am Ende meines Workflows eine Abfrage einfügen. Ich dachte mir, vielleicht ist das für eine bestimmte Maschine mit einer bestimmten Anzahl von Kammern. Vielleicht muss ich eine zweite oder dritte Maschine bearbeiten. Dann könnte ich eine weitere Abfrage hinzufügen und fragen: „Müssen Sie noch eine weitere Maschine bearbeiten? Ja oder nein?“ Nein, dann bin ich fertig? Ja, dann könnte ich den Workflow wieder ganz von vorne beginnen. Das ist eine andere Möglichkeit, wie ich das sehe.
Wenn Sie also noch Fragen haben, kontaktieren Sie mich gerne über die Community und senden Sie mir Ihre Fragen. Wie bereits erwähnt, heiße ich Gary O'Driscoll und meine JMP-Community-ID lautet godriscoll. Schicken Sie mir Ihre Fragen, ich beantworte sie gerne. Vielen Dank.