An Open-source Intelligent Physical Design Toolchain
An Open-source Intelligent Physical Design Toolchain
Jan. 23 2024
01 Introduction
03 iPD Toolchain
Chip Design Flow
System Architectural
Functional Design Logic Synthesis Tech Mapping
Specifications Design
module conv;
reg [31:0] m[0:8192];
reg [12:0] pc; X Y
reg [31:0] acc;
reg[15:0] ir;
always
begin D
ir = m[pc];
if(ir[15:13] == 3b’000)
pc = m[ir[12:0]];
else if (ir[15:13] == 3’b010)
acc = -m[ir[12:0]];
...
Sign-off
Package and Test Fabrication Layout Processing Physical Design
Verification
⚫ Chances
Open-source AI
Open-source EDA Tools
Design Module Design Step Some Commercial Tools Some Open-source Tools iEDA
HLS HLS Stratus Catapult Prime LegUp GAUT PandA FCUDA XLS
Logic Simulation VCS Xcelium QuestaSim Verilator GHDL FreeHDL TkGate
Simulation FineSim/Hspice/Custo
Circuit Simulation Spectre NGSpice mixedsim GnuCap Qucs XICE
Verification mSim ModelSim
Debug Verdi/SpyGlass Indago/litmus Veloce
Logic Synthesis Yosys ABC LLDHL UNIVR iLS
Logic Synthesis Design Compiler Genus EPFL-LS-Lib
Tech Map Oasys-RTL ABC iMap
DFT DFT DFT Compiler Modus Tessent Max Fault
Formal Formal Formality/CDC JasperGold
Partition PartitionMgr METIS KaHyPar MPPart iNO
OpenRoad
Floorplan OpenRoad Parquest iFP
TritonMacroPlacer
PDN Fusion Compiler OpenPDN iPDN
ICC2 RePlace
Placement DreamPlace Graywolf Capo iPL
Physical Design Prime ECO Innovus Calibre OpenDP
CTS Xtop/Xtime DesignEnhancer TritonCTS iCTS
Timing OPT TritonSizer Gate-Sizing iTO
FastRoute CUGR BoxRouter/FG
Routing Qrouter NTHU-Route iRT
TritonRoute Dr.CU R/ORGE
ECO OpenRoad-eco iECO
STA PrimeTime Tempus OpenSTA OpenTimer iSTA
RCX StarRC Quantus OpenRCX SPEF-Extractor iRCX
Signoff PowerPro/mPo
Power OpenRoad-pp iPA
PrimePower/redhawk Voltus/Joules wer
IR Drop PDNSim IREDGe iIR
DRC ICV Klayout iDRC
Magic
Physical Verification Antenna Pegasus Calibre OpenRoad-ant
LVS Netgen
Validation Validation Validator
MPL
Layout Synthesis RET/ILT Calibre
Mask Generation
A Promising Open-source Precedent
⚫ OpenROAD: No Humans, 24 Hours
⚫ Efabless-OpenLane: RTL2GDS Digital Flow
From “Andrew B. Kahng, The OpenROAD Project: Today and Beyond, 2022”
Our Motivation
⚫ Open-source EDA situation
⚫ Most existing open-source EDA tools only support one algorithmic approach. For complex EDA
systems, a basic consensus is that no algorithm can perform best for any case.
⚫ Additionally, existing open-source EDA tools face challenges in reliability, extendibility, ease-of-use.
These situations discourage contributors and users from open-source projects.
⚫ Besides supporting chip design, a more important objective of open-source EDA tools is to provide a
EDA tool R&D platform for EDA researchers and tool developers.
⚫ Most open-source EDA tools are developed and maintained by some professors and students in
academia. Initially, the code for some tools often comes from research papers.
03 iPD Toolchain
EDA Decomposition
⚫ physical design -> multiple tools -> sub-tools -> steps -> algorithms
Modules Tools Sub-tools Steps Algorithms
Logic compiling Scheme 1
RTL design Initial placement
Logic optimization Assign cell to region
Simulation Greedy
Tech mapping Global placement
/Verification Cell respreading
Floorplan Post global Tetris
Logic placement
Placement Align cell to row
synthesis Abacus: Dynamic
CTS Legalization programming
Reorder cell in a row
Formal
Digital Routing Quadrable
EDA Detail placement Spread cell in a row programming
Physical Design optimization
design Linear
STA Buffering Refinement programming
⚫ All tools in iPD have the same structure. Functional Module detail_placer
Evaluator
Database
⚫ iPL utilizes iEDA’s database, operator, manager, (Wrapper)
filler_inserter
Utility
and interface to organize data and algorithms. checker
DB-API iEDA-
⚫ iPL mainly includes the iPL-database and functional evaluator Manager
iEDA-Database
modules. grid_manager
Tool
⚫ Users can configure tool functions and parameter Input Output topo_manager Data
flows through the config files, and obtain outputs by (.v/.lef/.def/.lib/.sdc) (.v/.def)
API.
01 Introduction
03 iPD Toolchain
iPD Toolchain
RTL ⚫ Netlist-to-GDS II
Logic Synthesis ⚫ 10 tools,and other 5 tools are R&Ding.
Netlist
Logic Compiler
⚫ Design, Analysis, Verification
Physical Design
Logic Optimization
Netlist Optimization iNO ⚫ Number of Codes
Technology Map
Floorplanning iFP
⚫ >0.3M lines (exclude 3rd party and history)
Formal Power Delivery Network iPDN
Placement iPL
Analysis Functional Module
Clock Tree Synthesis iCTS iEDA-Inferface Initial_placer iEDA-
RC Extraction
global_placer Operator
Static Timing Analysis Timing Optimization iTO Solver
iSTA iPL post_global_placer
Config API Analyzer
iPA Power Analysis Routing iRT legalizer
Evaluator
IR Drop Engineering Change Order Functional Module detail_placer
buffer_inserter Reporter
Electromigration Filler Database
filler_inserter Utility
(Wrapper)
Sign-off checker
Physical Verification iEDA-
DB-API
iDRC Design Rule Check evaluator Manager
GDS II iEDA-Database
grid_manager Tool
Electronic Rule Check
Input Output topo_manager Data
(.v/.lef/.def/.lib/.sdc) (.v/.def)
Layout vs. Schematic
Floorplan (iFP) & Power Delivery Network (iPDN)
Flow
Input Key
Data
Metrics
DIE Area 1.5 × 1.5 mm^2 IO Cell & Pad
Init layout
DIE Utili 0.166554
#Net 311869
Endcap Cell
PDN pin(>= 32)=
Pin
2893
M1、M2、M7、
PDN
Output M8、M9、AP
Placement (iPL)
Flow ◼ Min Wirelength Model
min 𝑊 𝒗
Input 𝒗
𝑠. 𝑡. 𝜌𝑏 𝒗 ≤ 𝜌0 , ∀𝑏 ∈ 𝐵
Build PL data where 𝑣 is cell location,𝑊 𝒗 is wirelength,
(grid/topo) 𝜌𝑏 𝒗 is the area density in 𝑏 ∈ 𝐵, 𝜌0 is density thredhold.
HPWLex ( v) = max xi - x j
Init/global i, jÎe
placement 𝑾(𝒗) æ æ æ x öö æ æ -x ööö
LSEex = g çç ln ç å exp ç i ÷÷ + ln çå exp ç i ÷÷÷÷
Post global è è iÎe è g øø è iÎe è g øø ø
placement 1 1
𝐷 𝒗 = 𝐷𝑖 𝑥, 𝑦 = 𝑞𝑖 𝜓𝑖 𝑥, 𝑦
2 2
𝑣∈𝑉 𝑣∈𝑉
Check/Legalization
𝝆𝒃 (𝒗) ∇ ∙ ∇𝜓 𝑥, 𝑦 = −𝜌 𝑥, 𝑦 ,
ෝ ∙ 𝜓 𝑥, 𝑦 = 𝟎,
𝒏 (𝑥, 𝑦) ∈ 𝜕𝑅
Detailed
placement ඵ 𝜌 𝑥, 𝑦 = ඵ 𝜓 𝑥, 𝑦 = 0.
𝑅 𝑅
Filler Instace
min 𝑓 𝑣 = 𝑊 𝒗 + 𝜆 σ∀𝑏∈𝐵 𝝆𝒃 (𝒗)
𝒗
Output
• Nesterov Method or Conjugate Gradient
Placement (iPL)
Flow Key parameter config
Basic Summary
Input iFP.def, iFP.v
Input Wirelength
output iPL_result.def, iPL.v
wl_detail_report.txt
Whether to enable max
is_max_length_opt
wirelength optimization
Build PL data
(grid/topo) max_length_constraint set max wirelength constraint
[GP-Wirelength]
Timing
Check/Legalization min_wirelength_force_ba
r
Control wirelength range
[GP-Density]
Set target density
target_density
[LG]
Set instance spacing (/site) Design rule violation
Filler Instace global_right_padding
violation_detail_report.txt
[DP]
Set instance spacing (/site)
global_right_padding
Input
Clock distrib
Cluster
Clock net
routing
Timing analysis
and opt
Output
Clock Tree Synthesis (iCTS)
Flow
Timing Power Violation
• Latency (max delay) • Buffering • Fanout
Input
• Skew • Wirelength • Capacitance
• Slew (transition)
Clock distrib
Cluster
Clock net
routing
Timing analysis
and opt
Output
Routing (iRT)
Flow
input
PA(pin access)
RA(resource
assignment)
GR(global
routing)
TA(track
assignment)
DR(detail
routing)
⚫ Optimization metrics: wirelength, timing, congestion, DRC
VR(violation ⚫ Optimization operations: Global routing: Track allocation: Detailed routing
repair)
⚫ Routing algorithms: Pattern routing, A* routing, Steiner tree, Non-linear
programming, Integer programming
output
Routing (iRT)
Flow
input
PA(pin access)
GR(global
routing)
DR(detail
routing)
VR(violation
repair)
output
Pin Access Wirelength and via Design rule check
Design Rule Check (iDRC)
Flow Support DRC Rules:
• Cut Different Layer Spacing
input
• Cut EOL Spacing
• Cut Enclosure
Divide region
• Cut Enclosure Edge
• Cut Spacing
Read rule
• Metal Corner Filling Spacing
• Metal EOL Spacing
Check rule
• Metal JogToJog Spacing
• Metal Notch Spacing
Generate DRC
• Metal Parallel Run Length
Spacing
Report DRC
• Metal Short
• MinHole
output DRC
• MinStep Visulization
• Minimal Area
Static Timing Analysis (iSTA)
FLow 𝑇𝑐𝑜𝑚𝑏
0/1 D Q Comb. D Q
input
Timing path
propogation 𝑻𝑭𝑭𝟏 + 𝑻𝒄𝒍𝒌−𝒒 + 𝑻𝒄𝒐𝒎𝒃 + 𝑻𝒔𝒆𝒕𝒖𝒑 − 𝑻𝑭𝑭𝟐 − 𝑻 = 𝑻𝒍𝒂𝒕𝒆
𝒔𝒍𝒂𝒄𝒌 ≥ 𝟎 Setup Constraint
output
Static Timing Analysis (iSTA)
FLow Feature
Support hierarchy netlist
input and def
Basic setup/hold analysis
Support NLDM/Elmore
Read timing lib
Support CCS model
Support high-level net
Build timing graph delay model
Support sdf mark
setup_slack
setup slack value
⚫ Fix hold time
_margin
Electronical
Evaluation hold_slack_
hold slack value
⚫ Fix setup time
margin
DRV_insert
⚫ Load Insertion
Available buffer for optimizing DRV
Buffer/load location
_buffers
Locate vio path ⚫
setup_inser
Available buffer for optimizing setup
t_buffers
hold_insert
Available buffer for optimizing hold
_buffers
Opt vio path
number_pa
The number of times that WNS is
sses_allowe
allowed continuously decrease when
d_decreasin
opt setup
g_slack
Legal cell For setup, a wire network is not
rebuffer_m
location ax_fanout
optimized for buffer insertion when
its fanout exceeds this value
Hold report
Power Analysis (iPA)
API Description
Flow
buildGraph Build iPW graph data
structure
input readVCD Parse the VCD file
buildSeqGraph Build timing subgraph
Read timing lib checkPipelineLo
op Detect PipeLine loop
iFlow
Verification
Implementation ├── build_iflow.sh
Synthesis/DFT Formal ├── foundry
PDK
Simulation ├── log
iPD Physical Design
RCX
├── report
├── result
STA
├── rtl
Signoff IP
Power
IR Drop ├── scripts
├── tools
Tapeout PV EDA
└── work
Package
PCB &Test
Bei Yu
[email protected]