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)处理,避免统计被污染。
- 整体良率按所有测试点汇总,而非各晶圆良率的平均。
- 各测试项通过率即该列均值,可直接定位低通过率项。