This lab provides an easy opportunity to gain familiarity with the build environment that will be used for all labs throughout the course.
==================================OpenAccess.si2-98.htmThis lab builds a simple, OA design data listing tool that some labs will use to validate their results.
==================================OpenAccess.si2-120.htmThis lab builds an OA-to-PostScript translator used to display geometric objects in OA designs. It requires no coding – merely building and verification. The resulting graFig tool will be installed in the bin/ directory and used by the labs that create Figs as a visual debugging aid. For information about setting up the environment for automated rendition of the resulting PostScript on a monitor or printer, refer to the section in the front matter, "Labs Graphics Utility: grafig".
==================================OpenAccess.si2-141.htmThis lab takes the simple program framework developed in Exercise 6-3 and adds a couple of easy manipulations of the oaString utility class.
==================================OpenAccess.si2-198.htmThis lab illustrates some issues involved in the initial interpretation of a string as a Name within the context of a particular NameSpace and in converting that Name from one NameSpace to another.
==================================OpenAccess.si2-238.htmThis lab illustrates the relationships between the logical oaLib object used by an OA application to house its DesignObjects, and its association to the library definition list file mapping information.
==================================OpenAccess.si2-265.htmThe libcellview.cpp module allows interactive creation of Designs by name and ViewType.
==================================OpenAccess.si2-316.htmTo create a simple leaf cell (Figure 11-13), all that is needed is to define the logical interface it will present to other Designs that instantiate it. This interface consists of the Terms used by the leaf to connect internal Nets to external logic. As explained in 11.4.2 a Net for that internal logic must first be created in order to create the Term.
Figure 11-13: Inverter (Courtesy of Cadence Design Systems, Inc.)
This Lab implements a netlist view of a full adder as a hierarchical Design containing Insts of two half adder Designs, each of which contains Insts of And and Xor leaf Designs.
==================================OpenAccess.si2-367.htmThe multibit Lab implements a netlist for the design represented by Figure 11-23:
These patch cords are represented as Insts of a Design that has only 3 shapes in it (no nets or terms) and a property that encodes in a string the mapping of bits of one net to the other.
This lab calls functions from a library in the emhlister/ utility. The dumpUtils.o object linked in should be built automatically by the makefile dependencies.
==================================OpenAccess.si2-388.htmThis lab "converts" a simplistic Verilog description (Figure 12-10) of a 3-bit adder into a Module hierarchy. It builds on the leaf cells from the "cell library" created in the netlist lab 11-2 adding HalfAdder and FullAdder Module hierarchy levels to produce the Design illustrated in Figure 12-12, 12-14
==================================OpenAccess.si2-398.htmThis lab illustrates propagation of edits from the Module to Block Domains illustrated in Figures 12-15, 12-16, and 12-17.
==================================OpenAccess.si2-426.htmThis lab "converts" a simplistic Verilog description (Figure 12-10) of a 3-bit adder into a Module hierarchy. It builds on the leaf cells from the "cell library" created in the netlist lab 11-2 adding HalfAdder and FullAdder Module hierarchy levels to produce the Design illustrated in Figures 12-11 and 12-13.
==================================OpenAccess.si2-430.htmThis lab illustrates use of the oaOccTraverser class to simplify traversal of the Occurrence hierarchy.
==================================OpenAccess.si2-431.htmThis lab uses a Tcl script to swap out leaf cells in a Design. Each leaf cell is an instance of a buffer or flipflop of a particular size, such as BUFX2 or DFFX8. Given an Inst by name, the script upsizes or downsizes it by replacing its master with a Design representing a larger or smaller buffer or flop. For example, assume that an analysis of the Design recommends that the Inst named FLOP_4_25 needs a smaller flop. The Tcl script can be used to replace the current master DFFX4 with DFFX2.
==================================OpenAccess.si2-459.htmThe scenario pictured in Figure 14-9 demonstrates the use of application-defined attributes and objects to model simplified Net coupling data.
The current version of OpenAccess already has an extensive parasitics model – Chapter 21 – which should be used for real coupling data in a design. However, this Lab illustrates one way extension objects could have been used to provide an efficient, robust implementation of coupling before the OA parasitics API became available. This same concept could be applied to any kind of data that has not yet been incorporated into the Standard.
Write an OpenAccess program that creates objects of a custom extension class and stores them in the database.
==================================OpenAccess.si2-491.htmUsing the information discussed about Transforms (15.2) and oaText attributes (15.3.3.1), test cases similar to those represented in Figures 15-13, 15-14, 15-15, 15-16, 15-17, and 15-18, can be generated to provide experience with use of various positioning techniques for Text labels.
==================================OpenAccess.si2-493.htmThis lab implements an in-memory IText interface, excluding ITextInvalidate.
==================================OpenAccess.si2-494.htmThis lab experiments with the principles outlined in this Chapter to create a custom bounding box calculator as a PlugIn module (17.8.2).
==================================OpenAccess.si2-501.htmWith the information about Shapes discussed so far it is now possible to create simple, schematic symbols for the cells created in lab 11-2. Simple block outlines and Text labels can be drawn to produce graphic representations that eventually can be placed on schematics that use these cells.
==================================OpenAccess.si2-510.htmSimple rectangle and line Shapes will be used to add representations for the Pins associated with the Terms on the symbol Designs created in lab 15-4.
==================================OpenAccess.si2-528.htmThe schematic symbols created in Lab 15-4 can now be used to create a schematic view of the halfadder and fulladder cells.
==================================OpenAccess.si2-531.htmThe process of converting a folded design to its "flat" equivalent illustrates several of the key issues involved in hierarchical representation. The flat1 lab will begin this process by working on just the Insts, converting the hierarchical Insts from the input design into their flattened counterparts.
Figure 15-30 illustrates the design created by the "sample" lab, 3-1. This lab must have been run successfully prior to execution of flat1. It is this design that will be flattened.
==================================OpenAccess.si2-536.htmA simple RegionQuery is created for Shapes to use as an experimental framework for other RegionQuery investigations by the student.
Figure 15-33 illustrates the Shapes that result in the top Block. The application will move a 20 x 20 DBU window diagonally upward across the grid. The Shapes are deliberately placed to illustrate that contact with any point on the window's edges, corners, or interior will select the Shape, assuming it meets the filterSize criterion.
Figure 15-33: Lab rq Shapes
This interactive lab illustrates the results of changing the window, start level, stop level and size filter when performing a region query. The lab uses a very small design with a via, two insts, two distinctive shapes, three levels of hierarchy, and two blockages.
By entering a change such as the window or filter size, then peforming a query, the user can see which Objects are selected and which are not.
Figure 15-34 illustrates the "Design".
Figure 15-34: Lab rqeasy Design
A simple, interactive example – with a user explicitly causing events that invoke Observer handlers – is probably the easiest way to begin to understand the potential of tight loop cooperation. This lab provides that opportunity.
==================================OpenAccess.si2-604.htmThis lab experiments with the principles outlined in this Chapter to create a Pcell in-line as part of application code.
==================================OpenAccess.si2-605.htmThis lab experiments with the principles outlined in this Chapter to read the SubMaster cached in the pcell lab.
==================================OpenAccess.si2-606.htmThis lab experiments with the principles outlined in this Chapter to create a Pcell as a PlugIn module (17.8.2).
==================================OpenAccess.si2-607.htmThis lab configures a PlugIn module for the oaPcellCPP wrapper for C++ Pcell PlugIns (17.8.3).
==================================OpenAccess.si2-643.htmThe schematics created in Lab 15-6 can now be used to add wires. Though it is common to use another Shape Object, oaPath, to represent wires in schematics, this lab will use symbolic Routes and related Objects instead.
==================================OpenAccess.si2-713.htmThis lab experiments with the various classes and methods involved in defining Constraints and related objects.
==================================OpenAccess.si2-781.htmThe routes created in Lab 18-1 (Figure 18-27) can now be used to add detailed parasitics to represent the output results of a greatly simplified "extraction tool".
==================================OpenAccess.si2-851.htmThis lab provides some test data (courtesy of UCLA, Computer Science Department) that can be used for experimentation with the OpenAccess API and translator tools. It consists of LEF and DEF descriptions of a small microprocessor, mdp_aries, that is converted into OA libraries and then re-exported to various formats