1. What STDF is
STDF (Standard Test Data Format) is a simple, flexible, portable, binary data format for storing the results produced by semiconductor test equipment. It was created by Teradyne and first introduced in 1985. Because it is well documented and vendor-neutral, it became the de-facto standard across the entire Automatic Test Equipment (ATE) industry.
When a tester measures a die on a wafer or a packaged device, it records the parametric measurements, the pass/fail results, the bin assignments and the test conditions into an STDF file — commonly called a datalog. One STDF file holds the test data for one lot of parts from a single insertion (one pass of a lot through testing).
The key idea: STDF is not a database and not a fixed report. It is a defined set of logical record types. Each record describes one piece of the test run (a part, a wafer, a single measurement, a bin count, and so on). Because the data is described as logical records, the same format works whether the data sits in a memory buffer, in a file on disk, or is being sent across a network — independent of any particular database or network architecture.
2. Why STDF exists
As the ATE industry matured, vendors built networking and analysis systems around common standards such as Ethernet. But one glaring gap remained: test-result data was not compatible between testers from different manufacturers — and sometimes not even between product lines of the same manufacturer.
Without a shared format, every fab and every OSAT (assembly & test house) would need a custom parser for every machine. STDF closes that gap. It provides a single common container so that:
- a tester can write its raw results in its own native representation, quickly;
- a centralized database engine can accept data from a wide range of testers with one program;
- data can be exported back to in-house networks in a well-documented, thoroughly debugged form;
- portable reporting and analysis software can be written once and used everywhere.
Teradyne derives no direct commercial benefit from the standard — it published STDF precisely so the whole industry could be more productive with a common, fully documented format.
3. Design objectives
The design of STDF was guided by a small set of clear objectives:
- Be capable of storing test data for all semiconductor testers and trimmers.
- Provide a common format for both storage and transmission of data.
- Provide a basis for portable reporting and analysis software.
- Decouple the data-message format from the database format, so either can evolve independently.
- Provide support for optional (missing or invalid) data.
- Provide complete, concise documentation for developers and users.
- Make it easy for customers to write their own reports or reformat data for their own database.
4. How an STDF file is structured
An STDF file is simply a sequence of records, one after another. Every record — no matter its type — begins with the same 4-byte record header:
| Field | Type | Meaning |
|---|---|---|
| REC_LEN | U*2 | Number of data bytes that follow the header (the header's own 4 bytes are not counted). |
| REC_TYP | U*1 | An integer identifying a group of related record types. |
| REC_SUB | U*1 | An integer identifying the specific record type within that group. |
The pair (REC_TYP, REC_SUB) uniquely identifies each record type. Grouping by
REC_TYP lets analysis programs quickly recognize families of records (for example,
“everything collected per part”). All type/sub-type codes below 200 are reserved by Teradyne;
codes above 200 are free for custom applications.
Record groups (REC_TYP)
| REC_TYP | Group | Record types (REC_SUB) |
|---|---|---|
| 0 | Information about the file | FAR (10), ATR (20) |
| 1 | Per-lot data | MIR (10), MRR (20), PCR (30), HBR (40), SBR (50), PMR (60), PGR (62), PLR (63), RDR (70), SDR (80) |
| 2 | Per-wafer data | WIR (10), WRR (20), WCR (30) |
| 5 | Per-part data | PIR (10), PRR (20) |
| 10 | Per-test (whole program) | TSR (30) |
| 15 | Per-test-execution | PTR (10), MPR (15), FTR (20) |
| 20 | Per-program-segment | BPS (10), EPS (20) |
| 50 | Generic data | GDR (10), DTR (30) |
Byte order and the CPU_TYPE trick
Different processors (DEC, Motorola, Intel, IBM, Sun…) store integers and floating-point
numbers with different bit orderings. Rather than force every tester to convert data as it
writes (which would slow testing down), STDF lets each system write in its own native
representation and records which CPU wrote the file in the CPU_TYPE
field of the very first record (the FAR). When another system reads the file, it checks
CPU_TYPE and converts each record to its own representation only if needed. Data
conversion becomes transparent at read time and testing is never slowed down.
Dates and times
Every date/time field is a 4-byte unsigned integer counting the number of seconds since midnight, January 1st, 1970 (the UNIX epoch), in the local time zone.
5. Data type codes
STDF uses short, recognizable codes for its field types. For example R*4 means a
4-byte real (float). The number after the * is the size in bytes; a byte is 8 bits.
| Code | C type | Description |
|---|---|---|
| C*12 | char[12] | Fixed-length string. If shorter, it is left-justified and padded with spaces. |
| C*n | char[] | Variable-length string; the first byte is an unsigned count of the bytes that follow (max 255). |
| C*f | char[] | Variable-length string whose length is stored in another field. |
| U*1 / U*2 / U*4 | unsigned | 1-, 2-, and 4-byte unsigned integers. |
| I*1 / I*2 / I*4 | signed | 1-, 2-, and 4-byte signed integers. |
| R*4 / R*8 | float / double | 4- and 8-byte floating-point numbers. |
| B*6 | char[6] | Fixed-length bit-encoded data. |
| B*n | char[] | Variable-length bit-encoded field; first byte is a byte count (max 255). |
| D*n | char[] | Variable-length bit field; first two bytes are a bit count (max 65,535 bits). |
| N*1 | char | An unsigned integer stored in a nibble (4 bits). First value in the low nibble, second in the high nibble. |
| V*n | — | Variable data type: the first byte is a code telling you the type, then the data follows. |
| kxTYPE | TYPE[] | An array of k items of the given type, where k comes from an earlier field. e.g. kxU*2. |
6. Optional, missing & invalid data
Many fields are marked optional. An optional field must still be present in the record, but there are two standard ways to say “this value is not meaningful”:
- A predefined reserved value means “missing” — e.g. a length byte of 0 for a string, or a specific number like -1 for a numeric field.
- An Optional Data bit field: a byte where each bit flags whether a particular optional field holds valid data.
To save space, optional fields at the end of a record may be omitted entirely — but only if they (and everything after them) contain missing/invalid data. You may never omit an optional field from the middle of a record.
7. Required records & the initial sequence
Under STDF V4, a valid file must contain four required records:
- FAR — exactly one, and it must be the first record in the file.
- MIR — exactly one, right after the FAR (and after any ATRs).
- PCR — at least one (a summary PCR with
HEAD_NUM = 255, or one per head/site, or both). - MRR — exactly one, and it must be the last record in the file.
Several records say their location is “after the initial sequence.” The initial sequence is the fixed block of records at the very start of the file. Its ordering rules:
- The FAR is always first.
- Any ATRs (audit trail) come immediately after the FAR.
- The MIR comes after the FAR and ATRs.
- If an RDR (retest) is used, it comes immediately after the MIR.
- If SDRs (site description) are used, they come immediately after the MIR (and RDR, if present).
# The initial sequence, in full: FAR → [ATRs] → MIR → [RDR] → [SDRs] → …all other records… → MRR
8. Every STDF V4 record type
Below is every record type defined by STDF V4, grouped by what it describes. For each one you
get its function, how often it appears, where it lives in the file, and — for the important
records — the full field list. Header fields (REC_LEN, REC_TYP,
REC_SUB) are omitted from the field tables since they are identical for every record.
File-level records
FAR File Attributes Record — required, first record
Tells a reader how to decode the rest of the file. Because it carries CPU_TYPE and
STDF_VER, it must be read first.
| Field | Type | Description |
|---|---|---|
| CPU_TYPE | U*1 | Which CPU wrote the file (0 = DEC PDP-11/VAX, 1 = Sun 1–4, 2 = Sun 386i / IBM PC family). |
| STDF_VER | U*1 | STDF version number used to generate the data. |
ATR Audit Trail Record — optional
Records any operation that altered the file (typically a filter program). Multiple ATRs sit in reverse-chronological order immediately after the FAR.
| Field | Type | Description |
|---|---|---|
| MOD_TIM | U*4 | Date and time the file was modified. |
| CMD_LINE | C*n | Command line of the program that altered the file. |
Per-lot records
MIR Master Information Record — required, one per file
Holds the global information about the tested lot — the “header for all reports.” It has many fields (most optional); the highlights are shown here.
| Field | Type | Description |
|---|---|---|
| SETUP_T | U*4 | Date/time of job setup. |
| START_T | U*4 | Date/time the first part was tested. |
| STAT_NUM | U*1 | Tester station number. |
| MODE_COD | C*1 | Test mode (P = production, D/E = development, M = maintenance, Q = QC, C = checker, A = AEL). |
| RTST_COD | C*1 | Lot retest code. |
| BURN_TIM | U*2 | Burn-in time in minutes. |
| LOT_ID | C*n | Lot ID (customer specified). |
| PART_TYP | C*n | Part type / product ID. |
| NODE_NAM | C*n | Name of the node that generated the data. |
| TSTR_TYP | C*n | Tester type. |
| JOB_NAM | C*n | Job / test program name. |
| JOB_REV | C*n | Test program revision. |
| SBLOT_ID | C*n | Sublot ID. |
| OPER_NAM | C*n | Operator name/ID at setup. |
| TST_TEMP | C*n | Test temperature (free text — e.g. “25C”, “HOT”, “COLD”). |
| PROC_ID | C*n | Fabrication process ID. |
| FLOW_ID, PKG_TYP, FAMLY_ID, DATE_COD, FACIL_ID, … | C*n | Many further optional identifiers (flow, package, product family, date code, facility, spec name/version, ROM code, tester serial number, supervisor, and more). |
MRR Master Results Record — required, last record
The logical continuation of the MIR, holding data only known once testing finishes. It is always the final record in the file.
| Field | Type | Description |
|---|---|---|
| FINISH_T | U*4 | Date/time the last part was tested. |
| DISP_COD | C*1 | Lot disposition code (user-defined alphanumeric). |
| USR_DESC | C*n | Lot description supplied by the user. |
| EXC_DESC | C*n | Lot description supplied by the exec software. |
PCR Part Count Record — required, ≥ 1 per file
Holds the part-count totals for one test site or, when HEAD_NUM = 255, for all
sites combined.
| Field | Type | Description |
|---|---|---|
| HEAD_NUM / SITE_NUM | U*1 | Test head / site (255 = summary for all sites). |
| PART_CNT | U*4 | Number of parts tested. |
| RTST_CNT | U*4 | Number of parts retested. |
| ABRT_CNT | U*4 | Number of aborts during testing. |
| GOOD_CNT | U*4 | Number of good (passing) parts. |
| FUNC_CNT | U*4 | Number of functional parts (good enough to test, pass or fail). |
HBR Hardware Bin Record · SBR Software Bin Record
HBR counts parts physically placed into a hardware bin after test (in wafer test, “physical” means an ink dot or a wafer-map entry). SBR counts parts logically assigned to a software bin — finer categories defined in the test program. Both share the same shape:
| Field | Type | Description |
|---|---|---|
| HEAD_NUM / SITE_NUM | U*1 | Head / site (255 = all sites). |
| HBIN_NUM / SBIN_NUM | U*2 | Bin number (0–32767). |
| HBIN_CNT / SBIN_CNT | U*4 | Number of parts in the bin. |
| HBIN_PF / SBIN_PF | C*1 | Pass/fail indicator (P = passing, F = failing, space = unknown). |
| HBIN_NAM / SBIN_NAM | C*n | Name of the bin. |
PMR · PGR · PLR Pin mapping records
These three records describe the mapping between device pins and tester channels, used by functional (FTR) and multi-result (MPR) records. In short: PMR maps a single channel↔pin pair and gives it an index (1–32,767); PGR names a group of pins (group index 32,768–65,535); PLR defines the display radix, operating mode, and the character encodings used to show programmed and returned pin states. See §11 Pin mapping for the full walkthrough.
RDR Retest Data Record — optional
Signals that the file contains retested parts and lists which bins are being retested, so filter programs know what data to replace. If present, it immediately follows the MIR.
| Field | Type | Description |
|---|---|---|
| NUM_BINS | U*2 | Number of bins being retested (0 = all bins). |
| RTST_BIN | kxU*2 | Array of the hardware bin numbers being retested. |
SDR Site Description Record — optional
Describes the physical configuration of a group of test sites on one head — handler/prober, probe card, load board, DIB board, cables, contactor, laser, and their type/ID pairs. Used to correlate yield with the interface hardware. If present, SDRs immediately follow the MIR (and RDR).
Per-wafer records (wafer probe only)
WIR Wafer Information Record · WRR Wafer Results Record
A WIR/WRR pair brackets everything tested on one wafer — WIR marks the start,
WRR the end. They share the same HEAD_NUM and SITE_GRP. WIR carries the
wafer's start time and WAFER_ID; WRR carries the finish time, the same part/retest/
abort/good/functional counts as the PCR, and extra IDs for tracking:
| Field (WRR) | Type | Description |
|---|---|---|
| FINISH_T | U*4 | Date/time the last die on the wafer was tested. |
| PART_CNT … FUNC_CNT | U*4 | Tested / retested / aborted / good / functional die counts. |
| WAFER_ID | C*n | Wafer ID (supersedes the one in the WIR). |
| FABWF_ID | C*n | Fab wafer ID — links results back to fabrication. |
| FRAME_ID | C*n | Wafer frame ID — tracks the wafer after sawing, for inkless binning. |
| MASK_ID | C*n | Wafer mask ID. |
WCR Wafer Configuration Record — one per file, wafer test only
Gives the physical dimensions and orientation for all wafers in the lot — used to draw wafer maps.
| Field | Type | Description |
|---|---|---|
| WAFR_SIZ | R*4 | Wafer diameter (in WF_UNITS). |
| DIE_HT / DIE_WID | R*4 | Die height and width. |
| WF_UNITS | U*1 | Units: 1 = inches, 2 = cm, 3 = mm, 4 = mils (0 = unknown). |
| WF_FLAT | C*1 | Orientation of the wafer flat (U/D/L/R). |
| CENTER_X / CENTER_Y | I*2 | Coordinates of the center die. |
| POS_X / POS_Y | C*1 | Which direction is positive X (L/R) and positive Y (U/D). |
Per-part records
PIR Part Information Record · PRR Part Results Record
A PIR/PRR pair brackets everything tested on one part. The PIR is just a
marker (head + site) placed before testing a part; all the results (PTR/MPR/FTR) for that part
follow, then the PRR closes it out with the outcome. When parallel testing, the
HEAD_NUM/SITE_NUM on each result associate it with the right PIR/PRR pair.
| Field (PRR) | Type | Description |
|---|---|---|
| HEAD_NUM / SITE_NUM | U*1 | Head / site of this part. |
| PART_FLG | B*1 | Bit flags: supersede-by-PART_ID (bit 0) or by X/Y (bit 1); abnormal end (bit 2); failed (bit 3); pass/fail valid (bit 4). |
| NUM_TEST | U*2 | Number of tests executed on the part. |
| HARD_BIN | U*2 | Hardware bin the part landed in (0–32767). |
| SOFT_BIN | U*2 | Software bin (65535 = missing). |
| X_COORD / Y_COORD | I*2 | Wafer coordinates (-32768 = missing). |
| TEST_T | U*4 | Elapsed test time in milliseconds. |
| PART_ID | C*n | Part identification. |
| PART_TXT | C*n | Part description text. |
| PART_FIX | B*n | Application-specific repair information (see §12). |
PART_ID
or the X_COORD/Y_COORD pair — otherwise the results are hard to use for
analysis or to place on a wafer map.Per-test summary
TSR Test Synopsis Record — one per test in the program
Summarizes execution and failure counts for a single test across the whole lot, plus static info like the test name. It links to the PTR/MPR/FTR by test number, head, and site.
| Field | Type | Description |
|---|---|---|
| HEAD_NUM / SITE_NUM | U*1 | Head / site (255 = summary for all sites). |
| TEST_TYP | C*1 | P = parametric, F = functional, M = multi-result parametric. |
| TEST_NUM | U*4 | Test number. |
| EXEC_CNT | U*4 | Number of executions. |
| FAIL_CNT | U*4 | Number of failures. |
| ALRM_CNT | U*4 | Number of alarmed tests. |
| TEST_NAM / SEQ_NAME / TEST_LBL | C*n | Test name, sequencer name, and label. |
| TEST_TIM | R*4 | Average execution time (seconds). |
| TEST_MIN / TEST_MAX | R*4 | Lowest / highest result value seen. |
| TST_SUMS / TST_SQRS | R*4 | Sum and sum-of-squares of results — used to compute mean and standard deviation, even when merging multiple files. |
Per-test-execution records (the measurements)
PTR Parametric Test Record — one per parametric test execution
The workhorse of a datalog: one PTR holds the result of a single parametric measurement (a voltage, a current, a timing, …). The first PTR for a given test number also carries the “semi-static” description — limits, units, scaling and format — which becomes the default for every later PTR of that test (this replaces the separate PDR record used in STDF V3). To save space, later PTRs omit those default fields unless overriding them.
| Field | Type | Description |
|---|---|---|
| TEST_NUM | U*4 | Test number. |
| HEAD_NUM / SITE_NUM | U*1 | Head / site. |
| TEST_FLG | B*1 | Test flags: alarm, result valid, reliable, timeout, executed, aborted, pass/fail. |
| PARM_FLG | B*1 | Parametric flags: scale error, drift, oscillation, above/below limit, alternate-limit pass. |
| RESULT | R*4 | The measured value (valid only if the relevant flag bits are all 0). |
| TEST_TXT | C*n | Test description / label. |
| ALARM_ID | C*n | Name of any alarm triggered. |
| RES_SCAL | I*1 | Result scaling exponent (power of ten). See §10. |
| LO_LIMIT / HI_LIMIT | R*4 | Low and high test limits (with LLM_SCAL / HLM_SCAL exponents). |
| UNITS | C*n | Base units (e.g. “AMPS”, “VOLTS” — never “uAMPS”). |
| C_RESFMT / C_LLMFMT / C_HLMFMT | C*n | ANSI C format strings for display (e.g. “%7.2f”). |
| LO_SPEC / HI_SPEC | R*4 | Low/high specification limits (set once in the first PTR). |
MPR Multiple-Result Parametric Record — new in V4
Like a PTR, but for a parametric test that returns several values at once
(for example, a measurement across an array of pins, or a shmoo sweep). It carries an array of
returned results (RTN_RSLT) and, optionally, the pin states (RTN_STAT)
and PMR indexes they belong to. For shmoo logging, START_IN / INCR_IN /
UNITS_IN describe the swept input condition. Limits, units, and scaling work exactly
as in the PTR, with the first MPR establishing the defaults.
FTR Functional Test Record — one (or more) per functional test execution
Holds the result of a single functional (vector/pattern) test — pass/fail plus rich failure detail. The first FTR for a test carries semi-static defaults (replacing STDF V3's FDR record). Key fields include the vector cycle count and address, the number of failing pins, X/Y failure addresses (for memory pattern generators), the returned and programmed pin states (as arrays of PMR indexes and nibble-encoded states), a failing-pin bitfield, the pattern/vector name, time set, op-code, and the pattern generator number. Returned-state codes range over low/high/ midband/glitch/undetermined and their failed variants; the exact display characters come from the PLR.
Per-program-segment records
BPS Begin Program Section · EPS End Program Section
Optional markers that bracket a named program section (sequencer) within a part's test flow. BPS carries the section name; EPS carries none — each EPS matches the most recent unmatched BPS, so the pairs can nest (one sequencer calling another). They let analysis focus on a particular segment of the program.
Generic / free-form records
GDR Generic Data Record
A catch-all for information that doesn't fit any other record type. It holds a count of fields
followed by that many self-describing GEN_DATA values — each value begins with a
one-byte type code (integer, float, string, bit data, nibble…) and then the data. A special
pad type (code 0) is used to keep multi-byte values on even byte boundaries. Written under
job-plan control for any user-defined purpose.
DTR Datalog Text Record
Free ASCII text to be included in the datalog printout — used to highlight unexpected results
or to note events such as a change in the datalog sampling rate. It carries a single
TEXT_DAT string and can appear anywhere after the initial sequence.
9. How records are ordered in a file
The exact record order depends on whether you are testing wafers or packaged parts, whether parallel testing is on, and whether datalogging is enabled. Here are the canonical patterns.
A lot of packaged devices (full datalog)
FAR file-level info MIR global lot info PIR ┐ first part begins PTR / MPR / FTR … │ every test on that part PRR ┘ first part results PIR … PTR/MPR/FTR … PRR (repeat for each part) … TSR × N one synopsis per test in the program HBR × N one per hardware bin SBR × N one per software bin PCR part-count totals MRR global lot results (last record)
Summary only (no per-part datalog)
Same as above but with the whole PIR…PRR block removed — just FAR, MIR, then the
TSR/HBR/SBR/PCR summaries and the MRR.
A lot at wafer probe
FAR · MIR · WCR wafer dimensions & orientation WIR ┐ first wafer begins PIR · PTR/MPR/FTR · PRR │ each die on the wafer … │ WRR ┘ first wafer summary WIR … WRR (repeat for each wafer) TSR… HBR… SBR… PCR… MRR lot summaries + final record
A wafer-map-only file is the same but stores just PIR/PRR
per die (no PTR/MPR/FTR), keeping only what's needed to paint the map.
Parallel testing
With multiple heads and sites, records for different dies interleave: several PIRs open first,
the tester emits PTR/MPR/FTR records tagged by head+site as tests run, and each die's PRR appears
as soon as that die finishes (not necessarily in start order). Each wafer's WRR is written
once all of that head's dies are done, and the PCR block includes one PCR per head/site plus a
summary PCR with HEAD_NUM = 255.
10. Scaling, units & limits
Inside a PTR/MPR the RESULT, limits, and specs are all stored normalized to
the base unit named in UNITS. That means UNITS is always a
whole unit — “AMPS”, never “uAMPS” — and you can do arithmetic directly on any values whose units
agree.
For display, two extra pieces are used: a scaling exponent and an ANSI-C format string.
The _SCAL value is the power of ten of the scaling factor and also selects the SI
prefix:
| _SCAL | Prefix | Meaning | Magnitude |
|---|---|---|---|
| 15 | f | femto | 10⁻¹⁵ |
| 12 | p | pico | 10⁻¹² |
| 9 | n | nano | 10⁻⁹ |
| 6 | u | micro | 10⁻⁶ |
| 3 | m | milli | 10⁻³ |
| 2 | % | percent | 10⁻² |
| 0 | — | base | 10⁰ |
| -3 | K | Kilo | 10³ |
| -6 | M | Mega | 10⁶ |
| -9 | G | Giga | 10⁹ |
| -12 | T | Tera | 10¹² |
The scaled value is simply value × 10^_SCAL. For example, to store “123.45 uAMPS”:
RESULT= 123.45 × 10⁻⁶RES_SCAL= 6 (the code for “micro”)C_RESFMT=%7.2fUNITS=AMPS
To display it: multiply by 10⁶, format with two decimals, prepend the “u” prefix, and append the units → 123.45 uAMPS.
11. Using the pin-mapping records
When a device is tested there is a mapping between device pins and tester channels. Three record types describe it, and FTR/MPR records reference them by index:
- PMR (Pin Map Record) — defines one channel↔pin association and gives it a unique PMR index (1–32,767). Each channel has a type and name; each pin has a physical and a logical name; the head and site are recorded too.
- PGR (Pin Group Record) — names a group of pins (e.g. “address bus”) and lists the PMR indexes in it, with its own group index (32,768–65,535).
- PLR (Pin List Record) — for a list of pins/groups, defines the display radix (binary, octal, decimal, hex, symbolic), the operating mode (normal, dual-drive, SCIO…), and the ASCII characters used to render programmed and returned states.
When software decodes a functional result, it reads the PMR index arrays in the FTR/MPR to know which pins had which values, uses the PMR to get the pin's physical/logical/channel names and its head/site, uses the PGR to see what group the pin belongs to, and uses the PLR to render the states in a form engineers recognize for that tester and device.
12. Storing repair information
STDF can also carry repair data for memory, PC boards, and other parts, passing it between the
test and repair processes. The repair information for each part lives in the
PART_FIX field of the PRR. It is application-specific — bit-encoded, integer, float,
or text — with the first byte giving the number of bytes that follow, so it can only be decoded by
a matching analysis program. A minimal repair file can drop the per-test records entirely and
keep just FAR · MIR · (WIR ·) PRR… · PCR · MRR.
13. STDF filenames
The spec recommends a filename of the form filename.STD[string] where:
- filename is 1–39 characters from
A–Z a–z 0–9 _, starting with a letter. - the extension begins with
.STDand, on case-sensitive systems, is best written lowercase (.std). - the dollar sign
$is no longer allowed (it caused problems on some operating systems). - use only a single period, and keep the extension short — software may append characters to it to indicate processing state.
Good filenames are unique across a system, hint at their content and generation time, and work across a variety of operating systems.
14. Differences between STDF V3 and V4
STDF was introduced in 1985 and grew into a de-facto industry standard. After collecting nearly a hundred requests from customers and other ATE vendors, Teradyne released Version 4, the version in use today. The biggest changes:
- Four required records (V3 required only MIR and MRR): FAR, MIR, PCR, MRR — and the file must now begin with the FAR.
- New records: ATR, PCR, PGR, PLR, RDR, SDR, and MPR.
- Dropped records: the description records PDR and FDR (their semi-static info now lives in the first PTR/FTR of each test), and all the site-specific records SHB, SSB, STS, SCR (their function is now handled by head/site fields in HBR, SBR, TSR, and PCR).
- Part counts moved out of the MRR into the new PCR;
CPU_TYPEandSTDF_VERnow live only in the FAR. - Pin mapping was redesigned: the V3 PMR (which could also define groups) was split into PMR + PGR + PLR.
- Display fields modernized: old digit-count fields were replaced with ANSI-C format strings (
C_RESFMTetc.), and spec limits (LO_SPEC/HI_SPEC) were added to the PTR/MPR. - New data types
D*nandN*1were added and theB*nbit ordering was clarified. - Unchanged records: BPS, EPS, GDR, and DTR.
15. Glossary
| Term | Meaning |
|---|---|
| Aborted part | A part whose testing began but did not run to completion (e.g. the operator interrupted it). |
| Datalog | A listing of specific test information — test results and parameter values. |
| Die | A single semiconductor device within a wafer. |
| Functional part | Any part that, when tested, does not fall into the catastrophic-failure bin (usually bin 0). Kept in FUNC_CNT. |
| Good part | Any part placed in a bin acceptable for use/sale. Kept in GOOD_CNT; needed for yield. |
| Hardware bin | A physical sort category on the device handler for grading tested devices. |
| Software bin | A logical sort category defined in the test program for finer categorization than hardware bins. |
| Insertion | The act of testing one lot of parts one time (a lot may be tested several times under different conditions). |
| Job plan / test plan / test program | The set of program statements designed to test a specific device. |
| Lot | A batch of parts (often a whole production run) tested as a group; may be split into sublots. |
| Lot disposition | A decision about the future of the lot (e.g. yield too low to package). |
| Retested part | A part tested more than once during one insertion, usually because a problem was detected the first time. |
| Sequencer | The “table of contents” of a test program — the ordered list of tests with their limits and binning. |
| Setup / Start / Finish time | When setup begins / when the first part starts testing / when the last part finishes. |
| Tester | A machine capable of separating (and usually grading) good parts from bad. |
| Test head | The hardware to test one or more devices; on parallel testers it controls multiple sites. |
| Test site | The hardware connections needed to test a single device; one head may have several sites. |
| Test station | A logical software entity that loads and runs a single test plan, associated with one or more heads. |
| Wafer | A disk of high-purity semiconductor material; the substrate on which ICs are built, then probed by ATE. |
Analyze STDF the easy way — with DLOG, a Windows STDF analyzer
Because STDF is a compact binary format that can contain millions of records per lot, opening and cross-analyzing many files by hand is impractical. DLOG reads STDF V4 record by record, loads many files at once, and turns raw datalogs into wafer maps, bin Pareto, histograms, trend/scatter charts, Cpk, PAT, Gauge R&R and correlation — exported as PDF / Excel / image reports in a few clicks, fully offline on your own PC.
Try DLOG free for 6 months →