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

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

我们可以通过调整标称测试电压(在客户规格范围内)来增加通过测试的裸片数量。在较高电压下,器件运行速度更快,因此速度较慢的裸片现在可以满足频率要求。然而,这些器件也会消耗更多的静态和动态功耗,并且存在固定的功耗预算。为了保持在该功耗预算范围内,在固定参考电压下允许的静态分量必须更低。下图中浅绿色框显示了在高电压下通过分档要求的额外裸片。较低电压下的情况相反;深绿色框显示了在此情况下捕获的额外裸片。

即使电压不同,未通过某个分档的芯片仍有可能通过另一个分档。下图显示了另外两个捕获这些异常芯片的分档:低速、低功耗分档(蓝色)和高速、高功率分档(红色)。

当然,许多芯片可以通过多项规格;下图显示了这些重叠区域,其中最深绿色象限中的芯片通过了绿色规格限值以及红色和蓝色规格限值的所有电压。分档区域由跨电压的逻辑“或”运算以及跨温度和IP域的逻辑“与”运算组合描述。这些芯片可用于根据需要将电源从一个分档调整到另一个分档。.

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

虽然容器分配和计数的原理很简单,但实现起来却非常复杂。这时,脚本就能提供强大的辅助:它确保每次都能正确执行每个芯片的逻辑,从而消除用户犯错的主要潜在原因。
输入配置文件
我们希望将模拟所需的所有输入数据都包含在一个文件中,以便轻松且一致地记录。此外,我们还需要一个脚本界面来管理统计提取和实际模拟运行。幸运的是,JMP 可以在一个数据对象中支持所有这些功能,我们将该数据对象用于所有输入数据。示例如下:

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

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

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

我们现在想评估一下交换红色和深绿色箱子排序顺序的效果:现在我们能发货的红色箱子会减少多少,深绿色箱子会增多多少?排序顺序是一个参数,我们可以在配置文件中轻松更改,因此这个比较只需几分钟即可完成;下图显示了结果(请注意,浅绿色箱子完全被深绿色箱子覆盖,深绿色箱子在新的顺序下首先被测试)。

虽然橙色分档分布保持不变,但相当一部分芯片(约 30%)现在将落入深绿色分档,而不是像以前那样落入红色或浅绿色分档。此结果可以与客户需求进行比较,以确定是否需要更改测试程序。
另一个需要模拟的常见场景是预装配芯片分选。在这种情况下,产品可能根据其性能被装入不同的封装中。除了了解整体的封装组合之外,我们现在还希望了解每种封装类型的封装组合情况,这又增加了一层复杂性。我们还希望了解预装配测试将芯片引导至正确封装的效果如何。使用 JMP 脚本可以轻松实现这一点,因为每个芯片的每个测试和每个封装组合都包含通过/失败数据。在下图中,我们可以看到,未通过晶圆预装配速度测试(蓝绿色)的芯片在组装至 ACSCAN_PLAT_MIN_FMAX 后进行测试时,速度确实是最慢的——但这种相关性并不完美:蓝绿色芯片与其他封装组合边界重叠相当严重(请注意,此模拟使用的测试和封装组合与上一个示例不同)。

这种相关性是否足以用于生产,取决于最终的各封装仓位分布是否可接受。下图显示了生产所有芯片(左侧)和生产除青绿色芯片外的所有芯片(右侧)之间的差异。为了清晰起见,未显示仓位混合分布的对应图表,但这些图表将被视为评估的一部分。

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

从右图可以看出,在1档功率分布开始急剧下降之前,我们仍有空间将功率限制提高3-4级;此时,电源对微小变化变得非常敏感。我们会将这些信息反馈给市场团队,以便他们考虑为客户提供什么样的功率规格。
我们可能还想评估特定 IP 的速度敏感度。我们再次调整 bin 限制并考虑三个指标。第一个是最佳工艺目标(X 轴上的峰值分布位置):这不是无限可调的,也不是轻易就能做到的,所以我们不希望工艺目标对速度损失敏感。我们还需要一个合理的工艺窗口(供需匹配的范围),当然我们需要足够多的芯片通过该 bin 来满足客户订单。下面的三个图表都讲述了一个类似的故事:我们可以容忍高达 ~40 MHz 的速度损失,但超过这个范围,最佳工艺目标对任何速度变化都非常敏感,工艺窗口会迅速缩小,并且 bin 供应本身会开始崩溃。这些输入为设计团队提供了明确的成功标准,并让他们清楚地知道应该在模拟中包含多少裕度。

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