半导体技术中器件和互连的可靠性评估通常用于技术认证和定期监测,每个工况下的样本量相对较小(个位数到几十个)。通过对划线测试结构进行斜坡电压击穿测量,可以利用批量生产数据长期评估介电可靠性。随着时间的推移,这可以提供介电性能的详细视图,包括影响介电完整性的内在和外在机制的混合作用。尤其重要的是,可以检测并解决低故障率异常值或尾部问题,否则这些问题可能会造成现场质量风险。
出于实际考虑,为了缩短测试时间并避免损坏探针卡和探针针,斜坡电压可能会在达到目标电压时停止,但这可能会导致少量数据点被截尾。用少量截尾数据点拟合大型数据集会导致收敛性问题,从而导致拟合参数不正确、置信区间缺失,并带来巨大的计算挑战。
大家好,JMP社区的朋友们。我叫Mehul Shroff,来自德克萨斯州奥斯汀市的恩智浦半导体公司。我将与JMP的Don McCormack一起,向大家介绍一项关于半导体制造中介电可靠性评估的研究。
为了引出这个主题,这里展示的是一种名为 MOSFET 的基本半导体晶体管的示意图。在 MOSFET 的结构中,栅极介质用于将栅极与沟道隔离,它本身就是晶体管的开关元件。栅极控制着沟道中电荷载流子的流动。栅极介质的完整性对于器件在实际应用中的可靠性至关重要。我们可以通过大批量生产的斜坡电压击穿测试来评估这一点,这种测量方法可以帮助我们检测栅极介质中的漂移和缺陷问题。通常,这种测试是在划线测试结构上进行的,虽然测试面积较小,但随着时间的推移,我们可以获得更大的样本量。在半导体领域,我们用著名的“浴盆曲线”来描述器件的实际应用质量。根据该曲线,观察到的失效概率最初会随时间推移而降低,然后又会随时间推移而升高。这是由几种不同的机制共同作用造成的。
第一种可靠性机制称为外在可靠性机制,主要针对早期失效,例如潜在缺陷和早期失效。我们可以通过在零件出货前进行的各种筛选和测试来大幅降低这种失效的发生率。第二种可靠性机制包括恒定或随机失效,例如软错误、闩锁效应和静电放电 (ESD)。最后一种可靠性机制是内在可靠性机制,主要关注器件(包括介电层)随时间推移而发生的磨损,并且这种磨损会随着时间的推移而加剧。当我们收集介电层击穿数据时,通常希望用 Weibull 分布来表示,因为这是理想的分布。但实际上,我们的分布通常是混合的,正如本数据集所示,其中可能存在由于局部减薄缺陷造成的外在尾部,而大部分数据(理想情况下)是内在或自然击穿。但工艺偏差会使情况变得复杂,例如晶圆图所示的栅极介电层厚度在晶圆上的变化,导致内在击穿和我们在高侧看到的曲率存在差异。
有些站点在我们的测试时间或最大电压范围内没有出现故障。
为了避免探针针损坏并控制测试时间,我们会停止测试,因此,此时的数据就成了我们的参考数据。那么,为什么我们需要进行拟合呢?主要是因为我们希望能够监测参数随时间推移发生的漂移变化。我们希望了解工艺变更或改进的影响,并希望能够预测低PPM性能,以应用于汽车等高可靠性领域。但我们发现,在尝试拟合这些混合分布时,经常会遇到无法收敛的问题,因此无法对工具建立信心,就像这里展示的那样,我们得到了标称拟合结果,但却无法对工具的可靠性充满信心。这可能是由于数据集过大、分布不完美或存在混合分布以及数据截尾等因素造成的。以下是一个包含部分数据截尾的分布示例,我们无法收敛。在这里,如果我们把被审查的数据视为失败的数据(这显然是不正确的,但只是为了说明目的),我们能够使其收敛。
但我们发现,拟合效果比之前略差,而且与预期的固有分布并不完全吻合。但这只是一个例子,旨在说明删失数据的存在会影响我们拟合数据的能力。
这里举个例子,我们之前进行过工艺改进,当时晶体管的栅极和源极之间出现了故障,导致外延效应非常严重。通过一系列工艺改进,我们大幅改善了这个问题。我们可以看到,在一个数据集中,存在一些截尾点,导致无法收敛。而在另一个数据集中,由于没有截尾点,我们能够顺利收敛。虽然从视觉上看,我们能够看出改进,但无法从统计学角度判断改进的具体程度。在分布图中,我们也可以看到同样的情况:均值分布略有变化,但变化不大。不过,观察刻度和颜色渐变,我们可以发现每个位置的最小值都得到了显著改善。
我们使用了与之前相同的数据,发现收敛问题依然存在。这次我们使用了不同的数据集,其中也存在两种不同的处理方法,一种略优于另一种,但两者都表现出明显的拖尾现象。然而,它们的内在拟合结果却有所不同。在这种情况下,两种方法都使用了截尾数据,但它们最终都收敛了。为了检验这是否与数据集的大小有关,我们将数据集中的每个数据点都放大了大约 10 倍(以保持分布不变),并在本次分析中进行了比较。尽管截尾点的数量和数据点的总数都增加了,但模型仍然能够收敛。基于此,我们可以排除数据集大小作为影响因素的可能性。我们认为这主要是由 Weibull 分布的尺度因子和形状因子造成的。
现在,我想把话筒交给我的合著者唐,让他继续讲下去。请开始吧,唐。谢谢。
谢谢,Mehul。我这就切换到幻灯片模式,我们开始讨论。虽然我们是在半导体制造的背景下讨论,但这其实适用于任何需要收集大量数据,且各种因素都会影响失效机制的情况。就像我说的,我们讨论的是半导体数据,但这并不意味着它只适用于半导体数据。
我们来简单聊聊生命分布平台,因为我们主要就是用它。深入了解一下它的工作原理,以及可能导致拟合效果差和不收敛问题的原因。首先要说明的是,生命分布平台的目标是优化一个函数,具体来说,我们关注的是似然函数。似然函数的关键在于,它能给出基于数据最可能或概率最高的参数估计值。这一点至关重要,因为这种方法是数据驱动的。似然函数和威布尔分布的另一个优点是,威布尔分布只有两个参数:α 和 β,因此这个问题很容易用图像来表示。
如果你看一下左边的图,它就是三维似然函数图,X轴和Y轴分别代表β和α。我们要做的是找到最小值点,也就是这个图的最小值。观察这个图,你会发现无论从图上的哪个位置开始,无论参数空间中的初始值是多少,你都会很快收敛到那个最小值点。当数据表现良好时,收敛过程非常迅速,非常顺利。现在的问题是,是什么导致了我们在数据中看到的Mehul提到的不收敛问题?在大多数情况下,很多问题都可以追溯到数据集中那些不能代表底层模型原理的观测值。显然,很多人首先想到的是异常值,所以数据中可能存在导致问题的异常值。
数据可以来自多个分布。我可能存在多种故障机制,它们都可以包含在数据集中。
公平地说,坦诚地说,为了完整起见,显然,底层模型可能存在错误。例如,威布尔分布可能并非最佳分布。我们假设,由于我们对器件物理已有相当深入的了解,威布尔分布确实是此案例中的最佳分布,因此我们将忽略最后一点。那么,有哪些可能的……考虑到我们有一些数据不具有代表性,我们可以在 JMP 的某些平台上做些什么来帮助我们拟合更好的模型或诊断问题呢?更改算法或参数值是否可行?虽然 Life Distribution 模块本身不提供此功能,但 JMP 中还有一个很棒的平台——Nonlinear,可以实现这一点。它比 Life Distribution 模块更加灵活。有时遇到这些问题时,我可以使用 Nonlinear 模块。显然,我可以找到并删除那些不代表主要底层模型的值。JMP 中有很多工具可以帮助我们做到这一点。
我将向您展示一个您可能不太熟悉的工具,那就是“拟合参数生存分析”。它将使用数据过滤器来查找数据中的问题观测值。
最后,我们可以找到并构建一个更具代表性的模型。这显然可以使用非线性平台来实现。但是,我们将使用生命分布平台中一个更简单的部分——拟合混合模型——来完成这项工作。再次简单回顾一下这些工具。我们将了解非线性平台。我们将了解生命分布平台下的拟合混合模型,然后我们还会了解拟合参数生存模型。
让我来看几个例子。我先从一个非常简单的例子开始。我模拟了服从 Weibull 分布的数据,所以没什么特别的,非常简单直接。接下来,我要在数据中添加一个异常值。这是我模拟的包含异常值的数据。70 万个观测值构成了大部分数据。其中一个观测值是异常值,就是这里这个。你可能会说这无关紧要,很容易就能把它从数据中剔除。然而,这确实会给 Life Distribution 平台带来问题。
如果我使用“生命分布”平台运行这个模型,你会注意到存在不收敛的问题。这完全是由于右尾的这个异常值造成的。遇到这种情况我该怎么办?事实证明,“生命分布”平台已经帮我解决了大部分问题。我可以使用“非线性”平台来完成剩下的部分。我们打开“非线性”平台。使用“非线性”平台的一个难点在于,你必须知道对数似然函数的形式。文献中有很多相关资料。当然,如果你认识有统计学背景的人,他们可以帮你推导出这些分布。我的数据集中有一列包含了对数似然函数。我将使用“非线性”平台。我首先会使用从“生命分布”平台得到的参数估计值。我打算从 beta 版本 35 开始,alpha 版本 5.6 开始,然后我直接点击“开始”。
事实证明,有了这样的控制力,我能够收敛并得出参数估计值。
如果我实际计算对数似然值,我发现 Life Distribution 的结果其实很接近,只是最后一步出了差错。我使用 Nonlinear 平台来完成这一步。即便如此,仍然存在一些问题。这里我还有另一组数据。我先给您展示一下它的图表。这组数据看起来几乎和第一个例子一模一样。唯一的区别是我把那个异常值进一步向右推移了。显然,如果我尝试用 Life Distribution 处理这组数据,就会遇到和第一组数据相同的问题。如果我把这组数据导入 Nonlinear 并运行收敛性测试,会收到一条警告信息,提示收敛,但有一个损失公式的结果存在缺失值。如果我保存这些估计值,然后查看第二个例子中的那一列,就会发现,对于这两个观测值,也就是我的两个区间,无法计算对数似然值。
Life Distribution 平台目前出现的问题是,当我的观测值位于右尾非常靠外的位置时,它会破坏对数似然函数。
我没时间详细解释具体发生的情况。我们的幻灯片中有一张图展示了如何计算这些值可能出现的位置。但这就是当数据尾部出现那些异常值时发生的情况。
我们来看第二个例子。这里的情况略有不同。我们不再只有一个位于尾部的观测值,而是假设我们有两组数据。我们有两种失效机制。我有一个主要失效机制,它是用同一组数据模拟出来的。然后,我还有一个次要失效机制,它大约占原始数据集观测值的 10%。我并没有将它们清晰地分离出来,而是得到了这样的数据,所以我将并排条形图更改为堆叠条形图。本质上,我看到的是一个略微“胖”的分布,比我预期的 Weibull 分布要“胖”一些。假设我之前并不知道这一点,而是直接进入了 Life Distribution 平台。
结果发现,我可以拟合一个 Weibull 分布,一个适用于这些数据的 Weibull 分布。但是查看我的对比分布图,模型拟合度非常差。即使我已经收敛,模型拟合度仍然很差。假设我对工艺有足够的了解,知道存在多种失效机制。我可以进入“寿命分布”平台,然后选择“混合”选项。这里我先从两个 Weibull 分布开始。我可以指定它们是否重叠、略微分离或完全分离。我假设它们完全重叠,这样拟合出的模型相当不错。实际上,我还要再做一件事。我要更改坐标轴,使其与 Weibull 分布的刻度一致。好了。你可以在 JMP 中的任何图表上执行此操作。
你会发现这个模型的拟合效果明显更好。事实上,如果我回到顶部,就能看到我的模型对比。我注意到,第二个威布尔分布在我的数据中拟合得更好。
与第一种方法一样,这种方法也存在一些失效因素。我创建了一个数据集来说明何时需要担心以及可以采取哪些措施。在这个例子中,我得到了第二个分布。它看起来与第一个分布非常相似,我将它们并排放在一起进行比较。唯一的区别在于:第一,我有一些观测值,就像在异常值的情况下,我将它们推到了更靠外的尾部。第二,这一点从图中不太明显,在第二个例子中,我在上尾部的观测值要少得多,大约只有第一个数据集的百分之一。我记得在第一个模拟的第二个数据集中使用了大约 70,000 个观测值,而在这个例子中只有大约 1,000 个观测值,或者可能略多于 1,000 个。因此,第二个数据集要小得多。如果我使用生命周期分布来拟合这个数据集,拟合效果实际上更好。然而,我仍然遇到了不收敛的问题。
此外,当我尝试拟合我的混合模型时(在本例中,我拟合了我的两个 Weibull 模型),我遇到了不收敛的问题。
我当然可以尝试不同的数据集,不同的观测值组合,不同的分布。那样的话,我就只能像打鸟一样到处找了。实际上,问题在于我只有这些观测值。我只有一小组数据。它位于分布的尾部。肯定有更好的方法来建模。结果发现,由于这些数据是分离的,如果我们查看空间中这个区域的观测值,会发现没有观测值。我们可以合理地假设这些观测值可能来自我的某个分布,而其余的观测值来自我的另一个分布。我可以这样做。我可以分别对这两个不同的分布进行建模。这很简单。我所做的就是排除并隐藏我想要的那部分数据集,然后运行相应的分布,实际上我已经预先设置好了。你看,结果发现,在这种情况下,我已经拟合了……
让我重新操作一下。我需要删除、隐藏或排除我所有的观察结果。
好了。隐藏并排除。我们再来一次,运行一下。再来一次。我的脚本好像出了点问题,所以我们要手动操作。我们要隐藏并排除数据。我们要进入“生命周期分布”平台,输入示例 3 的频率、下限和上限,然后拟合 Weibull 分布。结果发现,当我不包含两组数据时,这个模型确实能拟合数据。这时,我可能会回头。我可能会翻转观测值,重新拟合另一部分数据。当两组数据之间有明显的区分时,我就可以分别拟合不同的模型。接下来是第三个也是最后一个示例。这是 Mehul 好心地分享给我的数据,它是真实的半导体数据,包含了所有这类数据通常会有的瑕疵、缺陷和偏差。
现在,你看,这和我们过去看到的非常不同。
我不仅有右尾的观测值,还有左尾的观测值。不像其他数据集那样,我的数据没有那么清晰的划分。当然,我可以随意决定,比如用寿命分布来拟合这些观测值,可能只拟合顶部几个观测值,然后是中间部分。但这有时并不是理想的方法。我一开始就尝试用非线性平台拟合混合模型。你会注意到,有很多区间我无法计算似然值。所以这组数据问题很大。除了尝试用不同的寿命分布拟合数据集的不同部分之外,如果我能获得更丰富的数据集,更多关于数据来源的信息,或许就能诊断出问题所在。请记住,我们这里看到的数据大概只有两个月左右。
数据来自多个批次、多个晶圆,包含数十万个观测值。因此,其中可能存在多种失效机制。
问题是,这组数据中是否存在某些部分确实导致了问题?我已经做了一些工作,现在让我打开数据集。再次感谢 Mehul 分享这些信息,由于拟合时间有限,我只使用了部分数据。但这是原始数据。这里有两个不同的版本。我这里有四个不同的批次。每个批次包含几片到十几片晶圆不等。问题是,问题出在哪里?我将使用一个平台,希望您熟悉。如果不熟悉,它在“分析”菜单下的“可靠性和生存分析”中,选择“拟合参数生存分析”。如果您熟悉“拟合模型”,它看起来与“拟合模型”非常相似。我可以像设置光分布一样设置它,在存在区间删失的情况下,设置下限和上限。与拟合模型不同,我不仅可以指定我的位置因素(即影响数据中心位置的因素),还可以指定影响数据分布程度(即尺度)的因素。
我已经设置好了。我打算使用这个非常简单的模型,运行“拟合参数生存分析”。运行后,你会立刻注意到有很多缺失值。这是因为模型没有收敛。这个平台的好处在于,我可以使用数据过滤器来诊断这个问题。接下来,我将进入数据过滤器,我把它设置为条件数据过滤器,然后点击“新建”,你会注意到所有新批次的数据都有估计值。只有旧批次的数据有问题。让我再深入分析一下。如果我查看AAA批次,就会发现问题所在。我知道问题出在这个批次的某个地方。我来看晶圆一。看起来没问题。晶圆二、三。这就是我的问题之一。
第四片晶圆出了问题。现在,我或许可以把它取出来,用我们目前为止用过的所有工具来分析一下。
我可能得重新查看我的数据存储,弄清楚这批晶圆的处理方式是否还有其他差异导致它出现这种情况。但这绝对是不同的批次。我查看了其他晶圆,除了最后这片晶圆之外,其他的都没问题。第 15 片晶圆也有问题。但这种方法的妙处在于,我有一个诊断工具,如果我有更丰富的数据源,就可以更深入地分析数据。
让我们总结一下。总而言之,大规模可靠性数据在半导体行业很常见。它是确定偏差的宝贵工具,尤其是在产品质量高、缺陷率极低(ppm级)的情况下。正如我们所见,分布非常复杂,通常包含多种失效机制和多种分布。因此,我们需要依赖一些略微新颖的拟合方法,不仅能够拟合模型,而且能够为这些数据拟合合理的模型,并有可能诊断出数据中存在的问题。一如既往,或许也是最重要的,专业知识至关重要,它能够告诉我们,根据历史经验和工艺知识,这才是我们应该朝着哪个方向前进的最佳途径。
感谢您抽出时间,希望您能从这次演讲中有所收获。谢谢。