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 对应的芯片。

STDF 记录分层与归属关系 文件级 FAR / ATR 批次级 MIR / MRR / PCR / HBR / SBR 晶圆级 WIR / WRR / WCR 芯片级 PIR / PRR 测试项级 TSR / PTR / MPR / FTR / BPS / EPS 解析状态机: MIR → 批次上下文 → WIR → 晶圆上下文 → PIR → 芯片上下文 → PTR/MPR/FTR → PRR → 下一芯片 每条 PTR/MPR/FTR 归属于最近一次 PIR 对应的芯片;PRR 携带该芯片的硬件 Bin 与软件 Bin。 TSR 汇总测试项统计,MRR 汇总批次结果,PCR 汇总晶圆测试结果。

二、文件级与批次级记录

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)
提示:解析前务必先读 FAR 确定 CPU 类型(大端/小端)与浮点格式,否则 PTR 中的 RESULT 会解析为错误数值。这是 STDF 解析最常见的“第一坑”。

六、常见误区与复盘

  • 误区一:忽略 PIR/PRR 配对。若只读 PRR 而不维护 PIR 上下文,芯片坐标与测试项将无法正确关联。
  • 误区二:混淆硬件 Bin 与软件 Bin。HBR 与 SBR 可能不一致,良率统计应明确使用哪一套 Bin 口径。
  • 误区三:跳过 BPS/EPS。程序段信息丢失后,无法按测试阶段定位良率损失。
  • 误区四:直接按行读取。STDF 是二进制格式,必须按记录长度与类型解析,不能按文本行处理。
复盘建议:建立“记录类型—字段—用途”映射表,并在解析器中加入记录计数校验(如 PIR 数应等于 PRR 数),可快速发现文件截断或解析遗漏。

掌握上述记录字段与解析方法后,即可从 STDF 文件中稳定提取批次、晶圆、芯片、测试项四个维度的数据,为后续 Bin 分析与量产监控自动化打下坚实基础。