异常情况会给制造工厂带来巨大的成本。在半导体行业,生产停机、晶圆报废和低良率以及产量下降都可能导致巨额收入损失。负责调查这些异常情况的工程师必须迅速找到可行的洞察,以便做出数据驱动的决策,从而最大限度地减少停机时间并提高产品质量。
JMP 的分析工作流程可以帮助您规划高效调查异常情况所需的步骤和工具。探索查询构建器如何简化从数据库访问数据的过程,以及 JMP 强大的表格菜单如何帮助您进行数据操作。了解用于可视化和分析晶圆图数据的最佳表格格式。利用探索性和分析性技术,发现制造工艺步骤中隐藏的关联。借助 JMP Pro 增强您的分析能力,例如利用 JMP Pro 18 的全新 Torch 深度学习插件中的图像分析等功能,获得更深入的洞察。
使用 JMP 中的工作流构建器,即可自动运行并重新运行整个分析过程,确保速度、可重复性、灵活性和强大的分析能力,而无需编写代码。了解如何在快节奏的制造环境中,利用 JMP 和 JMP Pro 中的这些工具和技巧,实现高效的解决方案并大幅节省成本。
大家好,我是 Ryan Cooper,JMP 系统工程师,负责墨西哥湾沿岸地区的业务。今天我们要讨论的是如何使用 JMP 简化制造异常调查流程。虽然这里以半导体行业为例,但这种异常调查流程的理念可以推广到任何制造业。我会分享一些技巧和窍门,这些技巧和窍门不仅适用于异常调查,也适用于您在 JMP 中的其他任何操作。相信每个人都能从中受益。
那么,让我们继续今天的探索之旅。如果您原本打算在接下来的30分钟左右暂停您的制造探索之旅,很抱歉,我们还有另一个任务。希望在完成这次探索之后,您能在JMP工具箱中掌握一些新的工具,以便日后自行使用。这次的探索之旅涉及一些神秘的晶圆特征,令URA半导体公司缺陷工程部门的工程师们百思不得其解。这里有四张晶圆图,不同的特征来自不同的位置,我们需要找出它们的来源。
我们将利用 JMP 分析工作流程的各个环节来实现这一点。首先,我们将了解数据访问,然后是数据混合和清理,最后是数据探索和可视化。我们会重点介绍一些建模工具,但最终会通过自动化和脚本将所有内容整合起来。关键在于,使用工作流构建器无需任何编程。在演示过程中,我们会多次回顾此工作流程的各个环节,您很快就会明白其中的原因。这是一种在 JMP 中组织问题解决流程的绝佳方式。
我们需要的数据表。我经常被问到:“我该如何着手做这类事情?我们公司收集了大量数据。”我的回答通常是:先想好一个问题。在这个例子中,我们要进一步探讨一开始提出的问题:这些缺陷来自哪里?我们想知道哪些工艺步骤导致了产品 A 晶圆上出现异常缺陷特征。所有这些晶圆缺陷特征都来自产品 A。然后,我通常会尝试将一些关键词与数据表、数据库或其他类似资源的不同区域关联起来。
您会在这张表格中看到晶圆芯片缺陷数据,这些数据对应于晶圆缺陷处理步骤。我需要包含产品参数(例如产品 A 的缺陷、步骤、工艺等)的工艺数据。您可以看到这些数据的格式。您会注意到数据采用的是竖排格式。这种格式非常适合晶圆可视化,但不太适合预测和从模型中获得更深入的洞察。一般来说,可能影响结果的预测因子通常需要采用宽排格式。您可以看到,这里使用的是竖排格式,我们可以通过在图形生成器中使用 X 轴和 Y 轴来可视化晶圆。
目前的数据格式已经相当不错了。如果我们想探究问题根源,就需要将其转换为更宽的数据格式,这可以通过一些方法实现。下一页就是我们需要的格式,以便回答我们的问题。您会注意到左侧是晶圆的单独数据,其中包含芯片级的完整缺陷数据生成图表。我们将生成该图表并保存到表格中,并在后续的分析中使用它。
这里有一些预测因子,它们由工艺步骤数据生成。您可以看到,在这个例子中,我们有步骤,然后是设备 ID。设备 ID 在下面划线后面。我们可以找出哪些设备 ID 和哪些步骤导致了特定的缺陷。这里的缺陷总数就是输出结果,只是屏幕上没有显示。这就是我们的最终结果,也是我们想要的表格。
这是我们的分析计划。我之前提到过我们会回到分析工作流程,现在它首次出现在这里。首先是数据访问,我们将使用查询构建器获取数据,并进行一些 SQL 筛选。接下来是数据混合和清理,我们会拆分和连接表。拆分有助于将数据转换为宽格式,然后我们需要将表连接起来,建立关系以解决问题。最后是探索和可视化。
正如我之前提到的,骰子层级数据采用堆叠格式。我们将把图表保存到数据表中,这是一个非常棒的功能,但并非人人都知道。我们将使用宽屏格式可视化分析结果,并将保存的图表作为标记或标签工具,用于我们最终进行建模的分析。我们将遵循以下流程:首先进行数据访问,可视化骰子层级数据,因为它不涉及任何数据混合和清理。然后进行一些清理工作,使其符合宽屏格式,最后进行建模和分析。
还有一点需要指出的是,使用分析方法解决问题,80% 的工作都在于访问和准备数据。就目前的情况而言,就是这些步骤。很多时候,我发现正是这些步骤让人们对这类分析望而却步。尤其是在需要编写代码或程序的情况下,很容易失去动力,但幸运的是,在 JMP 中你无需这样做。我们有一些很棒的工具可以用来准备数据,并通过工作流构建器将所有数据串联起来。稍后我们会了解它们是如何相互关联的。我们最终的目标是:基于数据驱动的决策,获得可操作的信息,并通过工作流构建器创建一些可重用的知识。
这个解决方案将在整个工作流程中保持快速、灵活和强大的性能,从而帮助我们高效地减少停机时间,提高晶圆和产品的质量,最终实现收入增长和成本节约。接下来,我们将进行 JMP 的演示。需要说明的是,本次演示旨在提供一个概览,所以如果您无法完全理解所有内容,也无需担心。为了节省时间,我会不时地进行一些现场演示,并运行一些简短的脚本。您可以参考我稍后提供的视频和工作流程图,了解您感兴趣的步骤。
我们先来看看……我们先来看看查询构建器。我们将在这里访问数据。我将依次点击“文件”、“数据库”和“查询构建器”,然后在这里查找缺陷数据。我输入“半导体”。您可以看到这里有几个不同的半导体表。您可能也会有多个不同的表,我们需要找到正确的表。在本例中,我将查看晶圆芯片缺陷计数数据,然后点击“下一步”。
这里您可以预览一下表格本身及其包含的列。您可以查看表格快照。可以看到表格的布局,包括产品、芯片 ID、晶圆,以及每个晶圆上每个芯片的缺陷数量。这是非常具体的分析数据。实际上,每个芯片在每个步骤、每个缺陷步骤中都对应一行数据。我们正在扫描缺陷。您可以在这里进行一些连接操作,但我们稍后会在 JMP 中完成所有的连接和数据表操作。现在,我点击“构建查询”。
为了看看这里发生了什么,我将产品添加到列表中。您可以看到我们只添加了一列,但如果需要,我可以打开这个开关来查看不同的行。现在我先把它关掉。我将按顺序添加我的芯片 ID、X 和 Y 芯片、晶圆以及缺陷。您可以看到所有添加的内容都在这里。我想按产品 A 进行筛选,因为我的问题出在这里。我可以按产品 A 进行筛选。运行此操作时,我也可以选择提示用户输入筛选条件。如果您想查看其他产品,也可以在同一工作流程中进行操作。
在这种情况下我不会那样做,但你知道它在那里。因为我正在按产品 A 筛选,所以我也可以从列中删除产品信息。它正在编写一小段 SQL 语句,以便根据我的拖放操作从数据库中提取我指定的数据。实际上,你不需要知道 SQL 语句就能提取这些数据。有了这些信息,我将运行查询并关闭。这是我的结果。现在我可以将其导入到图表构建器中。我们有 X 芯片。将其与 Y 芯片中的 X 进行比较。默认情况下,这种平滑处理效果更好,但我可以将其关闭并显示为数据点。这看起来更像晶圆了。
在这种情况下,我们已经收集齐了所有数据。我想按晶圆数量进行划分。我把它打包一下。现在我们可以看到一些单独的晶圆。总共有 125 片,我想添加一些关于缺陷的信息。我将把缺陷信息拖到叠加层视图中。现在我们已经有了半导体晶圆上每个芯片的缺陷数量。我不太喜欢目前这种带颜色的图例设置。它无法用颜色直观地显示缺陷的情况。
我要进入这里,在图例设置里进行更改。我要让颜色主题更加鲜明一些。我要从蓝色切换到红色。我们可以看看现在的效果。我看到了一些签名。它们开始显现出来了,但我想要更高的对比度,这样签名才能更清晰。我要稍微调整一下颜色主题,创建一个新的主题,然后用这个标记给红色留出更多空间。点击确定,现在一些签名更加突出了。你可以看到顶部和底部的缺陷、环形图案,还有左右两侧的缺陷。这里就有一个左右两侧的缺陷。
我觉得不错。我点击“完成”。关于图表构建器以及使用 JMP 将其发送到数据表,还有个鲜为人知的功能。如果您点击这里的红色三角形,将其转换为数据表,您现在就得到了一个带有图表图标的数据表。我们可以将其用于其他信息,这将使我们的一些可视化图表更加生动有趣。我暂时先关闭这个窗口。
现在我们需要考虑如何拆分数据表,并将其转换为宽格式,以便进行更复杂的分析。我们将拆分芯片 ID,使所有芯片 ID 或晶圆 ID 显示在顶部,晶圆 ID 显示在左侧。这样做是为了将这些信息与此表合并。我们进入“表格”菜单,然后选择“拆分”。我将启用预览功能,以便查看拆分效果。
我想按芯片 ID 进行拆分,然后我会拆分每个芯片 ID 内的缺陷。现在顶部有 1423 个芯片,左侧有 125 个晶圆。为了查看晶圆,我将晶圆拖到这里进行分组。现在您可以看到第一列中的晶圆,右侧是所有芯片 ID。这样我就可以将其与另一个表格合并。我给它取个名字。我已经预先创建好了这个表格。我只需移动它。然后点击“确定”。
现在我不需要这个了,所以我会退出。这里有两个表。我要把这些信息连接起来。我要点击“表”和“连接”。我们要把“图表构建器”表和另一个表连接起来。我们要匹配“晶圆”这个列。这是我们的公共列,你可以看到预览在这里出现了。现在我们有两列“晶圆”,因为两个表里都有。我要选择其中一个来输出。我们先选择“晶圆”和“图表”,然后启用它。
我们有了晶圆和图表。现在我们要选择芯片的其余部分。现在所有信息都已准备就绪。我们还要给输出结果命名,然后点击“确定”。由于我使用了这些数据,现在有两个表格,所有数据都在这个表格里,我要退出这两个表格。现在我有一个数据表,可以在这里进行一些不同的操作。这里还没有缺陷总数,或者……我可以进行汇总,我稍后会这样做,但我还没有工艺步骤。这将有助于我们解决问题。
但现在我有了芯片作为预测因子,晶圆放在左边,我可以利用这些数据进行一些有趣的可视化和建模。首先,我要做的是多元嵌入,这是 JMP Pro 18 的新功能。我使用的是 UMAP 模型。首先出现的是 UMAP1 和 UMAP2 的图。所有芯片的维度都被降维到了两个不同的维度,我们将观察其中的一些关系。
你会注意到,这些黑点现在实际上并没有告诉我们任何信息,它们只是代表行。这就是图表的作用所在。我将点击“图表”,然后右键单击并选择“用作标记”。你会看到我的多元嵌入中发生了什么。现在你可以看到,一些具有异常特征的晶圆显示在右侧,远离这群正常的晶圆。你可以开始看到一些异常晶圆。这是一种很好的方式,可以可视化一些你可能之前不知道存在的晶圆特征。
接下来我要做的就是聚类。我也会单独运行这个程序。这个程序会利用我这里所有的芯片,将相似的晶圆聚类在一起。你会看到它已经把结果保存到数据表中了。我已经把每个晶圆分配到了不同的簇中,并且我创建了一个图表构建器,里面有一个列切换器,叫做簇选择器。通过它,我可以查看,比如说,在一个模型中,有 125 个晶圆属于一个簇。然后,在两个簇的情况下,我们开始看到一些不同的晶圆特征,这些特征就是我从这里提取出来的。
我可以沿着这条线往下看,看看情况如何。我认为第 5 个集群是最优的。你可以看到,我们的大部分左右缺陷都在这里,顶部和底部缺陷在这里。那个大的甜甜圈形状的缺陷单独成一个集群。你也可以对其他缺陷进行同样的操作。接下来,我们继续讨论问题的其他部分。我们之前提到过,我们需要一个包含流程数据的表。我将单独运行一个查询构建器来获取这些流程数据,以节省时间。它的工作原理与我之前使用的查询构建器相同,只是这次我们查找的是流程数据。
我运行一下程序,把表格放在这里。记住,现在表格是竖格式的。我们需要把它改成宽格式,这样才能把它和我们的晶圆产品信息连接起来。我首先要合并几个变量,这样信息量会更大。分割之后,你就会明白为什么这样做很重要了。接下来,我要在步骤 ID 和工艺类型之间加一个下划线。我们可能有几种不同的工艺类型。在这个例子中,只有设备,但可能还有腔室,或者其他具有不同 ID 的东西。我们要把它们连接起来,以便区分每种工艺类型在每个步骤中的具体操作。
我要右键点击这里,选择“新建公式列”和“字符”,然后用下划线连接起来。现在这些就连接在一起了。接下来,我要对工艺类型也做同样的操作。我的类型 ID,也用下划线连接起来。现在有了这些信息,我可以像之前处理晶圆芯片那样进行拆分。我也会单独运行这个拆分操作。完成这些步骤后,我就可以离开这个表格了。
现在我这里有125片晶圆,以及不同的工序和工序类型,还有特定设备的ID,或者可能是腔室或其他什么。这里可能包含数百个工序,有时甚至数千个。逐一筛选并找出哪些晶圆与这些工序相关是不切实际的。我们将把这些数据与现有表格合并,汇总缺陷,然后确定哪些工序真正影响了晶圆的特征。
为了实现这一点,我要回到这里,把所有缺陷加起来。我可以用一个小技巧,用公式。好了,我已经把它们全部选中了。我只需右键单击,选择“新建公式列”,然后选择“合并”和“求和”,就能把它们全部加起来。最后,所有缺陷都被加在一起了。我创建了一个汇总所有缺陷的列,我把它命名为“缺陷总数”。点击“确定”。接下来,我们要进行一个类似于之前的操作——连接。同样,我会在后台进行连接。这里我们只需要晶圆图、缺陷总数和工艺步骤。我们来操作一下,然后就可以把这些列划掉。
现在我们有了晶圆、图表以及包含设备 ID 的步骤。最后,我们统计了缺陷总数。这实际上是我们的最终结果表,它能帮助我们回答最初提出的问题:究竟是哪个步骤导致了这些晶圆特征的出现?我通常会在获得这种数据表格式的信息后,进行分析、筛选和预测筛选。在这里,我可以把所有步骤(可能有成百上千个)都填入 X 轴,然后把缺陷总数填入 Y 轴。
这将运行一个模型,以确定哪些步骤最能预测缺陷总数。看起来步骤 1、步骤 5 和步骤 4 可能对我的缺陷总数有潜在影响。我们分别来看一下。比如,这里是步骤 1、步骤 4 和步骤 5。我将打开图表生成器。记住,由于晶圆和图表上都有标记,我们可以很快地看到结果。
我把第一步拉过来。我把它放大一点。我们可以马上看出,设备 B 似乎是这里影响最大的。我们找到了顶部和底部的缺陷。看起来我们找到了。我们把它设置成列切换器。它有一个重做和一个列切换器。我们来看看 1、4 和 5,我们还要在这里加上 8。我稍后会解释原因。
步骤 4 也至关重要。看起来我们用设备 L 找到了左右两侧的缺陷。步骤 5,设备 N 出现了甜甜圈状的特征。之所以加入步骤 8,是因为我们这里只有两片晶圆,而随机缺陷的特征似乎就在这里,但我们只有两片晶圆的数据。它目前还没有在模型中显示出来。我们需要更多的数据,更多的晶圆才能显示出来。
我们已经找到了导致这些缺陷的设备。让我们回到之前的PPT,看看我们的目标以及我们取得了哪些进展。我们基于数据驱动的决策,获得了可操作的信息。看来我们可以对每个步骤中的设备进行更彻底的调查。或许设备内部还有其他问题,但我们已经缩小了范围。
我们拥有可复用的知识。我稍后会在这里展示工作流构建器,以及我刚才所做的所有操作是如何在工作流构建器中记录下来的。整个工作流都兼具速度、灵活性和强大功能。这个流程可以复用,并且可以再次运行,或许可以用于其他情况。只需非常轻松地重写几个步骤,就能得到一个高效的解决方案。整个过程并没有花费太多时间。我们正在减少停机时间,提高质量,并增加收入和节省成本。
这样做最大的好处之一是:决策快速高效。我们刚刚创建的东西,无需花费数小时编写代码,也无需花费数周甚至数月学习编程。它无需在系统、程序或队列中等待部署。它是你自己完成的,出自你——领域专家之手。任何必要的修改都可以轻松完成,因为只有你了解整个流程。此外,你的分析现在已达到标准优化,能够正确执行并通过自动化实现重复。
你通过快速解决生产问题,节省了时间和金钱。这里还有一点补充说明。你作为领域专家,能够访问自己熟悉的数据,这本身就很有价值。你能够发现数据库管理员、数据科学团队或其他类似人员可能忽略的问题。我看到过一些关于科学家和工程师访问这类数据的反馈。他们说,这可能会导致生产数据库崩溃之类的问题。但对于领域专家而言,这种权限对于突破现状、打破常规至关重要。
作为一种解决方案,可以考虑使用一个镜像数据库,该数据库源自实际的生产数据库。因此,您可以了解一下,在三家不同的半导体公司,访问这些数据如何提升了科学家和工程师的工作效率。借助此工具,领域专家们从繁琐的数据准备工作中解放出来,转而专注于解决能够创造真正商业价值的工程问题。例如,对于我这位质量工程师来说,它可以快速整理流程和报告信息,而这些信息如果由其他方式收集则需要花费数小时。现在,您节省了这些时间。
最后一点我特别喜欢,因为它涉及到一些指标。数据处理时间缩短了 83%,成本显著降低,研发工程师的工作满意度提高了 260%。与其他一些可能不太能保持高工作满意度的方法相比,这是一种更直接的解决方案。接下来,我想展示一下整个工作流程以及它运行时的效果。
我要回顾一下我刚才做的所有操作。您可以看看它的结构。我们再次回到分析工作流程。我喜欢把步骤分成数据访问、可视化、数据准备等与分析工作流程相关的部分。这里有第一部分和第二部分。您可以看到我在这里做的所有操作。最初,我按顺序记录了所有这些步骤,并将它们整理在这里,以便可以重复操作。我点击这里播放整个过程,您可以看到所有弹出的内容。我们之前已经将图表保存到数据表中。这里是多元嵌入。我认为它现在正在运行模型进行预测因子筛选。
实际上,我们已经完成了聚类分析。最后一步是预测器筛选。我们最后得到的这张图就是我们之前步骤中查看的。很明显,设备 B、设备 L 和设备 N 导致了我们特征码中的缺陷。所有这些都是可复现的。您可以用新数据再次运行该程序,看看哪些新晶圆被送到了每台设备。
接下来,我想再介绍一下与 Torch 深度学习相关的内容。Russ Wolfinger 会专门讲解这方面的内容,他会进行更深入的探讨,但我这里只想简单展示几个半导体方面的例子。这是 JMP Pro 18 的一个功能。如果您进入插件设置,实际上需要通过 JMP 社区的插件页面单独下载插件。在 Torch 深度学习和示例数据部分,您会看到一个 Torch Storybook。Russ 为不同的场景准备了许多不同的示例。其中恰好有一些与半导体晶圆和晶圆图相关的示例。
Torch深度学习能够让你直接从图像中进行图像分析,并对晶圆及其相关的缺陷和特征进行分类。我想展示一下它的样子,因为它和我们刚才的操作非常相似。我在这里打开数据表。你会注意到,这里有一张图片。文件名包含了批次ID、晶圆ID、芯片尺寸(即晶圆内的芯片数量)以及故障类型(也就是分类信息)。
你可以在这里使用这些图像训练数据,从而预测故障类型。这真是太棒了!这是我第一次能够通过拖放界面,在深度学习层面上进行这样的图像分析。它真的非常出色。想要了解更多信息,我推荐你阅读 Russ 关于 Torch 深度学习插件的指南,以及他在今年 Discovery 大会上的演讲。
综上所述,如果您有任何疑问,欢迎随时通过邮件联系我:ryan.cooper@jmp.com。我的演讲到此结束。如果您有任何问题,请随时通过电子邮件告诉我。谢谢聆听。