斯科特·鲁贝尔苏格兰卢布0 ,博士,恩智浦半导体高级首席工程师
托德·雅各布斯, 博士,恩智浦半导体首席工程师
詹姆斯·纳尔逊特克斯尼尔森,软件工程师和六西格码黑带,独立承包商
介绍
现代芯片设计具有多个具有不同工艺、电压和温度敏感性的 IP 组件。这些组件必须在各种工作条件下都能正常工作,但不同的组件在不同的工艺角落会面临更大的挑战:有些在高温下,有些在低压下等。它们的性能可以在制造之前进行预测,然后在实际硅可供测试时进行表征; IP 组件越多,需要的建模/表征工作就越多。
除此之外,客户还有自己的性能要求:一个客户可能需要非常高的运行速度而不关心功耗,而另一个客户可能有极其严格的功耗要求,可能会完全关闭某些芯片组件。运行单独的流程或产品版本无法满足这些要求;相反,每个生产批次都是不同性能等级的混合。优化此组合以满足不同的客户需求(是)在整个制造过程窗口中会对毛利率产生巨大的影响:给定的容器过多或过少都会导致产品无法销售,这本质上是产量损失。
蒙特卡洛模拟对于模拟不同条件下的这些速度-功率分布和箱混合是最佳的:它们可以处理 l涉及大量统计参数(通常为 40 – 60,加上协方差矩阵)和 bin 限制(~20-100)。一致的参数提取和文档对于管理这些至关重要,这就是 JMP 脚本的用武之地:它提供统计工具和日志功能,以确保“一次正确”的模拟。此外,它的f最快的执行时间(1-5 分钟/运行)和一致的文档允许实时进行多个业务案例比较。
模拟流程
下图显示了一系列典型模拟运行的流程。我们从预测或实际的性能特征开始,从中提取描述产品的基础统计参数;然后我们可以缩放这些参数(尤其是方差)来评估不同的场景。此时,蒙特卡罗引擎生成速度-功率分布的模拟“云”。在此之上的是垃圾箱限制(客户要求)。在限制内对云体积进行数值积分确定了该特定云的箱的统计分布。scipt 在不同的制造条件下自动重复此操作,以确定可接受料箱混合的工艺窗口(没有不可销售的模具)。此时,我们可能希望考虑不同的场景,在这种情况下,我们可以使用不同的缩放和/或限制重新运行模拟,直到我们最终达到给定需求组合的流程和限制的最佳组合。

速度-功率分布和分级
下图显示了典型(模拟)速度与速度的关系。单个 IP 域的功率图。频率几乎总是 log(静态漏电流 = SIdd)的线性函数,因此它由斜率、截距和 RMSE(噪声)来描述。log(SIdd) 本身由平均值和标准差来描述。因为我们通常评估标准偏差变化,所以我们将缩放参数作为输入之一,这意味着云具有三个功率参数,以及每个电压和温度下每个频率测试的三个参数。在下图中,我们显示了一个示例 bin 限制:静态功率低于 0.32 logA 且高于 1040 MHz(绿色框内)的设备通过了该 bin 的要求。

我们可以通过调整标称测试电压(在客户规格范围内)来扩大合格芯片的数量。在更高的电压下,部件运行得更快,因此速度更慢,它们现在可以通过频率要求。然而,该部件也消耗更多的静态和动态功耗,并且有固定的预算。为了保持在该预算范围内,固定参考电压下允许的静态分量必须更低。下图中的浅绿色框显示了在高电压下通过 bin 要求的附加芯片。对于较低电压则相反;深绿色框显示在此场景下捕获的其他芯片。

那些没有通过一个容器的,即使具有不同的电压,仍然可能通过另一个容器。下图显示了捕获这些异常值的两个附加箱:低速、低功耗箱(蓝色)和高速、高功率箱(红色)。

当然,许多芯片可以通过多种规格;下图显示了这些重叠区域,其中最深绿色象限中的区域通过了绿色规格限制以及红色和蓝色规格限制的所有电压。分级区域由跨电压的逻辑 OR 以及跨温度和 IP 域的逻辑 AND 的组合来描述。这些模具可用于根据需要将供应从一个箱子转移到另一个箱子。

有两种方法可以计算每个容器的骰子数量。第一个是最大限度分布,计算所有可能通过 bin 的速度/功率要求的芯片。这是一个重要的供应约束:如果需求超过最大分配,那么供应将始终短缺,导致材料无法销售(产量损失)。对于此指标,重叠区域中的模具会对其经过的每个仓进行计数,因此仓之间的分布总和可能会超过 100%。
第二种计算骰子的方法是我是混合的。 在此方法中,用户指定排序其中每个仓都考虑骰子;一旦骰子通过了垃圾箱,它就会被排除在进一步考虑之外。因此,箱混合分布的总和始终为 100%,因为不会发生重复计算。这是我们考虑的第二个主要供应限制:它决定了我们是否有足够的模具来满足实际生产中的需求。与最大分布不同,箱混合分布可以通过使用不同的排序顺序来更改,我们通常在产品的整个生命周期中评估这些选项。
下表显示了一组五个芯片的最大分布和仓混合分布有何不同:

虽然箱分配和计数的原理很简单,但实现可能非常复杂。这就是脚本提供强大帮助的地方:它确保每次都正确执行每个芯片的逻辑,消除用户错误的主要潜在来源。
输入配置文件
我们希望将模拟的所有无数输入包含在一个文件中,以便轻松、一致地记录。此外,我们需要一个脚本接口来管理统计提取和实际模拟运行。幸运的是,JMP 可以在单个数据对象中支持所有这些,我们将其用于所有输入。一个例子如下:

上部区域用于各种脚本例程。由于参数名称通常又长又复杂,因此我们提供了使用 JMP 文本解析命令将其重命名为不那么麻烦的选项。在基于数据文件的初始运行期间,脚本提取所有必要的统计参数并将其存储在配置文件中;未来的运行可以简单地使用这些存储的参数。用户无需单独存储数据文件,任何人都可以使用产品的配置文件运行相同的模拟。当用户基于不同的输入数据集进行分析时,这可以避免不一致。
该脚本还包括一个用于验证配置表的选项。这是实现“一次成功”模拟的关键工具,因为它会检查大量可能产生虚假结果的潜在错误。该脚本不是每次都依赖专家用户审查,而是确保没有遗漏任何关键输入(限制、测试、温度或电压分组参数等),并且还检查可能产生虚假信息的更细微的错误(但看起来很逼真) ) 模拟:完全相关的参数、非物理相关性或始终保证零或 100% 分布的箱/模式/分组组合。
期刊输出
我们使用 JMP 的日志文件功能来汇总和标准化我们的输出,确保文档的最佳实践。大多数分析的关键特征是模拟速度-功率分布(如果需要,可以绘制多个参数对),以及整个制造过程范围内的最大和仓混合能力分布图。除了图表之外,该文件还包括统计参数和配置文件中的所有其他输入,以便我们可以完全跟踪所有底层模拟细节。当我们处于产品生命周期的早期并考虑多种情况时,这一点至关重要:未能记录任何底层输入可能会导致很大的混乱,但通过编写输出脚本,我们可以确保这种情况永远不会发生。

场景建模
通过自动化文档,我们能够专注于快速评估不同的场景。由于模拟时间很短(1-5分钟),更常见的可以在会议中实时评估,极大地促进与营销和设计团队的讨论。我们在下面展示了一些示例,从最简单的一个开始:缩放过程方差。第一张图显示了当工厂过程控制改进时对单个垃圾箱最大分布的影响:分布在某些区域下降,但在最佳目标下明显更好。这种情况非常常见,以至于方差缩放是配置文件中的一个可调参数。

要探索的第二种极其常见的变化是改变 bin 排序顺序。这可能发生在产品的整个生命周期中。下图显示了当排序顺序为:橙色、红色、浅绿色、深绿色、蓝色时,整个制造过程中的箱混合分布。(此处未显示最大分布图,因为它不受排序顺序的影响。)在工艺目标(垂直黑线)处,橙色箱占主导地位,有少量浅绿色和红色箱芯片,几乎没有蓝色或深绿色分布。

我们现在希望评估交换红色和深绿色垃圾箱排序顺序的效果:我们现在能够运送的前者少多少,后者多多少?排序顺序是我们可以在配置文件中轻松更改的参数,因此此比较只需要几分钟即可运行;下图显示了结果(请注意,浅绿色容器完全被深绿色容器覆盖,深绿色容器按照新顺序首先进行测试)。

虽然橙色垃圾箱分布保持不变,但芯片的很大一部分 (~30%) 现在将落入深绿色垃圾箱,而不是像以前那样属于红色或浅绿色垃圾箱。可以将该结果与客户需求进行比较,以确定是否应更改测试程序。
需要模拟的另一个常见场景是预组装芯片分类。在这种情况下,产品可以根据其性能构建到不同的封装中。除了了解总体箱组合之外,我们现在还希望了解每种包装类型的组合,从而引入额外的复杂性。我们还希望了解我们的预组装测试如何得出正确的封装。使用 JMP 脚本很容易做到这一点,因为每个芯片都包含每个测试和每个 bin 的通过/失败数据。在下图中,我们可以看到未通过晶圆预组装速度测试的芯片(绿松石色)在组装到 ACSCAN_PLAT_MIN_FMAX 后进行测试时确实是最慢的芯片之一 - 但相关性并不完美:绿松石色芯片与其他芯片重叠相当多bin 边界(请注意,此模拟使用与前面示例不同的测试和 bin)。

这种相关性是否足以在生产中使用取决于生成的每个包 bin 分布是否可以接受。下图显示了构建所有模具(左侧)或全部模具之间的区别但绿松石模具(右侧)。为了清楚起见,未显示箱混合分布的相应图表,但将被视为评估的一部分。

场景建模:变量限制
一种常见但更复杂的情况是当我们希望考虑不同的 bin 限制时;这种情况最常发生在产品定义阶段。向客户提供什么功能可能存在一些不确定性,或者设计团队可能希望了解某个 IP 运行速度低于预期的影响。我们的模拟脚本可以灵活地以离散步骤改变 bin 限制;然后我们可以研究分布影响。因为这些分析可能非常不同,所以我们不会生成特殊的图形输出,但分布数据很容易保存为单独的数据表,我们可以根据需要进行研究。下面的示例显示了“Bin 1 Combo”最大分布的标准输出,因为功率限制按 11 个步骤变化:峰值变低并向右移动以实现更严格的功率限制。(bin 2-5 只有单条曲线,因为它们的限制不会改变。右侧我们显示了一个自定义图表,该图表绘制了目标进程的 Bin 1 分布(垂直黑线),作为 bin 限制的函数(用步骤号标记;我们可以根据需要将其转换为实际功率值)。像往常一样,如果需要,我们也可以对箱混合分布进行此分析。

从右图中我们可以看到,在 Bin 1 分布开始急剧下降之前,我们还有空间将功率限制收紧 3-4 步;那时供应对微小的变化变得非常敏感。我们会将这些信息反馈给营销团队,因为他们会考虑为客户提供哪些电源规格。
我们可能还想评估特定 IP 的速度敏感性。我们再次突破垃圾箱限制并考虑三个指标。第一个是最佳过程目标(X 轴上的峰值分布位置):这不是无限可调的,也不是简单完成的,因此我们不希望过程目标对速度损失敏感。我们还需要一个合理的流程窗口(供应与需求匹配的范围),当然我们需要足够的通过该垃圾箱来满足客户订单。下面的所有三个图表都讲述了一个类似的故事:我们可以容忍高达约 40 MHz 的速度损失,但除此之外,最佳工艺目标对任何速度变化都非常敏感,工艺窗口迅速缩小,并且箱体供应本身开始坍塌。这些输入为设计团队提供了明确的成功标准,并明确了他们应该在模拟中包含多少余量。

在特别复杂的情况下,可以同时考虑速度和功率变化;例如,如果提高速度裕度会导致电力成本。脚本工具的内置日志记录在这里特别重要,它会自动记录所有更改的输入。
概括
使用 JMP 脚本极大地提高了我们的产品性能建模能力。我们可以通过内置验证来管理复杂的输入,以避免常见的用户错误。该脚本处理蒙特卡罗模拟本身背后的数学,使用户能够专注于增值结果而不是统计细节。它还确保包含我们最佳实践的一致输出,以便每次分析都得到完整记录,无需专家审查或冗长的文档规范。
该工具可以与芯片数据一起使用,也可以在我们拥有产品之前进行性能估计。这就是它的最大价值所在:我们可以在产品生命周期的早期影响产品,并在最终规格确定之前向设计和营销团队提供有意义的反馈。这可以提高客户参与度,并确保我们的产品推出时功能齐全且可销售。最后,我们可以快速执行敏感性分析,确保我们拥有稳健的工艺窗口。在推出时满足这些标准的产品利润更高,可确保制造运营顺利进行,并在整个生命周期内更好地满足客户需求。