在半导体制造过程中,由于工艺复杂且成本高昂,维持产品良率、周期时间和质量至关重要。合格器件的单元探针 (UP) 分级缺陷率上升会引发交付方面的担忧,并需要采取风险缓解措施。管理层经常要求评估低于最低良率和/或超出统计分级限制可能导致的报废风险。计划团队需要了解是否需要新的晶圆批次来弥补芯片缺口,而产品团队则关注单元探针的良率变化。作为器件负责人,我运用数据挖掘技术来识别与单元探针缺陷率上升相对应的参数探针参数的变化,并基于预测模型做出高级决策。
在本演示中,我们从生产数据库中提取并清理了单元探针和类别探针数据。收集的数据被分为训练集、验证集和测试集。我们在晶圆级别评估并分析了四个模型。对于分类响应分析(报废或非报废),我们选择了分类决策树模型和自助森林分类模型;对于连续响应分析(UP 箱的损失百分比),我们比较了线性回归模型和自助森林回归模型。模型筛选帮助我们将参数从数百个减少到几个。最终,我们基于构建的预测模型,对晶圆的处置方式做出了最终决策。
我叫林苏恒,来自恩智浦半导体公司。作为半导体制造运营中的器件负责人,由于半导体制造工艺成本高昂且复杂,维持产品良率、周期时间和质量至关重要。任何良率问题都可能导致交付延误,需要采取风险缓解措施。在本案例研究中,我将演示如何使用预测建模平台 JMP 在半导体制造运营中做出先进的决策。
以下是一个半导体晶圆制造厂(FAB)工艺流程的示例。我们从一批25片硅晶圆开始。这25片晶圆将经过各种工艺流程,以生长介电层或导电材料。之后,我们将申请专利,用于在芯片内构建集成电路*。在本案例研究中,该技术涉及300多个工艺步骤。完成晶圆制造大约需要9周的周期时间,之后我们将申请专利,以便继续进行后续工序。
但在晶圆送往海外进行电路测试之前,需要通过晶圆验收测试,也称为级探针测试。级探针测试会对单个器件进行测试,以确保每片晶圆的健康状况。如果晶圆健康状况良好并被送往海外,则会进行单元探针测试。此时,测试将针对每个单独的芯片进行,从而对整个集成电路进行全面检测。
所有骰子都经过测试,要么被归入合格品箱,要么被归入不合格品箱。图中白色的骰子是合格品,不合格品箱的骰子颜色则有所不同。除了追踪我负责的零件(A零件)的良率之外,我们还会追踪各个品箱的性能。这里,我将向您展示6号品箱。这是我们最近遇到一些问题的品箱之一。
这是所有晶圆的标准化 BIN#6 值曲线图。可以看到,这个统计限值是我们根据历史数据计算出来的。这条线表示,如果任何晶圆(即图表中的每个数据点)超过这六个标准,则该晶圆将被报废。这并不意味着报废的晶圆良率为零,而是会被报废。可以看到,最近在黄色区域(时间区域)中,由于 BIN#6 值过高,导致大量晶圆被报废。
还有另一批晶圆,看起来还行,没超标,但数值也偏高。管理层进来问:“我们没问题吧?我们A部分的晶圆健康状况如何?” 为了回答这个问题,我需要做几个决定。首先,我有150片晶圆,来自六个不同的批次。它们正在进行生产线末端的等级探针检测。他们有等级探针检测的数据,但我们是否要将这批晶圆送去进行单元探针检测?它们会不会被判定为BIN#6报废?这是我首先需要知道的,我需要做出决定。我应该送去检测吗?它们的风险高吗?
其次,如果确实出现了良率损失,但并未达到晶圆级,那么会有多少晶圆受到影响?我们会损失多少芯片?是否会因为我们无法按时交付芯片而导致客户不满?最后,作为设备所有者,我需要了解生产线可能存在哪些偏差。虽然类探针测试没有失败,但或许是类探针参数之间存在相互作用,导致了BIN#6缺陷率的升高。我需要知道答案。这样我才能向生产线工艺工程师提出建议,说明我们能做些什么来帮助保持晶圆染料的良好质量。
我需要的是一个预测模型来帮助我进行这种情况下的风险评估。构建预测模型的第一步是定义响应变量和预测变量。我将使用从每个晶圆上采集的 Class Probe 参数。由于我们采集了多个位置的数据,我将使用这些 Class Probe 的晶圆中值。这里总共有 173 个连续因子。这 173 个因子之间存在一定的自相关性,因为对于晶体管,我们需要提取阈值电压,并设置驱动电流。这 173 个参数之间存在一定的自相关性。
对于响应数据,显然我们将使用 BIN#6 的损失值。我的数据库中总共有超过 2000 个晶圆数据,我将全部使用。归一化的 BIN#6 损失值就是我将要使用的连续响应值。您可以看到,这是我的归一化 BIN#6 损失模式的直方图。这是统计分箱的界限。任何高于此界限的数据我都已舍弃。
但我希望在数据挖掘过程中采用更严格的标准。我将标准收紧至 BIN#6 分布的 90% 分位数,在本例中等于 0.187。任何低于或等于 0.187 的晶圆都被定义为合格晶圆。如果高于 0.187,则为不合格晶圆,即使它们可能并非报废品。这就是我定义预测模型中分类响应的方式。通过这种方式,我将得到大约 200 个参数。这些是我的合格参数,以及 1800 个晶圆。
我们在上一张幻灯片中定义了参数、响应变量和预测变量。接下来,我将介绍 JMP(预测建模平台)中的四种简单模型技术,它们可以帮助我快速准确地进行预测,从而做出正确的决策。对于分类响应变量(六分之一的好坏),我将使用决策树和自助森林。自助森林将再次用于预测回归响应变量,即我归一化的 BIN#6 值。我将把它与一个拟合模型——逐步线性回归——进行比较。
在演示了其中四个模型之后,我将向您展示如何选择使用哪个模型。我会比较 R² 值来决定使用哪个模型。此外,使用预测模型的好处在于,它有望告诉我,哪些关键的类别参数导致了我的 BIN#6 样本流失。
在预测建模中进行数据挖掘的第一步是,假设我有 2000 个数据集,我会将其分为训练集和验证集。我们可以在 JMP 预测建模工具中完成这一步。我们需要遵循诚实评估建议。JMP 的默认设置很好,我稍后会向您展示。是的,我们可以依次点击“分析”、“预测建模”,然后进入“创建验证集”列。
我想确认一点,因为现在每个批次有 25 片晶圆,它们会一起进行处理。我想确保每个批次都有代表晶圆分别用于训练集和验证集。我已经使用源批次(即我的晶圆批次 ID)进行了认证,然后我会点击“确定”。您可以看到 JMP 中的默认值已经遵循了诚实评估建议,即 75% 用于训练集,25% 用于验证集。我不会在这里运行它,因为我已经创建了验证列。您可以按照以下步骤生成验证列,我们将用它来演示模型。
我们回到这里。记得我之前提到过,我在 Class Probe 中有 150 片晶圆,但我没有 Unit Probe 的反馈。我不知道 BIN#6 的缺陷是什么,我很想知道。即使我用 Class Probe 中的这 150 片晶圆创建了测试数据集,它们仍然属于诚实评估组,所以我可以继续。首先,我将向您展示使用决策树的分类响应。我们回到 JMP。这是我的数据集。它在“分析预测建模”下。今天我们会多次访问这里,它在“请求”下。我们点击“请求”,您可以看到,是的,我在这里有决策树。
这就是我将用于预测模型的方法。我把创建的验证列放在这里。我使用 BIN#6 类,它区分好坏。您可以看到,这就是我的 BIN#6 类。这里有我的 173 个探针数据。我把它隐藏在这个数据表中,但您可以看到这里有 173 个。我们点击“确定”。是的,这就是我的决策树。我已经预先将坏的标记为红色,好的标记为蓝色。我可以先手动演示如何进行划分。JMP 会根据好坏之间最显著的差异进行划分。这里显示的是 RSP+ 的电阻值。如果电阻值高于 148,则坏晶圆的数量要比电阻值低于 148 时多得多。这是第一次划分。JMP 基金。
我可以继续做第二个。它找到了 ToxP,如果低于 145,哇,我有很多坏晶圆,这些晶圆可能具有较高的标准化 BIN#6 缺陷,这是由于较高的电阻和较低的病害程度共同造成的。我可以继续主要做这个,或者我可以先进行下一步,然后我们可以让 JMP 帮助我进行分片。它在第六次分片后停止了。
我们来看看R²。训练集的R²约为67%,验证集的R²约为60%,还不错。在BIN#6类请求旁边的红色三角形里,有一些信息。我想看看列贡献值。这可以帮助我了解JMP总结的参数有哪些。除了ISP+和ToxP这两个参数之外,JMP还找到了另外两个参数,但它们对BIN#6类的贡献值最低。我们关闭这个窗口,最小化JMP窗口,然后回到这里。这就是我记录的两项内容:该模型的R²值和列贡献值。
我们来看下一个模型。我将展示相同的分类响应,但这次我会使用另一个分区模型,叫做 Bootstrap Forest。打开我的 JMP。好的。依次点击“分析”、“预测”、“建模”,Bootstrap Forest 就在这里下方。验证,我们再来验证一下。这里我将进行分类响应,区分好和坏。我的预测变量 Class Probe 位于 X 因子中。
假设,好的。JMP 默认设置,为了简单起见,我们按照 JMP 的建议,在森林中构建 100 棵树。我们来看看。它会汇总变异性的平均值。它比决策树更稳定,因为决策树只有一棵树。现在,我们有了 100 棵树的平均值,我们可以在这里找到 R²。泛化 R² 后,它告诉我:“哇,我的训练数据集的 R² 可以高达 90%,验证集的 R² 也有 80%。” 你可以看到,在 Bootstrap Forest 中,它确实提高了训练集和验证集的 R²。
我们还可以查看列贡献。电阻器和氧化层厚度再次被突出显示。除了总共四个参数之外,由于 Bootstrap Forest 运行了 100 棵树,它提供了更多的参数,但对归一化的 BIN#6(好坏)的影响却非常小。我打算保留这个模型,因为它比决策树表现更好。现在我先将其最小化,然后回到我的演示。我们得到了非常好的 R²,并且有两个突出显示的参数。
接下来我们来看连续响应变量。这里我要演示的是回归模型。我们将使用逐步拟合线性回归。这是我的数据表。点击“分析”>“拟合模型”。我将使用拟合模型而不是预测模型。这是构建模型的另一种方法。由于我将使用全部 2000 多个数据点来计算相关性,所以这里没有地方进行验证。我们假设要构建回归模型。我将使用连续归一化的 BIN#6 落差作为 Y 变量,并将 Class Probe 173 参数选为模型效应的主效应。
你可以运行二阶宏。现在你可以看到这两个因素之间的交互作用。但这需要很长时间,所以我在这里就不运行了。我只使用一阶模型。由于预测变量很多,我喜欢使用逐步回归法。它更稳健。运行模型。同样,我将遵循 JMP 的建议。我将使用最小 BIC 作为停止规则,并且逐步回归方向为向前。我们将不断添加参数,直到获得一个良好的模型。
您将运行模型。稍等片刻。好的。运行完成后,您可以看到我在这里得到了 R² 和 R² 调整值。大约是 74%,还不错。这两个数字非常接近。我们来看看我们的模型。这是我的线性回归模型。它确实给出了 ISP+ 值。现在,选中它,但是氧化层厚度,也就是另一个值,有点低。我还有很多其他参数与我的 BIN#6 值有很强的相关性,这些参数导致了归一化的 BIN#6 损失。这是因为我有一个很大的数据集,超过 2000 片晶圆,所以很容易找到相关性。我们先到这里,然后回到我的 PowerPoint。
这是 R²,它总结了逐步拟合线性回归模型中哪些参数比较重要。接下来我要演示的模型是 Bootstrap Forest。这是一个精度很高的模型,因为它也能很好地处理回归问题。我们再次打开我的 JMP 文件。选择“分析预测模型”和“Bootstrap Forest”。
如果您之前使用过 JMP,您就知道我们可以回溯当前的设置。但我将用归一化的 BIN#6 损失值(连续因子)替换分类的 BIN#6 损失值。我将再次遵循 JMP 的建议,在我的森林中使用 100 棵树。这需要几秒钟,但不会太久。我们来看看。归一化 BIN#6 的 Bootstrap Forest 的结果……哇,我的 R² 值约为 0.977,训练集的 R² 值达到了 98%。验证集的 R² 值为 91%。以上结果均基于我刚才展示的另一个模型——线性回归。我将保留这个模型,在继续之前,我们先来看看它。
列贡献者。我们有两个相同的电阻和氧化层厚度,它们已高亮显示。还有另外两个值很高的参数,以及许多其他对模型贡献较小的参数。在这种情况下,如果您想构建一个简化模型,可以高亮显示这两个参数,然后依次点击“分析”、“拟合模型”,再点击“宏”,我喜欢使用响应服务。为什么呢?因为它可以捕捉到主效应、交互效应和二次效应。
我可以将归一化的 BIN#6 值设为 Y,由于预测变量不多,我将使用标准化最小二乘法进行分析。这就是您可以得到的模型,然后您可以在此基础上进行简化。这是一个简化后的模型,R² 值只有 65%。虽然不错,但由于预测变量较少,稳定性还可以更高。模型更容易解释,但由于缺少 Bootstrap Forest 模型所强调的所有其他参数,偏差会更高。
让我们回到我的演示。现在,我们已经完成了所有四个模型,接下来我们来看一下 R² 的比较。直接比较逐步线性回归不太公平,因为它使用的平台不同,而且也不是训练集和验证集的比较,而是 R² 和调整后的 R² 的比较。但你可以看到,我的 Bootstrap Forest 模型在分类数据和回归数据上的响应值都非常高,训练集的响应值超过 90%,验证集的响应值也最高。我决定将这两个模型都用于区分好坏的预测,以及对 BIN#6 损失的估计。
那么,我们来看看,我该如何估算呢?我回到这里,我记得这是我的 Bootstrap Forest 模型,用于区分好坏两类数据。为了使用预测模型,我点击红色三角形并保存列。我会保存预测公式。你可以很快看到,JMP 给出了坏与好的概率。然后你会说,这里最有可能的是 BIN#6 类。
如果你查看我的数据集最底部,你会看到我在构建模型时隐藏了那150片晶圆。但模型生成的方程适用于这150片晶圆,它预测:“好的,D批次中会有一片晶圆是坏的,就是第1片晶圆,其他的晶圆也是如此。C批次有很多坏晶圆,A批次也有一些坏晶圆。”这是一种快速告诉我有多少晶圆存在风险的方法。但这种方法只能告诉我好坏晶圆的数量。我接下来要看看,如果我知道……
BIN#6 的预计损失是多少?如果能得到这个数值,将有助于我做出正确的决策。这不是我想要的。是这个。我想要的是这个。这是归一化 BIN#6 损失的 Bootstrap Forest 模型,也就是回归模型。类似地,我将向您展示一个红色三角形并保存预测公式。它会给出归一化的预测值。让我来最小化这个值。对于验证列中待测的 150 片晶圆,我都得到了 BIN#6 损失的预测值。这就是如何在 JMP 中使用预测模型来评估这 150 片晶圆的风险。
最后,我们知道大约有 47 片晶圆会是坏的,这意味着 BIN#6 缺陷率会上升。但这些缺陷都不会达到报废上限。我们决定:“好吧,我们将这 150 片晶圆全部送去 Uniprobe 检测,4 周后我们会收到 Uniprobe 的数据,然后评估我们模型的准确性。” 我们最终的决定是,我们把这些晶圆送去检测,因为我们不需要……现在,这些晶圆存在报废风险。此外,我们也不需要重新开始生产,因为预计的 BIN#6 缺陷对芯片整体的影响不足以让我们大幅增加投入。
我还了解到,导致 BIN#6 出现问题的两个关键参数是什么。与我们的领域专家讨论后,团队决定着手解决电阻过高的问题。我们可以进行工艺窗口测试,看看能否降低电阻并保持 A 零件的良率。另一个参数 ToxP 是一个批次工艺,可以使用相同的工艺处理不同的零件,因此不适合进行工艺变更。团队决定收紧生产线上的控制限值,以确保 ToxP 的性能稳定。
四周后,我们收到了这150片晶圆的Uniprobe反馈。可以看到,确实有两个批次的主要BIN#6缺陷率高于四个批次。这是BIN#6缺陷的预测百分比。相关性约为71%,还不错,有助于我做出正确的决策。现在,我已经超过了0.187的标准,但风险并不高。不过,很明显,有一个批次(批次C)表现异常。我们查看了实验室的处理历史,发现批次C并非标准产品,而是用于工艺变更评估。我们必须将其从模型中排除。这样一来,我们的R²值可以提高到80%。
总而言之,我正在寻找一种预测模型,以帮助我快速做出正确的决策,而不是使用耗时数月才能获得批次的实验设计(DOE)。该模型需要能够处理自相关性,且无需进行大量数据处理,也不会因计算机内存限制而受到限制。我们讨论的是针对分类数据的预划分和Bootstrap Forest,它们擅长处理大型预测变量和大量预测变量。此外,它们也不关心预测变量是否存在自相关性。
我们讨论了Bootstrap Forest算法,它的性能也优于线性回归。Bootstrap Forest可以处理分类和回归数据,尤其擅长处理大型预测变量和自相关预测变量。希望这对您有所帮助,并能帮助您使用JMP软件进行首次预测建模,从而根据数据做出明智的决策。我的演讲到此结束。谢谢大家的聆听。