STDF (Standard Test Data Format) in Semiconductor Industry
[Gemini]
In the semiconductor world, STDF (Standard Test Data Format) is the universal language of test results. Developed by Teradyne, it is a binary file format used to store data generated by Automatic Test Equipment (ATE) during the wafer sort and final package testing phases.
Think of it as the “black box” recorder for microchips. Every time a chip is tested, the ATE records whether it passed, its voltage readings, timing measurements, and binning information into an STDF file for later analysis.
Why Use STDF?
- Interoperability: It allows different ATE platforms (Teradyne, Advantest, etc.) to speak the same language.
- Efficiency: Being a binary format, it is much smaller and faster to write than text-based formats like CSV or XML, which is crucial when testing millions of chips.
- Data Integrity: It uses a structured record system (e.g., MIR for Master Information, PTR for Parametric Test Results) to ensure data is organized and traceable.
Example of STDF Record Logic
An STDF file isn’t human-readable if you open it in Notepad. It consists of a sequence of variable-length records. A simplified logical flow looks like this:
| Record Type | Name | Purpose |
| MIR | Master Information Record | Setup info: Lot ID, Operator, Node Name, Start Time. |
| PIR | Part Information Record | Marks the beginning of a specific chip (part) being tested. |
| PTR | Parametric Test Record | The “meat”: Test name, actual value (e.g., 1.25V), limits, and pass/fail status. |
| PRR | Part Results Record | The “summary” for that chip: Final bin, total test time, and pass/fail flag. |
| MRR | Master Results Record | The end of the file: Total parts tested and finish time. |
How to Handle STDF (Python Example)
Since STDF is binary, you don’t want to write a parser from scratch. The most popular tool for this is the pystdf library or semi-ate.
Here is a short example using a typical parsing approach to extract Parametric Test Results (PTR):
# Note: You would typically install a library like pystdf
# pip install pystdf
from pystdf.Operator import Operator
from pystdf.IO import Parser
def process_stdf(file_path):
# The Operator class acts as a sink for different record types
with open(file_path, 'rb') as f:
p = Parser(f)
# Define what happens when we hit a PTR record
def on_ptr(record):
test_name = record.TEST_TXT
result = record.RESULT
print(f"Test: {test_name} | Value: {result} | Pass: {record.TEST_FLG == 0}")
# Link the record handler and parse
# (Simplified logic)
for record in p:
if record.REC_TYP == 15 and record.REC_SUB == 10: # PTR type/sub
on_ptr(record)
# process_stdf('my_chip_data.stdf')Pro-Tip for Engineers
If you just want to look at the data without coding, tools like JMP, YieldExplorer, or free viewers like STDF Visualizer are used to convert these binary blobs into readable charts and histograms.
