Structured Test Data Format (STDF) is used to log test data by semiconductor automated test equipment (ATE).
There's a couple of good, open-source libraries for parsing STDF, notably PyStdf.
Latest version: 0.2
- Haskell
- Fast
cabal install stdf
Or for the latest revision, clone and build from here.
Here's an example of converting STDF to JSON. (What else would you want to do with it?)
import Data.Stdf
import qualified Data.ByteString.Lazy.Char8 as BL
import Data.Aeson
-- unparsed records have type Raw for the time being
notRaw :: Rec -> Bool
notRaw (Raw _) = False
notRaw _ = True
main = do
raw <- BL.readFile "test.stdf"
let recs = parse raw
let goodRecs = filter notRaw recs
mapM_ (BL.putStrLn . encode) goodRecs
- WaferMap -- prints a pretty wafermap like this:
$ Examples/WaferMap test.stdf
File: test.stdf
. . . . . 11 11 11 11 11 . . . . . .
. . . 11 11 11 11 6 1 6 11 11 11 . . .
. . 11 11 1 11 11 11 1 11 1 1 11 11 . .
. 1 1 1 11 1 1 1 1 6 6 6 1 1 11 .
203 11 11 11 11 11 1 6 11 1 1 11 1 11 11 .
11 11 11 11 1 11 6 1 1 1 11 11 11 11 11 11
11 11 11 11 1 1 11 1 11 6 1 11 1 11 11 11
203 11 11 1 1 11 6 1 11 212 6 1 11 11 11 .
. 200 6 11 1 1 1 1 1 6 11 1 1 11 11 .
. . 11 11 11 11 1 1 1 11 1 1 1 11 . .
. . . 11 11 1 11 11 1 11 11 11 11 . . .
. . . . . 11 11 11 11 200 212 . . . . .
- StdfToJson -- prints each Stdf record as a one-line JSON object for easy importing into other languages for further processing
- StdfToYaml -- Like StdfToJson but it prints a YAML document. YAML is vastly slower and more human-readable than JSON.
Performance is very good but can be 50% better if you build with -O2
.
However compiling takes forever with -O2
.
It really blows my mind that Stdf expects the parser to support any N CPU bit encodings. I won't do it.
There may be a few little-used fields getting dropped. Since I only have Advantest 93k STDF files to test it with, some things haven't gotten much QA.