标准测试测试数据STDF学习笔记
原文链接:https://zhuanlan.zhihu.com/p/690981476
下载链接:
1. STDF Record Structure
STDF(Standard Test Data Format)是一种行业标准,用于定义在ATE上生成的测试数据的格式和结构。
1.1 STDF record类型:
每个STDF record都是以一个record头开始的,record头里面包含以下三部分信息:
REC_LEN:record头的字节数
REC_TYP:STDF record类型的分组,共10个分组,对应REC_TYP code分别为:0、1、2、5、10、15、20、50、180、181
REC_SUB:在每个REC_TYP分组中又细分了具体的STDF record类型,可见下表:
前25种record是需要我们了解的,末尾两种在实际STDF解析过程中暂时不需要用到。
1.2 数据类型
STDF指定了一些数据类型,这些数据类型和C语言中的数据类型有相似之处,以下是这些数据类型的汇总:
1.3 关于时间和日期的说明
在STDF规范中时间和日期被定义为4个字节(32bit),并且是已1970.1.1零点为基数,计算距离这个时间的秒数为日期和时间。
1.4 空缺/无效数据
每种STDF record中都由一列用来标志空缺/无效数据,每种数据类型都由自己的方式表示空缺/无效数据,如下表:
2. STDF Record类型
2.1 Initial Sequence
STDF文件中开头部分是初始化内容,即initial sequence,大部分record类型都是出现initial sequence之后的。initial sequence也是由record组成,这些record出现的顺序如下:
File Attributes Record(FAR)和Master Information Record(MIR)是每个STDF文件必须包含的,并且FAR是STDF文件中第一个FAR。所有其他STDF record类型都是出现在initial sequence之后的。
2.2 File Attributes Record(FAR)
功能:FAR中包含的信息决定了如何解析STDF文件
数据内容:
出现的位置:STDF文件中的第一个record
2.3 Audit Trail Record(ATR)
功能:记录任何改变STDF文件内容的操作
数据内容:
是否必须:否
出现的位置:在FAR和MIR之间
2.4 Master Information Record (MIR)
功能:MIR和MRR(Master Results Record)包含lot的所有全局信息,并且每个数据流中都有MIR,STDF解析软件可以直接获取这些信息。
数据内容:
出现频率:每个数据流中都存在
出现的位置:紧跟着FAR和ATR
应用:作为STDF解析报告的头信息
2.5 Master Results Record (MRR)
功能:MRR是MIR的一个延伸,每个数据流必须要有一个MRR作为最后的record
数据内容:
出现频率:每个数据流中都存在一个MRR
出现的位置:数据流中的最后一个record
2.6 Part Count Record(PCR)
功能:包含每个site的测试次数,每个数据流中至少有一个PCR
数据内容:
出现频率:每个数据流中都至少存在一个PCR
出现的位置:在initial sequence和MRR之间的任意位置,通常来说靠近数据流的末尾
应用:summary报告
2.7 Hardware Bin Record(HBR)
功能:在测试结束后存储分了HBin的芯片数量,该数量信息中细分了各site的情况
数据内容:
出现频率:每个site都有各自HBin,还有所有site汇总的HBin情况
出现的位置:在initial sequence和MRR之间的任意位置,通常来说靠近数据流的末尾
应用:summary报告
2.8 Software Bin Record(SBR)
功能:在测试结束后存储分了SBin的芯片数量,该数量信息中细分了各site的情况
数据内容:
出现频率:每个site都有各自SBin,还有所有site汇总的SBin情况
出现的位置:在initial sequence和MRR之间的任意位置,通常来说靠近数据流的末尾
应用:summary报告
2.8 Software Bin Record(SBR)
功能:提供了测试机通道名称、pin的物理名称和逻辑名称
数据内容:
出现的频率:测试程序中用到的每个通道和pin都会体现出来
出现的位置:在initial sequence之后,第一个PGR、PLR、FTR、MPR之前
2.9 Pin Group Record(SBR)
功能:记录pin group信息
数据内容:
出现的频率:测试程序中的每个pin group信息都会被记录
出现的位置:PMR之后,第一个PLR之前
2.10 Pin List Record(SBR)
功能:定义pin和pin group的工作模式(93K程序中一般不涉及)
数据内容:
出现的频率:当测试程序中pin或pin group的使用发生改变时
出现的位置:所有PMR和PGR之后,第一个FTR之后
2.11 Retest Data Record(SBR)
功能:表示STDF文件中该部分数据属于复测部分
数据内容:
出现的频率:可选
出现的位置:如果使用到了这个record,必须出现在MIR之后
应用:告诉数据解析软件怎么处理复测数据
2.12 Site Description Record(SDR)
功能:包含一个测试头上一个或多个site的配置信息
数据内容:
出现的频率:当site或site group的配置不同时会使用到
出现的位置:紧跟着MIR和RDR之后
应用:将良率和设备做correlation
2.13 Wafer Information Record(WIR)
功能:作为wafer从什么时候开始测试的标记,仅在CP测试中使用
数据内容:
出现的频率:每片wafer测试时都会用到
出现的位置:initial sequence之后,MRR之前的任何位置
应用:wafer summary
2.14 Wafer Result Record(WIR)
功能:包含每片测试wafer的最终信息,这个record也是仅在CP测试中使用,WIR和WRR时一对record,有相同的HEAD_NUM和SITE_GRP
数据内容:
出现的频率:每片wafer测试时都会用到
出现的位置:WIR之后的的任何位置
应用:wafer summary
2.15 Wafer Configuration Record(WCR)
功能:包含CP测试时wafer的配置信息,比如:中心坐标,取向,晶圆尺寸
数据内容:
出现的频率:每片wafer测试时都会用到
出现的位置:initial sequence之后,MRR之前的任何位置
应用:画wafer map时会用到
2.16 Part Information Record(PIR)
功能:作为每次测试时site位置的标记,PIR和PRR包含测试site、die坐标、测试时间的所有信息
数据内容:
出现的频率:每次测试都会保存PIR信息
出现的位置:initial sequence之后,PRR之前的任何位置
应用:datalog
2.17 Part Result Record(PRR)
功能:包含每次测试时关于site、坐标、bin等信息,PRR和PIR一起包含了所有信息
数据内容:
出现的频率:每次测试都会有一条记录
出现的位置:MRR之前,PIR之后的任意位置
2.18 Test Synopsis Record(TSR)
功能:包含参数测试和功能测试的测试次数和失效次数,另外还包含一些统计信息:最小值、最大值等。TSR和FTR、PTR、MRR之间通过test number、head number和site number关联
数据内容:
出现的频率:每一次测试都会被记录
出现的位置:initial sequence之后,MRR之前的任何位置
应用:Final Summary、map、直方图等
2.19 Parametric Test Record(PTR)
功能:参数测试的测试结果,包含极限值、单位、标度、测量值等信息,PTR和TSR之间通过test number、head number和site number关联
数据内容:
出现的频率:每一次测试都会被记录
出现的位置:PIR之后,PRR之前的任意位置
应用:Final Summary、map、直方图等
2.20 Multiple-Result Parametric Record(MPR)
功能:包含多结果参数测试项的测试结果信息,MPR和TSR之间通过test number、head number和site number关联
数据内容:
出现的频率:每个多结果参数测试都会记录
出现的位置:PRR之前,PIR之后的任意位置
应用:datalog
2.21 Functional Test Record(FTR)
功能:包含功能测试项的测试结果,FTR和TSR之间通过test number、head number和site number关联
数据内容:
出现的频率:每个功能测试都会记录
出现的位置:PRR之前,PIR之后的任意位置
应用:datalog
2.22 Begin Program Section Record(BPS)
功能:标记新程序开始使用
数据内容:
2.23 End Program Section Record(EPS)
功能:标记程序结束使用
数据内容:
2.24 Generic Data Record(GDR)
功能:包含任何不符合STDF规范的其他record类型
数据内容:
2.25 Datalog Text Record(DTR)
功能:包含datalog中打印输出的文本信息,在datalog中作为注释存在
数据内容:
3. 基于pystdf的STDF解析方法
3.1 pystdf简介
pystdf是一款开源的STDF文件解析器,该解析器基于事件开发,在回调函数中可以获取record事件的内容,即测试数据。
3.2 利用pystdf解析STDF的方法
3.2.1 pystdf自带的脚本
pystdf库自带了stdf2excel.py脚本,该脚本可以将stdf转成excel,具体如下:
利用STDF2DataFrame方法将stdf转成rec->dataframe型的字典,并将其写入到excel中,转后的excel包含该stdf中包含的所有rec类型及其内容,如下图所示:
该脚本虽然可以将stdf转成excel,但是受限于excel最大行数1048576的限制,对于较大的stdf文件在转成excel时可能会报错,特别是在写入PTR和MPR这两个record数据的时候。对于这类较大的stdf,如果需要将其转成excel,需要修改该脚本。
除了stdf2excel.py,pystdf库还自带了stdf2text、stdf2xml等方法。
3.2.2 自编程脚本
1、Setup parser:Parser类在pystdf的IO module里,首先,import这个类,并实例化:
2、添加一个Sink,这个Sink就是一个Event触发后的动作,这里来定义对STDF解析过程中的处理动作:
3、pystdf共有4个Events,分别是:
Events | 说明 |
begin | The 'begin' event fires when the Parser.parse is first called. |
send | The 'send' event methods will get called on each record in the STDF. |
complete | The 'complete' event methods get called after a successful STDF parse completes. |
cancel | The 'cancel' event methods are called after an error in the STDF parse. |
每个event都有before和after两类,执行顺序依次为:before_begin、after_begin、before_send、after_send、before_complete、after_complete、before_cancel、after_cancel,但需要注意的是:除send外,其他函数均只执行依次,before_send和after_send会执行多次,每接收一次数据流都会执行依次,以下是解析stdf过程中获取的实际每个event执行顺序:
利用begin、send、complete和cancel这四类event可以自编程解析stdf,其中最重要的函数是before_send()和after_send(),因为每次接收数据流时这两个函数都会被调用一次,我们只需在这两个函数中定义对数据流的处理,即可得到我们想从stdf中获取的信息。
3.2.3 关于数据流的说明
在自编程脚本解析stdf时,我们只需在before_send()和after_send()两个函数中定义对每次接收的数据流的操作行为,即可完成stdf的解析,但是对数据流的理解会直接决定我们能对stdf完成什么样的解析,因此有必要学习下数据流行为。
通过把每次接收的数据流打印出来,可以看出数据流是按不同record类型先后发送的,其顺序为:
需要注意的是:虽然数据流是按不同record类型发送的,但并不是所有record类型都是数据流全部发送完后再发送下一个record。除PIR、PTR、MPR和PRR这四个record外,其他record类型都是连续发送完该record类型的所有数据,然后发送下一个。
PIR、PTR、MPR、FTR、PRR这几个record是每次连续发送完一次touch down的数据,然后发送下一record记录的一次touch down数据,可以理解为:PIR(一次TD)->PTR/MPR/FTR(一次TD)->PRR(一次TD)-> PIR(一次TD)-> PTR/MPR/FTR(一次TD)->PRR(一次TD)这样循环。从《stdf-specification-V4.pdf》文档中我们也能看出stdf文件中的数据是按这种方式记录的:
3.2.4 实例
更多实例可参考后续更新的《用python搞定ATE测试数据处理的系列教程》