Thursday, January 18, 2007

PySTDF 1.3.1 Released, New Downloads Page

I recently learned of a bug in the AtdfWriter implementation. The issue was a method intended to format array types that never got written (oops!). I've added the method, so the stdf2atdf should run more smoothly now.

I was also pleased to discover new features available on Google Code: Wiki support and a Downloads manager. The latest release, 1.3.1, contains the above ATDF array formatting fix, and is now available on the PySTDF downloads page.

Thursday, November 09, 2006

PySTDF in upcoming OpenTech CD release

PySTDF will be on the soon-to-be released OpenTech 1.6.1 CD box set (file listing). It will be officially released on Nov. 15.

I have a new minor update to PySTDF. The StdfExplorer now displays wafer, insertion, and part index per record, where applicable. I also added the GPL license to the distribution to satisfy FSF requirements.

Get it here: PySTDF 1.2.0

Sunday, August 20, 2006

PySTDF Joins the OpenTech Network

PySTDF has been invited to join the OpenTech network, an open source EDA tools resource center and distribution CD-ROM! While I didn't initially consider PySTDF an EDA tool per se, there may be some crossover interest for academic projects and fabless startups that are producing silicon and need tools to characterize and test their material.

I plan to re-package PySTDF for distribution in the upcoming OpenTech CD-ROM release, and look forward to participation in the OpenTech community.

Thursday, August 17, 2006

Announcing STDF Explorer

So I've developed this simple but perhaps useful STDF browser GUI app... I ended up choosing wxPython, with BoaConstructor as an IDE. BoaConstructor was really weird for me to use at first, but it seems to be stable enough, and its growing on me.

STDF Explorer is a very basic STDF viewer. The left pane lists the sequence of STDF record types in the file, along with the file offset location of each record in hexadecimal. When you click on a record on the left, the right pane will display the contents of the record.

One of the cool features of the STDF explorer is that it can display contents immediately while continuing to load the rest of the file in the background. This was my first multithreaded GUI adventure (like I said, I have little GUI background) so it was fun to figure this part out.

In any case, keep your $3 a day for a good cup of coffee, and go download STDF Explorer 1.1.0. I encourage you to try it out with the biggest, baddest STDF files you have -- your testing will help me improve it.

Download: StdfExplorer-1.1.0.zip (4.7MB)

Instructions:
1. Unzip and run StdfExplorer.exe
2. Open an uncompressed STDF file
3. Explore!

Here's a screenshot of the STDF explorer in action:

Wednesday, August 09, 2006

PySTDF 1.0.0 released

I feel comfortable enough with the stability and structure of PySTDF to make an initial release. This release currently provides:
  • Modules for parsing, indexing and working with STDF data.
  • Several scripts that demonstrate how to use the modules to parse files and more. The stdf2atdf script is a good drop-in replacement for commercial STDF to ATDF converters.
As a library, I think its pretty darned useful for working with STDF data. As an application, "you ain't seen nothin' yet!".

Python 2.4 or greater is recommended.

Windows package: pystdf-1.0.0.zip
UNIX package: pystdf-1.0.0.tar.gz

Installation is typical of most Python distutils-generated packages. Extract the archive, 'cd' into the extracted pystdf-1.0.0 directory, and do:

$ python setup.py install

(On UNIX, you might need superuser privileges to install, or specify a different installation prefix on the command line. Do 'python setup.py install --help' for assistance.)

Windows will install the stdf2atdf script somewhere like C:\Python24\Scripts. UNIX will put it in /usr/bin or /usr/local/bin (depending on Python's installation prefix).

Friday, August 04, 2006

In development: ATDF converter and STDF viewer

I am currently working on two applications which will be a part of the upcoming release of PySTDF: ATDF conversion and a simple GUI STDF explorer application.

I've already checked a simple STDF to ATDF converter into SVN (stdf2atdf). The only thing missing is that it doesn't properly format all the fields according to the ATDF spec. I don't think an ATDF to STDF converter will take much more work.

I have been more concerned with the graphical explorer app. I've never been much for GUI development, but I really want to pull one off for this project.

I would like to model the STDF data with a Tree Table, which is like a table with hierarchical and expandable/collapsable sections. Eventually, sections will be groupable by:
  • Test head and site number
  • Wafer, insertion count, and part count
  • Test number
  • Bin
  • Maybe something else
I think it's easy to do this as far as indexing the data (I'm more adept at the 'indexing the data' part) but I want a good GUI toolkit that is fast, easy to deploy, has few dependencies, and looks nice.

As far as GUI toolkits go, I've had experience with wxWidgets, GTK+, Windows Forms.NET, FLTK, and TkInter in the past. None of them were much fun to develop with.

I'm even considering a web-based AJAX front end served up from localhost and displayed in a browser component (IE on Windows, maybe Gecko on others). At least it would be more portable and reusable that way! And very skinnable with CSS. I think that's what Galaxy does for their UI, I played with it once and it had a bit of a webpage-like feel.

Tuesday, August 01, 2006

What can PySTDF do for you?

There are lots of features I could add to PySTDF, and applications I could build with it. I am primarily focused right now on developing a GUI browser to explore STDF data, because its something I've always wanted to do and never had the chance.

But I'd also like to keep a user perspective on the direction of development. What are you trying to do with STDF? What kind of tools would help you out?

Friday, July 28, 2006

Why PySTDF?

One of the reasons I'm releasing PySTDF is that I haven't seen anything quite like it out there. I have seen a few projects in this space, as well as plenty of commercial tools for working with STDF. But nothing quite like PySTDF -- so how is PySTDF different?

Stream-oriented

PySTDF was designed first and foremost to be an event-based parser. If you are familar with XML, this is a similar approach to SAX parsing. If you are not, no problem. The idea is that you set up actions to handle all the different record types. This has many advantages:
  • Very fast
  • Low memory overhead
  • Very flexible

Python

Python is used in scientific applications, such as biotechnology and physics. I think the reason for this is that scientists are more concerned with solving problems and playing with data -- Python's simple lanaguage doesn't get in the way, and performs well enough to get the job done.

Deals with STDF's warts

STDF is ubiquitous, and convenient as a standard datalog format -- but how standard is it? Or usable? In my experience I have struggled with many of STDF's warts:
  1. STDF has some really strange data types -- like variable length bit-fields, fields that specify the size of other fields, and other weirdness. Writing a parser for all these cases isn't fun.

  2. STDF is hard to use
    Semiconductor test engineers should be able to play with data without having to deal with the messiness of the STDF format. You were probably hoping to load that data into some kind of statistical analysis tool, right?

  3. Broken, dirty data
    STDF data is only as good as the ATE vendor's implementation of the format, and the identifiers used in the testing process. In my experience, there are many cases where the data needs to be repaired, cleaned or otherwise preprocessed. A stream-oriented parser is well-suited to solve many of these issues.

  4. C libraries
    Engineers need to be able to play with data, not wrastle with compilers, memory allocation, and pointers. Programming in C gets in the way of experimentation and rapid application development.
I would like to hear your experiences with the library and any suggestions for where to take it, how I can improve upon it, and applications you might like to see built on top of it. Also, I am interested in your experiences with STDF!

Announcing PySTDF

PySTDF is a little pet project of mine, a Python module for processing STDF. STDF (Standard Test Data Format) is a binary datalog format originally developed by Teradyne which is supported by most major automated test equipment (ATE) platforms. I have several years of experience with software development in a semiconductor test environment and as a result I am very familiar with this ubiquitous format.

When I was learning Python a while back I wrote a simple parser in my spare time to understand two concepts in "Pythonic" programming: functional programming and metaclasses. Out of this hacking around, and a little cleanup, comes PySTDF.

Visit the PySTDF project page.