首页 文章 精选 留言 我的

精选列表

搜索[聚类算法],共10004篇文章
优秀的个人博客,低调大师

2026 技术观察:半导体制造进入良率智能分析阶段,缺陷聚类、工艺漂移和批次追溯成为新核心

## 概述 2026 年,半导体制造正在从“事后统计良率”走向“实时发现工艺异常”。 晶圆制造需要经历光刻、刻蚀、薄膜沉积、离子注入、清洗、检测和封装测试等多个环节。任何一个工艺参数发生变化,都可能影响最终芯片良率。 过去,工厂通常在晶圆检测或成品测试完成后,才发现某个批次良率下降。此时,异常批次可能已经完成多个后续工序,不仅增加返工和报废成本,也会占用产线资源。 随着设备联网、缺陷检测、制造执行系统和数据分析平台不断完善,半导体良率管理开始进入实时分析阶段。 系统可以持续分析设备参数、晶圆缺陷、测试结果和批次路径,识别异常集中区域,并追踪可能的工艺原因。 --- ## 一、为什么半导体良率需要实时监控? 半导体制造具有工序多、参数多和设备依赖强的特点。 同一产品在不同设备、不同腔体和不同时间段生产,最终良率可能存在明显差异。 良率智能分析系统可以帮助工程团队回答几个问题: 1. 哪个批次良率突然下降; 1. 缺陷主要集中在哪个区域; 1. 哪台设备可能存在工艺漂移; 1. 哪项工艺参数偏离正常范围; 1. 是否需要暂停相关设备; 1. 哪些在制批次可能受到影响。 下面用 Python 写一个简化版半导体良率监控系统。 --- ## 二、基础数据:定义晶圆批次和测试结果 第一步是准备晶圆批次数据。 每个批次包含产品型号、生产设备、工艺参数、芯片数量和测试通过数量。 ``` import json from datetime import datetime from collections import defaultdict WAFER_LOTS = [ { "lot_id": "LOT001", "product": "MCU-A1", "equipment_id": "ETCH_01", "chamber_id": "CH_A", "temperature": 198.5, "pressure": 42.1, "process_time": 85, "total_dies": 1200, "passed_dies": 1135 }, { "lot_id": "LOT002", "product": "MCU-A1", "equipment_id": "ETCH_01", "chamber_id": "CH_B", "temperature": 207.8, "pressure": 47.2, "process_time": 94, "total_dies": 1180, "passed_dies": 987 }, { "lot_id": "LOT003", "product": "SENSOR-B2", "equipment_id": "ETCH_02", "chamber_id": "CH_A", "temperature": 201.2, "pressure": 41.5, "process_time": 87, "total_dies": 980, "passed_dies": 941 }, { "lot_id": "LOT004", "product": "MCU-A1", "equipment_id": "ETCH_01", "chamber_id": "CH_B", "temperature": 209.4, "pressure": 48.0, "process_time": 96, "total_dies": 1210, "passed_dies": 996 } ] ``` 批次、设备和工艺参数必须关联起来。 只有这样,系统才能判断良率下降是否与某台设备或某个腔体有关。 --- ## 三、计算批次良率 第二步是计算每个批次的测试良率。 ``` def calculate_lot_yield(lot): total = lot["total_dies"] passed = lot["passed_dies"] yield_rate = ( passed / total if total else 0 ) if yield_rate >= 0.95: level = "excellent" elif yield_rate >= 0.9: level = "normal" elif yield_rate >= 0.85: level = "warning" else: level = "critical" return { "lot_id": lot["lot_id"], "product": lot["product"], "equipment_id": lot["equipment_id"], "chamber_id": lot["chamber_id"], "yield_rate": round(yield_rate * 100, 2), "yield_level": level, "failed_dies": total - passed } ``` 良率是半导体制造的重要指标。 但仅仅看到良率下降还不够,工程团队还需要进一步定位原因。 --- ## 四、工艺参数漂移检测 第三步是检查温度、压力和加工时间是否偏离基准。 以下参数仅用于代码演示。 ``` PROCESS_BASELINE = { "temperature": { "target": 200, "tolerance": 5 }, "pressure": { "target": 42, "tolerance": 3 }, "process_time": { "target": 86, "tolerance": 6 } } def detect_process_drift(lot): issues = [] drift_score = 0 for parameter, config in PROCESS_BASELINE.items(): actual = lot[parameter] target = config["target"] tolerance = config["tolerance"] deviation = abs(actual - target) if deviation > tolerance * 1.5: drift_score += 4 issues.append( f"{parameter} 严重偏离工艺基准。" ) elif deviation > tolerance: drift_score += 2 issues.append( f"{parameter} 超出常规控制范围。" ) if drift_score >= 6: level = "high" elif drift_score >= 3: level = "medium" elif drift_score > 0: level = "low" else: level = "normal" return { "lot_id": lot["lot_id"], "equipment_id": lot["equipment_id"], "chamber_id": lot["chamber_id"], "drift_score": drift_score, "drift_level": level, "issues": 30523.t.kuaisou.com } ``` 工艺漂移并不一定立即造成设备故障。 但参数长期偏离基准,往往会逐步影响缺陷率和产品稳定性。 --- ## 五、缺陷分布分析 第四步是准备晶圆缺陷检测结果,并判断缺陷是否集中在特定区域。 ``` DEFECT_RECORDS = [ { "lot_id": "LOT001", "center": 18, "edge": 22, "random": 25, "scratch": 0 }, { "lot_id": "LOT002", "center": 34, "edge": 126, "random": 21, "scratch": 12 }, { "lot_id": "LOT003", "center": 16, "edge": 14, "random": 9, "scratch": 0 }, { "lot_id": "LOT004", "center": 39, "edge": 138, "random": 24, "scratch": 13 } ] def analyze_defect_pattern(defect): defect_types = { "center": defect["center"], "edge": defect["edge"], "random": defect["random"], "scratch": defect["scratch"] } total_defects = sum( defect_types.values() ) dominant_type = max( defect_types, key=defect_types.get ) dominant_count = defect_types[ dominant_type ] dominant_rate = ( dominant_count / total_defects if total_defects else 0 ) if dominant_type == "edge" and dominant_rate > 0.5: possible_cause = "边缘缺陷集中,建议检查腔体均匀性和边缘工艺参数。" elif dominant_type == "center" and dominant_rate > 0.5: possible_cause = "中心缺陷集中,建议检查中心区域温度或气流分布。" elif defect["scratch"] > 10: possible_cause = "划伤缺陷较多,建议检查传送机械和晶圆搬运环节。" else: possible_cause = "缺陷分布相对分散,建议结合更多工艺数据分析。" return { "lot_id": defect["lot_id"], "total_defects": total_defects, "dominant_type": dominant_type, "dominant_rate": round( dominant_rate * 100, 2 ), "possible_cause": possible_cause } ``` 缺陷图形往往能够提供重要线索。 例如边缘缺陷、中心缺陷和划伤缺陷,可能分别对应不同设备和工艺问题。 --- ## 六、设备与腔体良率汇总 第五步是按设备和腔体统计平均良率。 ``` def summarize_equipment_yield( lots, yield_results ): yield_map = { item["lot_id"]: item for item in yield_results } equipment_stats = defaultdict( lambda: { "lot_count": 0, "yield_total": 0, "warning_lots": [] } ) for lot in lots: key = ( lot["equipment_id"], lot["chamber_id"] ) result = yield_map[lot["lot_id"]] equipment_stats[key]["lot_count"] += 1 equipment_stats[key]["yield_total"] += result["yield_rate"] if result["yield_level"] in [ "warning", "critical" ]: equipment_stats[key]["warning_lots"].append( lot["lot_id"] ) summaries = [] for key, stat in equipment_stats.items(): average_yield = ( stat["yield_total"] / stat["lot_count"] ) if average_yield 60: score += 3 issues.append("缺陷呈现明显集中分布。") if defect_result["dominant_type"] == "scratch": score += 2 issues.append("存在较明显的划伤缺陷。") if score >= 10: level = "critical" decision = "hold_lot" elif score >= 6: level = "high" decision = "engineering_review" elif score >= 3: level = "medium" decision = "increase_sampling" else: level = "normal" decision = "continue" return { "lot_id": yield_result["lot_id"], "risk_score": score, "risk_level": level, "production_decision": decision, "issues": 31221.t.kuaisou.com } ``` 综合判断可以避免只看单一指标。 一个批次良率暂时正常,但如果工艺参数已经明显漂移,也应该提高关注等级。 --- ## 八、生成设备处置建议 第七步是根据腔体良率和批次风险生成工程建议。 ``` def generate_fab_actions( equipment_results, lot_risks ): actions = [] for equipment in equipment_results: if equipment["risk_level"] == "high": actions.append({ "target": ( f"{equipment['equipment_id']}/" f"{equipment['chamber_id']}" ), "action": "pause_and_inspect", "message": "平均良率偏低,建议暂停新批次进入并检查腔体状态。" }) elif equipment["risk_level"] == "medium": actions.append({ "target": ( f"{equipment['equipment_id']}/" f"{equipment['chamber_id']}" ), "action": "process_review", "message": "建议复核近期工艺参数和设备维护记录。" }) for risk in lot_risks: if risk["production_decision"] == "hold_lot": actions.append({ "target": risk["lot_id"], "action": "hold_lot", "message": "批次风险较高,建议暂停流转并进行工程复判。" }) if not actions: actions.append({ "target": "fab", "action": "keep_monitoring", "message": "当前生产良率和工艺状态整体稳定。" }) return actions ``` 系统建议不能替代工艺工程师判断。 它的主要价值是缩小排查范围,减少异常批次继续流转。 --- ## 九、运行完整半导体良率分析流程 最后把批次良率、工艺漂移、缺陷分布和设备汇总串起来。 ``` def run_semiconductor_yield_monitor(): yield_results = [ calculate_lot_yield(lot) for lot in WAFER_LOTS ] drift_results = [ detect_process_drift(lot) for lot in WAFER_LOTS ] defect_results = [ analyze_defect_pattern(defect) for defect in DEFECT_RECORDS ] yield_map = { item["lot_id"]: item for item in yield_results } drift_map = { item["lot_id"]: item for item in drift_results } defect_map = { item["lot_id"]: item for item in defect_results } lot_risks = [] for lot in WAFER_LOTS: lot_id = lot["lot_id"] lot_risks.append( evaluate_lot_risk( yield_map[lot_id], drift_map[lot_id], defect_map[lot_id] ) ) equipment_results = summarize_equipment_yield( WAFER_LOTS, yield_results ) actions = generate_fab_actions( equipment_results, lot_risks ) report = { "report_name": "半导体制造良率智能分析报告", "yield_results": yield_results, "drift_results": drift_results, "defect_results": defect_results, "lot_risks": lot_risks, "equipment_results": equipment_results, "actions": 31220.t.kuaisou.com "generate_time": datetime.now().isoformat() } return report if __name__ == "__main__": report = run_semiconductor_yield_monitor() print(json.dumps( report, ensure_ascii=False, indent=2 )) ``` --- ## 十、趋势判断 从这套流程可以看到,半导体良率管理正在从结果统计走向过程控制。 未来,工厂不会只在测试完成后查看良率报表,而会在生产过程中持续分析设备参数、缺陷图形和批次路径。 设备状态、工艺漂移和产品良率之间的关联能力,将成为智能制造的重要基础。 谁能把制造执行数据、设备参数、缺陷检测和工程处置流程连接起来,谁就更容易减少异常批次扩散,并提升晶圆制造的稳定性。

优秀的个人博客,低调大师

Java算法-排序算法

冒泡排序 方法sort是基本的冒泡排序, sort1/sort2是冒泡排序的两种优化 package me.zx.algorithm.program.sort; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 冒泡排序. * Created by zhangxin on 2017/12/27. * * @author zhangxin * @since 0.0.1 */ public final class BubbleSort { private static final Logger LOGGER = LoggerFactory.getLogger(BubbleSort.class); /** * 基本的冒泡排序. * @param a 待排序数组 */ public static void sort(int[] a) { int temp = 0; for(int i = a.length - 1; i > 0; i--) { for(int j = 0; j < i; j++) { if(a[j + 1] < a[j]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } } /** * 优化的冒泡排序1. * 当某一趟遍历没有交换,就说明已经遍历好了,就不用再迭代了 * @param a 待排序数组 */ public static void sort1(int[] a) { int temp = 0; boolean sorted = false; for(int i = a.length - 1; i > 0; i--) { sorted = false; //初始值设置为未排序 for(int j = 0; j < i; j++) { if(a[j + 1] < a[j]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; sorted = true; //发生排序时重新设值 } } if(!sorted){ //当经过一次遍历没有发生一次排序, 或者上次排序位置与本次排序位置相同 break; } } } /** * 优化的冒泡排序2. * 记录每次遍历数据之后交换次序的位置,显然这个位置之后的数据已经有序了不用再排序了。因此通过记录最后发生数据交换的位置就可以确定下次循环的范围了 * @param a 待排序数组 */ public static void sort2(int[] a) { int temp = 0; int lastChangeLocation; //上次排序发生的位置 int nowChangeLocation = a.length - 1; //本次排序发生的位置 for(int i = a.length - 1; i > 0; i--) { lastChangeLocation = nowChangeLocation; for(int j = 0; j < i; j++) { if(a[j + 1] < a[j]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; nowChangeLocation = j; //发生排序时重新设值 } } if(lastChangeLocation == nowChangeLocation){ //当经过一次遍历没有发生一次排序, 或者上次排序位置与本次排序位置相同 break; } } } public static void main(final String[] args){ // int[] a = {0, 1, 2, 3, 4, 5, 6}; int[] a = {6, 5, 4, 3, 2, 1, 0}; LOGGER.info("原数组:{}", a); sort1(a); LOGGER.info("现数组:{}", a); } }

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册