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

Join the Next Batch

Submit your email to get notified when the next cohort starts. You'll also receive free VLSI learning resources and lab previews.

No spam — only batch announcements and free resources.

Or email us directly: hello@ondevtra.com

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

Explore More from Ondevtra AI

Jump into our other AI guides, tools, and resources to keep learning.

Scan & Download Our AI Apps

Use these QR codes or tap the badges to jump straight to the App Store.