4. 数据采集与预处理

在半导体制造中,良率预测模型的性能高度依赖于输入数据的质量。本章聚焦于从FDC(设备状态监控)、WAT(晶圆允收测试)和CP(芯片探测)等数据源采集原始数据,并完成对齐、清洗、缺失值处理与异常值检测等关键预处理步骤。高质量的数据预处理是模型训练成功的基石。

数据采集与预处理流程 数据采集与预处理流程 FDC 传感器数据 WAT 测试数据 CP 测试数据 数据对齐与清洗 时间戳对齐 晶圆ID匹配 重复/无效数据删除 数据格式统一 单位转换 缺失值处理与异常检测 缺失值处理 - 均值/中位数填充 - 前向/后向填充 - 插值法 异常值检测 - IQR / Z-Score / DBSCAN - 领域知识规则 高质量训练集

4.1 传感器数据(FDC)

FDC(Fault Detection and Classification)系统实时采集设备运行过程中的传感器参数,如温度、压力、气体流量、射频功率、电极电压等。这些数据通常以高频率(秒级或毫秒级)记录,是反映设备状态和工艺稳定性的第一手资料。

数据类型 典型参数 采样频率 数据量级(单腔/天)
温度 加热器温度、腔体壁温、基座温度 1~10 Hz ~1 GB
压力 腔体压力、气体分压 1~5 Hz ~500 MB
流量 MFC设定值、实际流量 1~10 Hz ~800 MB
射频功率 正向功率、反射功率、阻抗 10~100 Hz ~5 GB
关键点: FDC数据是时间序列数据,必须保留时间戳信息。在采集时,建议同步记录设备ID、腔室ID、工艺配方ID和晶圆ID,以便后续对齐。

4.2 测试数据(WAT / CP)

WAT(Wafer Acceptance Test)和CP(Chip Probing)数据是良率预测模型的目标变量来源。WAT在晶圆完成所有工艺后、划片前进行,测量测试键(Test Key)的电学参数;CP则在划片后对每颗芯片进行功能测试。

  • WAT数据: 包含Vt(阈值电压)、Ids(饱和电流)、Rs(薄层电阻)、Cox(栅氧电容)等参数。每个晶圆通常有数十到数百个测试键,数据以晶圆为单位汇总。
  • CP数据: 包含每颗芯片的良/不良标记(Bin)、测试项失效码、电流/电压测试值等。数据量巨大,单片12英寸晶圆可包含数万颗芯片。
数据对齐挑战: WAT/CP数据通常以晶圆ID或芯片坐标为主键,而FDC数据以时间戳为主键。必须建立晶圆ID与工艺时间段的映射关系,才能将设备状态数据与测试结果关联起来。

4.3 数据对齐与清洗

数据对齐是预处理中最关键的步骤之一。由于FDC、WAT和CP数据来自不同的系统,时间粒度和主键不同,必须通过以下步骤实现精确对齐:

  1. 时间戳对齐: 将FDC时间序列数据按晶圆加工时间段进行切片,提取每片晶圆对应的设备状态统计量(均值、标准差、最大值、最小值等)。
  2. 晶圆ID匹配: 以晶圆ID为桥梁,将FDC统计特征与WAT/CP测试结果进行合并。确保每个样本(晶圆或芯片)包含完整的工艺特征和测试标签。
  3. 重复与无效数据删除: 检查并删除因系统重传、日志重复等原因产生的重复记录。删除传感器故障、设备维护期间产生的无效数据。
  4. 格式与单位统一: 确保所有数值型字段的单位一致(如温度统一为摄氏度,压力统一为Torr),分类变量编码统一。
数据对齐流程 数据对齐流程 步骤1 时间戳切片 步骤2 晶圆ID匹配 步骤3 去重与无效删除 步骤4 格式统一 对齐后的完整数据集

4.4 缺失值处理

半导体数据中缺失值普遍存在,原因包括传感器故障、通信中断、测试跳过等。缺失值处理不当会严重影响模型训练效果。常用策略如下:

方法 适用场景 优点 缺点
删除缺失样本 缺失率低(<5%) 简单、无偏差引入 样本量减少,可能丢失信息
均值/中位数填充 数值型特征,缺失随机 计算简单,保持均值 降低方差,可能引入偏差
前向/后向填充 时间序列数据 利用时间相关性 不适用于非时序数据
线性插值 连续变化的时间序列 平滑、合理 计算量稍大
模型预测填充 缺失率较高,特征相关性强 精度高 计算复杂,可能过拟合
注意: 在填充缺失值时,务必使用训练集统计量(如均值)填充验证集和测试集,避免数据泄露。对于时间序列数据,建议先按时间排序再进行填充。

4.5 异常值检测

异常值可能源于传感器漂移、设备故障、工艺波动或人为错误。异常值会误导模型学习,导致预测偏差。常用的异常值检测方法包括:

  • 统计方法:
    • IQR(四分位距法): 定义 Q1 - 1.5*IQR 和 Q3 + 1.5*IQR 为正常范围,超出即为异常。
    • Z-Score: 计算每个数据点与均值的标准差倍数,通常阈值设为3。
  • 基于密度的方法:
    • DBSCAN: 基于密度的聚类算法,将低密度区域中的点标记为异常。
    • LOF(局部异常因子): 衡量数据点相对于其邻域的局部密度偏差。
  • 基于领域知识的方法:
    • 根据工艺规范设定参数上下限(如温度不得超过400°C)。
    • 利用设备维护记录标记已知异常时间段。
异常值检测方法对比 异常值检测方法对比 IQR 四分位距法 Q1 - 1.5*IQR Q3 + 1.5*IQR 适用于单变量 对数据分布不敏感 计算快速 适合初步筛选 Z-Score 标准化法 |Z| > 3 视为异常 假设数据正态分布 适用于大样本 对极端值敏感 可量化异常程度 需配合正态性检验 DBSCAN 密度聚类 低密度点 = 异常 适用于多变量 无需预设类别数 可发现任意形状簇 参数(eps, minPts)敏感 计算复杂度较高

4.6 预处理代码示例

以下Python代码展示了使用Pandas和Scikit-learn进行数据对齐、缺失值填充和异常值检测的典型流程:

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler

# 1. 加载FDC、WAT、CP数据
fdc_data = pd.read_csv('fdc_sensor_data.csv', parse_dates=['timestamp'])
wat_data = pd.read_csv('wat_test_data.csv')
cp_data = pd.read_csv('cp_probe_data.csv')

# 2. 数据对齐:以晶圆ID为键合并
# 假设fdc_data已按晶圆加工时间段聚合为每片晶圆的统计特征
merged_data = pd.merge(fdc_data, wat_data, on='wafer_id', how='inner')
merged_data = pd.merge(merged_data, cp_data, on='wafer_id', how='inner')

# 3. 删除重复行
merged_data = merged_data.drop_duplicates()

# 4. 缺失值处理:数值列用中位数填充
numeric_cols = merged_data.select_dtypes(include=[np.number]).columns
for col in numeric_cols:
    if merged_data[col].isnull().sum() > 0:
        median_val = merged_data[col].median()
        merged_data[col].fillna(median_val, inplace=True)

# 5. 异常值检测:使用Z-Score方法
scaler = StandardScaler()
scaled_data = scaler.fit_transform(merged_data[numeric_cols])
z_scores = np.abs(scaled_data)
outlier_mask = (z_scores > 3).any(axis=1)
print(f"检测到 {outlier_mask.sum()} 个异常样本")

# 6. 移除异常样本(或根据业务规则进行修正)
clean_data = merged_data[~outlier_mask].copy()

# 7. 保存预处理后的数据
clean_data.to_csv('preprocessed_training_data.csv', index=False)
最佳实践: 在实际项目中,建议将数据预处理流程封装为Pipeline,确保训练、验证和测试集使用完全相同的变换逻辑。同时,记录每一步的统计量(如填充中位数、缩放参数),以便在模型部署时对新数据应用相同的预处理。