传统半导体测试通常涉及由自动测试设备(ATE) 执行的测试。但工程师们开始倾向于在系统环境中测试片上系统 (SoC) 的额外后期测试通过,以便在最终产品组装之前发现设计问题。
"系统级测试 (SLT) 提供了一个大容量环境,您可以在其中一起测试硬件和软件,并发现在小批量工程测试中可能不会发现的设计错误。"SLT 系统架构师 Peter Reichert 说。
虽然SoC 上的测试设计 (DFT)基础设施用于以尽可能短的测试周期提供测试向量,但重点转移到由 CPU 上的软件执行的测试。这与最终测试后的新系统级测试插入非常吻合。IC 的测试总是涉及到微妙的平衡。一方面,出厂产品的质量需要很高,以最大限度地减少退货并最大限度地提高客户满意度。另一方面,必须尽可能降低测试成本。
这通常意味着对执行某些测试的位置进行一些战略性改组。传统上,有三个插入点——在晶圆验收测试 (WAT)离开晶圆厂之前;在晶片分类时,切割晶片前;在最终测试中,设备封装后。
故障率高的测试应尽早进行——接近晶圆分类——以确保不会花费额外的钱来制造将被丢弃的部件。但也可能有机会以最低成本插入执行高产测试,因为报废设备的可能性很低。
对于 SoC——或任何可以执行软件的设备——额外的 SLT 插入正在获得动力。SLT 在系统环境中测试芯片,其中包括运行以软件实现的测试并在芯片的 CPU 上运行的能力。"由于工艺节点的缩小,工程师们看到了更高的缺陷率,"Teradyne 的 SLT 营销总监 Paul Klonowski 说。此外,"随着更高功能的设备变得越来越小,封装变得更加复杂。你从晶圆测试中逃脱,你从封装测试中逃脱。你想抓住那些使用系统级测试的人。"
矢量与软件
逻辑芯片测试涉及两种类型的测试,功能测试和参数测试,它们测量电流和电压等内容。为了最大限度地降低测试成本,使用芯片内的专用硬件执行功能测试。这种 DFT 基础设施允许将测试向量直接应用于内部电路。在芯片被适当地计时后,结果被发送到输出进行评估。
为了保持硅成本低,输入向量和输出结果被扫描。结果不是直接输出,而是被压缩成一个签名,可以与预期的签名进行比较,以确定通过/失败。
传统基于扫描的测试使用独立于主要功能架构的内置测试设计 (DFT) 基础设施
目的是将尽可能多的测试打包到尽可能少的向量中。这种效率允许在尽可能短的时间内实现更高的测试覆盖率,从而使测试成本保持在范围内。然而,需要注意的重要点是,这种测试与芯片在系统中的运行方式不同。多个块在功能上可能永远不会同时使用,可以同时测试以减少向量的数量。从目标系统的角度来看,测试模式将设备置于不自然的状态——以至于测试期间的功率曲线可能远远高于所谓的“任务模式”中的功率曲线。
通过在 CPU 上执行的软件进行的驱动测试使设备保持在自然状态,但它没有扫描矢量的效率和测试密度。但是,它确实允许测试特定用例——特别是涉及 SoC 多个模块交互的极端情况。
软件驱动的测试源于加载到 CPU 中的程序
生成软件定义的功能测试
基于矢量测试的生成使用了几十年来不断发展的技术。它利用电路内特定点的刺激和观察,扫描链允许直接访问这些点。因此,传统向量生成涉及为每个点识别激活所需状态所需的内容,然后确定所需的输出应该是什么。然后努力组合尽可能多的向量以减少总计数,减少测试时间。
软件驱动测试是不同的。CPU 无法像扫描链那样直接访问内部电路,因此与确认特定电路是否正常工作无关。它更多地是关于练习真实世界的场景,以确认芯片总体上按预期运行。可能会选择这些场景,因为预计它们会给芯片带来更多压力。或者目的可能是在极端电压或温度情况下运行测试,以确保芯片在这些条件下按预期工作。
这意味着,一般来说,SoC 设计团队需要决定执行哪些测试以及如何执行这些测试。实际上,一些软件测试可能会在芯片构建之前在芯片验证期间运行,通常用于仿真期间。
与在位或向量级别运行的低级测试不同,这些测试在 C 语言级别运行,并针对 SoC 中的 CPU 进行编译。"软件驱动的测试通常比在 ATE 中更容易创建,因为它涉及您在现场设备中看到的标准操作步骤,"Klonowski 说。"有硬件初始化、内存训练、启动操作系统、将设备置于睡眠和低功耗模式、执行高负载操作以及检查基准。但实际上是在像在应用程序中一样操作设备,然后针对它们运行这些不同的操作测试。"
便携式测试和激励标准(PSS) 提供了一种生成测试的方法,该测试可以移植到任何验证节点、芯片启动测试或大批量商业测试。PSS 有助于促进重复使用。Cadence产品管理组总监 Moshik Rubin表示,一些测试可以跨多个目标平台重复使用,例如模拟或仿真。"生成的测试可以很容易地移植到硅后和制造测试中。"他说。但这种重复使用在今天可能不像现在那么普遍。Synopsys的科学家 Filip Thoen 说:“我见过在硅前验证方面进行定向测试或集成软件测试的团队。 ” “你会看到人们为硅唤醒进行硅后测试。我见过团队开发人工测试套件来对芯片施加压力以优化良率。稍后,您仍然需要为您的开发板开发软件,或者您可能会开发诊断程序。而且所有这些频谱都没有重复使用,这是一种巨大的浪费。”
例如,在仿真期间完成的 SoC 软件测试可以重新用于 SLT。"您加载到模拟器中的内容可能与最终软件不完全相同,"Thoen 说。"您必须自定义 [用于仿真与测试] 的是驱动程序,它们设置了外部环境。"
获取测试结果
虽然测试的重点是软件,但为了获得测试结果和检查芯片特性以进行诊断,仍可能需要一些硬件考虑。仅仅凭借“没有出错”这一事实,就很容易认为软件定义的测试通过了。但是更典型的测试会寻找一些特定的结果,并且需要将结果传递到某个地方的输出。
一些这样的测试可能自然会在输出引脚上显示结果(例如,可能是内存端口上出现的内存地址)。但通常情况可能并非如此,因此需要一些其他方法来产生内部结果。提供更多输出细节的一种方法是利用芯片内部的扫描链结构。这表明处于这种主要功能模式的芯片与测试模式之间存在一些相互作用。
Advantest平台扩展经理 Klaus-Dieter Hilliges 解释说:"如果我将软件加载到处理器上,软件就会运行,然后我会得到一个通过/失败结果。 " "我只是跑了一个黑匣子。我很难让它发挥作用,因为我对正在发生的事情几乎没有可观察性。我们必须能够接收观察功能测试执行的跟踪信息。如果您去 Cadence、Breker 或其他自动生成此类功能测试用例的 EDA 公司,您可以在执行测试时看到发生了什么。"
此外,现代工艺节点上的许多芯片还包含传感器和监视器。如果发生故障,这些电路可能会提供有关故障发生条件的宝贵线索。因此,出于诊断目的,还应该有一种方法可以获取这些传感器信号并将其与结果一起发送出去。
"有一个 DFT 接口,如 JTAG,我可以访问一个传感器集线器,我可以读取它来获取这个或那个信息,"Hilliges 指出。"这些传感器通常可以通过嵌入式软件访问。如果我运行功能测试,那么它可以读取内部接口。"
尽管如此,使用软件驱动的测试来量化您正在测试的内容更加困难。"这是 SLT 的巨大挑战。没有很好的方法来评估您的故障覆盖率,"Reichert 说。
软件定义测试的输出可能会被路由回 DFT 基础设施
系统级测试
软件驱动测试的重点是关注系统中可能发生的场景。在传统的最终测试插入之后,在一些复杂的芯片上执行了一种更新类型的测试。这种 SLT 插入在与用于晶圆分类或最终测试的测试仪完全不同的测试仪上运行。"测试板通常非常类似于将在现场看到的应用板或最终用途板,"Klonowski 说。"你实际上是在测试设备,因为它会在现场运行。"
泰瑞达的 Reichert 同意了。"这是真正的功能模式,而不是测试模式。芯片上的热模式、时钟噪声或电源噪声等因素在测试模式与实际操作中会有所不同。这是一个解决芯片中其他故障的机会,而这些故障在正常的结构 ATE 测试中可能不会出现。"
在某种程度上,SLT 已经存在了一段时间。但在过去,SLT 是使用处理较小体积的小型测试仪完成的,并且没有足够的可用空间来容纳大量测试所需的测试仪数量。
Advantest 技术和战略副总裁 Keith Schaub 说:"在数量急剧增加并且 SKU 数量急剧增加之前,这种方法一直有效。” “但硅工艺节点急剧缩小,这使得热成为一个更大的问题,并使 SLT 变得更加重要。因此,现在我们需要真正具有 HVM(大批量制造)生产价值的产品。"
低成本测试
虽然这些测试仪可能比标准测试仪更昂贵,但它们也可以并行运行数百个站点。与最终测试不同的是,一些 SLT 测试人员可以在每个站点上独立运行测试,或者“异步”——而不是同步运行。因此,如果设备出现故障,理论上可以将其弹出并更换为新设备进行测试,而无需等待其“群组”中的所有其他设备完成测试。甚至可以同时在两个不同的芯片上运行测试,划分它们之间的站点。
然而,每个单独的站点可能不是完全独立的。测试人员有带有一些站点的板或盒子。这些板作为一个单元插入和移除。这些站点仍然自行运行测试,但板上的所有站点同时启动。如果一个早期失败,它必须等到整个电路板完成才能移除。但这比必须等待数百个单元完成的限制要少。
根据测试的进行方式,这种独立的特性允许为每个设备提供更灵活的流程。"异步测试站点允许在线时容错和修复,"Klonowski 指出。异步测试,再加上大量的站点,使得这种插入成本更低。虽然晶圆分类和最终测试尽量减少每微秒的测试时间,但 SLT 测试可能会运行几分钟。"系统中有数百个站点,您可以降低每个站点的总体成本,从而延长测试时间,"Klonowski 说。
与早期的测试插入不同,SLT 通常不明确使用扫描测试基础设施——至少从执行向量的角度来看。运行在 CPU 上执行的测试要自然得多,而软件定义的测试非常适合这种描述。出于报告目的,内部测试和传感器基础设施可能仍然存在一些联系,但启动测试的是 CPU。
如有必要,如果测试仪支持,仍然可以运行标准向量。"可以配备 SLT 测试仪来运行扫描,"Klonowski 说。"事实上,考虑到较低的每秒测试成本和 SLT 系统提供的高并行度,基于 SerDes 的扫描是最有可能移植到 SLT 的 ATE 测试候选之一。配备 SLT 测试仪以运行扫描需要特定于扫描的硬件和仪器。"
需要强调的是,尽管有 SLT 名称,但这并不是对实际系统的测试。这是在芯片交付用于构建系统之前在系统环境中对芯片的测试。它是芯片制造流程的一部分,而不是系统制造流程。
何时执行软件驱动测试
虽然额外的测试插入通常被视为增加成本,但添加潜在成本更低的 SLT 插入可能有助于降低总体测试成本。矢量测试可以在晶圆分类或最终测试中运行,因此软件定义的测试似乎可以在这些插入和 SLT 中运行。那么运行它们的正确位置是什么?
首先,这有一个实际的方面。软件定义的测试需要访问内存,这在用于晶圆分类的标准探针卡上通常不可用,尤其是多站点探针卡。"假设您购买了一些内存芯片,并试图弄清楚如何将其靠近 ASIC,"Schaub 解释说。"你打算怎么做?客户尝试过,但没有成功。"当您不处理整个晶圆时,这样做会更容易。"他们已经想出了如何让它在最终测试中发挥作用,"他补充道。
撇开测试基础设施不谈,产量预期或经验可以帮助确定应该在哪里运行不同的测试。"如果我发现一个高失败率的测试,可以的话,我想把这个测试转为晶圆测试,"Klonowski 说。"如果这是一个非常高产的测试,我想尝试在系统级测试中进行,因为这是我每个站点测试成本最低的地方。"
随着产品的成熟,测试可能会在插入之间来回移动以优化产量和成本。但这就是公司可以从将矢量转换为软件的简单方法中受益的地方,反之亦然,因此可以轻松地移动这些测试。"如果您确实发现这些软件测试失败,您希望能够快速将它们转化为向量,以将其从 SLT 推回最终测试。"Schaub 说。
左边是 Advantest 的版本;泰瑞达在右边
SLT 用户
SLT 插入并不适合所有芯片。在质量至关重要的市场中,它往往被用于面向系统的芯片。"最终用户提出了更高的质量要求,这导致人们说,'通过 SLT,我会发现在标准 ATE 中找不到的故障,'"Klonowski 说。
在测试期间的外部环境很重要的情况下尤其如此。在 SLT 期间,温度和电压可以在每个站点的基础上进行控制,因此这是一种确保芯片在所有条件下都能正常运行的低成本方式。特别是三个市场对 SLT 有需求——智能手机、汽车和高性能计算。他们这样做是出于不同的原因并驱动不同的测试条件。
手机芯片通常会在室温下进行测试。插入这些大容量芯片的目的是确保最高质量,以最大限度地减少设备退货。汽车芯片要求更高,并使用自动温度控制。它们需要在 -40°C 到 150°C 的温度范围内进行测试,以确保芯片能够在安全关键系统中经受住这些极端环境。
此外,高强度计算芯片制造商最关心的是确保他们的芯片在测试期间不会过热。因此,测试地点不是强制执行特定温度,而是提供足够的冷却以将温度保持在 125°C 以下。通常不需要冷测试,因为芯片一旦启动就会迅速自热。
芯片现在是系统
随着复杂的 SoC 的出现,为大量运行的应用程序提供动力并且故障成本很高,因此在实际条件下以系统模式测试芯片是有意义的。SoC 中的第一个词当然是“系统”,这使得它们本身就是系统。
软件驱动的功能测试和 SLT 提供了确保这些复杂芯片以高可信度交付的方法,并确保它们能够在一些更大的系统中成功完成其任务。
#晶圆##芯片#