📊 STDF Record Viewer - VS Code Extension

A powerful and modern VS Code extension for viewing and analyzing STDF (Standard Test Data Format) files with zero external dependencies. Features a pure TypeScript/Node.js parser with complete STDF V4 support - no Python required!
🎯 v1.0.2: Complete STDF V4 Implementation
✅ All 26 Record Types - 100% STDF V4 specification coverage
✅ 120+ Fields - Every field from the STDF V4 spec
✅ Header Fields Visible - REC_LEN, REC_TYP, REC_SUB, REC_NAME
✅ Pure TypeScript/Node.js - No Python, no system dependencies
✅ Streaming Parser - Handle GB-size files efficiently
✅ Multi-Column DTR - Intelligent parsing with axis support
✅ Vendor Extensions - PRR.WAFER_ID, DTR axis fields
✅ Gzip Support - Built-in .stdf.gz decompression
📚 Documentation
🆕 What's New in v1.0.2
🎉 Complete STDF V4 Implementation
- All 26 Record Types - Complete coverage of STDF V4 specification
- FAR, ATR, VUR, MIR, MRR, PCR, HBR, SBR, PMR, PGR, PLR, RDR, SDR
- WIR, WRR, WCR, PIR, PRR, TSR, PTR, MPR, FTR, BPS, EPS, GDR, DTR
- 120+ Fields - Every field defined in the STDF V4 spec
- Header Fields - REC_LEN, REC_TYP, REC_SUB, REC_NAME now visible in UI
- Smart Column Ordering - Header fields always appear first
🔧 Enhanced DTR Parser
- Multi-Column Support - Parse delimited data (tab, pipe, comma, space, semicolon)
- Intelligent Axis Parsing - Automatic extraction of value/unit pairs
- Vendor Extensions - dtr_id, axis_1_value, axis_1_unit, axis_2_value, axis_2_unit, axis_3_value, axis_3_unit
- Pattern Recognition - Detects formats like "123.45 mV" automatically
📊 PRR Enhancements
- Vendor Extensions - Added WAFER_ID and WAFER_NUMBER fields
- Complete Field Set - All standard + vendor-specific fields visible
🎨 UI Improvements
- Column Ordering - Header fields (REC_LEN, REC_TYP, REC_SUB, REC_NAME) always first
- Zero Value Support - Correctly handles fields with value 0
- Complete Data Display - All fields from all record types visible
🏗️ Architecture
- Pure TypeScript/Node.js - No Python, no external dependencies
- Streaming Parser - Memory-efficient for GB-size files
- Built-in Gzip - Native
.stdf.gz support via zlib
- Array Bounds Checking - Prevents buffer overruns
- Type Safety - Full TypeScript implementation
🔍 Enhanced SQL Engine
- SELECT specific columns - No longer returns all data
- GROUP BY support - Group and aggregate data
- Aggregate functions - COUNT, SUM, AVG, MIN, MAX
- Multiple column ORDER BY - Sort by multiple fields
- Better error messages - Clear validation feedback
✨ Features
🚀 Core Features
- 🎯 View STDF Records - View records from
.stdf and .stdf.gz files
- 🗜️ Gzip Support - Automatically decompresses
.stdf.gz files
- 📑 24 Record Types Supported - FAR, ATR, MIR, MRR, PCR, HBR, SBR, PMR, PGR, PLR, RDR, SDR, WRR, WCR, PIR, PRR, TSR, PTR, MPR, FTR, BPS, EPS, GDR, DTR, WIR
- 📄 View Complete File - Stream all record types in one view with organized sections
- 🎨 Modern UI - Beautiful gradient design with dark theme
- ⚡ Fast Loading - Efficient streaming for large files
- ⏹️ Stop Button - Cancel long-running operations anytime
🔍 Advanced Features
- 📊 Interactive Table - Resizable columns with text wrapping
- 🔎 Enhanced SQL Query Support - Full-featured SQL engine with:
- SELECT specific columns
- GROUP BY clause with aggregates
- COUNT, SUM, AVG, MIN, MAX functions
- Multiple column ORDER BY
- WHERE, LIKE, IS NULL, operators
- 📄 Pagination - Navigate through large datasets (100 records per page)
- 💾 CSV Export - Export filtered/grouped results with timestamp
- ⌨️ Query History - Undo/Redo with
Ctrl+Z / Ctrl+Y
- 🎯 Smart Filtering - Case-insensitive search with pattern matching
💻 SQL Query Examples
-- Get all records
SELECT * FROM data
-- Select specific columns
SELECT REC_TYP, REC_LEN FROM data WHERE TEXT_DAT = 'Test'
-- Group by with aggregates
SELECT REC_TYP, COUNT(*) FROM data GROUP BY REC_TYP
-- Advanced grouping
SELECT REC_TYP, REC_LEN FROM data
WHERE TEXT_DAT = 'TCCT Input Decision Variables'
GROUP BY REC_TYP, REC_LEN
-- Pattern matching
SELECT * FROM data WHERE TEXT_DAT LIKE '%Status%'
-- Aggregate functions
SELECT AVG(REC_LEN), MIN(REC_LEN), MAX(REC_LEN) FROM data
-- Complex query with sorting and limit
SELECT REC_TYP, COUNT(*), AVG(REC_LEN)
FROM data
WHERE REC_LEN > 10
GROUP BY REC_TYP
ORDER BY COUNT(*) DESC
LIMIT 5
📦 Installation
Prerequisites
No external dependencies required! 🎉
This extension uses a pure TypeScript/Node.js parser that runs entirely within VS Code.
Install Extension
You can install this extension via:
- VS Code Marketplace (search for "STDF Viewer")
- Or install the
.vsix file locally
🎯 Usage
Method 1: Right-Click
- Right-click any
.stdf or .stdf.gz file
- Select "Open With..."
- Choose "STDF Record Viewer"
Method 2: Command Palette
- Press
F1 or Ctrl+Shift+P
- Type "Open STDF Record Viewer (Select File)"
- Browse and select your STDF file
🎨 Interface Overview
- File name display with 🗜️ Decompressed badge for
.gz files
- Gradient purple theme
2. Control Panel
- Record Type Dropdown - Choose from 24 record types or "View Complete File"
- Load Records Button - Fetches selected record type
- Stop Loading Button - Cancel long-running operations (appears during loading)
- Export CSV Button - Exports current filtered data
3. SQL Query Panel
- Query Input - Multi-line SQL editor
- Execute SQL Button - Run query on loaded data
- Clear & Show All Button - Reset filters
- Query History -
Ctrl+Z to undo, Ctrl+Y to redo
4. Data Table
- Resizable Columns - Drag column edges to resize
- Text Wrapping - Long text automatically wraps
- Sticky Header - Header stays visible while scrolling
- Row Hover Effect - Highlights row on hover
- Navigate large datasets
- Shows: First, Previous, Page Numbers, Next, Last
- Displays current page info (e.g., "Showing 1 to 100 of 500 records")
🔧 Keyboard Shortcuts
| Shortcut |
Action |
Ctrl+Z |
Undo last SQL query |
Ctrl+Y |
Redo SQL query |
Ctrl+Shift+P |
Open command palette |
📊 Supported STDF Record Types
|
Test Data Records
- PTR (Parametric Test)
- MPR (Multiple Result Parametric)
- FTR (Functional Test)
- STR (Scan Test)
|
Datalog Records
- MIR (Master Info)
- MRR (Master Result)
- PCR (Part Count)
- HBR (Hardware Bin)
- SBR (Software Bin)
|
Audit Records
- FAR (File Attributes)
- ATR (Audit Trail)
- DTR (Datalog Text)
- GDR (Generic Data)
|
And more: PIR, PRR, TSR, PMR, PGR, PLR, RDR, SDR, WRR, WCR, BPS, EPS
🐛 Troubleshooting
Extension doesn't open for .stdf files
- Right-click the
.stdf or .stdf.gz file
- Select "Open With..."
- Choose "STDF Record Viewer"
- Check "Configure default editor for '*.stdf'..."
Parsing Error
- Check VS Code's Output panel (select "STDF Viewer" from dropdown)
- Verify the file is a valid STDF V4 file
- Try with a smaller file first to isolate the issue
Gzipped file fails to open
- Ensure the
.gz file is valid (not corrupted)
- Check disk space for temporary decompression
- Try opening the original
.stdf file if available
No records displayed
- Check if the selected record type exists in your STDF file
- Try different record types (MIR, DTR, PTR are commonly present)
- Use "View Complete File" to see all record types
- Check VS Code's Output panel for parsing errors
SQL Query not working
- Make sure to use
FROM data (lowercase)
- Enclose string values in single quotes:
'value'
- Use uppercase for column names:
TEXT_DAT, REC_LEN
- For aggregates with GROUP BY, include columns in SELECT or as aggregates
- Check syntax:
SELECT columns FROM data WHERE condition GROUP BY columns
- Stop button only shows when loading "View Complete File"
- For single record types, loading is usually fast and stop isn't needed
📝 Technical Details
Architecture
- Language: TypeScript (Pure)
- Framework: VS Code Extension API
- UI: Custom Webview with HTML/CSS/JavaScript
- Parser: Pure TypeScript/Node.js STDF V4 Parser (14 record types)
- Streaming: Memory-efficient with backpressure support
- Compression: Node.js zlib module for gzip support
- Data Processing: Optional DuckDB WASM for SQL queries
File Structure
Extension/
├── src/
│ └── extension.ts # Main extension logic (TypeScript)
├── out/ # Compiled JavaScript
├── dist/ # Distribution files
├── media/ # Extension icons
├── package.json # Extension manifest
├── language-configuration.json # STDF language config
├── tsconfig.json # TypeScript config
└── README.md # This file
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- STDF V4 Specification - Industry standard for test data format
- VS Code Team - For the powerful extension API
- TypeScript Community - For excellent tooling and ecosystem
- Community - For feedback and contributions
Made with ❤️ for the semiconductor testing and data community
⭐ Star this repo if you find it useful!
| |