4、测试数据格式解析:STDF格式介绍、ATDF格式介绍、CSV/Excel数据格式、常见数据字段含义
在半导体测试工程中,数据格式是连接测试机台(Tester)与良率分析系统(YMS)的桥梁。不同的测试阶段(CP/FT)和不同的设备供应商(Teradyne、Advantest、Chroma)会产出不同格式的数据文件。本章将深入解析四种主流数据格式的结构、适用场景及核心字段含义,帮助你在实际工作中准确解析与转换测试数据。
4.1 测试数据格式全景图
下图展示了从测试机台原始输出到良率分析系统的数据流转路径,以及各格式在流程中的位置。
4.2 STDF 格式详解
STDF(Standard Test Data Format) 是半导体测试行业最广泛使用的二进制数据格式,由 Teradyne 公司制定并开放。几乎所有主流测试机台(如 Teradyne J750、UltraFLEX、Advantest T2000)都支持直接输出 STDF 文件。
4.2.1 STDF 文件结构
STDF 文件由一系列记录(Record)组成,每条记录包含记录类型、长度和数据体。核心记录类型如下:
| 记录类型 | 记录代码 | 描述 | 关键字段 |
|---|---|---|---|
| 文件头 | FAR | 标识 STDF 版本和文件结构 | 版本号、记录长度 |
| 零件信息 | PIR | 每个被测器件(DUT)的开始标记 | HEAD_NUM、SITE_NUM、PART_ID |
| 测试结果 | PTR | 单个测试项的数值结果 | TEST_NUM、RESULT、TEST_TXT |
| 参数测试结果 | MPR | 多参数测试结果(如 Pin 测试) | TEST_NUM、RESULT_ARRAY |
| 零件结束 | PRR | 每个 DUT 的结束标记,包含良率判定 | HARD_BIN、SOFT_BIN、PART_FLG |
| 测试汇总 | TSR | 测试项统计汇总 | TEST_NUM、AVG、STD_DEV |
pySTDF 或 stdf2csv)进行解析。解析时需注意字节序(Endianness)对齐,不同机台可能使用 Big-Endian 或 Little-Endian。
4.2.2 STDF 解析流程
4.3 ATDF 格式详解
ATDF(Advanced Test Data Format) 是另一种行业标准格式,由 SEMI 组织标准化(SEMI E148)。与 STDF 的二进制结构不同,ATDF 采用 ASCII 文本格式,可读性更强,但文件体积较大。
4.3.1 ATDF 与 STDF 对比
| 对比维度 | STDF | ATDF |
|---|---|---|
| 编码方式 | 二进制 | ASCII 文本 |
| 文件大小 | 小(压缩率高) | 大(约为 STDF 的 3~5 倍) |
| 可读性 | 不可直接阅读 | 可用文本编辑器打开 |
| 解析速度 | 快(二进制流处理) | 较慢(文本解析) |
| 标准化组织 | Teradyne(事实标准) | SEMI(正式标准) |
| 主要应用 | CP/FT 量产数据 | 工程验证、数据交换 |
4.3.2 ATDF 文件结构示例
ATDF 文件以行为单位,每行以关键字开头,后跟字段值。以下是一个简化的 ATDF 片段:
HEADER: VERSION 2.0, DATE 2024-03-15, LOT ABC123
PART: ID DUT001, HEAD 0, SITE 0
TEST: NUM 1, NAME VDD_MIN, RESULT 1.25, UNIT V, LOW_LIMIT 1.10, HIGH_LIMIT 1.40
TEST: NUM 2, NAME IDDQ, RESULT 0.002, UNIT A, LOW_LIMIT 0.0, HIGH_LIMIT 0.005
BIN: HARD 1, SOFT 1, FLAG PASS
END: PART
4.4 CSV / Excel 数据格式
在实际工程中,CSV(逗号分隔值)和 Excel(.xlsx)是最常用的数据交换格式。它们虽然缺乏 STDF/ATDF 的标准化结构,但胜在通用性强,可直接用 Excel、Python Pandas 等工具处理。
4.4.1 标准 CSV 良率数据模板
| Lot_ID | Wafer_ID | Die_X | Die_Y | Test_Item | Result | Low_Limit | High_Limit | Hard_Bin | Soft_Bin |
|---|---|---|---|---|---|---|---|---|---|
| LOT2401 | W01 | 10 | 20 | VDD_MIN | 1.25 | 1.10 | 1.40 | 1 | 1 |
| LOT2401 | W01 | 10 | 20 | IDDQ | 0.008 | 0.00 | 0.005 | 10 | 5 |
| LOT2401 | W01 | 11 | 20 | VDD_MIN | 1.30 | 1.10 | 1.40 | 1 | 1 |
1. 每行代表一个 DUT 的一个测试项(宽表格式),或每行代表一个 DUT 的所有测试项(长表格式)。
2. 必须包含 Lot_ID、Wafer_ID、Die_X、Die_Y 用于定位。
3. Hard_Bin 和 Soft_Bin 是良率核算的核心字段,Hard_Bin 用于最终良率判定,Soft_Bin 用于失效分类。
4.5 常见数据字段含义与映射
无论使用哪种格式,以下字段是良率核算中必须理解和正确映射的:
| 字段名称 | STDF 对应 | ATDF 对应 | CSV 建议名称 | 含义说明 |
|---|---|---|---|---|
| 批次号 | WIR/LOT_ID | HEADER/LOT | Lot_ID | 晶圆批次的唯一标识 |
| 晶圆编号 | WIR/WAFER_ID | HEADER/WAFER | Wafer_ID | 批次内晶圆的编号 |
| 芯片X坐标 | PIR/DIE_X | PART/X | Die_X | 芯片在晶圆上的行坐标 |
| 芯片Y坐标 | PIR/DIE_Y | PART/Y | Die_Y | 芯片在晶圆上的列坐标 |
| 测试项编号 | PTR/TEST_NUM | TEST/NUM | Test_Item | 测试项的唯一编号或名称 |
| 测试结果 | PTR/RESULT | TEST/RESULT | Result | 测试项的实际测量值 |
| 下限 | PTR/LOW_LIMIT | TEST/LOW_LIMIT | Low_Limit | 测试规格下限 |
| 上限 | PTR/HIGH_LIMIT | TEST/HIGH_LIMIT | High_Limit | 测试规格上限 |
| 硬分Bin | PRR/HARD_BIN | BIN/HARD | Hard_Bin | 最终良率判定(1=Pass,其他=Fail) |
| 软分Bin | PRR/SOFT_BIN | BIN/SOFT | Soft_Bin | 失效分类码(用于分析失效原因) |
4.6 格式转换实战要点
在实际项目中,经常需要将 STDF/ATDF 转换为 CSV 进行快速分析。以下是一个基于 Python 的转换示例:
import stdf2csv
import pandas as pd
# 将 STDF 转换为 CSV
stdf2csv.convert('input.stdf', 'output.csv')
# 读取 CSV 并查看良率
df = pd.read_csv('output.csv')
# 按 Hard_Bin 统计良率
yield_rate = df[df['HARD_BIN'] == 1].shape[0] / df.shape[0]
print(f"良率: {yield_rate:.2%}")
4.7 格式选择决策指南
选择建议:
- 量产环境: 优先使用 STDF,文件小、解析快、信息完整。
- 工程验证: 使用 ATDF 便于人工检查数据内容。
- 数据分析与报告: 转换为 CSV/Excel,利用 Pandas、Tableau 等工具快速分析。
- 长期归档: 保留原始 STDF 文件,CSV 作为中间产物可定期清理。
1. 对比原始文件与转换文件的记录数(DUT 数量)是否一致。
2. 随机抽取 10~20 个 DUT,核对关键测试项结果是否一致。
3. 检查 Hard_Bin 分布是否合理(Pass Bin 占比应与预期良率接近)。