论文部分内容阅读
摘要:STDF文件格式是一种简单并条理分明的标准,利用它可以在半导体测试工序中分享和交换测试数据。通过对文件标准的基本结构的了解,可以使用JAVA程序来实现读取文件中的数据。
关键词:标准测试数据格式;JAVA;自动测试设备
中图分类号:TP31 文献标识码:A文章编号:1009-3044(2007)04-11017-02
1 引言
随着半导体测试工业的发展,许多供应商提供网络化的系统以弥补测试系统自身并帮助用户获得更多利润。许多的网络化系统需要用到一些标准,比如Ethernet。但是我们还缺少一种标准,那就是测试数据的兼容性。Teradyne公司已经开发出来一种简单、灵活的测试数据格式- STDF(Standard Test Data Format)。我们可以很容易的把目前现有的测试结果数据文件转化成STDF文件。
STDF文件是一种二进制文件。我们不能直接看到里面的数据。所以我们首先需要了解STDF文件的结构。STDF文件是由各种数据记录组成。每一个数据记录含有头信息和数据本身。其中头信息又包括数据长度(占2个字节)、数据类型(占1个字节)和子类型(占1个字节)。在头信息中数据类型和子类型是成对的出现的整数。我们可以根据他们的组合找出这种数据记录的含义。比如FAR(文件属性数据)的代码是0和10,MRR(主要结果数据)的代码是1和20。所有的代码都是十进制的整数。一个文件必须含有一个FAR,MIR,PCR,MRR,其他数据记录都是可选的。某些数据记录的在文件中的顺序是有定义的。例如:
在文件中第一个记录必须是FAR,然后是一个或多个ATR(ATR是可选的),MIR跟在FAR后面或ATR后面,RDR在MIR后面(RDR是可选的),一个或多个SDR跟在MIR后面或RDR后面。每一种数据类型所包含的数据信息也是预先定义的,比如FAR的数据由CPU_TYPE(一个字节)和STDF_VER(一个字节)组成。
针对STDF这种二进制文件结构,如果我们想获得并分析文件中的信息,我们必须通过程序来实现。首先我们可以先定义一个基类STDFRecord,在STDFRecord类中定义一些最基本的信息。 然后再定义各种数据类型的子类,比如FARRecord、MRRRecord。下面是FARRecord类的定义:
在上面FARRecord类中,我们是通过移动文件指针来获得数据cpuType和stdfVer。各种数据类型都可以参考上面的例子建立各自的数据类。
最后我们写主程序去处理STDF文件。先读取文件:
infile=new FileInputStream(stdffile).getChannel();
fileSize=(int) infile.size();
in = infile.map(FileChannel.MapMode.READ_ONLY, 0, fileSize);
然后读取数据记录的头信息:
STDFRecord record = null;
int recordLength = (int) (in.getShort() & 0xffff);
int recordType = (int) in.get() & 0xff;
int recordSubType = (int) in.get() & 0xff;
record = readSTDFRecord(recordLength, recordType, recordSubType);
最后对数据类型进行判断并调用相应的数据类进行处理
通过以上的程序我们只是做到了简单去读取STDF文件中的信息。如果想深入分析其中的内容,我们还需要更多的程序去实现。
参考文献:
[1]Teradyne,Standard Test Data Format(STDF) Specification[S].
[2]Brett Spell.Java高级编程(第2版)[M].清华大学出版社,2006(11).
[3](美)阿诺德,(美)高斯林,(美)霍姆斯著.Java程序设计语言[M].人民邮电出版社,2006(5).
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:标准测试数据格式;JAVA;自动测试设备
中图分类号:TP31 文献标识码:A文章编号:1009-3044(2007)04-11017-02
1 引言
随着半导体测试工业的发展,许多供应商提供网络化的系统以弥补测试系统自身并帮助用户获得更多利润。许多的网络化系统需要用到一些标准,比如Ethernet。但是我们还缺少一种标准,那就是测试数据的兼容性。Teradyne公司已经开发出来一种简单、灵活的测试数据格式- STDF(Standard Test Data Format)。我们可以很容易的把目前现有的测试结果数据文件转化成STDF文件。
STDF文件是一种二进制文件。我们不能直接看到里面的数据。所以我们首先需要了解STDF文件的结构。STDF文件是由各种数据记录组成。每一个数据记录含有头信息和数据本身。其中头信息又包括数据长度(占2个字节)、数据类型(占1个字节)和子类型(占1个字节)。在头信息中数据类型和子类型是成对的出现的整数。我们可以根据他们的组合找出这种数据记录的含义。比如FAR(文件属性数据)的代码是0和10,MRR(主要结果数据)的代码是1和20。所有的代码都是十进制的整数。一个文件必须含有一个FAR,MIR,PCR,MRR,其他数据记录都是可选的。某些数据记录的在文件中的顺序是有定义的。例如:
在文件中第一个记录必须是FAR,然后是一个或多个ATR(ATR是可选的),MIR跟在FAR后面或ATR后面,RDR在MIR后面(RDR是可选的),一个或多个SDR跟在MIR后面或RDR后面。每一种数据类型所包含的数据信息也是预先定义的,比如FAR的数据由CPU_TYPE(一个字节)和STDF_VER(一个字节)组成。
针对STDF这种二进制文件结构,如果我们想获得并分析文件中的信息,我们必须通过程序来实现。首先我们可以先定义一个基类STDFRecord,在STDFRecord类中定义一些最基本的信息。 然后再定义各种数据类型的子类,比如FARRecord、MRRRecord。下面是FARRecord类的定义:
在上面FARRecord类中,我们是通过移动文件指针来获得数据cpuType和stdfVer。各种数据类型都可以参考上面的例子建立各自的数据类。
最后我们写主程序去处理STDF文件。先读取文件:
infile=new FileInputStream(stdffile).getChannel();
fileSize=(int) infile.size();
in = infile.map(FileChannel.MapMode.READ_ONLY, 0, fileSize);
然后读取数据记录的头信息:
STDFRecord record = null;
int recordLength = (int) (in.getShort() & 0xffff);
int recordType = (int) in.get() & 0xff;
int recordSubType = (int) in.get() & 0xff;
record = readSTDFRecord(recordLength, recordType, recordSubType);
最后对数据类型进行判断并调用相应的数据类进行处理
通过以上的程序我们只是做到了简单去读取STDF文件中的信息。如果想深入分析其中的内容,我们还需要更多的程序去实现。
参考文献:
[1]Teradyne,Standard Test Data Format(STDF) Specification[S].
[2]Brett Spell.Java高级编程(第2版)[M].清华大学出版社,2006(11).
[3](美)阿诺德,(美)高斯林,(美)霍姆斯著.Java程序设计语言[M].人民邮电出版社,2006(5).
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。