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 TypeNamePurpose
MIRMaster Information RecordSetup info: Lot ID, Operator, Node Name, Start Time.
PIRPart Information RecordMarks the beginning of a specific chip (part) being tested.
PTRParametric Test RecordThe “meat”: Test name, actual value (e.g., 1.25V), limits, and pass/fail status.
PRRPart Results RecordThe “summary” for that chip: Final bin, total test time, and pass/fail flag.
MRRMaster Results RecordThe 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.

Our Score
Click to rate this post!
[Total: 0 Average: 0]
Visited 1 times, 1 visit(s) today

Leave a Comment

Your email address will not be published. Required fields are marked *