半导体制造行业正处于变革时代的边缘,而先进的分析技术正是推动这一变革的动力。本次演讲将深入探讨如何在JMP软件中应用预测建模和诊断分析,以显著提升制造成果,尤其是在至关重要的早期分拣和等级测试阶段。通过利用在半导体生产过程各个阶段收集的全面参数数据,我们将着手改进单元级合格/不合格结果的预测,并揭示潜在缺陷的根本原因。
我们的研究重点阐述了如何战略性地运用JMP的预测建模功能,以准确预测半导体产品的最终系统级测试状态。这种方法不仅能够及早发现问题,还能及时采取纠正措施,从而确保更高的良率和更优的产品质量。同时,JMP内置的诊断分析功能可以深入挖掘数据,帮助制造商识别并解决复杂生产流程中各种故障的根本原因。
本次演讲将展示 JMP 各项功能的实际应用,阐明它们在简化半导体制造工作流程中发挥的关键作用。了解如何有效运用预测建模和诊断分析来优化生产成果、降低成本并提高产品可靠性。欢迎加入我们,共同探索有望重新定义半导体制造未来的前沿分析策略。
大家早上好。我叫徐约翰(John Xu),我的同事叫苏拉杰·辛迪亚(Suraj Sindia)。我们都来自英特尔公司。众所周知,英特尔是一家半导体制造公司,我们生产计算机芯片和其他芯片。今天,我们想向大家介绍我们的一项研究成果,题为《利用JMP革新半导体制造测试》。
我们在 JMP 中应用了一些人工智能方法,以帮助我们进行测试指导的预测建模。我们的预测分为四个部分。第一部分简要介绍半导体制造行业的概况,然后我们将描述我们在 JMP 中使用的基于神经网络和 Boosting 算法的预测建模方法。
接下来,我们将展示 JMP 的演示用例,介绍如何将测试方法应用于 JMP 的生产测试。我们将详细介绍 JMP 应用程序,并使用 JMP 神经网络和主成分分析 (PCA)。最后,我们将进行总结和得出结论。
本文概述了半导体技术。半导体行业至关重要,发展日新月异,是现代科技的核心。我们通常将半导体称为集成电路(IC),它是智能手机、电脑、汽车等各种电子设备以及家用冰箱等众多设备中不可或缺的组成部分。
该行业的特点是创新水平高、资本支出巨大,可能一个晶圆厂的建设成本就高达 100 亿美元,而硅市场需求,我们只能说,至少某些与半导体相关的市场领域,例如存储器、磁珠、快速存储器或微处理器。
随着普及程度的提高,人们逐渐认识到计算机中的CPU(中央处理器)。通用集成电路(ICC)就像用于多种设备类型的标准电路,例如汽车或其他设备;而ASIC(专用集成电路)则可能用于交通信号灯等模拟电路。
接下来,我将简要概述一下半导体制造模式。我们可以把公司大致分为三类:集成器件制造商 (IDM)、无晶圆厂公司和纯晶圆代工厂。无晶圆厂公司只负责芯片设计,并不自行制造芯片。我们称这类公司为无晶圆厂公司,例如 AMD、英伟达和高通。
此外,有些公司没有自己的产品,也没有自己设计的集成电路,而是为其他无晶圆厂公司代工。少数这样的公司是台积电或代工厂。但也有一些公司,比如英特尔或三星,他们包揽所有环节。
基本上,我们有自己的芯片设计,然后自己制造芯片,并建立自己的晶圆厂。之后,我们还会组装并生产最终芯片,然后将其交付给惠普或戴尔等客户,由他们负责制造最终用户的电脑。此外,我们还提供高水平的半导体制造工艺。
实际上,半导体制造过程涉及数百个不同的步骤。但这里只概述了一个大致情况,基本上是从硅晶圆开始的。比如像Seasonic这样的公司,他们生产硅,并将硅切割成晶圆,然后运送给英特尔。之后,我们再经过许多步骤,最终从晶圆上制造出芯片。
第一步是氧化,也就是在晶圆表面生长一层二氧化硅。然后进行光刻,利用光敏化学物质在晶圆上形成电路图案。接着进行蚀刻,去除不需要的材料,从而形成所需的图案。之后进行掺杂,也就是引入杂质来改变硅的电子特性,最后进行沉积。
实际上,我们通过各种技术在晶圆上逐层添加材料。比如,一层一层地叠加。之后,我们会进行电子芯片分拣和测试。但今天,研究的重点将放在我们称之为测试的这个过程中。
下一张幻灯片将详细介绍我们的测试流程。
谢谢你,约翰。谢谢你,约翰。感谢你对半导体制造工艺的概述。正如约翰所演示的,半导体制造工艺包含多个阶段。测试是整个工艺的主要阶段,用于验证芯片的技术性能。在这个阶段,所有之前的制造步骤都会进行测试,以检验它们是否满足集成电路或芯片的设计要求。
半导体测试主要分为三个阶段。第一阶段是芯片电气测试。在这个阶段,芯片无需切割即可在晶圆上进行测试。测试中使用晶圆探针(如图所示),探测芯片内部节点,测量电压、电源电流、漏电流等参数。
通过电气芯片分拣测试的单元随后从晶圆上切割下来并封装,封装后的单元看起来或类似于我们大多数人可能在电脑主板上见过的东西,那些黑色的小部件,集成电路。
这些产品现在已经包装完毕,并使用数百万个测试模式进行功能和性能测试。如果一个单元未能通过其中任何一项测试,就会被淘汰。如果它的性能不达标或未达到某个等级的性能阈值,则会被降级并进行性能测试。如果仍然达不到最低等级,则会继续测试,以达到更低等级,以此类推。如果仍然达不到最低性能等级,则会被淘汰,以此类推。
这是制造测试流程中的第二个主要阶段,称为等级测试或封装测试。封装测试阶段之后,我们进入一个名为“测试导向”的环节。在这个阶段,离线工具会将零件导向三个或更多测试通道中的一个,对芯片进行所谓的最终系统级测试。
这是测试插槽,或者说是最昂贵的测试插槽,封装好的芯片会被安装在主板上,进行高水平的、类似应用场景的测试。
这些测试包括Windows操作系统或Linux操作系统的启动,以及Chrome浏览器等高级应用程序,甚至包括类似JMP的应用程序,这些程序都会在芯片安装到主板后运行。这样做是为了使其尽可能接近最终用户的使用体验。如果芯片通过了系统级测试(即最终系统级测试),则会交付给英特尔的客户或半导体制造商的客户。
为什么需要进行超大规模集成电路(VLSI)测试或集成电路测试?测试对于功能保证至关重要。每个制造出来的芯片都不可避免地存在缺陷。制造过程中的每一个环节都可能引入缺陷,因此,在这些制造环节之后,就需要通过测试来剔除这些缺陷部件。
在许多情况下,有缺陷的部件无法使芯片达到其设计的功能,在某些情况下,甚至无法满足芯片设计的性能要求。
测试在功能保证和性能保证方面都发挥着至关重要的作用。除了缺陷检测和功能保证之外,测试还有助于良率学习,即改进制造流程。通过测试过程检测到的任何新增缺陷点都可以用于改进制造工艺,例如,对光刻或蚀刻等工艺进行调整,从而控制制造流程,避免缺陷的产生。
这对于最大限度地提高营业收入和降低成本至关重要,因为良率每提高一个百分点,制造商就能节省大量成本。
半导体测试或超大规模集成电路(VLSI)测试面临哪些挑战?VLSI 代表超大规模集成电路,其原因是现代微处理器中集成的晶体管数量超过 100 亿个。
右侧是一张现代微处理器的简图,其中单个晶体管的尺寸可以小到纳米级。这就像把一千个晶体管或者一千个头发丝的组成部分塞进去一样。
由于需要对每个晶体管进行单独测试,因此测试成本高昂且耗时。您可以想象,在这种设计中,要对每个晶体管进行单独测试,需要多少测试模式。这会产生大量的测试数据,需要分析这些数据来诊断出哪些晶体管存在缺陷,并处理这些海量数据以验证其优劣,以及进行性能表征,以确定芯片是否符合最高等级标准,或者在交付给客户之前是否需要将其归入较低的等级标准。
基于您之前所了解的情况,预测建模在超大规模集成电路(VLSI)测试中的作用现在可以预见了……您不仅有可能大幅节省成本,还有可能从庞大的数据集中挖掘出有用的可操作见解。这种预测建模技术可以通过识别潜在问题,利用极少的测试模式尽早发现缺陷。
通过预测哪些芯片可能通过或失败,只需少量测试即可完成,无需等到测试的最后阶段,从而显著节省成本和测试时间。预测建模还可以用于完全消除某些测试阶段,例如在本案例研究中,我们将消除测试引导阶段。在该阶段,我们安排了一名测试人员专门负责将芯片分配到多个测试通道之一,以便进行最终的系统级测试。
预测建模可以有效地用于彻底消除某些相关性较高的测试阶段。从产量学习和质量提升的角度来看,预测建模具有巨大的改进潜力。因此,在本案例研究中,我们将探讨如何使用 JMP 和基于 JMP 训练的神经网络模型来消除一个名为“测试指导阶段”的测试阶段。
如果您还记得,在我们从排序到分类、从分类到SLT的三个不同测试阶段中,有一个中间测试听证阶段,在这个阶段会进行离线测量,以引导部件进入众多最终系统级测试通道之一。
在本案例研究中,我们设置了三条测试通道,测试时长分别标记为 TT1 至 TT3。其中,TT1 为最长的测试通道,用于测试性能最佳的芯片;TT3 为最短的测试通道,用于测试性能最差的芯片。我们尝试利用 JMP 的预测模型,将各个芯片分配到相应的测试通道,而不是使用离线测量工具进行 XC2 测量。
我们尝试利用分拣和等级测试阶段已获得的在线测量数据,来预测每个芯片需要进行哪条测试通道的测试。我们的数据集包含 13,186 个测试单元。在这 13,186 个单元中,每个单元都有 16 个现场测量的传感器信号。其中 5 个信号为类别型输入,11 个信号为数值型输入,输出为 TT1 至 TT3 三个类别值之一。
从图中可以看出,分布相当不均匀,TT3 在所有单元中占主导地位,而 TT1 最少,大约有 564 到 10,488 个单元。
X1 到 X5 是分类输入。它们的类别范围很广,从最少的 2 个级别到最多 22 个级别不等。数值输入 X6 到 X16 的分布也相当广泛。例如,X6 的取值范围最小为 0.01,最大为 1.5。而 X14 的取值范围最大,从零到 2500 以上。因此,这些输入的分布相当广泛。
我们将探讨如何在 JMP 中构建基于神经网络的基线模型,利用现场采集的 16 个输入信号来预测这三个类别值之一。为了快速入门,我们将从最简单的神经网络模型入手,该模型仍能为我们提供一些关于分类准确率的有用信息。
我们将从一个包含三个神经元的单层神经网络开始。我们将采用五折交叉验证。学习率设置为 0.1。我们不使用提升算法,这意味着额外模型的数量设置为零。我们将迭代次数设置为 1,这意味着在收敛后我们不进行任何增量反向传播训练。
对于每个神经元,我们将激活函数设置为双曲正切函数(Tanh)。现在我们将进入 JMP 来演示模型构建过程。我的数据表在这里。好的,我现在就分享我的数据表。
好的,我这里有数据表。您可以看到,这里显示的是来自 X1 到 X16 的输入数据,以及测试时间平面,也就是 TT1 到 TT3 这三个值中的一个。现在我们开始进行预测建模。在“分析”下拉菜单中,您可以找到预测建模选项,然后我们开始神经网络训练。
对于我们的 X 因子(即输入),我们将使用 X1-X16。对于 Y 响应,我们将使用 TT Lane。点击“确定”。这将打开神经网络训练菜单。在此菜单中,我们将使用 K 折交叉验证。正如我之前提到的,我们将折数设置为 5。
为了保证数字的一致性,我们将使用之前在幻灯片中用过的一个随机种子。第一层将包含三个神经元,这是基线模型。第二层将不包含任何神经元。我们将使用双曲正切函数(Tanh)作为激活函数。
它本质上是一个 sigmoid 函数。我们不使用 boosting 函数。我们将模型数量设置为零,学习率设置为 0.1。现在点击“开始”按钮启动训练过程。模型正在构建和训练中,瞧,这是一个简单的模型。我们很快就构建好了模型。你在这里看到的是一个相当不错的广义 R 平方值。即使对于这个包含 13,000 个单元的数据集,也只有三个神经元。
由于我们使用了 K 折交叉验证,并将折数设置为 5,这意味着在整个数据集中,80% 的数据用于训练,20% 用于验证。在此过程中,您会注意到训练集和验证集的 R 平方值分别高达 92.9% 和 93%。我们存在一些误分类。如果您查看混淆矩阵,可以看到 y 轴代表实际的 TT 车道(即真实值),x 轴代表预测状态。
本数据集的误分类率约为 20%,这是最高的误分类率。神经网络模型将 TT1 预测为 TT2 的概率高达 20%。考虑到我们的目的,15% 或更低的误分类率是理想的,但 20% 或更低也是可以接受的。接下来,我们将展示如何进一步降低误分类率。
现在我们在这里绘制神经网络图。可以看到,我们有全部 16 个输入。第一层有三个神经元。每个神经元都使用双曲正切函数作为激活函数,输出为 TT Lane。现在我们将增加模型的复杂度。正如我所说,这是基线模型。现在让我们增加模型的复杂度,以降低误分类率。
第一阶段我们有三个神经元,第二阶段没有神经元。现在我们将神经元数量增加到两个。我们仍然不使用提升算法,并保持学习率不变。学习率是可以调节的,可以根据你希望以牺牲准确率为代价来加快收敛速度的程度进行调整。
如果提高学习率,算法可能会陷入局部最小值而非全局最小值。虽然收敛速度会更快,但风险也更高,因为这样更容易陷入局部最小值而非全局最小值。我们可以尝试不同的惩罚方法。这里我们主要采用均方最小值(MSE)作为惩罚项,并将迭代次数设置为 1。
随着模型的构建,你会发现我们的 R 平方值已经比基线模型有所提升。如果你还记得的话,基线模型的 R 平方值在 0.92 到 0.93 之间,而我们采用 3x2 矩阵的模型 R 平方值有所提高。误分类率也从 0.2% 降低到 0.18%,大约降低了 18%。我们可以看一下模型的示意图。这里模型分为两个阶段:第一阶段有三个神经元,第二阶段有两个神经元。
现在我们继续增加模型复杂度,看看这会如何改变误分类率。增加模型复杂度时需要注意的一点是,要避免模型过拟合数据而失去泛化能力。但当模型样本量达到 13,000 个时,我们将考察这会产生多少参数。
你会注意到,随着模型中神经元数量的增加,训练周期也会延长。这里我们给出了模型复杂度增加后的广义R平方值。正如你所看到的,并非总是通过简单地增加模型参数就能提高准确率。原因正如我之前提到的,这会导致过拟合的风险。
如您所见,R平方值分别为0.937和0.936,略高于3×2网络,但差距不大。您还会看到,随着复杂度的增加,误分类率实际上略有下降。如图所示,如果我们绘制图表,第一阶段有五个神经元,第二阶段有七个神经元。
并非模型复杂度的增加总能带来更低的误分类率。这时就需要运用智能调优技术,例如提升算法(boosting)以及模型参数与提升算法的结合,来提高准确率。现在,假设我们已经达到了一定的准确率和误分类率,我们将探讨如何降低输入复杂度。
我们目前使用了 16 个输入。在这种情况下,如何减少输入数量以保持相同的准确率?正如我之前提到的,我们增加了模型的复杂度,但导致误分类准确率略有下降。如何通过减少输入数量来改善模型的过拟合问题?这时 JMP 就派上用场了,我们可以使用 JMP 中提供的多元主成分分析方法来构建输入数量更少的模型。
现在,我们将从已有的输入数据集中选择主成分,并选取使误差最小的主成分数量。如您所见,我们的输入数据为 X1 到 X16。我们只选择数值型输入,因为对于主成分分析而言,JMP 只能分析数值型输入。
如您所见,我们得到了数据集的11个主成分。但每个新增的主成分所捕获的输入方差都会减少。我们可以绘制碎石图来观察主成分分析的拐点位置,正如您所见,拐点大约出现在两个主成分处。实际上,绝大部分方差仅由这两个主成分捕获。
但我们不妨也绘制一下特征值的增量累积分布函数 (CDF)。正如您所见,仅六个特征向量或六个主成分就捕获了大约 90% 的输入方差。现在,我们将使用这六个主成分,并结合分类输入数据进行神经网络训练。如果您还记得,当我们启动主成分分析工具时,JMP 只接受数值输入,不接受分类输入。
对于我们的神经网络,我们需要补充分类变量,并使用我们选择的主成分来构建网络。现在我们回到之前的数据表。我已经保存了本次分析的主成分。我们将选择这些主成分,然后再次构建我们的神经网络模型。
我生成了六个主成分。我将它们保存为输入,然后用 X1-X5 作为其他输入进行补充。我仍然希望 TT Lane 作为我的 Y 响应或输出。我使用相同的 K 折交叉验证和随机种子。第一层使用三个神经元,第二层使用两个神经元。
我们拥有的增量模型数量为零,这意味着最初不进行任何提升。然后我们将使用提升算法进行测试。现在点击“开始”。你会注意到我使用了相同的折数,即 20% 的数据用于验证,80% 的数据用于训练。
好了,准备好了吗?我们注意到,目前的准确率与使用全部16个输入时基本相同。首先要检查的是,现在我们只有11个输入:六个主成分和五个类别。我们使用的是神经网络,一个3×2的神经网络。误分类率相当不错,与使用全部11个输入以及更复杂的5×7网络时的结果基本一致。
接下来我们该怎么做?现在,让我们增加模型中的神经元数量,看看这会如何降低误分类率。随着模型复杂度的增加,训练时间也会延长。你会注意到,当我引入提升算法(boosting)时,训练时间会更长。
现在你会看到,使用 7x5 网络后,我们的准确率提高了,这是因为我们减少了输入。这似乎有悖常理。减少输入有时反而会提高准确率,这是因为模型复杂度的选择会影响准确率。
这就是我们从中得出的重要结论,或者说重要的见解。现在,如果我们进一步分析……让我们看一下图表。正如我所说,我们有六个主成分和五个分类输入。模型复杂度增加了七乘五的网络。
现在,我们来做提升操作。让我们辅助提升。关于 JMP,需要记住的一点是,提升操作只作用于第一层,这意味着 JMP 会忽略第二层中指定的任何数量的神经元。提升操作只使用第一层的神经元。
现在第一层将没有神经元,提升率设为 5,第一层神经元数量为 3。提升是指收敛后预测值与输入值之间的误差。每次模型提升都会最小化目标预测值与真实值之间的误差率。在这种情况下,我们总共有 15 个神经元。
接下来,我们将演示提升算法。模型会根据您在此处选择的模型数量进行缩放。在本例中,我们选择 5 作为缩放因子,用于调整第一阶段的神经元数量。最终模型将包含 15 个神经元,这是针对训练数据集进行的 5 折交叉验证。现在我们将查看拟合后的模型。之后,我们将结束本次演示。
正如我之前提到的,使用 Boosting 会延长训练时间。现在,正如你所看到的,由于我们只使用了一层 Boosting,我们的 R 平方值相比 5x7 网络有所下降,但它仍然优于我们最初构建的基线模型。这里展示的是基线模型与 5 折交叉验证结果的对比。
正如您所见,这里展示了提升后的模型。这是提升后的模型与基线模型的对比。准确率也在这里。提升后的模型和基线模型的准确率非常接近。
现在我们结束演示。让我们回到幻灯片。好的。我们回到幻灯片。正如您所看到的,我们训练了基线模型。然后,我们通过主成分分析 (PCA) 降低了输入复杂度。我们选择了六个主成分,并补充了分类数据 X1-X5,然后训练了我们的神经网络。
输入。减少输入可以提高准确率。关键在于,模型复杂度的增加并不一定意味着模型准确率的提高。但减少输入复杂度确实有助于提高准确率。然后,我们展示了碎石图,并选择了六个神经元或六个基向量作为主成分进行训练。
这是我们今天跳过的另一个例子,它只包含分类输入。正如你所看到的,准确率大幅下降,这意味着你不能无限降低输入复杂度,否则只会导致模型准确率降低。
然后我们选择了一个 5 级的提升层数。在这种情况下,我们使用的是 2 级提升,包含 3 个神经元。正如你所看到的,当我们把提升层数从 2 增加到 5 时,误分类率和 R 平方值都有所改善。
我们可以对这些网络进行比较。虽然我们构建了许多模型,但我只比较了最终使用的三个主要模型。对我们来说,一个简单的两层神经网络,提升系数为 5,包含六个主成分和五个输入,就达到了我们预期的准确率阈值。
在每种情况下,您都需要仔细检查应用程序的具体精度要求。然后,在尝试调整训练参数、模型复杂度和输入复杂度之后,谨慎地选择模型。在今天的演示中,我们探讨了如何在 JMP 中使用神经网络模型来实现我们的目标应用,即集成电路的自适应测试控制。
我们研究了不同的预测模型。我们构建了一个简单的神经网络,以及一个基于主成分分析的神经网络。我们还研究了结合主成分分析和提升算法的神经网络。我们从所需额外测试资源的角度展示了这些改进。
在这种情况下,我们利用特定类别测试阶段已完成的C2测量数据来预测系统级测试流程,从而省去了XC2测量工具的费用,而该工具每台机器的成本可能高达10万美元。这种测试成本的降低可以通过简单的双层神经网络实现。
我必须提一下,在 JMP 的用户界面中,只能训练两层神经网络,但您可以使用 JSL 扩展神经网络的复杂性,在 JSL 中您可以自定义并构建更深层的神经网络,以满足处理大型数据集的高端应用的需求。今天的演讲就到这里。谢谢聆听。