[Baypiggies] Summary of Python in Electronic Design Automation (EDA)
Stephen McInerney
spmcinerney at hotmail.com
Thu Apr 27 08:20:41 CEST 2006
Here is a summary for anyone who is interested in Python in Electronic
Design Automation (EDA):
As it happens three separate people today independently asked me about the
exact same topic.
So I am writing this because I know for a fact there has been a small
cluster of EDA people who
periodically attend BayPIGgies for at least 2 years, but it seems to ebb and
flow without ever
acquiring critical mass. I have been trying to round up enough heads for a
"Python in EDA" evening for a few years now.
EDA is unfortunately historically dominated by legacy proprietary languages
(Cadence SKILL (a LISP derivative), Synopsys dc-shell, etc.).
Tcl has emerged within the last 8 years to an extent as the de facto
scripting and automation
standard, as endorsed by many EDA vendors. (Believe it or not, that's a huge
advance on what went before).
Essentially, EDA scripting as written by EE's (as opposed to the EDA
software itself, which is written by CS guys) lags best practices in
software (revision control, testing, object-orienting, reuse) by about 25
years typically. This is a pet topic of mine and believe me I can show you
plenty metrics to prove that (see also ISQED conference).
There is no single area of application for Python in EDA but there are
several open areas which are not dominated by any legacy. Python also goes
head-to-head with PERL since PERL is an EE's de facto scripting language of
choice, historically anyway. So writing an imperative style with heavy use
of regexes and eschewing OO is kind of an unfortunate straitjacket
requirement, in order that your colleagues can understand and maintain your
code.
These are the main current areas where Python is used in EDA:
- Python for small tasks, netlist transformations, buffer insertion,
transistor compaction
- Python in testing, builds, automation, job control, webserver logging of
results
- interfacing to the emergent OpenAccess standard for a silicon design
database with an open API (in C++): (http://www.si2.org/?page=69)
- interfacing to or wrapperising C++ APIs or revision control
- small GUIs (usually Tkinter)
- mod_python, mod_perl, Ruby and PHP for internal websites (e.g. regression
results)
- Jan Decaluwe even proposed PyHDL: Python as a design language (HDL):
(http://www.eet.com/news/design/technology/showArticle.jhtml?articleID=177101584)
although that is very uncommon - Verilog(& SystemVerilog) dominate, followed
by VHDL.
Here is a list of former or current BayPIGgies with an interest in Python in
EDA,
based on my personal interactions. Apologies if I get anyone wrong or
omitted:
Stephen McInerney (Sun Microsystems, Magma, Transmeta)
Dennis Reinhardt (DAIR Computer Systems, former chair of HotChips conference
and IEEE chapter head)
Peter Simanyi (Cadence)
Jan Decaluwe (Mephisto Design Automation (MDA), PyHDL, eAsics)
Tim Burks
John Ivie
Andrew Lentvorski
And here is a list of EDA companies known to at least partially use Python:
Synopsys www.synopsys.com (mainly for testing only)
Magma Design Automation www.magma-da.com (only for some testing and
automation)
Pyxis http://www.pyxistech.com/
Tabula Software
various other OpenAccess partners (mostly small startups)
(A couple of folks had suggested it might be neat to add links pages from
baypiggies.net to
Pythonic companies broken out by sector. That is a good idea for the
future.)
Hope this is useful for people who are interested,
Stephen
More information about the Baypiggies
mailing list