© IEEE (1983). This is the author's version of the work. It is posted here by permission of IEEE for your personal use. Not for redistribution. The definitive version was published in Proceedings, ICCAD - 83, IEEE Computer Society Order No 518, September 1983, pp111-112.
This paper describes an electrical design aid that has four useful features: multiple technologies, multiple analysis aids, a powerful user interface, and top-down design capability. The system, called Electric, currently handles four different technologies ranging from MOS to Bipolar to printed circuit. It also includes four analysis aids: simulation, design-rule checking, textual input/output, and a graphical user interface. Most importantly, the system implements a model of circuit representation and change that allows hierarchical top-down design. This is done by propagating graphical constraints from the bottom-up so that the circuit is always properly connected.
The notion of integrating design technologies and analysis tools into a uniform framework has become popular in recent design aids. This trend has been necessitated by constantly changing technologies and the ever-growing number of circuit analysis algorithms being used. The inclusion of different technologies into a single system facilitates the use of multiple levels of abstraction on a single circuit. For example, a circuit can be specified at a layout level, more abstractly at a gate level, or most abstractly at a block-diagram level. Each level of abstraction may be implemented in a different technology and translation between levels could be accomplished with special purpose analysis aids.
The capability of specifying layout in a top-down fashion encourages modularity in circuit design. In addition, detail changes can be made without the need for redesign. Typically, top-down design can only be done with textual layout languages which specify circuits as structured programs. Textual design languages are easy to parameterize, transport, and document so they provide complete flexibility of circuit specification. Graphical design languages, however, are easier to learn and use because they deal with a representation that is much closer to the designed artifact. Until now, a top-down design capability has never been available in a graphical context. In contrast, Electric provides a simple form of graphical constraint that allows top-down design to be done without the need for a textual language.
One dimension of integration is the ability to describe a circuit in different technologies. Electric currently supports nMOS, Bulk CMOS, Bipolar, and printed circuit board design. Electric's technology modules provide a set of building blocks which are easy to specify and modify. By integrating different technologies into a single design, flexible layout schemes become possible. For example, a CMOS circuit can be treated as a component in a printed circuit board design, enabling proper planning of chip environment details such as pin requirements. Relevant analysis tools such as switch-level simulation also cross the technology boundaries.
The other dimension of integration is the ability to incorporate a variety of circuit analysis tools into the design process. The Electric database maintains both geometric and connectivity information about the circuit. This information is then made available to a set of analysis tools. Each tool can examine and modify the design and can react to changes made by other analysis systems. Currently, there is a design rule checker, two simulators, a textual input/output system, and a graphical user interface.
The design rule checker works incrementally, providing immediate feedback to the designer's changes. It keeps track of electrical connectivity so that proximity of connected layers is not considered to be an error. Two already existing simulators have been interfaced to Electric: ESIM, an event-based switch-level simulator from MIT2 and MARS, a hierarchical switch-level simulator from Stanford3. The Electric input/output system can handle textually specified circuits and can write the circuit in a number of different formats. Finally, the Electric user interface, which handles graphical circuit descriptions, provides multiple windows, flexible menus, useful help and tutorial facilities, a powerful undo capability, command files, parameterized macros, and can be dynamically tailored to emulate the command structure of other design aids. A virtual graphics package provides ease of adaptability to other displays.
Electric has been implemented on a single processor system. However, as the number of analysis aids grows, single processor implementations of integrated design systems become less efficient. One solution might be the use of two or more processors. For example, on a two processor system, analysis work could be split into foreground and background efforts. The foreground might include the user interface as well as immediate response tools such as incremental design-rule checking. The background would consist of long-running analysis aids such as simulation. Ideally, each analysis aid could have its own dedicated processor so that no degradation occurs as systems are added. However, distribution of circuit information would require tools for maintaining integrity of distributed data as well as synchronization and coordination of its use. Current research in distributed database design could be used in attacking this problem.
The Electric database is represented as a hierarchical network of electrically connected and geometrically described components and wires. At each level, the electrical components are either primitive components described by technology modules or complex cells described by lower levels of the layout hierarchy. The wires that connect the electrical components have attributes that determine what will happen when components change.
The current Electric system supports two types of wire attributes: orthogonality and rigidity. An orthogonal (or manhattan) wire must remain horizontal or vertical. If, for example, a component on one end of a horizontal orthogonal wire moves up, the component on the other end will also move up to maintain orthogonality. If a component on one end of a rigid wire moves or rotates, then the component on the other end of the wire will move and rotate by the proper amount so that they remain connected in the exact same configuration. The system also supports "invisible" wires that constrain without altering the geometry or electrical connectivity of the circuit.
The database manager uses wire constraint information to ensure that a circuit remains properly connected. If a circuit becomes over-constrained, the database will maintain connectivity by jogging wires. Changes are propagated in a bottom-up fashion so that low-level modifications are properly reflected at higher levels of the circuit hierarchy. Thus, top-down design techniques are encouraged by the hierarchically consistent nature of Electric's database.
One of the unique features of the Electric system is the use of graphical constraints as a programming language. Electric's specification of wire characteristics provides a limited form of control over layout. The capabilities could, however, be extended. For example, many designers need wires at 45 degree angles. Rather than provide 45 degree angles as a possible orthogonal orientation, the constraint could be changed to one of angle rigidity in which a wire is forced to remain at its current orientation. In addition, another constraint could be added to specify the orientation of a wire with respect to its components. Still another useful constraint would provide a flexibility limit that allows stretching within a specified range. Beyond that range, the wire becomes rigid.
Ultimately, it would be desirable to incorporate all the capabilities of a textual programming language into the Electric graphical interface. One feature found in textual programming languages is variables. Variables already exist to a limited extent in Electric: each component and wire has private data for use by the analysis aids. This information could be generalized into variables that are typed or even scoped.
Another feature of all programming languages is the conditional expression. Flexibility-limited wires provide one aspect of this feature. Attachment of conditional expressions to components and their characteristics might also be useful.
Looping control would also be helpful in the graphical programming language. This could be done by extending the use of "arrays" in graphical layout languages. Electric currently supports indexed arrays of components. Combined with a variable assignment feature, these arrays could be viewed as a form of loop construct. For example, the width of a wire could be used as loop parameter to determine the number of contacts to use in connecting the wire.
Complex constraints such as conditionals and looping appear at first to be infeasible in a graphical context. One way to properly indicate a complicated constraint would be to attach text to the constrained object. Although this might seem contrary to standard notions of graphics programming, it is still better than a complete textual specification because of the immediate feedback that graphics does provide. Also, macros of commonly used constraints that have associated identifiable glyphs could be used to reduce the use of text on the graphics display.
Another problem with complex graphical constraints is controlling the order in which they are applied. Currently, rigidity constraints are satisfied before orthogonality constraints. In more complex environments, however, constraint order may be a problem. Creation of grouping structures and constraint priorities would be needed to implement a full graphic language.
Electrical layout is not the only design environment that can benefit from graphical programming specification. Mechanical design can also make use of spatial constraints. If the Electric system were increased from its current two dimensional domain to one that has three dimensions, it could handle physical objects. The relationships between parts of objects could be specified in an intuitive manner. Parameterized classes of objects could be designed. If the Electric system were then increased to four dimensions, it could handle physical animation. For example, the coordinates of a component in four-space could be specified functionally so that an object could be programmed to appear at a given time in a sequence, move through the sequence, and then disappear. High-level specifications such as story scripts could be used to control physical objects.
Electric, with its powerful user interface, a variety of technologies, and integrated analysis tools is a valuable system for circuit design. A 10,000 transistor chip layout was completed in one week. Electric also provides a workbench for testing new circuit analysis algorithms. Most important is its graphical constraint system that allows for top-down design and ease of circuit modification. It is believed that the graphical programming notions found within the Electric system could be extended for use in several other specification domains.
I would like to thank Amy Lansky and Richard Lyon for their comments on this paper.