VLSITools.com is up!

After presenting some work at this year’s Design Automation and Test in Europe (DATE) conference, I was finally able to make some of my analysis software publicly available.  I decided to make a site specifically dedicated to “free” software tools and scripts for chip design. I don’t want to get into the definition of “free” – all I wanted was a site where anybody could download some code and use it in their work.  The result was VLSITools.com. As of now, I have two items up for download: GDS Mill, and Arrows, along with a few miscellaneous scripts I find useful.

GDS Mill is a Python package for doing common layout tasks using GDS files.  I found on many occasions that the commercial software tools don’t have very good methods for doing layout scripting.  Sure, you can use SKILL, but it is one of the most painful programming languages I’ve ever had to use.  SKILL++ is even worse – an attempt at object orientation that makes every aspect of developing extensible code miserable. Python, on the other hand, proved to be perfect for the job. I developed two libraries for reading and writing the binary GDS2 format – no trivial task! I then wrapped up the Cadence PIPO executable in another Python class for streaming GDS to and from Cadence directly.  GDS Mill simply uses these classes at the top level along with an abstract representation of a layout hierarchy. It makes for a great workflow where you can write a short, readable Python script to (a) stream a Cadence library to a GDS file, (b) import that GDS file into an abstract layout object, (c) make modification, new layouts, new elements, etc., (d) export the new layout to a GDS file, and finally (e) stream the new GDS file back into a Cadence library.  I’ve used this tool to layout a complete SRAM cache using a single script, and the ability to make modifications and engineering changes throughout the design cycle was fantastic.

Arrows is another Python package for doing dynamical analysis of bistable circuits.  Sounds like a mouthful, but the idea is rather straightforward: Bistable circuits, such as SRAM cells, flip flops, etc. are nearly impossible to analyze using standard simulation tools. To get around this, I made the Arrows tool to use dynamical analysis for gathering information about these types of circuits.  What is dynamical analysis? It’s a method for learning about the properties of a complex system by looking at it’s dynamics (think derivatives here) instead of static solutions.  I’ll have a post on how this is done coming soon……

So go check out the site (VLSITools.com).  If you have something you want to add, drop me a line and we’ll figure out how best to incorporate it.