Start Learning VLSI Physical Design

A practical, open-source path to go from RTL to GDS: install Yosys, OpenROAD, Magic & OpenSTA, understand the flow, and build your first chip layout.

VLSI OpenROAD Yosys Physical Design
VLSI physical design open source guide

Introduction

Physical Design (PD) turns a hardware description (RTL) into a manufacturable layout (GDSII). For years, this required costly EDA software. Today, the open-source stack—Yosys (synthesis), OpenROAD (PD automation), Magic (layout/DRC), and OpenSTA (timing)—lets anyone learn end-to-end, for free.

Why learn physical design?

  • High demand: chips power AI, mobile, automotive, and datacenter; PD skills are scarce.
  • Hands-on learning: see how floorplanning, CTS, routing, and timing closure fit together.
  • Open tapeouts: programs like Efabless & TinyTapeout make real silicon accessible.

VLSI flow at a glance

  1. RTL (Verilog) → functional simulation.
  2. Logic synthesis (Yosys) → gate-level netlist using a standard cell library.
  3. Floorplanning → die size, aspect ratio, IO/power planning.
  4. Placement → place cells; optimize congestion & timing.
  5. CTS → clock tree to balance skew/latency.
  6. Routing → connect with metal; fix DRC/timing.
  7. STA → verify setup/hold across corners (OpenSTA).
  8. DRC/LVS → rule checks & schematic equivalence (Magic/Netgen).
  9. Sign-off & GDSII → ready for fabrication.

Install the toolchain (Linux & Docker)

Ubuntu (22.04+) is the smoothest path. Docker gives you a reproducible environment.

Ubuntu packages (quick)
# Update & essentials
sudo apt update && sudo apt -y upgrade
sudo apt -y install build-essential git cmake python3

# Install open-source EDA tools
sudo apt -y install yosys openroad magic klayout iverilog gtkwave netgen

# Optional: OpenSTA from source (if repo pkg not available)
git clone https://github.com/The-OpenROAD-Project/OpenSTA.git
cd OpenSTA && mkdir build && cd build && cmake .. && make -j$(nproc) && sudo make install
Docker (reproducible)
# Get the official OpenROAD flow container
docker pull openroad/flow
docker run -it --name or_flow -v $PWD:/work -w /work openroad/flow bash

Tip: If package versions are older on your distro, prefer Docker or build from source to match tutorials.

PDK & libraries (SkyWater & friends)

Tools alone aren’t enough: you need a PDK (process design kit) and a standard cell library. The most popular open PDK is SkyWater 130 nm (sky130). It includes LEF/Liberty views, DRC/LVS rules, and cells.

Fetch PDK (example)
git clone https://github.com/google/skywater-pdk.git
# Many flows fetch pre-packaged sky130 for you; check your flow's README.

Your first RTL → GDS: 4-bit counter

We’ll write a tiny design, synthesize it, place & route, then inspect layout.

1) Write RTL

counter.v
module counter #(parameter N=4) (input clk, rst, output reg [N-1:0] q);
  always @(posedge clk or posedge rst) begin
    if (rst) q <= 0;
    else     q <= q + 1'b1;
  end
endmodule

2) Synthesize with Yosys

yosys.ys
# Point to your Liberty file from the sky130 standard cell library
read_verilog counter.v
synth -top counter
dfflibmap -liberty sky130_fd_sc_hd__tt_025C_1v80.lib
abc -liberty sky130_fd_sc_hd__tt_025C_1v80.lib
write_verilog counter_netlist.v

3) Floorplan, place & route (OpenROAD)

openroad.tcl
read_liberty sky130_fd_sc_hd__tt_025C_1v80.lib
read_lef sky130_fd_sc_hd.tlef
read_lef sky130_fd_sc_hd__merged.lef

read_verilog counter_netlist.v
link_design counter

initialize_floorplan -utilization 0.45 -core_space 2
place_design
cts
route_design

write_def counter.def
write_gds counter.gds
write_sdc counter.sdc

4) View & check in Magic

Magic
magic -T sky130A.tech
# In Magic console:
gds read counter.gds
load counter
drc check

Deep dive: core stages

Floorplanning

  • Choose aspect ratio, set utilization targets (e.g., 40–60%).
  • IO ring & power grid planning (straps, rings).
  • Keep-out regions for macros; plan routing channels.

Placement & optimization

  • Global → detailed placement; fix congestion hotspots.
  • Timing-driven moves to reduce negative slack (WNS/TNS).

CTS (Clock Tree Synthesis)

  • Goals: low skew, reasonable insertion delay.
  • Common topologies: H-tree, balanced clustering.

Routing

  • Preferred directions per metal layer; avoid jogs where possible.
  • Iterate with STA to fix violations (buffering, sizing, detours).

Static Timing Analysis (OpenSTA)

STA validates setup and hold timing across process, voltage, and temperature (PVT) corners.

opensta.tcl
read_liberty sky130_fd_sc_hd__tt_025C_1v80.lib
read_verilog counter_netlist.v
read_sdc counter.sdc
link_design counter
report_checks -path_delay min_max -fields {slew capacitance} -digits 3

Tip: Practice MCMM (multi-corner, multi-mode) early—timing closure spans corners and modes.

DRC/LVS verification

  • DRC (design rule check): layer widths/spacings, antenna, via rules.
  • LVS (layout vs schematic): ensure layout connectivity matches netlist.
Netgen (LVS)
netgen -batch lvs "counter.spice counter" "counter_netlist.v counter" sky130A_setup.tcl lvs.log

Practice projects (in rising difficulty)

  1. 4-bit counter → learn the flow.
  2. Parameterized ALU (8/16-bit) → datapath timing.
  3. UART → IO placement & async boundaries.
  4. RISC-V Pico core → hierarchical floorplan, CTS challenges.

Best practices

  • Use Docker for reproducible toolchains.
  • Version everything: scripts, constraints (SDC), and logs.
  • Constrain early: realistic clocks, IO delays, false/multicycle paths.
  • Fix violations where they occur (don’t “over-buffer” globally).
  • Iterate: PPA is a trade-off—Power, Performance, Area.

Glossary

  • PDK: Process Design Kit—rules & models for a technology node.
  • LEF/DEF: Abstract layout formats (cells/chip).
  • Liberty (.lib): Timing/power models for standard cells.
  • SDC: Synopsys Design Constraints—clocks, IO constraints.
  • WNS/TNS: Worst-/Total-Negative Slack (timing quality).

Conclusion & next steps

With the open stack, you can practice real PD at home: write RTL, synthesize, place/route, and sign-off checks. Grow from small blocks to CPUs, then join community tapeouts. Keep notes, automate scripts, and track PPA metrics—this mirrors industry workflows.

Further reading: “CMOS VLSI Design” (Weste & Harris) for CMOS/physical foundations, and “The Art of Timing Closure” (Golshan) for STA/closure depth.

FAQ

Which OS is best? Ubuntu LTS (22.04+) or Docker on macOS/Linux.

Which PDK should I use? Start with SkyWater sky130; it’s beginner-friendly and widely supported.

How long to finish a first flow? A small counter can run RTL→GDS in under an hour once tools are set.

You might also like

Get in Touch

Questions about the flow or need help with a design? Ping us.

Contact Us

We’ll respond promptly. Email: info@ondevtra.com