1. 晶圆良率数据读取与基础统计

晶圆良率数据读取与基础统计 学习卡片

任务说明

读取晶圆测试 CSV(每行一片晶圆,每列一个测试项,1 表示通过、0 表示失败),计算整体良率与各测试项通过率,并打印基础统计报告。

环境与数据

依赖:Python 3.8+、pandas。安装:pip install pandas。CSV 首列为晶圆编号,其余列为测试项。

实现代码

import pandas as pd

CSV_PATH = "wafer_test.csv"

def load_data(path):
    df = pd.read_csv(path)
    df = df.set_index(df.columns[0])          # 首列作为晶圆编号
    df = df.apply(pd.to_numeric, errors="coerce").fillna(0).astype(int)
    return df

def overall_yield(df):
    total = df.values.size
    passed = int(df.values.sum())
    return passed / total if total else 0.0

def item_pass_rate(df):
    return df.mean().sort_values(ascending=False)

def report(df):
    print("=== 晶圆良率基础统计报告 ===")
    print(f"晶圆数量: {df.shape[0]}")
    print(f"测试项数量: {df.shape[1]}")
    print(f"整体良率: {overall_yield(df):.2%}")
    print("\n各测试项通过率:")
    for name, rate in item_pass_rate(df).items():
        print(f"  {name:<12} {rate:.2%}")

if __name__ == "__main__":
    data = load_data(CSV_PATH)
    report(data)

运行与验证

将 CSV 与脚本放同目录,执行 python yield_report.py。示例输入 wafer_test.csv:

wafer_id,Vth,Idsat,Ron
W01,1,1,1
W02,1,0,1
W03,0,1,1
W04,1,1,0

该输入共 4×3=12 个测试点,通过 9 个,整体良率 75.00%;Vth 通过率 75.00%,Idsat 75.00%,Ron 75.00%。运行后输出与上述数值一致即通过。

关键点

  • 非数值或缺失单元格按失败(0)处理,避免统计被污染。
  • 整体良率按所有测试点汇总,而非各晶圆良率的平均。
  • 各测试项通过率即该列均值,可直接定位低通过率项。