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.
Hi Mike,
You have developed an excellent tool !!!! I will be extending this tool for characterizing my standard cell library. Great Stuff !!!
Mike I have a question. I am using Python 3. Does Arrow support it or I will run into some error? I don’t mind using 2.7 but if 3 is good I would love to continue. Please Mike get back to me on this one.
Thanks
Regards
Nandish
Dear Michael,
I would be very much interested in your .gds library. The download link seems to be broken. Is there a way to get the package?
Thanks in advance and kind greetings,
Helmut
Helmut – I assume you are referring to GDS mill, which is a set of scripts for manipulating GDS files. You can download it now from the Software link above.
Hi Mike,
Do you happen to have a copy of gdsMill we can use? I cannot seem to get a http response from VLSItools.com. Thanks!!!! Take care.
James Stine
James – I added a software link to the top of this blog where these tools can now be downloaded. Let me know if you have any questions.