半导体测试全流程详解:从CP到FT再到SLT,芯片出厂的最后一道关 一、背景为什么测试如此重要7nm芯片一个Die的成本就要几千块如果封装完才发现是坏的中间花的封装成本全白费了。所以必须在封装前测试——这就是CP测试Chip Probing的意义。半导体测试分三个层次CP测试晶圆探针测试在划片前用探针卡测试每一颗Die筛掉坏的FT测试成品测试封装后用ATE自动测试设备全面测试性能SLT系统级测试把芯片装在真实电路板上跑系统确保实际使用没问题2022年我们FAB有一批晶圆CP测试良率90%封装后FT良率掉到75%。排查了半个月发现是封装厂商的焊料球杂质超标导致焊点接触不良。从此我们增加了来料检验——测试不只是测芯片还要测封装。▲ 图1半导体测试全流程二、技术原理ATE测试机怎么工作的2.1 ATE的核心架构ATEAutomatic Test Equipment是测试的核心设备。一台高端SoC测试机如Teradyne UltraFLEX、Advantest T5833售价数百万美元。测试头Test Head直接接触芯片的部分包含探针卡接口和驱动电路引脚电子PE, Pin Electronics每个引脚独立驱动生成测试模式和捕获响应DPS设备电源给芯片提供稳定的电源电压和电流模式发生器Pattern Generator产生测试向量序列对芯片进行功能测试资源控制器Resource Controller管理测试资源和数据采集ATE的测试速度非常快——一片手机SoC芯片的FT测试时间通常控制在30~60秒以内。时间就是金钱每慢1秒一台百万美元设备每天少测144片一年下来损失惨重。2.2 探针卡Probe Card的学问探针卡是CP测试的核心耗材。探针头要在显微镜下对准晶圆上的Pad焊点一次接触几百上千个点。我在FAB遇到过最蛋疼的事探针卡脏了导致一批芯片测出来全是开路故障。工程师趴在地上擦了3小时探针头良率从68%恢复到92%。从那天起我们每天开工前必做一次探针卡清洁。三、实战一次测试良率异常的排查2023年我们量产28nm MCU芯片出了一批CP良率97%但FT良率只有85%的产品。症结在哪五、效果对比指标无自动化测试分析使用Bin分析系统提升效果异常发现速度手动翻数据自动报警缩短80%良率损失率3%~5%1%减少75%测试时间无优化DOE优化后缩短30%探针卡寿命不定期维护寿命监控延长40%测试覆盖率凭经验DFT评估提升15pp六、实施建议新建测试产线要点关键风险七、进阶方向AI赋能测试传统的测试方案是确定性测试——提前写好测试向量芯片执行一遍。但对于AI芯片这样的复杂SoC几十亿晶体管的测试向量动辄几GB传统方法越来越吃力。──────────────────────────────────────────────────你在FAB里遇到过最离奇的测试异常是什么欢迎评论区分享VIP资源测试良率分析模板含Bin分析、Pareto图、良率趋势回复测试获取下载链接。━━━━━━━━━━━━━━━━━━━━━━━━━━觉得有用就点个关注每天分享半导体FAB实战经验从PE到PIE的完整成长路径都在这里。━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━讨论时间你在FAB遇到过类似问题吗是怎么解决的欢迎在评论区分享你的经验━━━━━━━━━━━━━━━━━━━━━━━━━━本文配套VIP资源半导体AI工具包SPC异常检测FDC规则模板AI良率预测模型已在CSDN资源区上架。第一步对比测试项——发现FT新增的IDDQ测试静态漏电流大量FAIL第二步切片分析——封装后晶圆边缘的钝化层有微裂纹导致封装应力下漏电第三步根源——封装前划片Dicing的刀片磨损切偏了3μm损伤了钝化层解决更换划片刀片减少划片速度从250mm/s降到150mm/s效果FT良率回升到96%▲ 图2芯片测试各环节成本占比四、测试良率分析代码以下代码实现测试良率的实时分析和良率Bin Chart良率饼图import matplotlib.pyplot as pltimport numpy as npclass TestYieldAnalyzer:def __init__(self, total_dies):self.total total_diesself.bins {} # {bin_name: count}def add_bin(self, name, count):self.bins[name] countdef yield_rate(self, pass_binsNone):if pass_bins is None:pass_bins [PASS]good sum(v for k,v in self.bins.items() if k in pass_bins)bad self.total - sum(self.bins.values())self.bins[UNTESTED] badreturn (good bad) / self.total * 100 if self.total 0 else 0def plot_bin_chart(self, save_pathbin_chart.png):fig, (ax1, ax2) plt.subplots(1, 2, figsize(12, 5))labels list(self.bins.keys())values list(self.bins.values())# 饼图colors [#27AE60 if l PASS else #E74C3C if l.startswith(FAIL) else #F39C12 for l in labels]ax1.pie(values, labelslabels, autopct%1.1f%%, colorscolors, startangle90,textprops{fontsize: 8})ax1.set_title(测试结果分布 (Bins), fontsize12, fontweightbold)# 良率趋势ax2.bar(range(len(values)), [v/self.total*100 for v in values], colorcolors, alpha0.8)ax2.set_xticks(range(len(labels)))ax2.set_xticklabels(labels, rotation45, fontsize7)ax2.set_ylabel(占比 (%))ax2.set_title(各Bin占比, fontsize11, fontweightbold)yield_rate sum(values) / self.total * 100ax2.axhline(yyield_rate, color#27AE60, linestyle--, labelfPASS率{yield_rate:.1f}%)ax2.legend(fontsize8)plt.tight_layout()plt.savefig(save_path, dpi150); plt.close()return save_path# 使用示例ana TestYieldAnalyzer(total_dies10000)ana.add_bin(PASS, 8930)ana.add_bin(FAIL_VOLTAGE, 320)ana.add_bin(FAIL_SPEED, 210)ana.add_bin(FAIL_LEAKAGE, 180)ana.add_bin(FAIL_PIN, 95)ana.plot_bin_chart() 代码说明Bin分析是测试工程师的基本功PASS率不等于好品率还要看各FAIL类型分布PASS/FAIL/VOLTAGE等Bin分类与ATE测试定义一致可直接对接MES系统良率趋势图帮助快速定位批量性问题如FAIL_VOLTAGE突然增加一般意味着电源纹波异常CP测试选择探针卡时优先考虑耐用的垂直探针寿命比悬臂探针长3~5倍FT测试DOE优化测试程序在保证覆盖率前提下压缩测试时间SLT模拟真实系统环境设计测试板不要只测功能要测实际性能测试过覆盖会浪费产能测试成本增加30%可能仅提升0.1%覆盖率测试不足会流出不良品客户投诉一次罚款几十万基于AI的自适应测试用机器学习模型预测Die是否可能FAIL减少冗余测试BIST内建自测试在芯片内部集成测试电路大幅减少ATE依赖大数据分析预测收集SPC数据预测哪些批次可能出问题提前干预3D堆叠测试HBM内存测试需要在堆叠后进行对测试良率和可环通性要求极高