C++ API
OpenAccess
User Account Required
User Account Required
Get Ready
Introduction to OpenAccess
Using the Documentation
Fundamental Classes
Build Your Database
The Tech Library
Build a Design
UU / DBU / LPP / Iterating
Special Block Objects
Defining the Interconnects
Instances
oaPartitions
Polygon Operators Extension
Embedded Module Hierarchy
Interrogate Design
Search a 50,000-gate design and find a net with an electromigration failure. After discuvering the failure is inside a library book, incorrectly used, we simply swap the instance for the correct library book. This is done directly from the Python shell, without even writing a script or opening a tool!
Counting FETs
Our Polygon Operators Extension to Si2 OpenAccess is also available in our Scripting Interface. This gives the user the pwoer to perform shape manipulations on our entire sets of polygons (figure sets). This demonstration logically “AND”s the poly shapes with the active shapes, producing a new set of shapes defining all FETs in a 50,000-gate design.
Next, we logically “AND” the FET shapes with the Nwell shapes to get the P-channel FETs. Finally, we use the Count and Area methods to obtain exact counts and area for both P-channel and N-channel FETs.
Two Tool Interoperability
Si2 OpenAccess is known for enabling tool interoperability. This demonstration shows an additional kind of interoperability between design tools.
The shell provides a common ground to run Ngspice from the same script where we build the layout, schematic, and symbol for the design simulated in successive runs of the Ngspice simulator.
We ultimately produce a symmetric inverter design for a library from a python script, on the fly.
Wiggleroom
Digital designs often require “emergency” changes to make just a little more room. This demonstration writes a script to locate a particular cell and its neighboring cells.
Next, we look through the list of neighboring cells, find the closest neighbors, and calculate the number of adjacent placement grids available as filler cells. Whether you call it wiggleroom, a shoe-horn, or just a squeeze it in, it happens all the time.
Here, we use the power of the Polygon Operators Extension to expedite our search, using figure sets detected as touching a resized version of our selected cell.
Low Pass Filter
Building a Low Pass Filter can be tedious. As stages are added, the filter frequency is reduced, so each stage is desighed to a higher target. If the target is too high, another pass is needed.
The RC Product define sthe 3db frequency, but that must be planned at minumum C to reduce the final physical design size. Thius demonstration uses a script to bould our library stage, then another script to combine them into a final design.
Build a Simple Inverter
This demonstration steps through writing a script to build a simple inverter, in Python. This should provide the fundamental method for scripting any circuit.
oaxPop 2.0 Connectivity
Give your application the ability to determine which physical shapes are electrically connected without a netlist. This addition to the Polygon Operators Extension lets you extract connectivity directly from the Physical Design. The application defines the layers used, including consideration of diffusion layers, as well as:
Quick App
Rather than repeat work similar to something you have already done, write a quick application for use next time! Share it with others that need to do the same thing. It is not hard to do.
oaScript4-oaPartitions
OpenAccess Data Model 6 brought the power of oaPartitions to OA; now, that capability has been extended to the Python and Ruby APIs. With oaPartitions, you can multi-process while avoiding collisions by partitioning the work. Check this out!