After many chapters of CAD in the abstract it is time to discuss a specific and real design system called "Electric". This system is instructive because its source code is available to universities so that students may study its workings. Electric is also worthy because it embodies many of the notions described in this book. However, the most compelling reason for discussing this system is simply that it was programmed by the author of this book [Rubin].
Electric was built as an alternative to traditional VLSI design systems that did not combine graphics, connectivity, and accurate geometry. Many textual systems existed for VLSI design [Lipton et al.; Johnson; Kingsley] and there were also graphics systems with no notion of connectivity [Ousterhout; Batali and Hartheimer]. Some systems attempted to merge graphics and connectivity, but they always abstracted the graphics somewhat [Weste; Williams]. The goal of Electric was to combine these into one highly flexible system.
To implement connectivity, the Electric design system has an extendible database, built on a network structure. Nodes of the network correspond to components in the circuit, and arcs of the network are connecting wires. In addition to this network information, there are geometric data associated with every component and wire so that correct layout can be represented. Since the database is extendible, additional structures can be stored to describe behavior, power consumption, design rules, and so on.
The most interesting aspect of Electric is its programmability: Users can specify layout relationships that will be continuously enforced during design. This is achieved with a constraint system that hierarchically propagates layout relationships through the design. The constraint system strengthens the ability to do hierarchical design because different levels of the circuit always remain connected regardless of changes to the layout. Although these constraints are all spatial in nature, there are also many interpretive programming systems available (LISP, TCL, and Mathematica) that allow more flexible programmability. They also allow some parts of the design system to be coded in these languages.
Electric accepts the fact that there is an unlimited number of environments for doing design, and the system integrates them in a uniform manner. A design environment is a single module describing primitive components and wires that can be composed into circuits. Included in the module is all the environmental information such as graphic attributes and simulation behavior. To create a module, one simply expresses the environment in network form so that it can be manipulated as a collection of nodes and arcs.
In addition to providing for any design environment, Electric also allows an unlimited number of synthesis and analysis tools. The database oversees their execution in the fashion of an operating system so that each tool can operate in turn and keep up with the activities of the others. This flexibility allows tools to operate incrementally or in a batch style, and also keeps all activity consistent. Change control is managed by the database so that any incorrect tool activity can be undone. In this context of tools as processes, even the user interface is a tool, separate from the database.
This chapter provides detail on the four main aspects of Electric described here: the representation, programmability, design environments, and tools. Additional information can be obtained by contacting Static Free Software, the commercial distributor of the system. Electric is written in C [Kernighan and Ritchie] and its source code is available to universities through the author of this book. The code comes with internals manuals that explain the command structure, data structures, database subroutines, and the construction of new design environments.
|Previous||Table of Contents||Next||Static Free Software|