当前位置: 首页 > web >正文

WIP数据,有bad wafer/lot,追踪设备/机台问题

在半导体制造过程中,WIP(Work In Process)数据用于追踪晶圆或批次(wafer/lot)在工艺流程中的状态。当出现 bad wafer/lot(缺陷晶圆或批次)时,需要进行根因分析(Root Cause Analysis, RCA),以识别可能存在问题的设备或机台(tool/chamber)。

下面是一个完整的 追踪设备/机台问题的步骤方法,并附带 Python 分析示例代码。

一、分析流程(概览)

1. 明确异常标记

  • Bad lot/wafer 的判定标准(如测试失败、良率下降、缺陷数升高等)

2. 数据准备与关联

  • 获取 WIP 流程数据:包含 lot_id, wafer_id, step_id, tool_id, chamber_id, process_time
  • 获取测试数据:如 E-Test、CP Test、Final Test 的良率结果或 defect 分类
  • 获取设备运行日志(可选)

3. 前后工序数据对比

  • 正常 vs 异常 wafer 的流片路径(Route)分析
  • 工艺段、设备分布、运行时间等信息比较

4. 统计分析

  • 对每个设备/tool,统计其处理 bad lot/wafer 的频率
  • 计算设备与异常的相关性(如异常率)

5. 时序分析

  • 分析异常 wafer 前后处理的 wafer/lot 是否也异常(串扰)

6. 输出疑似问题设备/工艺段

  • 可结合热力图、流向图等可视化工具

二、数据结构定义(样例)

# WIP 工艺流转数据(每行代表一次加工记录)
# step_id: 工艺步骤,tool_id: 机台,chamber_id: 腔室
import pandas as pdwip_df = pd.DataFrame([{"lot_id": "L001", "wafer_id": "W001", "step_id": "Etch01", "tool_id": "ToolA", "chamber_id": "C1", "process_time": "2024-06-01 10:00"},{"lot_id": "L001", "wafer_id": "W001", "step_id": "Etch02", "tool_id": "ToolB", "chamber_id": "C3", "process_time": "2024-06-01 12:00"},...
])# 测试结果数据(例:CP/FT)
test_df = pd.DataFrame([{"wafer_id": "W001", "lot_id": "L001", "test_type": "FT", "yield": 85, "defect_type": "Bridge"},{"wafer_id": "W002", "lot_id": "L001", "test_type": "FT", "yield": 95, "defect_type": "None"},...
])

三、Python 分析步骤

1. 识别 Bad Wafer

bad_threshold = 90  # 设置良率阈值
bad_wafers = test_df[test_df['yield'] < bad_threshold]
bad_wafer_ids = bad_wafers['wafer_id'].unique()

2. 关联工艺流程记录

# 获取 bad wafer 的流转记录
bad_routes = wip_df[wip_df['wafer_id'].isin(bad_wafer_ids)]# 获取 normal wafer 的流转记录
normal_wafer_ids = test_df[test_df['yield'] >= bad_threshold]['wafer_id'].unique()
normal_routes = wip_df[wip_df['wafer_id'].isin(normal_wafer_ids)]

3. 分设备分析异常比率

# 每台设备处理的 wafer 数 & 异常 wafer 数
bad_tool_stats = bad_routes.groupby('tool_id')['wafer_id'].nunique().rename("bad_count")
total_tool_stats = wip_df.groupby('tool_id')['wafer_id'].nunique().rename("total_count")tool_stats = pd.concat([bad_tool_stats, total_tool_stats], axis=1).fillna(0)
tool_stats['bad_ratio'] = tool_stats['bad_count'] / tool_stats['total_count']# 排序
tool_stats = tool_stats.sort_values('bad_ratio', ascending=False)
print(tool_stats)

4. 分工艺步骤识别问题段

bad_step_stats = bad_routes.groupby('step_id')['wafer_id'].nunique().rename("bad_count")
total_step_stats = wip_df.groupby('step_id')['wafer_id'].nunique().rename("total_count")step_stats = pd.concat([bad_step_stats, total_step_stats], axis=1).fillna(0)
step_stats['bad_ratio'] = step_stats['bad_count'] / step_stats['total_count']
step_stats = step_stats.sort_values('bad_ratio', ascending=False)

5. 可选:时间串扰分析

# 假设 bad wafer 是在某 tool 上 10:00 处理的,我们看看它之前或之后处理的 wafers
from datetime import timedeltabad_wafers_time = bad_routes.copy()
bad_wafers_time['process_time'] = pd.to_datetime(bad_wafers_time['process_time'])suspicious_wafers = []for _, row in bad_wafers_time.iterrows():time_window_start = row['process_time'] - timedelta(minutes=30)time_window_end = row['process_time'] + timedelta(minutes=30)candidates = wip_df[(wip_df['tool_id'] == row['tool_id']) &(pd.to_datetime(wip_df['process_time']) >= time_window_start) &(pd.to_datetime(wip_df['process_time']) <= time_window_end)]suspicious_wafers.extend(candidates['wafer_id'].unique())suspicious_wafers = list(set(suspicious_wafers))
print("潜在受影响 wafers:", suspicious_wafers)

四、可视化建议(可选)

import seaborn as sns
import matplotlib.pyplot as pltplt.figure(figsize=(10,6))
sns.barplot(x=tool_stats.index, y=tool_stats['bad_ratio'])
plt.xticks(rotation=45)
plt.title("每台设备异常比率")
plt.show()

五、结论输出

结合:

  • 哪些设备(tool_id)对应较高的异常比例
  • 哪些工艺步骤(step_id)容易产出 bad wafer
  • 是否存在工艺串扰或批次传播风险

补充建议

  • 融合设备运行日志(如报警、停机、温度波动)
  • 进行相关性分析(如工艺参数 vs 良率)
  • 用 ML 建模预测(如 XGBoost 预测 bad wafer 风险)
http://www.xdnf.cn/news/14495.html

相关文章:

  • Java 变量类型转换的选择题
  • react小白学习快速上手
  • Appium+python自动化(二十四) - 元素等待
  • 在虚拟机 银河麒麟|ubuntu 中安装和配置NVIDIA显卡驱动
  • 设计模式精讲 Day 2:工厂方法模式(Factory Method Pattern)
  • 多模态学习路线(3)——MLLMs主流大模型
  • 基于统计检验与机器学习模型对牛油果数据的分析与预测
  • Python 文件操作详解
  • 算法题(170):地毯填补问题
  • Proteus8.17-安装说明
  • 揭开MongoDB的神秘面纱:从陌生到初识
  • 【Elasticsearch】文档(一):新增 删除
  • vue中的h渲染函数
  • Java项目中使用到的技术——《异步调用》
  • java+vue+SpringBoo摄影师分享交流社区(程序+数据库+报告+部署教程+答辩指导)
  • 大模型笔记6:微调
  • Go多个协程实现顺序打印
  • 华为OD机试_2025 B卷_运维日志排序(Python,100分)(附详细解题思路)
  • sudo apt-get install openssh-serve安装失败解决
  • 自定义Spring Boot Starter开发指南
  • JS当中怎么定义一个类
  • 【Quest开发】初始项目环境配置
  • Hive集成Paimon
  • 华为云国际版有区块链吗
  • Windows 系统中扩大 WSL2 的内存限制
  • YSYX学习记录(九)
  • 2026 AAAI 投稿要求
  • vscode-monitor-pro | 提升开发效率的利器
  • 【递归】两两交换链表中的节点(medium)
  • Oracle03-PL/SQL Developer