一个基于 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。
| 判定类型 | 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。
py -3.13 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txtcmake -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生成多批次模拟数据:
.\.venv\Scripts\python.exe .\python\generate_sample_data.py运行统计分析:
.\.venv\Scripts\python.exe .\python\analyze_results.pypowershell -ExecutionPolicy Bypass -File .\run_pipeline.ps1一键流程会依次执行:
- 生成5批次模拟数据
- 运行C++判定引擎
- 运行Python统计分析
- 执行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和制程能力分析