2. STDF文件基础

STDF(Standard Test Data Format)是半导体测试行业最通用的数据交换格式,由Teradyne提出并逐步成为事实标准。它把ATE(自动测试设备)在晶圆测试(Wafer Sort)和成品测试(Final Test)中产生的海量结果,压缩成一种紧凑、可流式解析的二进制文件。理解STDF的底层结构,是后续做Bin分析、良率监控和自动化报表的第一块基石。

一、STDF标准概述与设计哲学

STDF的核心设计目标有三个:紧凑、可流式读取、可扩展。它不采用XML或JSON这类文本格式,而是用固定头部加变长记录的方式存储,使得一个包含数百万颗芯片测试结果的文件也能被逐条读取,而不必一次性载入内存。

STDF文件由一系列记录(Record)顺序组成,每条记录以4字节开头:2字节记录长度(REC_LEN)、1字节记录类型(REC_TYP)、1字节记录子类型(REC_SUB)。这种“长度+类型+子类型”的头部设计,让解析器可以跳过不认识的记录,从而实现向前兼容。

关键点:STDF是二进制流,不是文本文件。用记事本打开会看到乱码,必须用专用解析器或十六进制工具查看。

二、文件结构与记录类型

一个典型的STDF文件按逻辑分为若干段:文件头、测试程序信息、晶圆/批次信息、测试站点信息、每个芯片的测试结果、以及文件尾。每段由不同记录类型承载。

STDF记录类型用REC_TYP表示大类,REC_SUB表示子类。常见记录如下表所示:

记录类型REC_TYPREC_SUB作用
FAR010文件属性记录,标识STDF版本
ATR020审计跟踪记录,记录修改历史
MIR110主信息记录,含批次、程序名、站点
MRR120主结果记录,文件结束标志
PCR130部件计数记录,统计各Bin数量
HBR140硬件Bin记录,定义硬件Bin
SBR150软件Bin记录,定义软件Bin
PMR160引脚映射记录
PIR510部件信息记录,开始一颗芯片
PRR520部件结果记录,结束一颗芯片
PTR1510参数测试记录,含测试值
MPR1515多结果参数记录
TSR1030测试概要记录

其中,PIR/PRR成对出现,包裹一颗芯片的所有测试项;PTR记录每个参数的实测值、上下限和单位。解析时通常按“PIR → 若干PTR/MPR → PRR”的循环来提取每颗芯片的数据。

STDF 文件记录流与字节序示意 FAR 版本标识 MIR 批次/程序 HBR/SBR Bin定义 PMR 引脚映射 PCR 计数统计 MRR 文件结束 每颗芯片循环(重复 N 次) PIR 部件开始 PTR/MPR 参数结果 PRR 部件结束 字节序(Endianness) STDF 默认采用 Little-Endian(小端):低位字节在前 例如 0x1234 存储为 34 12;解析时需按小端读取多字节字段

三、字节序与版本差异

STDF默认使用小端字节序(Little-Endian)。这意味着一个2字节整数0x1234在文件中存储为0x34、0x12。解析时如果按大端读取,所有数值都会错乱。Python的struct模块中应使用<前缀,例如struct.unpack('<H', data)。

STDF主要有两个版本:V4和V4-2007。V4是经典版本,字段定义稳定;V4-2007增加了部分记录和字段,例如更丰富的测试条件信息。FAR记录中的STDF_VER字段标识版本号,解析器应据此决定字段布局。

# Python 读取 STDF 记录头示例
import struct

with open('test.stdf', 'rb') as f:
    header = f.read(4)
    rec_len, rec_typ, rec_sub = struct.unpack('<HBB', header)
    print(f'长度={rec_len}, 类型={rec_typ}, 子类型={rec_sub}')
    body = f.read(rec_len)

常见误区:不要假设所有STDF文件都是小端。极少数旧设备或转换工具可能生成大端文件,解析前应先检查FAR记录中的字节序标志,或通过已知字段值做校验。

四、常见文件命名规范与场景

在量产环境中,STDF文件通常由ATE自动生成,命名遵循一定规范,便于追溯和自动化处理。常见命名模式如下:

  • 批次_晶圆_站点_时间.stdf:如LOT123_W01_S1_20240501.stdf
  • 产品名_工序_批次_序号.stdf:如ABC123_FT_LOT456_001.stdf
  • 设备ID_日期_流水号.stdf:如ATE07_20240501_0001.stdf

命名中通常包含批次号(Lot)、晶圆号(Wafer)、测试站点(Site)、工序(FT/WS)和时间戳。自动化脚本常按文件名中的批次和晶圆号建立索引,再解析文件内容做Bin统计。

实操建议:在解析前先建立文件清单,记录文件名、大小、修改时间和FAR版本号。对于大批量文件,建议先按批次分组,再并行解析,避免单线程处理数万个文件时耗时过长。

五、复盘与检查清单

掌握STDF基础后,建议用以下清单自查:

  1. 是否确认了文件的字节序?
  2. 是否读取了FAR记录中的版本号?
  3. 是否按PIR/PTR/PRR循环正确提取每颗芯片?
  4. 是否处理了未知记录类型的跳过逻辑?
  5. 是否校验了文件尾MRR记录的存在?

这些检查点能帮助你在后续Bin分析和良率监控中,避免因格式理解偏差导致的数据错误。STDF的二进制特性决定了“先解析、后分析”的基本流程,而记录类型和字节序正是这条流程中最关键的两个锚点。