Spec 不是一个抽象概念,它对应着具体的物理量测指标。以下是几个最常见的:
●THK (Thickness / 膜厚)
○含义: 沉积在晶圆上的薄膜厚度。这是 PVD, CVD, ALD 工艺最核心的 Spec。
○示例: 一个工艺可能要求 Target = 100nm。
●THKU (Thickness Uniformity / 膜厚均匀性)
○含义: 衡量晶圆表面的薄膜厚度是否一致。值越小越好。
○衡量: 通常用百分比表示(例如 Spec 要求 < 2%),目标是越小越好(理想值为 0%)。
●Rs (Sheet Resistance / 方块电阻)
○含义: 主要用于导电薄膜(如 MDP 产出的金属膜)的 Spec。它衡量薄膜的导电能力。
○单位: Ohm/sq (欧姆每平方)。
●RsU (Sheet Resistance Uniformity / 方阻均匀性)
○含义: 衡量导电薄膜在晶圆表面的方阻是否一致。
○衡量: 同样用百分比表示,值越小越好。
●RI (Refractive Index / 折射率)
○含义: 主要用于 DDP 产出的介电(绝缘)薄膜。这是材料的光学特性,反映了薄膜的成分和致密性。

predictions = {key: np.zeros((batch_size, 1)) for key in loaded_models.keys()}
ci_lower = {key: np.zeros((batch_size, 1)) for key in loaded_models.keys()}
ci_upper = {key: np.zeros((batch_size, 1)) for key in loaded_models.keys()}

for batch_idx in range(batch_size):
    current_weights = name_to_weight_list[batch_idx]
    
    for key, models in loaded_models.items():
        model_weight_list = []
        for model in models:
            base_name = model['name'].replace(f'#{key}', '')
            if base_name in current_weights:
                model_weight = current_weights[base_name]
                model_weight_list.append((model, model_weight))
        
        # 按权重降序排序,取前30个模型
        top30_models = sorted(model_weight_list, key=lambda x: x[1], reverse=True)[:30]
        
        # 提取top30模型的权重并归一化
        top30_weights = np.array([weight for _, weight in top30_models])
        # 防止权重和为0导致除零错误
        weight_sum = np.sum(top30_weights)
        if weight_sum > 0:
            normalized_weights = top30_weights / weight_sum
        else:
            # 若所有权重都为0,赋予均等权重
            normalized_weights = np.ones(len(top30_models)) / len(top30_models)
        
        # 用归一化后的权重计算预测值和置信区间
        for (model, orig_weight), norm_weight in zip(top30_models, normalized_weights):
            # 单样本预测
            pred = model['model'].predict(diff_x[batch_idx:batch_idx + 1]).reshape(1)
            residual_std = model.get('model').residual_std if hasattr(model['model'], 'residual_std') else 0.0
            
            # 应用归一化权重累加预测值
            predictions[key][batch_idx] += pred[0] * norm_weight
            
            # 应用归一化权重累加置信区间
            ci_lower[key][batch_idx] += (pred[0] - 0.67 * residual_std) * norm_weight
            ci_upper[key][batch_idx] += (pred[0] + 0.67 * residual_std) * norm_weight
        
        # 可选:打印当前batch的权重归一化信息(方便调试)
        print(f"Batch {batch_idx} - {key}: "
              f"top30模型数={len(top30_models)}, "
              f"原始权重和={weight_sum:.6f}, "
              f"归一化权重和={np.sum(normalized_weights):.6f}")