Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

数字芯片测试数据分析与判定工具

一个基于 C++17 和 Python 的数字芯片测试数据处理项目。

项目使用标准化 CSV 文件模拟 ATE 测试设备产生的芯片测量数据。C++ 程序负责数据校验、上下限判定、Hard Bin/Soft Bin 分类、异常识别和芯片级结果汇总;Python程序负责多批次良率、复测率、失效频次和Top 3失效项目分析,并自动生成良率趋势图和失效Pareto图。

本项目中的芯片参数和测量数据均为模拟数据,不对应特定型号的真实芯片。

主要功能

  • 读取标准化芯片测试项目配置
  • 读取多批次芯片测量记录
  • 根据上下限自动判定PASS和FAIL
  • 支持Hard Bin和Soft Bin分类
  • 支持多测试项失效优先级
  • 识别缺失值和非法数字
  • 识别重复测试记录
  • 识别未知测试项目
  • 识别测试设备通信中断
  • 输出单项测试判定结果
  • 输出芯片级汇总结果
  • 记录程序运行和错误日志
  • 计算首测良率和最终良率
  • 计算复测率和异常率
  • 统计失效项目频次
  • 提取Top 3失效测试项
  • 生成批次良率趋势图
  • 生成失效Pareto图
  • 支持Pytest自动化测试
  • 支持PowerShell一键运行完整流程

技术栈

  • C++17
  • CMake
  • Visual Studio C++编译器
  • Python 3.13
  • Pandas
  • Matplotlib
  • NumPy
  • Pytest
  • PowerShell
  • Git

系统处理流程

测试项目配置CSV
        +
芯片原始测量CSV
        |
        v
C++数据读取和校验
        |
        v
Pass/Fail/Invalid判定
        |
        v
Hard Bin / Soft Bin分类
        |
        +-------------------------+
        |                         |
        v                         v
judged_records.csv        chip_summary.csv
                                  |
                                  v
                         Python批次统计分析
                                  |
                 +----------------+----------------+
                 |                |                |
                 v                v                v
             良率统计          失效频次         Top 3失效项
                 |                |
                 v                v
          yield_trend.png  failure_pareto.png

项目结构

ChipTestDataTool
├── config
│   └── test_item_specs.csv
├── cpp_engine
│   ├── include
│   │   ├── csv_reader.h
│   │   ├── judgment_engine.h
│   │   ├── logger.h
│   │   ├── models.h
│   │   └── result_writer.h
│   └── src
│       ├── csv_reader.cpp
│       ├── judgment_engine.cpp
│       ├── logger.cpp
│       ├── main.cpp
│       └── result_writer.cpp
├── data
│   ├── input
│   │   └── raw_measurements.csv
│   └── output
│       ├── chip_summary.csv
│       └── judged_records.csv
├── python
│   ├── __init__.py
│   ├── analyze_results.py
│   └── generate_sample_data.py
├── reports
│   ├── batch_summary.csv
│   ├── failure_frequency.csv
│   ├── failure_pareto.png
│   ├── top3_fail_items.csv
│   └── yield_trend.png
├── tests
│   ├── datasets
│   │   ├── abnormal_measurements.csv
│   │   └── basic_judgment.csv
│   ├── test_analysis.py
│   └── test_engine_integration.py
├── .gitignore
├── CMakeLists.txt
├── README.md
├── requirements.txt
└── run_pipeline.ps1

输入数据格式

测试项目配置

配置文件:

config/test_item_specs.csv

字段:

字段 说明
test_item_id 测试项目编号
test_item_name 测试项目名称
category 测试类别
lower_limit 合格下限
upper_limit 合格上限
unit 测量单位
fail_hard_bin 失败Hard Bin
fail_soft_bin 失败Soft Bin
priority 多项失败时的选择优先级

原始测量数据

输入文件:

data/input/raw_measurements.csv

字段:

字段 说明
batch_id 芯片批次编号
chip_id 芯片编号
retest_no 复测次数,0表示首测
test_time 测试时间
station_id 测试设备或工位编号
test_item_id 测试项目编号
value 原始测量值
comm_status 通信状态

一条测量记录的唯一键为:

batch_id + chip_id + retest_no + test_item_id

判定规则

测量值满足下面条件时判定为PASS:

lower_limit <= value <= upper_limit

因此测量值刚好等于下限或上限时仍然属于PASS。

Bin规则

判定类型 Hard Bin Soft Bin
PASS 1 1
功能测试失败 2 101
VOH失败 3 201
VOL失败 3 202
IDDQ失败 3 203
传播延迟失败 4 301
数据异常 9 901~905

异常代码

错误代码 Soft Bin 说明
E000 1 无异常
F_LOW 按测试配置 测量值低于下限
F_HIGH 按测试配置 测量值高于上限
E_MISSING_FIELD 901 必填字段缺失
E_INVALID_NUMBER 902 测量值不是合法数字
E_DUPLICATE_RECORD 903 测试记录重复
E_UNKNOWN_ITEM 904 未知测试项目
E_COMM_TIMEOUT 905 测试设备通信异常

芯片级最终结果优先级:

INVALID > FAIL > PASS

当一颗芯片有多个测试项目失败时,选择priority数值最小的项目作为最终Bin。

安装Python依赖

py -3.13 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt

C++配置和编译

cmake -S . -B build -A x64
cmake --build build --config Debug

生成的程序:

build/Debug/chip_test_engine.exe

默认运行方式

.\build\Debug\chip_test_engine.exe

默认读取:

config/test_item_specs.csv
data/input/raw_measurements.csv

默认输出:

data/output/judged_records.csv
data/output/chip_summary.csv
data/output/engine_run.log

指定输入输出文件

.\build\Debug\chip_test_engine.exe <配置文件> <测量文件> <单项输出文件> <芯片汇总文件>

异常数据测试示例:

.\build\Debug\chip_test_engine.exe .\config\test_item_specs.csv .\tests\datasets\abnormal_measurements.csv .\data\output\abnormal_judged_records.csv .\data\output\abnormal_chip_summary.csv

Python分析

生成多批次模拟数据:

.\.venv\Scripts\python.exe .\python\generate_sample_data.py

运行统计分析:

.\.venv\Scripts\python.exe .\python\analyze_results.py

一键运行完整流程

powershell -ExecutionPolicy Bypass -File .\run_pipeline.ps1

一键流程会依次执行:

  1. 生成5批次模拟数据
  2. 运行C++判定引擎
  3. 运行Python统计分析
  4. 执行Pytest自动化测试

自动化测试

.\.venv\Scripts\python.exe -m pytest -v

当前包含4项自动化测试:

  • 基础上下限和边界判定
  • 缺失、非法、重复、未知和通信异常处理
  • 多批次良率和复测率计算
  • 失效项目频次与Top 3排名

预期结果:

4 passed

演示数据结果

项目默认生成5个批次、100颗芯片和600条测量记录。

批次 首测良率 最终良率 复测率
BATCH_001 70% 90% 30%
BATCH_002 75% 95% 25%
BATCH_003 80% 95% 20%
BATCH_004 85% 100% 15%
BATCH_005 90% 100% 10%

主要失效项目:

排名 测试项目 失效次数
1 T_IDDQ 12
2 T_TPD 5
3 T_VOH 3

可扩展方向

  • 接入真实ATE设备日志
  • 支持更多芯片型号和测试规格
  • 增加数据库存储
  • 增加图形化操作界面
  • 增加晶圆图和Bin分布图
  • 增加CP、FT测试阶段对比
  • 增加SPC和制程能力分析

About

一款用于芯片测试数据判断及良率分析的C++和Python开发工具。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages