Steven M. Rubin
Chapter 2: Design Environments
2.1.1 Primitives and Environments
Design has two fundamental aspects: its methods and its materials. Methods are the techniques that when used creatively, achieve a result, and materials are the medium on which the methods are used. For
example, writers design literature by applying the methods of syntax, grammar, and semantics to the materials called words, letters, and punctuation. Sculptors apply the methods of marker, hammer, and chisel to the materials wood, marble, and ice. Closer to home, engineers design circuits by applying the methods of synthesis and analysis to the materials called gates, wires, and silicon layers.
Although most of this book is concerned with the automation of VLSI design methods, this chapter focuses on the materials. There are many different ways to construct a circuit, and each has a somewhat different collection of materials. The collection, for a particular type of circuit, forms a semiconductor process technology. In addition, there are many styles of circuit design and many variations of
fabrication techniques, all within a given technology. These variations of style and manufacturing methodology give rise to a large number of environments for VLSI design. Each environment has its own set of materials, called primitive components. This chapter describes a number of environments for VLSI design and illustrates the primitives in each.
One might think that the two-dimensional nature of circuits allows all environments to be described simply with points, lines, and polygons. However, good design systems extend this limited set so that more useful layout can be done. Given a good set of primitives for a particular style of design, any circuit can be built, usually by aggregating the components hierarchically. With a weak set of primitives, the resulting circuits are limited in complexity and clarity. Therefore the proper selection of design
primitives is a significant aspect of the programming of a design system.
One effect that the selection of primitive components has on the design style is that it establishes the granularity of the lowest levels of the circuit. Given that objects can be infinitely subdivided, it is not interesting to select very tiny objects as primitives. A design made of components that are too elemental
Computer Aids for VLSI Design
http://www.rulabinsky.com/cavd/text/chap02-1.html (1 of 5) [20/12/2000 11:59:58]
will have great complexity, possibly characterized by a very deep hierarchical description. For example, it is nonsensical to design an IC chip by using protons, neutrons, and electrons as the primitive
components. Instead, areas of semiconducting material make more sense. Even better than that would be to use higher-level combinations of the semiconducting material that perform specific circuit operations.
However, a selection of components at too high a level will restrict design flexibility. If the primitives are too complex, the designer will be forced to tailor special ones whenever the existing components are inappropriate for a given task. An optimal set of primitives allows easy and unrestricted design without introducing distracting detail.
In addition to providing sensible building blocks for design, the selection of primitive components
determines the nature of the interaction between the designer and the design. When a circuit is specified, it is the primitive components that provide the fundamental interface. If the components do not match the designer's notions of the circuit being built, the interaction will become strained.
To provide properly for the designer's expectations, it should be understood that there are several different kinds of designers. Each designer requires a somewhat different set of primitives in order to match his or her mental model. For example, a circuit designer is usually concerned with the logical interactions of a circuit and is less concerned with its physical layout. A mask designer, on the other hand, is responsible for the physical layout and may be unaware of the overall nature of the circuit. A machine architect is a designer who is not concerned with the details of logical or physical layout. This person is interested in only the abstract floor-plan of large systems. Modern VLSI tools and techniques have merged all these design functions so that one person can specify a machine, its structure, and its layout. This person is the VLSI designer. It is important that each type of designer feel comfortable with the primitives of the design environment.
As an example,
http://www.rulabinsky.com/cavd/text/chap02-1.html (2 of 5) [20/12/2000 11:59:58]
the whole device
FIGURE 2.1 Incorrect primitives make design difficult: (a) MOS transistor composed of two primitive components (b) Motion of one primitive destroys the implicit transistor.
Another example of primitive components that fail to match a VLSI or circuit designer's mental model are ones that make no use of connectivity. It has already been established that circuits are always interconnected, so the primitive components for VLSI design should reflect this fact. A system that provides unconnected regions of layout material is not as intuitive as one that distinguishes between components and connecting wires. The former system will not be able to capture networks as well as the latter system and will be less easy to use for many designers. Thus the set of primitives must match the designer's own ideas of the proper way to build a circuit.
As a final consideration, the number of primitive components should be kept small. This allows the entire set to be learned and used effectively by the designer. Any collection of primitives that is too large will not be used uniformly, which can degrade the quality of designs. Also, the pieces of multidesigner
circuits will not match well if each designer has become familiar with, and used, a different subset of the primitive components.
In summary, a good collection of primitives must satisfy a number of conditions. For circuit design, there
Computer Aids for VLSI Design
http://www.rulabinsky.com/cavd/text/chap02-1.html (3 of 5) [20/12/2000 11:59:58]
must be primitive components that can connect. The set of components must be flexible enough to
generate any circuit without being so general that the layout has distracting detail. The components must also express the nature of the circuit in terms understandable to the designer. Finally, the collection must be small enough to be learned completely and used properly. This chapter will illustrate different sets of primitive components that were developed to meet these criteria in various areas of VLSI design.