There are a lot of commercially available tools for the physical design of integrated circuits. However, knowledge of a bit of programming comes handy to the physical design engineer, as most of these tools provide some kind of programming interface. For example, In Synopsys' Astro, you can use scheme or Tcl/Tk programs to create new utilities, or automate your flow/commands. In Cadence' Virtuoso platform, you can take advantage of the skill language provided for creating pCells and automating the flow. Similarly, for Encounter and Magma tools, TCL can be used.
I have been talking about the languages which can be used in the tool itself. Perl and Python are two languages extensively used by design engineers or CAD engineers for processing of data, and enhancing the existing features of the commercially available tools. Perl in particular is extensively used in the processing of various reports.
In this blog, I will be uploading small codes which come in handy for a CAD/Design engineer. Most of these will be in Tcl, Scheme and Perl.
Saturday, June 21, 2008
Thursday, February 21, 2008
list_attributes
I always seem to forget the list_attributes syntax. Thought I will put it down here.
list_attributes -application -class pin
list_attributes -application
get_attribute [get_ports a[0] ] center
list_attributes -application -class pin
list_attributes -application
get_attribute [get_ports a[0] ] center
Friday, November 30, 2007
Power and Grounds of Current cell
The following scheme code in Astro gives you the list of Power and Ground nets in your design. It also gives you the list of all nets associated with your ports, even though I am not displaying it as an output. Manioulating these codes will let you filter the nets using any of the object fields available.
(db-foreach (geGetEditCell) '() "Port" portId
(begin
(define netId (dbFetchObjectField (geGetEditCell) portId "netid"))
(define powerId (dbFetchObjectField (geGetEditCell) netId "type"))
(define netName (dbFetchObjectField (geGetEditCell) netId "name"))
(if (eq? powerId 2)
(begin
(display "Power :")
(display netName)
(newline)
))
(if (eq? powerId 4)
(begin
(display "Ground :")
(display netName)
(newline)
))
#t) )
Thursday, November 29, 2007
Display the top-level ports
This is a code to be used in Astro, to get all the top level ports of your design. This code shows the db-foreach loop and the dbFetchObjectField command.
(db-foreach (geGetEditCell) '() "Port" portId
(begin
(display (dbFetchObjectField (geGetEditCell) portId "name"))
(newline)
#t) )
(db-foreach (geGetEditCell) '() "Port" portId
(begin
(display (dbFetchObjectField (geGetEditCell) portId "name"))
(newline)
#t) )
Subscribe to:
Posts (Atom)