-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathV4_2007.py
2635 lines (2302 loc) · 97.7 KB
/
V4_2007.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#
# PySTDF - The Pythonic STDF Parser
# Copyright (C) 2006 Casey Marshall
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
"""
STDF Record Types
-----------------
====== ==================================== ============
Record Type PySTDF Class
====== ==================================== ============
ATR Audit Trail Record :class:`pystdf.V4.Atr`
BPS Begin Program Section Record :class:`pystdf.V4.Bps`
DTR Datalog Text Record :class:`pystdf.V4.Dtr`
EPS End Program Section Record :class:`pystdf.V4.Eps`
FAR File Attributes Record :class:`pystdf.V4.Far`
FTR Functional Test Record :class:`pystdf.V4.Ftr`
GDR Generic Data Record :class:`pystdf.V4.Gdr`
HBR Hardware Bin Record :class:`pystdf.V4.Hbr`
MIR Master Information Record :class:`pystdf.V4.Mir`
MPR Multiple-Result Parametric Record :class:`pystdf.V4.Mpr`
MRR Master Results Record :class:`pystdf.V4.Mrr`
PCR Part Count Record :class:`pystdf.V4.Pcr`
PGR Pin Group Record :class:`pystdf.V4.Pgr`
PIR Part Information Record :class:`pystdf.V4.Pir`
PLR Pin List Record :class:`pystdf.V4.Plr`
PMR Pin Map Record :class:`pystdf.V4.Pmr`
PRR Part Results Record :class:`pystdf.V4.Prr`
PTR Parametric Test Record :class:`pystdf.V4.Ptr`
RDR Retest Data Record :class:`pystdf.V4.Rdr`
SBR Software Bin Record :class:`pystdf.V4.Sbr`
SDR Site Description Record :class:`pystdf.V4.Sdr`
TSR Test Synopsis Record :class:`pystdf.V4.Tsr`
WCR Wafer Configuration Record :class:`pystdf.V4.Wcr`
WIR Wafer Information Record :class:`pystdf.V4.Wir`
WRR Wafer Results Record :class:`pystdf.V4.Wrr`
====== ==================================== ============
Data Type Codes and Representation
----------------------------------
====== =================================================== ===================
Code Description C Type Specifier
====== =================================================== ===================
C*12 Fixed length character string: char[12]
If a fixed length character string does not fill
the entire field, it must be left-justified and
padded with spaces.
C*n Variable length character string: char[]
first byte = unsigned count of bytes to follow
(maximum of 255 bytes)
C*f Variable length character string: char[]
string length is stored in another field
U*1 One byte unsigned integer unsigned char
U*2 Two byte unsigned integer unsigned short
U*4 Four byte unsigned integer unsigned long
I*1 One byte signed integer char
I*2 Two byte signed integer short
I*4 Four byte signed integer long
R*4 Four byte floating point number float
R*8 Eight byte floating point number long float (double)
B*6 Fixed length bit-encoded data char[6]
V*n Variable data type field:
The data type is specified by a code in the
first byte, and the data follows
(maximum of 255 bytes)
B*n Variable length bit-encoded field: char[]
First byte = unsigned count of bytes to follow
(maximum of 255 bytes).
First data item in least significant bit of the
second byte of the array (first byte is count.)
D*n Variable length bit-encoded field: char[]
First two bytes = unsigned count of bits to
follow (maximum of 65,535 bits).
First data item in least significant bit of the
third byte of the array (first two bytes are
count).
Unused bits at the high order end of the last
byte must be zero.
N*1 Unsigned integer data stored in a nibble. char
First item in low 4 bits, second item in high
4 bits. If an odd number of nibbles is indicated,
the high nibble of the byte will be zero. Only
whole bytes can be written to the STDF file.
kxTYPE Array of data of the type specified. TYPE[]
The value of *k* (the number of elements in the
array) is defined in an earlier field in the
record. For example, an array of short unsigned
integers is defined as kxU*2.
====== =================================================== ===================
"""
import sys
from pystdf.Types import StdfRecordMeta, RecordType, stdfToLogicalType
from pystdf import TableTemplate
import pdb
class Far(RecordType, metaclass=StdfRecordMeta):
"""
**File Attributes Record (FAR)**
Function:
Contains the information necessary to determine how to decode
the STDF data contained in the file.
Data Fields:
======== ==== ========================================= ====================
Name Type Description Missing/Invalid Flag
======== ==== ========================================= ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(0)
REC_SUB U*1 Record sub-type (10)
CPU_TYPE U*1 CPU type that wrote this file
STDF_VER U*1 STDF version number
======== ==== ========================================= ====================
Notes on Specific Fields:
CPU_TYPE:
Indicates which type of CPU wrote this STDF file. This information is
useful for determining the CPU-dependent data representation of the
integer and floating point fields in the file's records. The valid values
are:
- 0: DEC PDP-11 and VAX processors. F and D floating point formats
will be used. G and H floating point formats will not be used.
- 1: Sun1,2,3, and 4computers.
- 2: Sun 386i computers, and IBM PC, IBM PC-AT, and IBM PC-XT
computers.
- 3-127: Reserved for future use by Teradyne.
- 128-255: Reserved for use by customers.
A code defined here may also be valid for other CPU types whose data
formats are fully compatible with that of the type listed here. Before
using one of these codes for a CPU type not listed here, please check
with the Teradyne hotline, which can provide additional information on CPU
compatibility.
STDF_VER:
Identifies the version number of the STDF specification used in generating
the data. This allows data analysis programs to handle STDF specification
enhancements.
Location:
Required as the first record of the file.
"""
typ = 0
sub = 10
fieldMap = (
('CPU_TYPE', 'U1'),
('STDF_VER', 'U1')
)
class Atr(RecordType, metaclass=StdfRecordMeta):
"""
**Audit Trail Record (ATR)**
Function:
Used to record any operation that alters the contents of the STDF
file. The name of the program and all its parameters should be recorded
in the ASCII field provided in this record. Typically, this record will
be used to track filter programs that have been applied to the data.
Data Fields:
======== ==== ========================================= ====================
Name Type Description Missing/Invalid Flag
======== ==== ========================================= ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(0)
REC_SUB U*1 Record sub-type (20)
MOD_TIM U*4 Date and time of STDF file
modification
CMD_LINE C*n Command line of program
======== ==== ========================================= ====================
Frequency:
Optional. One for each filter or other data transformation program applied
to the STDF data.
Location:
Between the File Attributes Record (FAR) and the Master Information
Record (MIR). The filter program that writes the altered STDF file must
write its ATR immediately after the FAR (and hence before any other ATR's
that may be in the file). In this way, multiple ATR's will be in reverse
chronological order.
Possible Use:
Determining whether a particular filter has been applied to the data.
"""
typ = 0
sub = 20
fieldMap = (
('MOD_TIM', 'U4'),
('CMD_LINE', 'Cn')
)
class Vur(RecordType, metaclass=StdfRecordMeta):
'''
Version Update Record (VUR)
'''
typ = 0
sub = 30
fieldMap = (
('UPD_CNT', 'U1'),
('UPD_NAM', 'k0Cn'),
# VUR_DUMMY is to compatible with the STDF from UF Plus, Jeremy
('VUR_DUMMY', 'U1')
)
class Mir(RecordType, metaclass=StdfRecordMeta):
"""
**Master Information Record (MIR)**
Function:
The MIR and the MRR (Master Results Record) contain all the global
information that is to be stored for a tested lot of parts. Each data
stream must have exactly oneMIR, immediately after theFAR (and the ATR's,
if they are used). This will allow any data reporting or analysis
programs access to this information in the shortest possible amount
of time.
Data Fields:
======== ==== ========================================= ====================
Name Type Description Missing/Invalid Flag
======== ==== ========================================= ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(1)
REC_SUB U*1 Record sub-type (10)
SETUP_T U*4 Date and time of job setup
START_T U*4 Date and time first part tested
STAT_NUM U*1 Tester station number
MODE_COD C*1 Test mode code (e.g. prod, dev) space
RTST_COD C*1 Lot retest codespace
PROT_COD C*1 Data protection codespace
BURN_TIM U*2 Burn-in time (in minutes)65,535
CMOD_COD C*1 Command mode codespace
LOT_ID C*n Lot ID (customer specified)
PART_TYP C*n Part Type (or product ID)
NODE_NAM C*n Name of node that generated data
TSTR_TYP C*n Tester type
JOB_NAM C*n Job name (test program name)
JOB_REV C*n Job (test program) revision number length byte = 0
SBLOT_ID C*n Sublot ID length byte = 0
OPER_NAM C*n Operator name or ID (at setup time) length byte = 0
EXEC_TYP C*n Tester executive software type length byte = 0
EXEC_VER C*n Tester exec software version number length byte = 0
TEST_COD C*n Test phaseorstepcode length byte = 0
TST_TEMP C*n Test temperature length byte = 0
USER_TXT C*n Genericusertext length byte = 0
AUX_FILE C*n Name of auxiliary data file length byte = 0
PKG_TYP C*n Package type length byte = 0
FAMLY_ID C*n Product family ID length byte = 0
DATE_COD C*n Date code length byte = 0
FACIL_ID C*n Test facility ID length byte = 0
FLOOR_ID C*n Test floor ID length byte = 0
PROC_ID C*n Fabrication process ID length byte = 0
OPER_FRQ C*n Operation frequency or step length byte = 0
TEST_COD A user-defined field specifying the
phase or step in the device testing
process.
TST_TEMP The test temperature is an ASCII string.
Therefore, it can be stored as degrees
Celsius, Fahrenheit, Kelvin or whatever.
It can also be expressed in terms like
HOT, ROOM,and COLD if that is preferred.
======== ==== ========================================= ====================
Frequency:
Always required. One per data stream.
Location:
Immediately after the File Attributes Record (FAR) and the Audit Trail
Records (ATR), if ATR's are used.
Possible Use:
Header information for all reports
"""
typ = 1
sub = 10
fieldMap = (
('SETUP_T', 'U4'),
('START_T', 'U4'),
('STAT_NUM', 'U1'),
('MODE_COD', 'C1'),
('RTST_COD', 'C1'),
('PROT_COD', 'C1'),
('BURN_TIM', 'U2'),
('CMOD_COD', 'C1'),
('LOT_ID', 'Cn'),
('PART_TYP', 'Cn'),
('NODE_NAM', 'Cn'),
('TSTR_TYP', 'Cn'),
('JOB_NAM', 'Cn'),
('JOB_REV', 'Cn'),
('SBLOT_ID', 'Cn'),
('OPER_NAM', 'Cn'),
('EXEC_TYP', 'Cn'),
('EXEC_VER', 'Cn'),
('TEST_COD', 'Cn'),
('TST_TEMP', 'Cn'),
('USER_TXT', 'Cn'),
('AUX_FILE', 'Cn'),
('PKG_TYP', 'Cn'),
('FAMLY_ID', 'Cn'),
('DATE_COD', 'Cn'),
('FACIL_ID', 'Cn'),
('FLOOR_ID', 'Cn'),
('PROC_ID', 'Cn'),
('OPER_FRQ', 'Cn'),
('SPEC_NAM', 'Cn'),
('SPEC_VER', 'Cn'),
('FLOW_ID', 'Cn'),
('SETUP_ID', 'Cn'),
('DSGN_REV', 'Cn'),
('ENG_ID', 'Cn'),
('ROM_COD', 'Cn'),
('SERL_NUM', 'Cn'),
('SUPR_NAM', 'Cn')
)
class Mrr(RecordType, metaclass=StdfRecordMeta):
"""
**Master Results Record (MRR)**
Function:
The Master Results Record (MRR) is a logical extension of the Master
Information Record (MIR). The data can be thought of as belonging
with the MIR, but it is not available when the tester writes the MIR
information. Each data stream must have exactly one MRR as the last
record in the data stream.
Data Fields:
======== ==== ========================================= ====================
Name Type Description Missing/Invalid Flag
======== ==== ========================================= ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(1)
REC_SUB U*1 Record sub-type (20)
FINISH_T U*4 Date and time last part tested
DISP_COD C*1 Lot disposition code space
USR_DESC C*n Lot description supplied by user length byte = 0
EXC_DESC C*n Lot description supplied by exec length byte = 0
======== ==== ========================================= ====================
Notes on Specific Fields:
DISP_COD:
Supplied by the user to indicate the disposition of the lot of parts
(or of the tester itself, in the case of checker or AEL data). The
meaning of DISP_COD values are user-defined. A valid value is an ASCII
alphanumeric character (0 - 9 or A - Z). A space indicates a missing
value.
Frequency:
Exactly one MRR required per data stream.
Location:
Must be the last record in the data stream.
Possible Use:
========================= ============================
Final Summary Sheet Merged Summary Sheet
Datalog Test Results Synopsis Report
Wafer Map Trend Plot
Histogram ADART
Correlation RTBM
Shmoo Plot User Data
Repair Report
========================= ============================
"""
typ = 1
sub = 20
fieldMap = (
('FINISH_T', 'U4'),
('DISP_COD', 'C1'),
('USR_DESC', 'Cn'),
('EXC_DESC', 'Cn')
)
class Pcr(RecordType, metaclass=StdfRecordMeta):
"""
**Part Count Record (PCR)**
Function:
Contains the part count totals for one or all test sites. Each data stream
must have at least one PCR to show the part count.
Data Fields:
======== ==== ========================================= ====================
Name Type Description Missing/Invalid Flag
======== ==== ========================================= ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(1)
REC_SUB U*1 Record sub-type (30)
HEAD_NUM U*1 Test head number See note
SITE_NUM U*1 Test site number
PART_CNT U*4 Number of parts tested
RTST_CNT U*4 Number of parts retested 4,294,967,295
ABRT_CNT U*4 Number of aborts during testing 4,294,967,295
GOOD_CNT U*4 Number of good (passed) parts tested 4,294,967,295
FUNC_CNT U*4 Number of functional parts tested 4,294,967,295
======== ==== ========================================= ====================
Notes on Specific Fields:
HEAD_NUM:
If this PCR contains a summary of the part counts for all test sites, this
field must be set to 255.
GOOD_CNT:
A part is considered good when it is binned into one of the 'passing'
hardware bins.
FUNC_CNT:
A part is considered functional when it is good enough to test, whether it
passes or not. Parts that are incomplete or have shorts or opens are
considered non-functional.
Frequency:
There must be at least one PCR in the file: either one summary PCR for all
test sites (HEAD_NUM = 255), or one PCR for each head/site combination, or
both.
Location:
Anywhere in the data stream after the initial sequence and before the MRR.
When data is being recorded in real time, this record will usually appear
near the end of the data stream.
Possible Use:
========================= ==============================
Final Summary Sheet Merged Summary Sheet
Site Summary Sheet Report for Lot Tracking System
========================= ==============================
"""
typ = 1
sub = 30
fieldMap = (
('HEAD_NUM','U1'),
('SITE_NUM','U1'),
('PART_CNT','U4'),
('RTST_CNT','U4'),
('ABRT_CNT','U4'),
('GOOD_CNT','U4'),
('FUNC_CNT','U4')
)
class Hbr(RecordType, metaclass=StdfRecordMeta):
"""
**Hardware Bin Record (HBR)**
Function:
Stores a count of the parts *physically* placed in a particular bin
after testing. (In wafer testing, *physical* binning is not an actual
transfer of the chip, but rather is represented by a drop of ink or an
entry in a wafer map file.) This bin count can be for a single test
site (when parallel testing) or a total for all test sites. The STDF
specification also supports a Software Bin Record (SBR) for logical
binning categories. A part is *physically* placed in a hardware bin
after testing. A part can be logically associated with a software bin
during or after testing.
Data Fields:
======== ==== ========================================= ====================
Name Type Description Missing/Invalid Flag
======== ==== ========================================= ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(1)
REC_SUB U*1 Record sub-type (40)
HEAD_NUM U*1 Test head number See note
SITE_NUM U*1 Test site number
HBIN_NUM U*2 Hardware bin number
HBIN_CNT U*4 Number of parts in bin
HBIN_PF C*1 Pass/fail indication space
HBIN_NAM C*n Name of hardware bin length byte = 0
======== ==== ========================================= ====================
Notes on Specific Fields:
HEAD_NUM:
If this HBR contains a summary of the hardware bin counts for all test
sites, this field must be set to 255.
HBIN_NUM:
Has legal values in the range 0 to 32767.
HBIN_PF:
This field indicates whether the hardware bin was a passing or failing
bin. Valid values for this field are:
* P = Passing bin
* F = Failing bin
* space = Unknown
Frequency:
One per hardware bin for each site. One per hardware bin for bin totals.
May be included to name unused bins.
Location:
Anywhere in the data stream after the initial sequence and before the MRR.
When data is being recorded in real time, this record usually appears near
the end of the data stream.
Possible Use:
===================== ==============================
Final Summary Sheet Merged Summary Sheet
Site Summary Sheet Report for Lot Tracking System
===================== ==============================
"""
typ = 1
sub = 40
fieldMap = (
('HEAD_NUM','U1'),
('SITE_NUM','U1'),
('HBIN_NUM','U2'),
('HBIN_CNT','U4'),
('HBIN_PF','C1'),
('HBIN_NAM','Cn')
)
class Sbr(RecordType, metaclass=StdfRecordMeta):
"""
**Software Bin Record (SBR)**
Function:
Stores a count of the parts associated with a particular logical
bin after testing. This bin count can be for a single test site (when
parallel testing) or a total for all test sites. The STDF specification
also supports a Hardware Bin Record (HBR) for actual physical binning. A
part is *physically* placed in a hardware bin after testing. A part can
be *logically* associated with a software bin during or after testing.
Data Fields:
======== ==== ========================================= ====================
Name Type Description Missing/Invalid Flag
======== ==== ========================================= ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(1)
REC_SUB U*1 Record sub-type (50)
HEAD_NUM U*1 Test head number See note
SITE_NUM U*1 Test site number
SBIN_NUM U*2 Software bin number
SBIN_CNT U*4 Number of parts in bin
SBIN_PF C*1 Pass/fail indication space
SBIN_NAM C*n Name of software bin length byte = 0
======== ==== ========================================= ====================
Notes on Specific Fields:
HEAD_NUM:
If this SBR contains a summary of the software bin counts for all test
sites, this field must be set to 255.
SBIN_NUM:
Has legal values in the range 0 to 32767.
SBIN_PF:
This field indicates whether the software bin was a passing or failing
bin. Valid values for this field are:
* P = Passing bin
* F = Failing bin
* space = Unknown
Frequency:
One per software bin for each site. One per software bin for bin totals.
Maybe included to name unused bins.
Location:
Anywhere in the data stream after the initial sequence and before the
MRR. When data is being recorded in real time, this record usually appears
near the end of the data stream.
Possible Use:
===================== ================================
Final Summary Sheet Merged Summary Sheet
Site Summary Sheet Report for Lot Tracking System
===================== ================================
"""
typ = 1
sub = 50
fieldMap = (
('HEAD_NUM','U1'),
('SITE_NUM','U1'),
('SBIN_NUM','U2'),
('SBIN_CNT','U4'),
('SBIN_PF','C1'),
('SBIN_NAM','Cn')
)
class Pmr(RecordType, metaclass=StdfRecordMeta):
"""
**Pin Map Record (PMR)**
Function:
Provides indexing of tester channel names, and maps them to physical and
logical pin names. Each PMR defines the information for a single channel/pin
combination.
Data Fields:
======== ==== ========================================= ====================
Name Type Description Missing/Invalid Flag
======== ==== ========================================= ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(1)
REC_SUB U*1 Record sub-type (60)
PMR_INDX U*2 Unique index associated with pin
CHAN_TYP U*2 Channel type 0
CHAN_NAM C*n Channel namei length byte = 0
PHY_NAM C*n Physical name of pin length byte = 0
LOG_NAM C*n Logical name of pin length byte = 0
HEAD_NUM U*1 Head number associated with channel 1
SITE_NUM U*1 Site number associated with channel 1
======== ==== ========================================= ====================
Notes on Specific Fields:
PMR_INDX:
This number is used to associate the channel and pin name information with
data in the FTR or MPR. Reporting programs can then look up the PMR index
and choose which of the three associated names they will use.
The range of legalPMR indexes is 1 -32,767.
The size of the FAIL_PIN and SPIN_MAP arrays in the FTR are directly
proportional to the highest PMR index number. Therefore, it is important
to start PMR indexes with a low number and use consecutive numbers if
possible.
CHAN_TYP:
The channel type values are tester-specific. Please refer to the tester
documentation for a list of the valid tester channel types and codes.
HEAD_NUM:
If a test system does not support parallel testing and does not have a
standard way of
SITE_NUM:
identifying its single test site or head, these fields should be set to 1.
If missing, the value of these fields will default to 1.
Frequency:
One per channel/pin combination used in the test program.
Reuse of a PMR index number is not permitted.
Location:
After the initial sequence and before the first PGR, PLR, FTR,or MPR that
uses this record's PMR_INDX value.
Possible Use:
* Functional Datalog
* Functional Histogram
"""
typ = 1
sub = 60
fieldMap = (
('PMR_INDX','U2'),
('CHAN_TYP','U2'),
('CHAN_NAM','Cn'),
('PHY_NAM','Cn'),
('LOG_NAM','Cn'),
('HEAD_NUM','U1'),
('SITE_NUM','U1')
)
class Pgr(RecordType, metaclass=StdfRecordMeta):
"""
**Pin Group Record (PGR)**
Function:
Associates a name with a group of pins.
Data Fields:
======== ===== ======================================== ====================
Name Type Description Missing/Invalid Flag
======== ===== ======================================== ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(1)
REC_SUB U*1 Record sub-type (62)
GRP_INDX U*2 Unique index associated with pin group
GRP_NAM C*n Name of pin group length byte = 0
INDX_CNT U*2 Count (k)of PMR indexes
PMR_INDX kxU*2 Array of indexes for pins in the group INDX_CNT=0
======== ===== ======================================== ====================
Notes on Specific Fields:
GRP_INDX:
The range of legal group index numbers is 32,768 - 65,535.
INDX_CNT, PMR_INDX:
PMR_INDX is an array of PMR indexes whose length is defined by INDX_CNT.
The order of the PMR indexes should be from most significant to least
significant bit in the pin group (regardless of the order of PMR index
numbers).
Frequency:
One per pin group defined in the test program.
Location:
After all the PMR's whose PMR index values are listed in the PMR_INDX array
of this record, and before the first PLR that uses this record's GRP_INDX
value.
Possible Use:
Functional Datalog
"""
typ = 1
sub = 62
fieldMap = (
('GRP_INDX','U2'),
('GRP_NAM','Cn'),
('INDX_CNT','U2'),
('PMR_INDX','k2U2')
)
class Plr(RecordType, metaclass=StdfRecordMeta):
"""
**Pin List Record (PLR)**
Function:
Defines the current display radix and operating mode for a pin or pin group.
Data Fields:
======== ===== ======================================== ====================
Name Type Description Missing/Invalid Flag
======== ===== ======================================== ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(1)
REC_SUB U*1 Record sub-type (63)
GRP_CNT U*2 Count (k)of pins or pin groups
GRP_INDX kxU*2 Array of pin or pin group indexes
GRP_MODE kxU*2 Operating mode of pin group 0
GRP_RADX kxU*1 Display radix of pin group0
PGM_CHAR kxC*n Program state encoding characters length byte = 0
RTN_CHAR kxC*n Return state encoding characters length byte = 0
PGM_CHAL kxC*n Program state encoding characters length byte = 0
RTN_CHAL kxC*n Return state encoding characters length byte = 0
======== ===== ======================================== ====================
Notes on Specific Fields:
GRP_CNT:
GRP_CNT defines the number of pins or pin groups whose radix and mode are
being defined. Therefore, it defines the size of each of the arrays that
follow in the record.
GRP_CNT must be greater than zero.
GRP_MODE:
The following are valid values for the pin group mode:
* 00 = Unknown
* 10 = Normal
* 20 = SCIO (Same Cycle I/O)
* 21 = SCIO Midband
* 22 = SCIO Valid
* 23 = SCIOWindowSustain
* 30 = Dual drive (two drive bits per cycle)
* 31 = Dual drive Midband
* 32 = Dual drive Valid
* 33 = Dual drive Window Sustain
Unused pin group modes in the range of 1 through 32,767 are reserved for
future use. Pin group modes 32,768 through 65,535 are available for
customer use.
GRP_RADX:
The following are valid values for the pin group display radix:
* 0 = Use display program default
* 2 = Display in Binary
* 8= Display in Octal
* 10 = Display in Decimal
* 16 = Display in Hexadecimal
* 20 = Display as symbolic
PGM_CHAR, PGM_CHAL:
These ASCII characters are used to display the programmed state in
the FTR or MPR. Use of these character arrays makes it possible to
store tester-dependent display representations in a tester-independent
format. If a single character is used to represent each programmed state,
then only the PGM_CHAR array need be used. If two characters represent
each state, then the first (left) character is stored in PGM_CHAL and
the second (right) character is stored in PGM_CHAR .
RTN_CHAR,RTN_CHAL:
These ASCII characters are used to display the returned state in
the FTR or MPR .Use of these character arrays makes it possible to
store tester-dependent display representations in a tester-independent
format. If a single character is used to represent each returned state,
then only the RTN_CHAR array need be used. If two characters represent
each state, then the first (left) character is stored in RTN_CHAL and
the second (right) character is stored in RTN_CHAR .
Note on Missing/Invalid Data Flags:
For each field, the missing/invalid data flag applies to each member of
the array, not to the array as a whole. Empty arrays (or empty members of
arrays) can be omitted if they occur at the end of the record. Otherwise,
each array must have the number of members indicated by GRP_CNT .You
can then use the field's missing/invalid data flag to indicate which
array members have no data. For example, if GRP_CNT =3, and if PGM_CHAL
contains no data (but RTN_CHAL , which appears after PGM_CHAL, does),
then PGM_CHAL should be an array of three missing/invalid data flags:
0, 0, 0.
Frequency:
One or more whenever the usage of a pin or pin group changes in the test
program.
Location:
After all the PMR's and PGR's whose PMR index values and pin group index
values are listed in the GRP_INDX array of this record; and before the first
FTR that references pins or pin groups whose modes are defined in this
record.
Possible Use:
Functional Datalog
"""
typ = 1
sub = 63
fieldMap = (
('GRP_CNT','U2'),
('GRP_INDX','k0U2'),
('GRP_MODE','k0U2'),
('GRP_RADX','k0U1'),
('PGM_CHAR','k0Cn'),
('RTN_CHAR','k0Cn'),
('PGM_CHAL','k0Cn'),
('RTN_CHAL','k0Cn')
)
class Rdr(RecordType, metaclass=StdfRecordMeta):
"""
**Retest Data Record (RDR)**
Function:
Signals that the data in this STDF file is for retested parts. The data in
this record, combined with information in the MIR, tells data filtering
programs what data to replace when processing retest data.
Data Fields:
======== ===== ======================================== ====================
Name Type Description Missing/Invalid Flag
======== ===== ======================================== ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(1)
REC_SUB U*1 Record sub-type (70)
NUM_BINS U*2 Number (k)ofbinsbeing retested
RTST_BIN kxU*2 Array of retest bin numbers NUM_BINS=0
======== ===== ======================================== ====================
Notes on Specific Fields:
NUM_BINS,RTST_BIN:
NUM_BINS indicates the number of hardware bins being retested and there
fore the size of the RTST_BIN array that follows. If NUM_BINS is zero,
then all bins in the lot are being retested and RTST_BIN is omitted.
The LOT_ID, SUBLOT_ID, and TEST_COD of the current STDF file should match
those of the STDF file that is being retested, so the data can be properly
merged at a later time.
Frequency:
Optional. One per data stream.
Location:
If this record is used, it must appear immediately after the Master
Information Record (MIR).
Possible Use:
Tells data filtering programs how to handle retest data.
"""
typ = 1
sub = 70
fieldMap = (
('NUM_BINS','U2'),
('RTST_BIN','k0U2')
)
class Sdr(RecordType, metaclass=StdfRecordMeta):
"""
**Site Description Record (SDR)**
Function:
Contains the configuration information for one or more test sites, connected
to one test head, that compose a site group.
Data Fields:
======== ===== ======================================== ====================
Name Type Description Missing/Invalid Flag
======== ===== ======================================== ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(1)
REC_SUB U*1 Record sub-type (80)
HEAD_NUM U*1 Test head number
SITE_GRP U*1 Site group number
SITE_CNT U*1 Number (k) of test sites in site group
SITE_NUM kxU*1 Array of test site numbers
HAND_TYP C*n Handler or prober type length byte = 0
HAND_ID C*n Handler or prober ID length byte = 0
CARD_TYP C*n Probe card type length byte = 0
CARD_ID C*n Probecard ID length byte = 0
LOAD_TYP C*n Load board type length byte = 0
LOAD_ID C*n Load board ID length byte = 0
DIB_TYP C*n DIB board type length byte = 0
DIB_ID C*n DIB board ID length byte = 0
CABL_TYP C*n Interface cable type length byte = 0
CABL_ID C*n Interface cable ID length byte = 0
CONT_TYP C*n Handler contactor type length byte = 0
CONT_ID C*n Handler contactor ID length byte = 0
LASR_TYP C*n Laser type length byte = 0
LASR_ID C*n Laser ID length byte = 0
EXTR_TYP C*n Extra equipment type field length byte = 0
EXTR_ID C*n Extra equipment ID length byte = 0
======== ===== ======================================== ====================
Notes on Specific Fields:
SITE_GRP:
Specifies a site group number (called a station number on some
testers) for the group of sites whose configuration is defined by this
record. Note that this is different from the station number specified
in theMIR, which refers to a software station only. The value in this
field must be unique within the STDF file.
SITE_CNT, SITE_NUM
SITE_CNT tells how many sites are in the site group that the current SDR
configuration applies to. SITE_NUM is an array of those site numbers.
_TYP fields:
These are the type or model number of the interface or peripheral
equipment being used for testing: HAND_TYP, CARD_TYP, LOAD_TYP, DIB_TYP,
CABL_TYP, CONT_TYP, LASR_TYP, EXTR_TYP
_ID fields:
These are the IDs or serial numbers of the interface or peripheral
equipment being used for testing: HAND_ID, CARD_ID, LOAD_ID, DIB_ID,
CABL_ID, CONT_ID, LASR_ID, EXTR_ID
Frequency:
One for each site or group of sites that is differently configured.
Location:
Immediately after the MIR andRDR (if an RDR is used).
Possible Use:
Correlation of yield to interface or peripheral equipment
"""
typ = 1
sub = 80
fieldMap = (
('HEAD_NUM','U1'),
('SITE_GRP','U1'),
('SITE_CNT','U1'),
('SITE_NUM','k2U1'),
('HAND_TYP','Cn'),
('HAND_ID','Cn'),
('CARD_TYP','Cn'),
('CARD_ID','Cn'),
('LOAD_TYP','Cn'),
('LOAD_ID','Cn'),
('DIB_TYP','Cn'),
('DIB_ID','Cn'),
('CABL_TYP','Cn'),
('CABL_ID','Cn'),
('CONT_TYP','Cn'),
('CONT_ID','Cn'),
('LASR_TYP','Cn'),
('LASR_ID','Cn'),
('EXTR_TYP','Cn'),
('EXTR_ID','Cn')
)
class Wir(RecordType, metaclass=StdfRecordMeta):
"""
**Wafer Information Record (WIR)**
Function:
Acts mainly as a marker to indicate where testing of a particular wafer
begins for each wafer tested by the job plan. The WIR and the Wafer
Results Record (WRR) bracket all the stored information pertaining
to one tested wafer. This record is used only when testing at wafer
probe. AWIR/WRR pair will have the same HEAD_NUM and SITE_GRP values.
Data Fields:
======== ===== ======================================== ====================
Name Type Description Missing/Invalid Flag
======== ===== ======================================== ====================
REC_LEN U*2 Bytes of data following header
REC_TYP U*1 Record type(2)
REC_SUB U*1 Record sub-type (10)
HEAD_NUM U*1 Test head number
SITE_GRP U*1 Site group number 255
START_T U*4 Date and time first part tested
WAFER_ID C*n Wafer ID length byte = 0
======== ===== ======================================== ====================
Notes on Specific Fields:
SITE_GRP:
Refers to the site group in the SDR .Thisisa meansof relating the wafer
information to the configuration of the equipment used to test it. If
this information is not known, or the tester does not support the
concept of site groups, this field should be set to 255.
WAFER_ID:
Is optional, but is strongly recommended in order to make the resultant
data files as useful as possible.
Frequency:
One per wafer tested.
Location:
Anywhere in the data stream after the initial sequence and before the
MRR.
Sent before testing each wafer.
Possible Use:
* Wafer Summary Sheet