3. STDF核心记录解析
STDF(Standard Test Data Format)是半导体测试数据的通用交换格式,其文件由一系列记录(Record)顺序拼接而成。每条记录以 2 字节记录长度、1 字节记录类型(REC_TYP)、1 字节记录子类型(REC_SUB)开头,随后是固定字段与可选字段。理解各记录字段含义,是后续 Bin 统计、良率分析与量产监控自动化的基础。本节按“文件级—批次级—晶圆级—芯片级—测试项级—汇总级”的顺序,梳理核心记录及其解析方法。
一、记录分层与整体结构
STDF 记录可按作用范围分为五层:文件级(FAR、ATR)、批次级(MIR、MRR、PCR、HBR、SBR)、晶圆级(WIR、WRR、WCR)、芯片级(PIR、PRR)、测试项级(TSR、PTR、MPR、FTR、BPS、EPS)。解析时通常采用“状态机”方式:读到 MIR 进入批次上下文,读到 WIR 进入晶圆上下文,读到 PIR 进入芯片上下文,PRR 结束当前芯片,PTR/MPR/FTR 归属于最近一次 PIR 对应的芯片。
二、文件级与批次级记录
FAR(File Attributes Record)是文件首记录,包含 CPU 类型、STDF 版本、记录长度字节数等,用于确定后续记录的字节序与字段宽度。ATR(Audit Trail Record)记录文件修改历史,如修改时间、修改人、修改说明,常用于追溯数据是否被人工编辑。
MIR(Master Information Record)是批次主信息,字段包括:批次号(LOT_ID)、晶圆标识(WAFER_ID)、测试程序名(TEST_COD)、测试代码、操作员、测试日期时间、设备型号等。MRR(Master Results Record)是批次结束记录,包含批次总测试数、总合格数、总不合格数、批次结束时间等,是批次良率的第一手来源。
PCR(Part Count Record)按 Bin 统计芯片数量,字段包括 Bin 号、Bin 类型(P/F)、Bin 计数。HBR(Hardware Bin Record)与SBR(Software Bin Record)分别记录硬件 Bin 和软件 Bin 的计数与名称。硬件 Bin 由测试机硬件比较器直接判定,软件 Bin 由测试程序逻辑判定,两者可能不一致,是排障重点。
三、晶圆级与芯片级记录
WIR(Wafer Information Record)标记晶圆测试开始,包含晶圆 ID、起始坐标。WRR(Wafer Results Record)汇总晶圆测试结果,WCR(Wafer Configuration Record)记录晶圆配置信息。这三者构成晶圆级上下文。
PIR(Part Information Record)标记一颗芯片测试开始,包含芯片坐标(X、Y)。PRR(Part Results Record)标记芯片测试结束,包含硬件 Bin、软件 Bin、坐标、测试时间等。解析时,PIR 与 PRR 成对出现,中间夹着该芯片的所有 PTR/MPR/FTR。
四、测试项级记录
TSR(Test Synopsis Record)汇总某个测试项的统计结果,包括测试编号、测试名称、执行次数、失败次数、最小值、最大值、平均值、标准差等,是测试项良率分析的核心。PTR(Parametric Test Record)记录一次参数测试结果,字段包括测试编号、结果值、上下限、单位、测试时间。MPR(Multiple-Result Parametric Record)记录一次测试的多个结果值,常用于多引脚并行测试。FTR(Functional Test Record)记录功能测试结果,包含测试编号、通过/失败标志、失败引脚、失败向量等。
BPS(Begin Program Section)与EPS(End Program Section)标记测试程序段落的开始与结束,用于将测试项分组,便于按程序段统计良率。
| 记录 | 作用范围 | 关键字段 | 解析要点 |
|---|---|---|---|
| FAR | 文件 | CPU类型、STDF版本 | 确定字节序与字段宽度 |
| MIR | 批次 | LOT_ID、WAFER_ID、TEST_COD | 建立批次上下文 |
| MRR | 批次 | 总测试数、总合格数 | 批次良率来源 |
| PCR | 批次 | Bin号、Bin计数 | 按Bin统计数量 |
| HBR/SBR | 批次 | Bin号、Bin名称、计数 | 硬件/软件Bin对比 |
| PIR/PRR | 芯片 | 坐标、硬件Bin、软件Bin | 成对解析,确定芯片归属 |
| PTR | 测试项 | 测试编号、结果值、上下限 | 参数测试明细 |
| MPR | 测试项 | 测试编号、多结果值 | 多引脚并行测试 |
| FTR | 测试项 | 测试编号、通过标志、失败引脚 | 功能测试明细 |
| TSR | 测试项 | 测试编号、失败次数、均值、标准差 | 测试项良率汇总 |
| BPS/EPS | 测试项 | 程序段标识 | 按程序段分组统计 |
五、解析方法与代码示例
解析 STDF 时,推荐使用成熟库(如 Python 的 pystdf、semiconductor-stdf)读取,再按记录类型分发处理。以下示例展示如何按记录类型提取关键字段:
from pystdf import Parser, Visitor
class MyVisitor(Visitor):
def visitMIR(self, rec):
print("批次:", rec.get_value("LOT_ID"),
"晶圆:", rec.get_value("WAFER_ID"))
def visitPIR(self, rec):
print("芯片坐标:", rec.get_value("HEAD_NUM"),
rec.get_value("SITE_NUM"))
def visitPRR(self, rec):
print("硬件Bin:", rec.get_value("HARD_BIN"),
"软件Bin:", rec.get_value("SOFT_BIN"))
def visitPTR(self, rec):
print("测试项:", rec.get_value("TEST_NUM"),
"结果:", rec.get_value("RESULT"),
"下限:", rec.get_value("LO_LIMIT"),
"上限:", rec.get_value("HI_LIMIT"))
parser = Parser()
parser.addVisitor(MyVisitor())
with open("test.stdf", "rb") as f:
parser.parse(f)
六、常见误区与复盘
- 误区一:忽略 PIR/PRR 配对。若只读 PRR 而不维护 PIR 上下文,芯片坐标与测试项将无法正确关联。
- 误区二:混淆硬件 Bin 与软件 Bin。HBR 与 SBR 可能不一致,良率统计应明确使用哪一套 Bin 口径。
- 误区三:跳过 BPS/EPS。程序段信息丢失后,无法按测试阶段定位良率损失。
- 误区四:直接按行读取。STDF 是二进制格式,必须按记录长度与类型解析,不能按文本行处理。
掌握上述记录字段与解析方法后,即可从 STDF 文件中稳定提取批次、晶圆、芯片、测试项四个维度的数据,为后续 Bin 分析与量产监控自动化打下坚实基础。