Computer Aids for VLSI Design
Steven M. Rubin
Copyright © 1994


Chapter 2: Design Environments

Prev
Section 1 of 6
Next

2.1 Introduction

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 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, assume that the primitive components of MOS design are rectangular areas of metal, polysilicon, and diffusion. Then, a MOS transistor can be viewed as the overlap of a diffusion primitive and a polysilicon primitive (see Fig. 2.1a). Given such an environment, a VLSI or circuit designer may not notice that a change to one primitive affects the whole device (see Fig. 2.1b). These designers need a single, indivisible component that implements a transistor, because they think of the circuit in terms of such transistors. Mask designers can use the polysilicon and diffusion primitives because their view of a circuit is one of polygons on different material layers. However, even mask designers can benefit from a single transistor primitive, provided that it is flexible enough to describe all the necessary geometries.
Fig 2.1
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 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.



2.1.2 Space of Environments

There are many design environments, each having different purposes in the realm of circuit production, and each making different demands on the necessary set of primitives. Some environments are considered to be very high level because their primitives are further defined by lower-level environments. Sometimes there are families of similar but not identical environments. The proliferation of environments within a family can be caused by new design methodologies, commonalities of some components, or variations in manufacturing processes.

All the different circuit design environments form a space that can be organized in many ways (one way is shown in Fig. 2.2). There is no correct ordering of design environments, but there is a general idea that the higher levels are more abstract and the lowest levels are more manufacturing-specific. Algorithmic environments are arbitrarily located between system and component environments, but they represent a different class that really spans all levels. Environment families also appear in this chart. For example, the MOS (metal oxide semiconductor) family includes nMOS (n-channel MOS) and CMOS (complementary MOS), which function differently but share many design attributes.

Level
Environment
Parts

SystemPMSProcessors, memories, links
   
AlgorithmSchematicsAnd, or, negation
Temporal logicHenceforth, eventually
FlowchartTest, compute, I/O
DataflowSelect, merge, function
   
Component  Register Transfer  Control, arithmetic, memory
ISPRegisters, ALUs
   
LayoutMOSMetal, polysilicon, diffusion, transistor
BipolarBase, emitter, collector
PackagesSSI, MSI, LSI
ArtworkRectangle, line, spline
FIGURE 2.2 Electrical design environments.

The rest of this chapter will outline some typical VLSI design environments and will describe a set of primitive components for each. This will illustrate the nature of the environments and also will indicate how a CAD system can be programmed to deal with them.


Prev Previous     Contents Table of Contents     Next Next    
Steven M. Rubin
    Static Free Software SFS