过去,对同一主机上不同腔室或不同主机上的腔室配置设置进行比较,需要耗费一天时间的人工操作。最近,我们利用 JMP 17 中的 Workflow Builder 开发了一种自动化流程。我们创建了单独的工作流文件,根据待比较腔室的数量使用不同的工作流,从而提高了流程效率。这些工作流会读取配置设置文件,并将参考腔室与待查询腔室进行比较。最终,我们会生成一份报告,其中包含基于配置差异严重程度的图表。
本次演示重点展示了 JMP 18 中 Workflow Builder 新增的条件功能的强大之处。该功能提供了一种将所有比较工作流合并为一个工作流的方法,并根据用户在条件提示中输入的待比较腔室数量来确定工作流的正确部分。系统会根据提示输入选择相关的工作流。最终结果与之前相同,但现在无需手动选择工作流文件,从而可以在一两分钟内生成跨多个平台类型的比较报告。
大家好,我叫 Gary O'Driscoll,就职于应用材料公司。今天我将为大家介绍如何使用 Workflow Builder 和条件提示来监控原子层沉积气体管路的温度限制,以及如何使用 Workflow Builder 来实现这一点,尤其是在 JMP 中断提示中,应用程序是如何介入并导致 JMP 中断的。
简单介绍一下我自己。正如我所说,我在都柏林的应用材料公司工作。我是一名工艺工程师,负责多个工艺流程。我拥有近30年的半导体行业经验。我的爱好包括骑自行车、打高尔夫,以及指导女子曲棍球(camogie)。女子曲棍球是爱尔兰的一项运动,是女子成年队的比赛。男子曲棍球则叫做爱尔兰式曲棍球(hurling)。如果你去过爱尔兰,听说过我们用棍子玩的那种“野性十足”的游戏,那就是我教的女子曲棍球。
我们来快速调查一下有多少人使用 JSL。如果我们看看 JSL 的用户,究竟有多少人真正使用 JSL 呢?大致可以分为两类。一类是“是”,JSL 是你工作的一部分,你很喜欢 JSL。比如,我可能是一位代码专家,每天都用它。另一类是“否”,JSL 不是我工作的一部分。我不懂代码,也从来没用过它。就我个人而言,我属于“否”这一类。我不太懂代码。有时候我会边做边学。其实,有一种方法可以让你从“否”过渡到接近中间立场,甚至接近“是”。今天我会向大家展示其中的一部分。
在 JMP 17 的发布会上(我们还记得那是在北卡罗来纳州卡里市的探索峰会上),工作流构建器(Workflow Builder)首次亮相。工作流实际上是记录我们想要进行的数据操作的地方,它颠覆了代码和输出之间的关系。从 JSL 的角度来看,我们编写代码来获得所需的输出。而有了工作流构建器,我们就能直接获得输出,对数据进行操作,后台会自动生成相应的代码。工作流让用户无需任何 JSL 代码基础即可体验和学习 JSL 代码。
如果我们查看构建器本身,可以看到,在构建器中,我可以创建自己想要执行的任务。在工作流构建器的步骤设置中,您可以看到,系统会根据我想要执行的每个小任务在后台自动生成代码。工作流用于处理重复性任务,它们可以显著提高效率,避免您一遍又一遍地重复相同的工作。工作流的代码是可查看和可编辑的。
如果我自己尝试这样做,尤其是在刚开始使用 Workflow Builder 的时候,我发现,我选择的文件,我实际需要的文件,文件名也在这里。但并非每次我都想使用这个文件。我可以在这里对代码进行一些调整。但我学到了很多关于如何选择通用文件的知识,这些知识都来自 JMP 社区。当你第一次接触代码时,你遇到的问题并非第一次出现。JMP 社区中已经有人解决了这个问题,并在社区中分享了代码。
然后我们来谈谈 JMP 18 的发布。JMP 18 是在欧洲曼彻斯特举行的 Discovery Summit 峰会上发布的。会上我们听到了关于 JMP 18 的六个“P”的概念。除此之外,峰会后我还了解到 JMP 18 中新增了第七个“P”。更准确地说,这个“P”指的是工作流构建器中的提示,或者更准确地说,是条件提示。
我的工作中如何使用提示和条件提示?我将详细介绍我工作中使用这些功能的原因、用途和方法。我的工作内容是什么?我正在检查原子层沉积 (ALD) 工艺的温度设置,以发现故障报警和警告。对于短程腔室气体管路,这些检查可能是预防性维护任务的结果。我为什么要这样做?因为任何未被报警捕获的温度变化都可能导致产品报废。具体来说,我使用增强型工作流构建器(支持条件提示)来检查这些设置。
对于不熟悉原子层沉积(ALD)技术的人来说,ALD 在我们各个行业的众多应用中都有着广泛的应用。它是一种将材料逐层直接沉积到表面上的工艺。ALD 能够以自限性的方式生成尽可能薄、均匀的薄膜。例如,实验室、化学和生物医学领域的样品瓶上就经常会用到 ALD 涂层;医疗器械上也经常会用到 ALD 涂层;半导体器件制造商的芯片内部也经常会用到 ALD 涂层。这就是 ALD 在我们各个行业中的应用之处。
它在半导体行业是如何应用的?或许与其他一些行业类似。我有一个容器,里面装着液态化学品,用于工艺流程中。工艺流程中确实会用到化学品,但它们并非以液态,而是以气态形式,通过一个容器,经由一个气管输送到芯片表面的真空腔室中。这里指的是气管。这只是整个化学品流动流程的简图,为了便于理解,我们可以在整个气管上设置多个温度加热垫,从容器一直延伸到芯片表面的腔室。
我这里展示的芯片表面只是一个芯片的示意图,但在半导体制造中,我们会在同一个基板或晶圆上,在一个腔室中放置多个芯片。我们会将材料沉积到这些芯片上。每次更换容器后,都需要检查加热垫的限位设置。正如我刚才提到的,冷点可能会导致气体冷凝,从而造成芯片缺陷。这是因为气体在冷却时可能会冷凝,冷凝后重新变成液体,干燥后又会重新凝固成固体,沉积在芯片上,造成问题。
旧方法是通过设置和多腔室设置检查来实现的。你可以这样理解:如果我只想查看一个腔室,我会使用一个工作流构建器。如果我需要查看两个不同的腔室,我会使用另一个工作流构建器。同样地,尽管这里的图表只显示了最多六个腔室,但实际上可以添加更多腔室。旧方法是,根据我要使用的腔室数量,创建一个文件,然后选择该文件来运行。
如果我们回到提示功能,那么在工作流构建器中,现在有一个功能允许我们不仅选择一个步骤,还可以给出提示,例如“与其创建六个独立的步骤,不如将它们合并为一个”。在 JMP 18 的工作流构建器中,您可以看到“高级”部分。进入“高级”后,我们会看到另一个菜单。在这些菜单中,您可以看到这四个选项:添加 if、添加 else、添加 return 和添加 for each。这些选项允许步骤分支,而不是只有一条路径。我可以根据输入的内容选择不同的路径。这是 JMP 18 中的新功能,而我在这里正是使用它。
为了让您更好地理解这种新方法,从流程图的角度来看,我会先启动程序,然后收到一个提示。我会问:“我是否使用一个腔室?”如果是,则运行我的工作流,生成报告,然后结束。如果提示不是“一个”,则继续执行下一个操作。然后询问:“是两个腔室吗?”如果是,则运行该操作。如果不是,则继续执行下一个操作。程序会持续检查每个操作,然后根据提示中的数字,检查我输入的内容。如果提示匹配,则运行相应的报告。这种新方法是在更大的工作流中嵌入 if-else 语句或 if-else 错误处理语句。这就是我的方法。
作为一名办公室工程师,我并不了解 JSL。以下是我构思这个概念的过程以及它如何运作的。或许还有其他方法,但这是我的方法。现在让我通过演示来展示一下。
如果我采用旧方法,我可能会进行四室检查。在我的检查中,我会指定要检查的文件。对于要检查的文件,我会生成数据表并将其保存为 JMP 文件。我会打开我的黄金标准文件。我使用黄金标准来检查限值,因为在进行预防性维护时,有时需要放宽限值。例如,如果我正在冷却某个部件,那么我的限值就是:如果某个部件的温度是 200 度,我会将其冷却到 20 度。
我的限值实际上可能相对于 200 度来说非常严格,但由于我把它冷却下来了,它超出了我们的容差范围,所以它不断发出警报。很多人在进行预防性维护时会放宽限值。如果你完成了这项任务,你应该再次缩小限值。这就是它所寻找的。它存在于你的黄金文件中,并且限值被重新设置到它们真正需要的位置。我会有一个黄金文件。我会把它保存到一个表中并将它们连接起来。然后根据列,我会进行匹配。我会检查它们是否都正确?例如,在这个例子中,有四个腔室。对于不匹配的地方,我会生成一个子集表。
接下来,在大规模分销的情况下,我会考虑:好的,那么,应该选择哪种加热垫、哪种控制器、哪个类别?正如我所说,我会有多个工作流程,分别对应单腔、双腔、三腔、四腔、五腔、六腔等等,一直到更高容量的腔体。而我所做的,是将它们全部合并,这样我就不必再单独选择某个流程了。
我在提示符里做了操作,所以你现在可以看到,在我执行之前,让我先运行一下。在 JMP 18 中,我会打开我的文件。我会选择要检查的文件,比如说,一个四号弹膛。我会点击“打开”。然后程序就会运行。我想把它保存成什么名字?我选择“四号弹膛”。保存。我只是在覆盖我现有的文件。它会找到那个黄金文件,然后把它保存到我想要的任何位置,我可以保存这些文件。就像我说的,我可以选择它所在的文件夹。这将生成我需要的所有文件。
如您所见,在四级测试中,它会显示“加热垫 2 有两个问题”。所有问题都来自控制器 2,其中一个是警告限值,另一个是故障限值。然后它会生成一个表格,列出这些问题的具体内容、当前值以及预期值,这样我就能得到一份简短的报告。此外,我还会对六腔测试进行类似的操作。接下来是条件提示部分。正如您现在看到的,这是同一个文件。我将其拆分,打开检查文件后,我会保存它。我的黄金文件是 CSV 格式的。我会将其另存为 JMP 表格。然后,我就可以开始编写提示了。
现在您可以看到,我会在提示中询问它是否要输入一条消息。消息内容是:我真正想要哪些腔室?如您所见,如果答案是 4,它将运行此操作。如果答案是 4,则继续执行下一个操作。然后在“否则”部分,我嵌入了另一个可能针对某个腔室的工作流,然后在“否则”部分内又嵌入了另一个工作流。以此类推,我们继续向下移动。您可以看到,每个工作流都像是在整个流程中不断切换。最后,我会得到图表和报告。这就是我的使用方法。如果我要回到之前的步骤,我会再次打开检查文件。这次我将选择 6。
它会问我:“我想把文件保存到哪里?” 我直接说,我想把检查结果 6 保存在这里。我可以输入工具 ID、机器 ID,或者根据我想要保存文件的方式,输入一个流程 ID。如果我这样设置,即使我暂时没有表格,以后再尝试保存,它也会立即帮我保存。这样我又会看到检查结果 6,所以我会选择“是”,把它保存为最终文件。
现在它会问我:“我要比较多少个房间?” 在这里,我选六个。它会问我,我已经运行过几次了,那么我要用哪个文件?我会选“检查六个”。它会在后台运行。正如你所看到的,整个过程会根据提示跳过某些部分,然后运行这些部分并显示“已跳过”。我可以看到我的文件在这里。你可以看到,我的不匹配项也在这里。
现在您可以看到我的表格,这里显示了我所有的限制。它基本上是综合所有行的数据得出的,但就我的不匹配项而言,这里有两个。至于其他项的不匹配项,我已经在其他地方处理过了。它会根据我的情况生成完整的报告并运行。如果我回到之前提到的四个不匹配项,我会查看我的限制,然后我会发现,在这台机器上,我的加热垫出现了两个工作不正常的问题。我知道它出现在 2 号加热垫上,也出现在 2 号控制器上。我知道一个是故障限制,另一个是警告限制。然后回到之前的情况,我会发现警告值和故障值都偏低。我可以看到它们的设置值。您可以看到,它们可能分别设置为 100 和 -80,但实际上它们应该是 -10 和 -80。
那时我会回去,我们会解决这些限制,然后一切都会好起来的。
所以,对我来说,这只是检查一下限值是否恢复正常。并非是某些环节可能没有被监控。我想很多客户都会这样做,但他们可能并不想监控限值。毕竟,温度运行已经有足够多的设定点了。我们没问题。他们不会去监控限值。这是我自己也会做的检查。
这就是我的演示。简而言之,工作流条件非常有用,它可以将多个工作流合并成一个带有提示的大型流程。提示可以是数字,对我来说是数字提示,但也可以是基于字符的提示。例如,假设我在化工行业工作,我有两个工作流,一个是处理酸性化学品的工作流,另一个是处理碱性化学品的工作流。然后,我可以输入提示信息,例如:“我当前是在处理酸性化学品的工作流,还是在处理碱性化学品的工作流?”
你可以使用不同的角色,或者我遇到某个任务时会问:“这件事发生了吗?是或否?” 根据结果,我可能会生成一份报告。正如我所说,这是我的解决方案。我的工作流程还有其他解决方案可以考虑。生成报告后,能够研究日语原文(JSL)是有益的,这也可以是一种不错的教学方法。
正如我所说,如果我现在回到我实际的工作流程,如果我能找到的话。如果我回到这里,我会看到我为每个流程都创建了任务。我可以从我在工作流程中创建的任务开始学习JSL。也许下一步我会在工作流程的末尾添加一个提示。比如,也许这是针对一台特定机器及其特定数量的腔室的。也许我还需要处理第二台或第三台机器。也许我会添加另一个提示,问:“你还需要处理另一台机器吗?是或否?” 不需要,那就完成了?是,那么也许可以循环回到工作流程的开头。这是我考虑的另一种方式。
那么,如果大家有任何问题,欢迎随时在社区联系我,直接把问题发给我。正如我所说,我叫 Gary O'Driscoll,我的 JMP 社区 ID 是 godriscoll。请把问题发给我,我很乐意解答。谢谢!