2.0 The VLSI Design Flow and Hierarchy
Managing the design of an IC with millions or even billions of transistors requires a systematic and hierarchical design flow. This structured approach is of paramount strategic importance, as it breaks down overwhelming complexity into a series of manageable stages, ensuring that the final physical product accurately reflects the initial design intent and meets all performance, power, and area specifications. The primary stages of this flow proceed from abstract concepts to concrete physical implementations.
The major stages of the VLSI IC design flow are as follows:
- Specifications This initial stage involves creating an abstract description of the digital IC. It defines the high-level functionality, the external interface (inputs and outputs), and the core architecture of the device to be designed.
- Behavioral Description In this stage, the design is analyzed in greater detail to verify its functionality, performance characteristics, and compliance with established standards or other system-level requirements.
- RTL Description The Register-Transfer Level (RTL) description is created using a Hardware Description Language (HDL) like Verilog or VHDL. This code describes the circuit’s behavior in terms of data flow between registers and the logical operations performed on that data. This description is then rigorously simulated to test and verify its functional correctness before proceeding.
- Logic Synthesis Using specialized Electronic Design Automation (EDA) tools, the RTL description is automatically converted into a gate-level netlist. This netlist is a detailed description of the circuit in terms of fundamental logic gates (e.g., AND, OR, NOT) and the connections between them. The synthesis process optimizes this netlist to meet specific constraints for timing, power consumption, and physical area.
- Physical Layout The final stage involves creating the physical layout, which is the geometric representation of the circuit. This detailed blueprint, which specifies the precise location and interconnection of every transistor and wire, is verified and then sent to a semiconductor foundry for fabrication.
The Gajski-Kuhn Y-Chart
The Gajski-Kuhn Y-Chart provides an essential mental model for navigating the design process, mapping any point in the design space across three orthogonal axes: its behavior, its structure, and its physical implementation.
- Behavioral Domain: Describes the functional behavior of the circuit (the what).
- Structural Domain: Describes the circuit as an interconnection of components and modules (the how).
- Physical (Geometrical) Domain: Describes the physical layout and geometry of the circuit on the chip.
These domains are further divided into levels of abstraction, represented by concentric rings. The outer rings represent the highest level of abstraction (e.g., the chip’s overall architecture), while the inner rings represent progressively finer levels of detail. The design flow stages correspond directly to transitions between these domains. For instance, Logic Synthesis is the process that translates a design from the Behavioral domain (RTL code) to the Structural domain (gate-level netlist). Subsequently, Physical Layout translates the design from the Structural domain to the Physical domain (the final mask data).
The Principle of Design Hierarchy
To manage the complexity inherent in VLSI, engineers employ the principle of “Divide and Conquer,” also known as design hierarchy. This strategy involves breaking down a large, complex task into smaller, more manageable sub-tasks until each one is simple enough to be designed and verified easily.
A classic example is the design of a 16-bit adder. Instead of designing the entire 16-bit circuit at once, the task is partitioned:
- A 16-bit adder is constructed from four interconnected 4-bit adder modules.
- Each 4-bit adder is, in turn, constructed from four interconnected 1-bit full-adder modules.
- The 1-bit full-adder is a simple and fundamental circuit that is straightforward to design and fabricate.
By designing, testing, and verifying the simplest block first, and then systematically composing these blocks into larger modules, the complexity of the final 16-bit system is managed effectively. This hierarchical approach moves the design from an abstract process to a set of concrete implementation choices.