VLSI Physical Design Flow

PD Concepts | 26 December 2018

When I was a kid, I used to spend time with playstation and computers. At that time, I always wondered how those tiny components inside rectangular black boxes entertain me by making me play cool games and watch movies. When I grew up, I realized its the combination of logic design and physical design that makes an Integrated Circuit that is sitting inside the device you currently hold in your hand.

In this blog post, we will learn the basics of VLSI physical design or VLSI backend design that is used to create modern ICs that power up numerous electronic applications.

What is VLSI Physical Design?

The final output of a frontend design or circuit design or logic design is a netlist. Netlist contains the logical functionality of your chip. This netlist could be viewed as a plethora of instances with interconnections between them based on the functionality you wish to implement.

This connectivity information in a netlist is a layer of abstraction of your hardware which must be converted to a physically realizable format (having geometric shapes) that is manufacturable.

The process of converting a gate-level netlist into a physically realizable format (GDSII) which finally becomes the hardware is called Physical Design.

Figure 1. Circuit to Layout

Actually, Physical Design contains a lot more steps to be done than the above simplified definition. Figure 1 shows the conversion of a simple transistor level circuit to a physically realizable layout.

In VLSI, Physical Design is the only domain where you can see circuits in a Graphical User Interface (GUI) with geometric shapes and colors as shown in Figure 2. It is an excellent career choice for engineering minds with an artistic background.

Figure 2. A typical chip when looked from a physical design perspective

Physical Design involves dedicated flows and methodologies for each step in the design process with the help of EDA tools and scripts.

A design is poor if it is not verified and validated 100% before manufacturing. Hence, Physical Design involves robust verification flows to verify and validate the design in terms of timing, power, area and functionality.


Why VLSI Physical Design Flow?

Physical design is all about placing instances defined in the netlist and connecting them by routing through metal layer stack to satisfy design specifications such as timing, power and area. Current IC designs have multi-million instances that are interconnected with several stack of metal layers that connect these instances. Manually performing each step in the design process is not feasible, takes huge amount of time and is error prone.

The complexity in designing a multi-million instance based IC is huge and hence we need dedicated automation flows that complete specific tasks needed to be performed at each step in the design which reduces design time and errors. These flows require knowledge and understanding of EDA tools and scripting languages such as Tcl, Perl or Python.

In addition to complexity, as time to market for chips is decreasing, reuse of IP (Intellectual Property) blocks is highly preferred in each design.


VLSI Physical Design Flow

Typical VLSI Physical Design (PD) flow is shown in Figure 3. This is a standard flow that is followed in modern IC design. Each step in the PD flow has sub flows or further steps that are needed to be performed.

Figure 3. VLSI Physical Design Flow

Major steps involved in Physical Design are

  • Importing Inputs
  • Floorplanning & Partitioning
  • Power Planning
  • Placement
  • Clock Tree Synthesis (CTS)
  • Routing

Major verification (signoff) steps involved in Physical Design are

  • Static Timing Analysis (STA)
  • Power Distribution Network Analysis (PDN)
  • Physical Verification (PV)
  • Formal Verification (FV)
  • Conformal Low Power Verification (CLP)

Commonly used EDA tools for Floorplanning, Place and Route are

Commonly used EDA tools for signoff checks are


Importing Inputs

Goal: Gather all the required inputs for physical design such as gate level netlist (.v or .vhdl), Technology file, UPF (Unified Power Format) files, Library files that include LIBs, LEFs, DEFs and GDS of standard cells and IPs and SDC (Synopsys Design Constraint) files.

Inputs to physical design are the most important files that you will need to start your design process. If the inputs are read in the EDA tools without any issues (warnings and errors), then your physical design flow goes smooth.

Commonly required inputs to start physical design are

  • Gate-level Netlist .v or .vhdl (given by synthesis people)
  • Technology file .tech (given by fabrication people)
  • Logical libraries .lib (given by vendors)
  • Physical libraries .lef .def .gds (given by vendors)
  • UPF (Unified Power Format) files .upf (given by UPF people)
  • SDC (Synopsys Design Constraints) files .sdc (given by synthesis people)

Floorplanning & Partitioning

Related Terminologies: [Floorplanning]

Goal: Calculate the die size, create IO ring, partition the design and calculate the size, shape and placement of partitions (HMs or blocks), figure out the position of custom macros such as analog macros and create PG grid.

In today’s IC design, because of huge design complexity, hierarchical design approach is followed. What this means is, the entire chip is divided into partitions or sub-blocks that are interconnected at a TOP_LEVEL module.

This TOP_LEVEL module of your chip contains hard blocks and soft blocks with or without glue logic.

  • Hard blocks are those sub-blocks whose shapes cannot be changed. These blocks are mostly IPs or macros that are already designed and validated for that particular technology node. Placement of these blocks are decided based on design understanding and package requirements in TOP_LEVEL.
  • Soft blocks are those blocks whose shapes can be changed to meet predefined cost metrics such as chip area, wirelength and wire congestion. These are the blocks that are needed to be designed and validated for chip-level convergence. In industry terms, these soft blocks are called as Hard Macros or HMs.

During floorplanning, one must ensure proper shapes for the hard macros (HMs) until convergence is reached in terms of cost metrics, timing, power and area.

Due to design complexity and runtime of EDA tools, each hard macros (HM) is created using the same design steps such as floorplanning, placement and routing and then integrated at the TOP_LEVEL module.

Dividing the entire design into smaller sub-designs (partitions) makes design convergence easier. This is because, the runtime of EDA tools for a single partition (block) will take lesser time for each step in the PD flow when compared to entire design.

Physical Design is all about tradeoffs between area, speed and power. Thus, floorplanning is a highly iterative process which takes into account the hard blocks and soft blocks used, memories, IO pads and their placement in the design, routing possibilities between different blocks and inside the blocks, power grid structure for each macro and cell in the design, and also the aspect ratio and IO structure of the entire design.


Power Planning

Related Terminologies: [Power Distribution]

Goal: Decide on power dissipation number and construct power distribution network accordingly to power up blocks, IO pads, macros and standard cells.

VDD and VSS that you see in the transistor level circuit in Figure 1 needs to be supplied to every transistor in a multi-million transistor design. Thus, power from a single battery source must be delivered to each cell in the design. To accomplish this, power planning is done.

During floorplanning, power planning is a step that is done to construct the power grid network to supply power to all blocks, macros and standard cells equally.

Typically, there are two types of power distribution in a chip namely Wire Bonding and Flip-Chip (read more). Using any one of these two power distribution strategies, we usually form power rings, stripes and rails through out the design.

  1. Rings - Supplies VDD and VSS around the chip.
  2. Stripes - Supplies VDD and VSS across/throughout the chip.
  3. Rails - Supplies VDD and VSS to the standard cells in the design.

Main steps to be taken care during power planning are

  • Decision on width, pitch and offset of power stripes for each metal layer.
  • Block power hook up at TOP_LEVEL.
  • IO power hook up at TOP_LEVEL.
  • Standard cells power hook up inside block as well as TOP_LEVEL.
  • Shorts and Opens needed to be checked and fixed.

Placement

Related Terminologies: [Placement]

Goal: Place all the standard cells in the design to minimize total area, reduce interconnect cost, reduce congestion hotspots and improve timing.

After floorplanning the design, for each block, standard cells are placed inside the block. These standard cells are the cells that contain the necessary logic functionality. Inside the standard cells, you could find the individual transistors that make up the logic functionality. Ex: AND gate, OR gate, 2x1 multiplexer etc.

In a multi-million instances design, placing these cells manually is not feasible. Hence, EDA tool place these cells in the standard cell rows to optimize timing. This is achieved with the help of virtual route.

Virtual route is a rough estimate for the EDA tool to measure the shortest manhattan distance from one pin to another. Based on this distance, timing is calculated roughly and these cells are placed accordingly.

A good placement reduces the delay of interconnect wires, has shorter interconnect wire length and has lesser congestion hotspots. One key thing performed during placement is legalization which means placing standard cells at appropriate locations without any placement constraint violation or design rule violation.

Standard placement flow involves the following steps.

  • Pre-placement
  • Global placement
  • High Fanout Net (HFN) synthesis
  • Scan Chain Reordering
  • Detail Placement
  • Timing Optimization
  • Leakage/Area Recovery
  • Legalization

Clock Tree Synthesis

Related Terminologies: [Clock Tree Synthesis]

Goal: Minimize skew, latency and insertion delay for clock signals reaching all the sequential elements in the design.

Clock is an important component in digital design as sequential circuits such as flipflops and registers require clock signal to function properly. Before clock tree synthesis, the clock is considered as ideal i.e. right from the source it travels to all the clock pins (sinks) without any delay. But after CTS, the clock is propagated which means there is considerable amount of delay involved between the clock signal entering one flipflop and another flipflop which is defined as clock skew.

The goal of clock tree synthesis is to reduce this clock skew, balance it and minimize insertion delay (propagation delay from clock source to sink). This is done with the help of constructing a clock tree using clock tree inverters to maintain exact duty cycle (transition) and clock tree buffers to balance the skew and latency involved.

Additionally, these clock tree inverters and buffers should be added carefully with area and power constraints in mind. Commonly used clock trees are H-Tree, Fishbone Tree and Star Tree.

Main steps to be taken care during CTS are

  • Target minimum possible clock skew.
  • Target minimum possible latency.
  • Max transition and Max capacitance limits must be met.
  • Apply Non-Default Routing (NDR) rules for clock nets to reduce crosstalk and noise.

Routing

Related Terminologies: [Routing]

Goal: Physically connect all the interconnects (nets) in the design with constraints such as DRC, wire length, timing, noise and crosstalk to be taken care.

After placing all the standard cells in the design, interconnects (nets) must be routed physically. Routing is typically done in two steps

  1. Global Routing - Generate a rough route (routing region, track assignment) for each net in the design without specifying the actual layout of wires (loosely routed).
  2. Detail Routing - Generate actual geometry layout for each net in the design using different metal layers.

Main steps to be taken care during routing are

  • Wire length must be minimized.
  • Congestion hotspots must be reduced.
  • Noise & Crosstalk must be reduced using shielding and/or NDR techniques.
  • DRC rules must be honored during detail routing.
  • Shorts must be reduced.

Static Timing Analysis

Related Terminologies: [Static Timing Analysis]

Goal: Validate the design with respect to timing and verify whether the design could operate at the specified clock frequency without any timing violations such as setup, hold, recovery, removal, max transition and max capacitance across different PVT corners.

Once the design is placed and routed, it is validated for timing. STA involves checking whether the design meets the specified clock frequency and is free of timing violations such as setup, hold, recovery, removal, maximum transition, maximum capacitance etc., across different PVT corners.

STA largely depends on parasitic extraction which is a process of extracting the R (resistance) and C (capacitance) of the interconnect metal traces in the design which are obtained only after detail routing. These RC parasitics cause delay that is further added by the gate delay, resulting in timing degradation.


Power Verification

Related Terminologies: [Power Verification]

Goal: Validate the design with respect to power and verify whether the design meets static and dynamic IR drop thresholds, and free from electromagnetic effects.

Similar to timing validation, power analysis and debugging is done to ensure that the design is free from power related issues such as static IR drop, dynamic IR drop and electromagnetic issues.

Only if the design meets power numbers specified in the design specifications, it can last longer. Hence, power is a primary concern for chip designers due to decreasing technology node and increasing metal layer stack.

You can read more about low power design in the below links.

In case if you found something useful to add to this article or you found a bug in the code or would like to improve some points mentioned, feel free to write it down in the comments. Hope you found something useful here.

Happy learning!