tcl vs Perl vs Python vs Skill vs C++ -> How to build VLSI design infrastructure?
The VLSI design industry relies heavily on electronic design automation for flow automation and scripting languages like tcl, Perl, python and SKILL form an integral part of EDA.
Let’s briefly look at the various scripting languages with their merits and demerits and see which is the right language to choose for design system development.
Tcl:
Tcl has primarily evolved as a command-line interface to the EDA tools [primarily Synopsys based EDA tools like ICC, DC].
From a language point of view, it’s a string-based scripting language and it is a pure interpreter. It comes with a minimal number of language constructs and primarily meant for design automation to quickly test the flow.
Drawbacks:
- Cannot deal with binary data
- Cannot pass arrays by value or by reference — possible only by name.
- Stores everything as strings slowing its arithmetic.
Perl:
Unlike tcl, Perl comes with a rich set of language constructs. The base for Perl modules are c libraries, if you get into the installation directory of Perl, all the supporting c language shared objects can be seen.
In the past[recently Python is widely adopted], Perl is considered as the first choice for scripting jobs because of its simplicity. Tasks in EDA like parsing of netlist files, parsing of timing reports, parsing of VCD files, generation of reports in Excel format, generation of progress dashboards in HTML format, etc can be done easily using Perl. Also, Perl is known for its powerful pattern matching features. VLSI reports are almost always parsed for particular patterns like module names, net names, gate names, keywords, etc. and Perl is the best choice for this task.
Some of the Perl features are
- Allows dynamic loading of object modules.
- Support anonymous subroutines
- Can analyze a script for syntax errors without executing it.
- Has very powerful debug features.
- Has references which allow arbitrarily complex data structures including structures that are self-referential.
Perl has a huge repository of modules available readily on CPAN (Comprehensive Perl Archive Network). There are Perl modules for Excel parsing & writing, HTML parsing, Verilog parsing, etc along with regular updates & user support.
SKILL:
Skill is a proprietary language of Cadence design systems. It is used for automation and as a command-line interface with cadence based tools like Virtuoso in the Analog world.
Python:
Adoption of the python as an automation language has steadily raised in the recent past. The new generation apache tools like Redhawk support python as an interface language to the tool. Also, Python comes with an industry-specific suite of libraries which makes many jobs easy.
Factors influencing design system development:
Below are some of the factors to be considered while selecting the languages for design system development
1.Size of the design data [ For example, processing large libraries to retrieve information]
2. Type of flow and the vendor tools supported. If cadence tools to be supported, at some point, the data has to be transferred into SKILL format.
3.End users abilities. For a designer to learn languages like Perl or python is difficult whereas tcl is considered to be an accepted language here.
I propose the below framework as the ideal suite for design system development[ to support design flow with multiple vendor tools ].In this system, performance-driven activities are compiled in C++ code and depending on the EDA tools in the flow, the corresponding scripting interfaces are generated using SWIG interface.