ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

芯片测试Binning机制详解:SmarTest 8软硬Bin与多站点调试

芯片测试Binning机制详解:SmarTest 8软硬Bin与多站点调试 芯片测试里最容易被新人忽视、却又最直接影响出货和营收的一个环节就是 Binning。你在 Advantest V93000 平台上写 SmarTest 8 测试程序时哪怕电平时序配得再漂亮、测试项写得再全如果 Binning 的机制没搞懂最后出来的良率报表和分 bin 结果就可能一塌糊涂——明明测试 pass 的片子被分到废品 bin或者不同失效原因的片子混在一起让产线工程师排查到崩溃。这篇文章我打算用做测试程序开发的视角把 SmarTest 8 里 Binning 从原理到落地的完整运行机制梳理一遍。内容包括软 Bin/硬 Bin 的定位、Bin Table 的配置、测试流程里 bin 是如何一步步落定的、多站点并行时怎么保证各 site 不串号以及实际调试中最容易踩的坑。最后再延伸一下很多人问的一个问题芯片内部带 PA 匹配电路时S 参数到底怎么测测完又怎么参与 Binning。1. 为什么 Binning 是芯片测试的分拣机1.1 Binning 的本质不是简单的好坏二分很多刚入行的测试工程师会把 Binning 理解成 Pass/Fail 分类其实远远不够。同一颗芯片在不同电压、不同频率下表现可能不一样有的能跑 1.8GHz 的主频有的只能跑到 1.4GHz有的待机功耗低有的漏电偏大。如果只分好片和坏片那高性能的片子和刚过线的片子卖一个价低性能片子的价值就被浪费了产线上的良率数字也说明不了任何问题。这就好比水果分拣。苹果摘下来不能只分能吃和不能吃得按大小、甜度、外观分成好几个等级不同等级进不同的箱子、卖不同的价。一颗芯片在测试机里跑完所有测试项之后也会被分到一个箱子里这个箱子就是 Bin。Bin 号既是测试程序的输出也是 Handler机械手或 Prober探针台把物理芯片分到对应料盒的依据。具体到芯片行业Binning 的输入是每个测试项的 Pass/Fail 结果和测量值输出则是每个 DUT被测器件的 Bin 号。这个 Bin 号会被测试机记录、计数并通过通信协议传给分选设备最终决定这颗芯片流向高端产品线、低端产品线还是报废区。理解了这一层你才能理解为什么 Binning 配置错误会造成真金白银的损失。1.2 软 Bin 和硬 Bin一套诊断一套分拣SmarTest 8 里最核心的一组概念是软 BinSoft Bin和硬 BinHard Bin我习惯叫它们 SBIN 和 HBIN。软 Bin 是测试层面的分类记录的是这个 DUT 具体在哪一步、哪个测试项挂了数量可以很多比如 DC 测试失败算 11功能测试失败算 12RF 测试失败算 13它是给良率分析和失效定位用的诊断信息。硬 Bin 则是最终的分拣指令数量少一般几十个以内直接决定这颗芯片被放进哪个料盒。两者之间通常存在映射关系。最常见的做法是流程走完最后一个软 Bin 落定硬 Bin 根据软 Bin 的映射表自动确定也可以在测试方法里显式指定硬 Bin比如 DC 失败时直接set_hardbin(41)。我个人的建议是软 Bin 一定要细化到测试项级别硬 Bin 则按失效大类收敛这样前道分析良率时能快速定位后道分选又不会被一堆 Bin 号搞晕。1.3 为什么必须理解运行机制因为 Binning 的机制直接决定了三个东西良率报表的准确性、分选设备动作的正确性、以及测试时间Test Time简称 TT。举个例子如果某个测试项失败后你没有在流程里显式设置硬 Bin测试机可能沿用上一个 DUT 的 Bin 值导致连续好几片坏片被算成好片。又或者你为了省测试时间在第一个失效项就中止测试但中止前没有把 Bin 更新到位那报表里这颗片子的失效原因就丢了。这些都属于机制没搞懂就开跑的典型事故。2. SmarTest 8 的 Binning 体系先看懂这几个东西2.1 测试程序的基本组成在 SmarTest 8 里一个完整的测试程序Test ProgramTP不只是测试项的堆叠。它包含 Pin 配置引脚方向、电压域、Timing时序参数、Levels电平参数、测试流程Test Flow、测试方法Test Method以及 Bin Table。测试流程是由节点组成的每个节点可以是一个测试方法、一个 BIN 赋值节点、一个分支判断节点节点之间用 Pass/Fail 连线连接。每个测试方法节点在流程中都有唯一的 Test Number简称 Tnum。Bin 报表里通常会按 Tnum 列出每个测试项的通过数和失败数这是定位失效项的关键索引。Binning 就发生在这些节点执行的过程中要么在测试方法内部通过代码设置 Bin要么在流程上单独放置 BIN 节点把失败分支引过去赋值。两种方式各有适用场景后面实操部分我会展开讲。2.2 Bin Table 是 Binning 的字典Bin Table 是整个 Binning 体系的配置中心你可以把它理解成一本字典规定了 Bin 号和意义之间的对应关系。在 SmarTest 8 的测试程序设置里有一个专门的 Bin Table 编辑器每一行定义一个 Bin通常包含 Bin 号、Bin 名称、Bin 类型Hard/Soft、是否计数等字段。举个例子一份典型的 Bin Table 长这样Bin 号名称类型说明1PASSHard/Soft通过11DC_FAILSoftDC 测试失败12FUNC_FAILSoft功能测试失败13RF_FAILSoftRF 测试失败41REJECTHard最终失效这里要注意Bin 号和名称一旦定了尽量不要在批次中途改否则前后数据对不上。命名上我建议用编号前缀 简写比如 DC 类失效统一以 1 开头功能类以 2 开头RF 类以 3 开头这样软 Bin 一多也不会乱。2.3 测试方法里怎么写 Bin测试方法Test Method是真正执行测量和判断的模块。在 SmarTest 8 里测试方法内部可以使用 DSLDirect Script Language风格的语言编写逻辑常见的样子大概是// 假设已经配置好测试项对象 test_ test_.execute(); // 执行测量并与 limit 比较 if (test_.pass()) { bin_.set_testbin(1); // 通过软 Bin 设为 1 } else { bin_.set_testbin(11); // 失败软 Bin 设为 11 bin_.set_hardbin(41); // 直接指定最终硬 Bin set_fail(DC param fail); // 通知流程走 Fail 分支 }不同版本的 API 命名可能略有差异但机制是通的测试方法负责把测量结果翻译成 Bin 值流程负责根据 Bin 值和 Pass/Fail 状态决定下一步走向。除了代码里设置你也可以在流程里放独立的 BIN 节点把某个失效分支直接引到该节点节点上填写要赋的 Bin 号。两种方式我推荐组合使用关键失效用代码显式赋值常规分支用流程节点兜底。3. Binning 的运行机制一颗 DUT 的完整旅程3.1 从 Bin 复位到 Bin 落定一颗 DUT 从进测试机到出结果Bin 的生命周期可以拆成四个阶段。第一阶段是复位测试机开始测这颗 DUT 时会先把它的软 Bin 和硬 Bin 寄存器清掉一般复位到 0避免上一颗片子的残留数据污染。第二阶段是逐项测试流程按顺序执行每个测试方法每做完一项方法内部会根据结果刷新软 Bin硬 Bin 可能也会在此时被更新。第三阶段是分支流转一旦某个测试项失败流程根据连线走向决定是继续往下测还是跳去 BIN 节点或者直接结束这颗片子的测试。第四阶段是落定流程跑完或提前中止时硬 Bin 的值被锁定Bin 计数器加一结果写入报表并传给分选设备。这里面最容易忽略的是复位阶段。很多线上事故都是因为流程里少了一个开始 Binning 复位的动作导致连续测试时 Bin 值串片。我经手的项目里复位动作一般放在流程的第一个节点无论什么情况都先执行这个习惯帮我少排了很多无头案。3.2 失败分支与继续/中止策略SmarTest 8 的流程中每个测试方法节点都有 Pass 和 Fail 两条出线你可以控制失败后跳到下一个测试项也可以直接跳到 Bin 节点结算。这里有两条策略Stop-on-Fail失败即停和 Continue-on-Fail失败继续。停还是不停取决于测试项的性质和测试时间的预算。如果是 FT 成品测试失效的片子继续测下去意义不大通常走 Stop-on-Fail省测试时间Handler 可以尽快把它分走。如果是 CP 晶圆测试或者在做失效分析收集数据那就要 Continue-on-Fail把后面所有测试项都测完拿到完整的失效图谱。不过要注意Continue 模式下每多测一个失败项软 Bin 就可能被刷新一次最后一颗片子的软 Bin 是最后刷新那次的结果。所以你要么在最终 Bin 节点做收敛要么显式指定硬 Bin否则很容易丢失最初的失效原因。3.3 多站点并行下的 Binning 独立性V93000 支持多站点Multi-Site并行测试一片测试板上同时放 4、8、16 甚至更多颗 DUT。每个站点各自执行一份流程实例Bin 寄存器、计数器都是独立的。也就是说站点 0 的 DUT 失败了不会影响站点 1 的 DUT 继续测最终 Bin Summary 里会分站点列出计数再做总计。但独立是建立在变量写对了的前提下的。测试方法里如果用了一个全局变量来暂存 Bin 值那四个站点会同时读写这个变量结果必然互相污染。正确做法是用站点索引Site Index来区分保证每个站点操作自己的数据。这一点在调试多站点程序时是最常翻车的地方我后面会专门讲排查方法。3.4 重测场景下的 Bin 覆盖产线上还有一类特殊情况叫重测Retest比如第一遍测试时 Handler 抓料没抓稳或者测试机自检发现某个测试项数据可疑会把同一颗片子重新进一遍测试程序。重测跑完新的 Bin 值会覆盖第一遍的结果这本身是正常的。但如果你的客户要求以第一次失败原因作为最终判定那就得想办法保留第一遍的 Bin。一般有两种做法一种是在测试程序里设置 Effective Bin有效 Bin逻辑只有第一遍测试才记录真实失效重测结果只用于判定最终好片还是坏片另一种是在 Handler 的通信协议里做 Overlay 映射让第一次 Fail 信息和第二次结果合并。这在 SmarTest 8 里属于进阶配置但理解这个覆盖机制至少能避免你看到 Bin Summary 里某个失效 Bin 数量对不上时一脸懵。4. 实操在 SmarTest 8 里配置和调试 Binning4.1 步骤一定义 Bin Table打开 SmarTest 8 测试程序编辑器进入 Bin Table 设置页按下面的顺序操作新建一个 Bin Table或者导入已有的模板。逐行添加 Bin 号填写名称、类型、计数开关。建议把 Bin 1 设为 PASSFail 类 Bin 号从 10 以后开始排避免和 Pass Bin 混淆。保存后检查一遍确认没有重复 Bin 号。这里有一个容易踩的坑有些团队直接在 Bin Table 里把软 Bin 和硬 Bin 混在一起导致报表分不清。我建议在名称里直接带前缀比如S_DC_FAIL和H_REJECT一眼就能识别类型。Bin Table 定义完成后流程里的 BIN 节点和测试方法里的代码都引用这套表所以它是整个 Binning 的基座务必先定好再写代码。4.2 步骤二在测试方法里实现 Bin 赋值测试方法的 Bin 赋值代码决定了每个测试项失败后的软 Bin、硬 Bin 归属。下面是一个相对完整的示意你可以直接照着这个骨架改void test_dc_openshort() { // 执行开短路测试 dc_test_.execute(); if (dc_test_.pass()) { bin_.set_testbin(1); // 软 BinPASS // 硬 Bin 不在这里设留给最终节点统一收敛 } else { bin_.set_testbin(11); // 软 BinDC 开短路失效 bin_.set_hardbin(41); // 硬 Bin直接判成 REJECT set_fail(DC open/short fail); // 通知流程走 Fail 分支 return; // 如果决定中止直接返回 } // 其他测试项依次类推 }要注意的是一个测试方法里可能有多个测量点、多个判断。我习惯的做法是把 bin 赋值放在每个判断分支里而不是在方法末尾统一处理这样即使后续代码逻辑变了Bin 也不会设错。另一个心得是一开始就把所有测试项的 Tnum 和软 Bin 号整理成一张对照表写代码时对照着填能少很多低级错误。4.3 步骤三配置 Flow 分支流程图上每个测试方法节点的下方会有 Pass 和 Fail 出线。Pass 出线一般连向下一个测试项Fail 出线则有两种常规连法一种是连到一个 BIN 节点在该节点上直接指定 Bin 号然后结束流程另一种是连向下一个测试项实现 Continue-on-Fail 的效果。我建议关键失效比如开短路、电源短路用Fail 直接进 BIN 节点结束的连法普通性能参数失效用继续往下测的连法。这样既保住了失效原因又不至于把整个测试时间拖垮。配置完流程后记得把每个节点的 Tnum 检查一遍保证没有重号因为 Bin 报表是按 Tnum 定位测试项的重号会导致报表数据串位。4.4 步骤四跑机并检查 Binning Summary程序写完一定要先跑一个验证批次不要直接上量产。验证时重点看两个地方一个是 Bin Summary 报表确认每个 Bin 号的计数和你的预期一致另一个是每颗 DUT 的测试日志随机抽几颗查实际赋的 Bin 值。Bin Summary 报表常见的信息包括 Bin 号、Bin 名称、计数、占比有些版本还会按时段或按站点列出。良率就是所有 Pass Bin 计数之和除以总测试片数如果这个数和你的手动抽样结果对不上那说明 Binning 流程里还有问题先别急着量产。另外我强烈建议在验证阶段把每颗片子的 Bin 值打印到日志里用一批已知好坏的样片跑一遍对照确认无误后再往下走。下面是几个关键配置项的速查配置项说明建议值/做法软 Bin 号测试项级分类按失效大类分段编号硬 Bin 号最终分拣分类数量控制在几十个以内复位节点流程开头清 Bin必须放在第一个节点失败策略中止/继续按测试项类型区分站点变量多站点数据隔离必须用 Site Index 区分5. 常见问题与排查技巧实录5.1 良率报表和实际分选结果不符这是最让人头大的问题测试机报表显示良率 95%Handler 那边分完料的实际良率却只有 90%。第一反应是 Bin Table 和 Handler 的映射不一致。测试机报的 Bin 1 到 20 都是 Pass但 Handler 的程序里可能只把 Bin 1 当成好片其他全扔进了次品盒。排查思路是先拉出每颗片子的 Bin 日志按 Bin 号逐项和 Handler 的分料表对照确认两边 Bin 语义是否一致。5.2 Bin 没有复位导致串 Bin连续测试时如果流程开头没有复位 Bin 寄存器上一颗片子的 Bin 值会残留到下一颗。典型表现是某个实际失效的片子测完报表里的 Bin 号和它上一个邻居完全一样。这个问题的排查很简单在单颗调试模式下连续测两颗不同状态的样片看 Bin 值是否正确刷新。解决方法是把复位节点放到流程最前面并且确认复位动作对软 Bin、硬 Bin 同时生效。5.3 硬 Bin 被后一个测试覆盖Continue-on-Fail 模式下后面的测试项可能会刷新硬 Bin导致最终硬 Bin 不再是第一个失效原因。如果你的需求是保留首次失效就要在第一个关键失效点立刻设硬 Bin并且后面不要再覆盖它或者用一个单独的标志变量记录是否已经失效失效后就跳过硬 Bin 赋值。这个坑在 RF 测试里特别常见因为 RF 测试项多、连续性高稍不注意硬 Bin 就被最后一个测试项改掉了。5.4 和 Handler/Prober 的映射问题测试机的 Bin 号和 Handler 料盒的对应关系是靠通信协议里的 Bin Map 配置的。常见问题是测试程序里改动了 Bin 号但 Handler 侧没同步更新导致分料错乱。我建议在每次改 Bin Table 后把 Bin Map 对照表同步检查一遍最好做成脚本自动比对。另外有些 Handler 只支持有限数量的 Bin 分类硬 Bin 数量超过了就要做合并合并逻辑一定要和产线确认清楚。5.5 多站点互相污染多站点测试时站点间 Bin 串扰多半是测试方法里用了共享变量。我遇到过程序里定义了一个全局数组来存每个站点的 Bin 值但数组索引写错了导致四处站点的结果全部写到一个位置。排查时先单站点模式跑一遍确认逻辑正确再开多站点模式用不同 Bin 的样片混插测试看报表里每站计数是否独立。代码里任何和站点相关的变量都要用 Site Index 做下标这是硬规矩。下面把常见问题整理成一张速查表现象可能原因排查方向报表良率和实际不符Bin Table 与 Handler 映射不一致逐 Bin 号对照分料表Bin 值串片流程开头缺复位节点检查复位节点和寄存器清零硬 Bin 被覆盖后续测试项刷新了硬 Bin加失效标志锁定首次失效多站点计数异常共享变量未按站点隔离检查 Site Index 使用Bin 报表和日志对不上Tnum 重号或 Bin 号引用错导出日志逐颗核对6. 延伸场景带 PA 匹配电路的芯片怎么测 S 参数并参与 Binning6.1 这类芯片的 S 参数测试难点回到题目里提到的另一个高频问题芯片内部带 PA功率放大器匹配电路时S 参数怎么测。这里说的匹配电路一般是指芯片内部或封装内部做了阻抗变换网络把功放管的输入输出阻抗匹配到 50 欧姆附近。它的好处是系统设计简单但给测试带来一个麻烦你在测试板上的测量参考平面和芯片内部真正的匹配网络输出端之间隔了一段很长的路径直接测到的 S 参数里面混入了夹具、走线、焊点的影响。所以带 PA 匹配电路的芯片测 S 参数难点不是测而是怎么让测出来的数可信。S11、S21、S12、S22 这几个参数里S11输入回波损耗和 S22输出回波损耗对参考平面极其敏感参考平面偏一点测出来的回波损耗可能差好几个 dB直接导致好片被误判成失效片。6.2 参考平面、校准与去嵌入解决这个问题的标准思路是校准 去嵌入。校准的目的是把参考平面推到 DUT 引脚处常见做法是在测试板上预留 SOLTShort、Open、Load、Through校准件用矢量网络分析仪VNA先在 DUT 位置做校准这样后续测到的 S 参数就是从 DUT 引脚看进去的真实值。如果测试板走线很长单纯 SOLT 校准还不够需要再去嵌入De-embedding。具体做法是单独测一条和测试路径等长的直通线得到它的 S2P 文件然后在测试程序里用这个 S2P 文件把走线的影响从测量结果里扣掉。对于晶圆级测试参考平面要靠探针台校准通常用校准片ISSImpedance Standard Substrate在探针尖端做 SOLT 校准。这一步是整个 S 参数测试的根基校准件设计得不好后面做什么都是白搭。6.3 在 SmarTest 8 里实现 S 参数测试与 Binning 联动在 SmarTest 8 的环境里做 S 参数测试通常是测试机通过 GPIB、LAN 或 PCIe 控制外部 VNA或者使用测试机自带的 RF 测量单元。流程大概是测试方法发起一个频点扫描VNA 完成测量后把 S11、S21 等数据回传给测试方法测试方法对每个频点做上下限判断只要有一个频点超限这个测试项就判 Fail。判 Fail 之后Binning 照常工作。比如某个频点的增益不够软 Bin 设为 31RF 增益失效某个频点回波损耗超差软 Bin 设为 32RF 回波损耗失效。如果这芯片是按频段分级的还可以把不同频段的测试结果组合起来频段性能都达标的分到高性能 Bin部分达标的分到低性能 Bin一塌糊涂的分到失效 Bin这就是典型的多级 Binning。要注意S 参数测试的数据量比 DC 测试大得多判断逻辑里一定要做好频点索引管理避免把 A 频点的数据拿去和 B 频点的 limit 比较。6.4 实操心得最后分享几个我在 RF S 参数测试里积累的经验。第一VNA 一定要充分预热再校准温度不稳定时校准数据几十秒就漂移了我建议校准前至少预热 30 分钟且在同一个恒温环境下完成。第二IF 带宽和平均次数要在重复性和测试时间之间取平衡IF 带宽太宽噪声大平均次数太多测试时间扛不住一般先按经验值跑再用短批次验证重复性。第三测试板的 RF 走线要严格控制 50 欧姆阻抗线宽、层叠、过孔都要盯住路径损耗大的板子要加路径补偿。第四对于带匹配电路的芯片回波损耗类参数的系统稳定性最容易出问题量产中每天开机后的第一件事就是跑一遍校准检查确认参考平面没偏。我个人在实际操作中的体会是Binning 这事看着简单真正调起来全是细节。你花在理解 Bin Table、流程分支和多站点隔离上的时间会在后续量产和良率分析阶段十倍回报回来。S 参数测试也一样校准和去嵌入做到位数据才有意义Binning 才敢信。希望这篇总结能帮你在 SmarTest 8 上少走点弯路。
返回列表