2. SPC数据采集与预处理

在半导体制造中,良率预测的起点并非算法,而是数据。本章聚焦于如何从生产环境中获取原始SPC数据,并将其清洗、对齐为可供模型使用的标准数据集。数据质量直接决定模型上限,预处理环节通常占据整个项目60%以上的工作量。

2.1 数据采集系统:EDA与FDC

半导体产线中的过程数据主要来自两大系统:EDA (Equipment Data Acquisition) 和 FDC (Fault Detection & Classification)。两者采集维度不同,但共同构成良率分析的原始数据源。

系统 全称 采集对象 数据频率 典型参数
EDA Equipment Data Acquisition 设备腔体传感器 高频率(1~100 Hz) 温度、压力、RF功率、气体流量
FDC Fault Detection & Classification 工艺过程统计量 按Lot/Wafer触发 均值、标准差、斜率、R2
实践建议:EDA数据用于捕捉腔体状态的瞬态变化(如射频反射功率尖峰),FDC数据用于监控工艺稳定性(如膜厚均值的长期漂移)。两者结合使用,可覆盖从秒级到批次级的全尺度监控。

下图展示了从产线设备到数据仓库的典型采集架构:

半导体产线数据采集系统架构 刻蚀设备 腔体A / 腔体B 薄膜沉积设备 PVD / CVD 光刻设备 Scanner / Track 检测设备 CD-SEM / 膜厚仪 EDA 数据采集服务器 SECS/GEM 协议 · 高频流式 FDC 数据采集服务器 APC 系统 · 按Lot汇总 量测数据服务器 良率/缺陷/膜厚 时序数据库 InfluxDB / TimescaleDB 关系数据库 PostgreSQL / Oracle

2.2 数据清洗:缺失值与异常值处理

原始SPC数据普遍存在质量问题。传感器漂移、通信中断、维护停机等都会导致数据缺失或异常。清洗策略需根据数据特征和业务场景选择。

2.2.1 缺失值处理

方法 适用场景 优点 缺点
删除缺失行 缺失率 < 5%,且随机分布 简单、无偏差引入 样本量减少,可能丢失信息
前向填充 (ffill) 传感器短暂中断,值缓慢变化 保持时序连续性 在跳变点引入滞后误差
线性插值 温度、压力等连续物理量 平滑过渡,符合物理规律 对突变区间估计不准
模型预测填充 缺失率较高,且存在相关特征 精度高,利用多变量信息 计算开销大,需避免过拟合
关键原则:在半导体良率场景中,不要对缺失率超过40%的参数进行填充。这类参数通常传感器已失效,填充会引入虚假模式,严重干扰模型训练。

2.2.2 异常值检测与处理

SPC数据中的异常值通常分为三类:全局异常点(超出3σ限)、上下文异常点(在特定工艺步骤中偏离正常模式)、集合异常点(单点正常但组合模式异常)。

常用检测方法包括:

  • Z-Score 法:计算每个点与均值的标准差倍数,阈值通常设为3。
  • IQR 法:四分位距法,超出 Q1-1.5×IQR 或 Q3+1.5×IQR 视为异常。
  • 移动窗口法:在时序数据中,计算滑动窗口内的局部均值和标准差,检测局部离群点。
  • 孤立森林:基于树模型的无监督异常检测,适合高维参数。
SPC异常值检测流程 原始SPC数据 Z-Score 检测 IQR 检测 移动窗口检测 投票融合:至少2种方法标记为异常 标记异常标签
避坑提醒:不要将异常值直接删除。在良率预测中,异常值往往对应设备故障或工艺偏移,是预测模型需要学习的关键信号。建议先标记异常标签,保留原始值,在特征工程阶段再决定处理方式。

2.3 数据标准化与归一化

不同SPC参数的量纲和数值范围差异巨大(如温度800℃ vs 压力10mTorr)。标准化和归一化将各特征缩放到统一尺度,避免大数值特征主导模型训练。

方法 公式 输出范围 适用模型
Z-Score 标准化 \( x' = \frac{x - \mu}{\sigma} \) 均值0,标准差1 线性回归、SVM、PCA
Min-Max 归一化 \( x' = \frac{x - x_{min}}{x_{max} - x_{min}} \) [0, 1] 神经网络、KNN、梯度下降类
Robust 缩放 \( x' = \frac{x - median}{IQR} \) 受异常值影响小 含较多异常点的SPC数据

以下代码展示了使用Python进行三种缩放的实际操作:

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler

# 示例:SPC参数数据框
df_spc = pd.DataFrame({
    'temperature': [780, 795, 810, 788, 802],
    'pressure': [12.5, 11.8, 13.2, 12.0, 11.5],
    'rf_power': [1500, 1520, 1480, 1510, 1495]
})

# 1. Z-Score 标准化
scaler_std = StandardScaler()
df_std = pd.DataFrame(
    scaler_std.fit_transform(df_spc),
    columns=df_spc.columns
)

# 2. Min-Max 归一化
scaler_mm = MinMaxScaler()
df_mm = pd.DataFrame(
    scaler_mm.fit_transform(df_spc),
    columns=df_spc.columns
)

# 3. Robust 缩放(推荐用于SPC数据)
scaler_rob = RobustScaler()
df_rob = pd.DataFrame(
    scaler_rob.fit_transform(df_spc),
    columns=df_spc.columns
)

print("Z-Score 标准化结果:\n", df_std)
print("\nMin-Max 归一化结果:\n", df_mm)
print("\nRobust 缩放结果:\n", df_rob)
推荐选择:对于半导体SPC数据,优先使用 Robust 缩放。因为SPC数据中常存在由设备维护或工艺切换引起的离群点,Robust缩放基于中位数和IQR,对这些离群点不敏感,能保持正常数据的分布结构。

2.4 时间序列对齐

良率预测面临的核心挑战之一是多源数据的时间对齐。EDA数据以秒级频率采集,FDC数据按Lot汇总,良率数据则在晶圆完成所有工艺步骤后才产生。三者时间粒度不同,必须对齐到统一的时间轴上。

2.4.1 对齐策略

  • 降采样对齐:将高频EDA数据按Lot或时间段聚合为均值/中位数/标准差,与FDC和良率数据对齐。
  • 时间窗口对齐:以良率测试时间为锚点,向前取固定时间窗口(如前24小时)内的所有SPC统计量。
  • 事件对齐:以工艺步骤(如刻蚀开始/结束)为事件标记,对齐不同设备在同一工艺步骤的数据。
多源SPC数据时间对齐示意图 时间轴 EDA 高频数据 (1 Hz) Lot1 Lot2 Lot3 Lot4 FDC 批次数据 (按Lot) 良率测试1 良率测试2 良率数据 (按批次)

2.4.2 对齐实现示例

以下代码演示了将EDA高频数据降采样为Lot级别统计量,并与FDC和良率数据合并:

import pandas as pd

# 模拟EDA高频数据(秒级)
eda_data = pd.DataFrame({
    'timestamp': pd.date_range('2024-01-01 08:00:00', periods=3600, freq='1s'),
    'temperature': 780 + np.random.randn(3600) * 5,
    'lot_id': ['Lot001']*1800 + ['Lot002']*1800
})

# 按Lot降采样为均值
eda_lot = eda_data.groupby('lot_id').agg({
    'temperature': ['mean', 'std', 'min', 'max']
}).reset_index()
eda_lot.columns = ['lot_id', 'temp_mean', 'temp_std', 'temp_min', 'temp_max']

# 模拟FDC数据
fdc_data = pd.DataFrame({
    'lot_id': ['Lot001', 'Lot002'],
    'pressure_mean': [12.3, 11.9],
    'rf_power_mean': [1505, 1498]
})

# 模拟良率数据
yield_data = pd.DataFrame({
    'lot_id': ['Lot001', 'Lot002'],
    'yield_pct': [92.5, 94.1]
})

# 合并对齐
merged_data = eda_lot.merge(fdc_data, on='lot_id').merge(yield_data, on='lot_id')
print("对齐后的数据集:\n", merged_data)
对齐质量检查:对齐完成后,务必检查时间戳的覆盖完整性。常见问题包括:EDA数据在良率测试时间点之后才采集(数据泄露)、FDC数据缺失导致Lot无法对齐、时区不一致导致时间偏移。建议在预处理流水线中加入时间戳校验步骤。

2.5 本章小结

SPC数据采集与预处理是良率预测模型的基石。本章覆盖了从EDA/FDC数据源识别、缺失值与异常值清洗、标准化/归一化方法选择,到多源时间序列对齐的完整流程。经过本章处理后的数据,将进入下一阶段的特征工程与模型构建环节。