ARTICLE DETAIL

资讯详情

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

芯片测试工程师必读:Shmoo图原理、ATE扫描策略与失效诊断实战

芯片测试工程师必读:Shmoo图原理、ATE扫描策略与失效诊断实战 1. 从一个真实的测试现场说起如果你在芯片测试行业待过大概率见过这样一张图横轴是某个电压或时序参数纵轴是另一个参数图中间有一片由不同颜色或符号组成的“地图”绿色区域代表测试通过红色区域代表失败边界像梯田一样参差不齐。这张图就是Shmoo图而生成这张图的过程就是Shmoo测试。我第一次接触Shmoo图是在做一款通信芯片的ATE测试程序调试时。当时芯片在常温下功能正常但一到高温就出现偶发性误码。用常规的Pass/Fail测试根本定位不到问题因为失败率太低单次测试根本抓不住。后来一位老工程师让我跑一个Shmoo把VDD和时序沿同时扫描结果一眼就看出来高温下芯片对时序窗口的要求比常温窄了将近30%。问题瞬间锁定。这件事让我意识到Shmoo测试不是“锦上添花”的功能而是芯片测试工程师手里最锋利的诊断工具之一。它解决的核心问题是当芯片出现边缘性失效时如何快速定位是哪个参数、在什么范围内导致了问题。常规的ATE测试只告诉你“过了”或“没过”而Shmoo测试告诉你“在什么条件下过在什么条件下不过边界在哪里”。这篇文章适合谁看如果你是刚入行的ATE测试工程师正在被各种参数扫描搞得头晕那这篇内容能帮你建立完整的Shmoo测试认知框架。如果你是有经验的测试老手但一直用现成的Shmoo工具而没有深究过背后的原理和优化技巧那这里面关于扫描策略、边界判定和效率优化的经验应该能给你一些新的启发。如果你做DFT或芯片设计了解Shmoo测试也能帮你更好地理解测试工程师到底在抱怨什么。2. Shmoo图到底是什么从二维地图到多维空间2.1 一张图看懂Shmoo的基本结构Shmoo图的本质是一个二维参数扫描结果的可视化。你可以把它想象成一张“地形图”横轴和纵轴各代表一个可调参数图上的每个点代表在这组参数组合下芯片的测试结果。通常用颜色区分绿色是通过红色是失败黄色可能是边缘通过或者功能降级。举个具体的例子。假设你在测试一颗DDR接口的芯片你想知道VDD电压和时钟频率的配合关系。横轴设为VDD从0.9V扫到1.1V步进10mV纵轴设为时钟频率从800MHz扫到1200MHz步进20MHz。这样你就有了一个21×21的网格总共441个测试点。每个点跑一次读写测试记录Pass/Fail最后画出来就是一张Shmoo图。这张图能告诉你什么你能看到在VDD1.0V、频率1000MHz时芯片是Pass的但在VDD0.95V、频率1100MHz时就Fail了。更重要的是你能看到Pass区域的形状——它是一个规整的矩形还是一个不规则的“岛屿”如果是一个规整的矩形说明芯片的裕量比较均匀如果是一个奇怪的形状那可能暗示着某个内部模块有特殊的行为。2.2 Shmoo测试和普通ATE测试的本质区别普通ATE测试是单点判定给定一组固定条件跑一次测试返回Pass或Fail。它的效率极高适合量产筛选。但它的信息量极低——你只知道结果不知道原因。Shmoo测试是空间探索在一个参数空间内系统性地扫描构建出完整的Pass/Fail分布。它的效率低因为要跑很多次但信息量极大。你可以把它理解为“用测试时间换诊断信息”。这里有一个关键认知Shmoo测试不是用来替代量产测试的而是用来辅助调试和特性分析的。在量产阶段你不可能对每颗芯片都跑Shmoo那太慢了。但在工程验证阶段、良率提升阶段、或者客户返回失效分析时Shmoo测试是不可或缺的。我见过一些新手工程师在量产程序里加了一个小范围的Shmoo结果测试时间暴涨被产线骂得不行。这就是没有理解Shmoo测试的定位。它应该出现在工程模式里而不是量产模式里。2.3 从二维到多维Shmoo的扩展形态二维Shmoo是最常见的但实际工程中经常需要处理更多维度。比如你想同时看VDD、VDDQ、温度、时序四个参数的影响那就是四维空间。四维空间没法直接画图但可以通过以下方式处理切片法固定两个参数扫描另外两个生成多张二维Shmoo图。比如固定温度和VDDQ扫描VDD和时序生成一张图然后改变温度再生成一张。这样你得到一组图可以对比不同温度下的差异。降维法把多个参数组合成一个“综合指标”比如把VDD和VDDQ的差值作为一个新参数然后扫描这个差值和时序。投影法在高维空间中找到Pass区域的边界然后把边界投影到二维平面上。这种方法需要一些数学处理但能给出最直观的结果。在实际项目中我通常先用二维Shmoo快速定位敏感参数然后再针对性地做多维扫描。不要一上来就搞四维那样测试时间会爆炸而且数据也很难解读。3. Shmoo测试的核心参数与扫描策略3.1 常见扫描参数类型Shmoo测试能扫的参数非常多但归纳起来主要是以下几类参数类别典型参数扫描目的电压类VDD、VDDQ、VPP、VBB找供电裕量定位电源相关问题时序类时钟频率、建立时间、保持时间、延迟找时序窗口定位接口问题温度类结温、环境温度找温度裕量定位热相关问题负载类输出电流、负载电容找驱动能力边界频率类核心频率、接口频率找速度裕量电压和时序是最常用的两个维度因为它们对芯片行为的影响最直接而且ATE上最容易控制。温度扫描通常需要热流罩或温控卡盘速度慢一些但在车规芯片或工业级芯片的验证中是必须的。3.2 扫描范围怎么定从Spec到Guard Band扫描范围不是拍脑袋定的。一个合理的做法是以Spec为中心比如VDD的Spec是1.0V±5%那扫描范围至少要是0.9V到1.1V。向外扩展20%-30%为了看到边界你需要扫到Fail区域。所以实际范围可能是0.85V到1.15V。考虑测试机的限制有些ATE的电源模块在低压下精度会下降这时候你要确认扫描下限是否在设备能力范围内。步进的选择也很关键。步进太大边界会模糊步进太小测试时间会爆炸。我的经验是先用粗步进快速扫一遍比如VDD步进50mV频率步进100MHz找到大致的Pass区域。然后在边界附近用细步进精扫比如VDD步进10mV频率步进20MHz精确确定边界位置。这种“粗扫精扫”的策略能把测试时间控制在可接受范围内同时保证边界精度。3.3 扫描顺序与测试时间估算假设你要扫一个20×20的网格每个点跑一次测试需要10ms那总时间就是400×10ms4秒。这看起来不多但如果你要扫多个温度点每个温度点都跑一遍时间就上去了。如果测试项本身更复杂比如跑一次完整的协议测试需要100ms那400个点就是40秒再乘以温度点数可能就是几分钟甚至十几分钟。所以扫描顺序很重要。我通常采用蛇形扫描而不是逐行扫描因为蛇形扫描可以减少参数切换的次数。比如横轴是VDD纵轴是频率逐行扫描的话每换一行都要把VDD从最小值重新升到最大值而蛇形扫描则是正反交替减少了一次完整的电压爬升。另外先扫敏感参数也是一个技巧。如果你已经知道时序是主要矛盾那就先扫时序把时序窗口确定下来再在这个窗口内扫电压。这样能更快地找到问题区域。4. Shmoo测试在ATE上的实现细节4.1 ATE测试程序中的Shmoo框架在ATE上实现Shmoo测试核心是一个双层循环外层循环遍历纵轴参数内层循环遍历横轴参数。每进入一个参数组合就调用一次测试函数记录结果。伪代码大概长这样for y in y_range: set_parameter(Y_PARAM, y) for x in x_range: set_parameter(X_PARAM, x) result run_test() record_result(x, y, result)看起来很简单但实际实现中有很多坑。比如参数设置后需要等待稳定时间尤其是电压和温度不能设完立刻测。再比如某些测试项在Fail之后需要复位芯片否则后续测试会受影响。在成熟的ATE测试程序里通常会有一个专门的Shmoo模块提供参数配置、扫描控制、结果记录和图形化显示的功能。不同ATE平台的Shmoo工具名称不同但核心逻辑是一致的。4.2 参数设置的稳定时间与精度电压设置后电源模块需要时间稳定。这个时间取决于电源模块的响应速度和负载电容。一般来说10mV的电压变化需要等待100μs到1ms。如果你不等测出来的结果可能是上一个电压点的残留效应。温度设置更慢。热流罩改变温度可能需要几十秒甚至几分钟才能稳定。所以温度Shmoo通常是单独做的不会和快速电压扫描混在一起。精度方面ATE的电源模块通常有1mV到5mV的精度但这是在特定条件下的指标。如果你扫到很低或很高的电压精度可能会下降。做Shmoo之前最好用万用表确认一下实际输出电压和设定值的偏差。4.3 结果记录与图形化结果记录看似简单但有几个细节要注意记录原始值不要只记Pass/Fail还要记测试的测量值比如误码率、延迟时间。这些原始值在后续分析时非常有用。记录时间戳每个测试点的时间戳能帮你判断是否有时间相关的漂移。记录环境条件如果可能记录当时的温度、湿度等环境信息。图形化方面大多数ATE平台自带Shmoo绘图工具但功能可能比较基础。我有时候会把数据导出到Excel或Python里用matplotlib画更精细的图。比如用颜色深浅表示测量值的大小而不仅仅是Pass/Fail这样能看到更多的信息。5. Shmoo图怎么读从形状到根因5.1 典型Shmoo形状及其含义Shmoo图的形状能告诉你很多信息。以下是几种常见的形状规整矩形Pass区域是一个整齐的矩形边界清晰。这说明芯片行为比较理想两个参数之间没有明显的交互作用。斜边界Pass区域的边界是斜的说明两个参数之间存在补偿关系。比如电压高一点频率就能跑高一点。这是正常的因为电压高了晶体管速度快时序裕量就大。阶梯状边界边界不是平滑的而是像楼梯一样。这通常说明芯片内部有数字校准或自适应机制在某些参数组合下会切换工作模式。孤岛Pass区域中间有一个Fail的“孤岛”或者Fail区域中间有一个Pass的“孤岛”。这是最麻烦的情况通常意味着有特殊的失效机制比如某个内部电源在特定电压下振荡或者某个时钟在特定频率下失锁。边界模糊Pass和Fail之间没有清晰的边界而是渐变的。这可能是测试噪声导致的也可能是芯片本身在边缘条件下行为不确定。我遇到过最奇怪的一个Shmoo图是一个“蝴蝶形”在低电压和高电压下都Fail中间一段Pass。后来查出来是芯片内部的LDO在低压下无法启动在高压下又触发了过压保护。这种问题用常规测试根本发现不了。5.2 边界判定的数学方法人眼读Shmoo图很直观但要做自动化分析就需要数学方法。常用的边界判定方法有阈值法设定一个Pass率阈值比如95%低于这个阈值的区域算Fail。这种方法简单但对边缘点的处理比较粗糙。拟合曲线法用多项式或样条曲线拟合Pass/Fail边界然后找边界上的关键点比如最窄处。这种方法能给出平滑的边界但拟合误差需要评估。形态学方法把Pass区域当成一个二值图像用形态学操作腐蚀、膨胀来平滑边界然后提取轮廓。这种方法对噪声比较鲁棒。在实际项目中我通常先用阈值法快速看结果然后用拟合曲线法做精确分析。如果边界特别不规则再上形态学方法。5.3 从Shmoo图到根因分析的思路Shmoo图本身不是答案它只是线索。从Shmoo图到根因需要结合芯片设计知识和测试经验。我的分析思路通常是看边界位置边界是否在Spec附近如果边界远高于Spec说明裕量充足如果边界紧贴Spec说明裕量不足需要优化设计或工艺。看边界形状斜边界说明参数间有补偿阶梯边界说明有模式切换孤岛说明有特殊失效机制。看温度影响在不同温度下跑Shmoo看边界如何移动。如果高温下边界大幅收缩说明是热相关问题。看批次差异在不同批次或不同晶圆上跑Shmoo看边界是否一致。如果差异大说明工艺均匀性有问题。举个例子。我曾经分析过一颗芯片的Shmoo图发现时序边界在高温下向低频方向移动了20%。结合设计知识我判断是时钟树上的某个缓冲器在高温下延迟增加过多。后来用EDA工具做时序分析果然验证了这个判断。解决方案是在那个缓冲器上增加驱动能力或者调整时钟树的平衡。6. Shmoo测试的常见问题与排查技巧6.1 测试时间过长怎么办这是新手最常遇到的问题。一个全范围的Shmoo可能要跑几十分钟产线根本等不起。我的经验是缩小范围不要一上来就扫全范围。先用Spec附近的窄范围快速扫如果边界不在范围内再逐步扩大。增大步进粗扫阶段用大步进找到大致边界后再精扫。并行测试如果ATE支持多site并行可以在多个site上同时跑Shmoo的不同区域。但要注意site之间的差异可能会影响结果。选择性测试不是所有测试项都需要跑Shmoo。只对关键测试项做Shmoo其他项用常规测试。6.2 边界不清晰、结果重复性差有时候同一个参数点跑两次结果不一样。这可能是测试噪声测试机的噪声导致边缘点判定不稳定。解决方法是增加测试次数取多数结果。芯片状态未复位某些测试项会改变芯片内部状态如果不复位下一次测试会受影响。解决方法是在每个测试点前加复位操作。参数未稳定电压或温度还没稳定就开始测试。解决方法是增加等待时间。芯片自热连续测试导致芯片温度升高影响结果。解决方法是增加冷却时间或者降低测试频率。6.3 Shmoo测试中的常见误区我见过不少工程师在Shmoo测试上踩坑这里列几个典型的误区一Shmoo图越漂亮越好。有些人追求边界整齐看到不整齐的图就反复调参数想把图“修”好看。这是本末倒置。Shmoo图是诊断工具不是艺术品。不整齐的图往往能揭示真正的问题。误区二只扫电压和频率。电压和频率是最容易扫的但不一定是最相关的。有时候温度、负载、甚至电源纹波才是关键。误区三忽略测试机的限制。有些ATE的电源模块在快速切换电压时会有过冲导致测试结果不可靠。做Shmoo之前最好用示波器看一下实际波形。误区四不做重复验证。Shmoo图上的一个点只测一次可能碰巧Pass或Fail。关键边界点至少要测三次确认结果可重复。7. Shmoo测试在不同场景下的应用7.1 工程验证阶段的特性分析在芯片刚回片的时候Shmoo测试是特性分析的主力工具。这时候芯片数量少时间相对充裕可以跑大范围的Shmoo全面了解芯片的行为。我通常会做以下几组ShmooVDD vs 频率看供电和速度的关系VDD vs 温度看供电和热的关系时序 vs 温度看时序窗口随温度的变化不同工艺角芯片的对比Shmoo看工艺偏差的影响这些数据不仅能帮助定位问题还能为后续的量产测试程序提供Guard Band设定的依据。7.2 量产良率提升中的诊断量产阶段出现良率下降时Shmoo测试能快速定位是哪个参数出了问题。比如良率从95%掉到80%你可以对失效芯片跑Shmoo看边界是否比正常芯片窄。如果窄了再看是哪个方向窄了——是低压方向还是高压方向是低频方向还是高频方向。这些信息能直接指向工艺或设计的问题。我经历过一次良率骤降用Shmoo测试发现失效芯片在低压下的时序边界大幅收缩。后来查出来是某个工艺步骤的偏差导致晶体管阈值电压偏高。调整工艺后良率恢复。7.3 客户返回失效分析客户返回的失效芯片通常数量很少而且失效现象可能很模糊。Shmoo测试能在单颗芯片上获取大量信息非常适合这种场景。我通常会先跑一个宽范围的Shmoo看失效芯片的Pass区域和正常芯片有什么不同。有时候失效芯片的Pass区域只是整体偏移有时候是形状改变有时候是出现了孤岛。不同的模式指向不同的失效机制。7.4 车规芯片的严苛验证车规芯片对可靠性的要求极高Shmoo测试是验证的重要手段。车规芯片通常要求在-40°C到125°C甚至更宽的温度范围内工作所以温度Shmoo是必须的。而且车规芯片的寿命要求长有时候还需要做老化后的Shmoo测试看边界是否随时间漂移。车规芯片的Shmoo测试还有一个特点Guard Band要留得足够大。因为车规芯片的工作环境恶劣参数会随温度、湿度、振动等因素变化所以Pass区域的边界不能紧贴Spec要留出足够的裕量。8. Shmoo测试的进阶技巧与效率优化8.1 自适应扫描让测试更聪明传统的Shmoo测试是“盲扫”不管结果如何都按固定的网格扫一遍。自适应扫描则是根据已有结果动态调整扫描策略。比如二分法先扫几个粗点找到Pass和Fail的大致分界然后在分界附近用二分法精确定位边界。这种方法能用更少的点找到边界。区域生长法从已知的Pass点出发向四周扩展直到遇到Fail点。这种方法适合Pass区域比较集中的情况。机器学习预测用已有的Shmoo数据训练一个模型预测哪些区域可能是边界然后只扫这些区域。这种方法还在研究中但已经有了一些成功的案例。自适应扫描能大幅减少测试点数但实现起来比较复杂需要测试程序有较强的逻辑控制能力。8.2 多site并行Shmoo的注意事项多site并行能提高效率但有几个坑要注意site间差异不同site的测试结果可能有系统性差异。做Shmoo时最好每个site单独画图不要混在一起。资源竞争多个site同时扫电压时电源模块的负载会变化可能影响电压精度。要确认ATE的电源模块能支持多site同时扫描。同步问题如果多个site的测试时间不同快的site要等慢的site效率提升有限。最好让所有site的测试时间尽量一致。8.3 数据管理与复用Shmoo测试产生的数据量不小。一个20×20的网格就是400个数据点每个点可能还有多个测量值。如果做了多个温度点、多个批次数据量就更大。我通常会把数据存成结构化的格式比如CSV或JSON并记录完整的元数据测试条件、芯片ID、时间等。这样后续分析时能方便地筛选和对比。另外Shmoo数据是可以复用的。比如你今天跑了一个VDD vs 频率的Shmoo明天要分析时序问题可能还需要这个数据作为参考。所以不要跑完就删要归档保存。9. 我个人在实际操作中的几点体会做Shmoo测试这些年踩过的坑不少这里分享几个我觉得最有价值的经验。第一不要迷信Shmoo图上的边界。Shmoo图上的边界是“测试条件下的边界”不是“芯片的真实边界”。测试机的精度、测试程序的设定、甚至测试环境的温度都会影响边界位置。所以看到边界异常时先确认测试条件是否可靠再下结论。第二Shmoo测试的价值在于对比。单张Shmoo图的信息量有限但两张图的对比能揭示很多问题。比如正常芯片和失效芯片的对比、不同温度下的对比、不同批次的对比。我通常会至少跑两组Shmoo一组作为参考一组作为分析对象。第三测试时间要花在刀刃上。不要为了追求“完整”而扫遍所有参数。先想清楚你要回答什么问题然后设计最小的扫描方案来回答这个问题。比如你怀疑是低压问题那就重点扫低压区域高压区域可以粗扫甚至不扫。第四记录比测试更重要。我见过太多人跑完Shmoo截个图就完事了原始数据不保存测试条件不记录。过了一个月再想回头看什么都查不到。我的习惯是每次Shmoo测试都保存原始数据、测试条件、芯片信息和自己的观察笔记。这些记录在后续分析中往往比图本身更有价值。第五Shmoo测试不是万能的。有些问题用Shmoo测试根本定位不到比如间歇性失效、与特定数据模式相关的失效、或者与外部环境相关的失效。这时候需要结合其他手段比如逻辑分析仪、示波器、或者设计端的仿真分析。Shmoo测试只是工具箱里的一把锤子不是所有问题都是钉子。最后再分享一个小技巧如果你在ATE上跑Shmoo发现某个区域的结果特别奇怪不妨把那个区域的参数点单独拿出来用示波器看一下实际波形。很多时候Shmoo图上的异常只是测试机行为的反映而不是芯片本身的问题。比如电源模块在快速切换时的过冲或者时序模块在边界处的抖动都会在Shmoo图上留下痕迹。确认是测试机的问题后调整测试条件再跑往往能得到更干净的结果。
返回列表