Professional Documents
Culture Documents
Physical Design
Physical Design
Outline
What is Physical Design
Design Methods
Design Styles
Analysis and Verification
Goal
Understand physical design topics
What is Physical Design?
Implementation methods
integrated circuits
programmable arrays - e.g. ROM, FPGA
full custom fabrication
hybrid integrated circuits
thin film - built-in resistors
thick film - ceramics
silicon-on-silicon - multi-chip modules
circuit boards
discrete wiring - wire-wrap
printed circuits
Design rules
topology and geometry constraints
imposed by physics and manufacturing
example: wires must be > 2 microns wide
Design Methods
Symbolic design
reduce problem to topology
let tools determine geometry (following design rules)
can reuse same topology when design rules change
e.g. shrink wires from 2 microns to 1 micron
used mostly to design cells
Procedural design
cells are programs
module generation - ROMs, RAMs, PLAs
silicon compilation - module assembly from HLL
Analysis and verification
design rule checking - geometry widths, spacings ok?
circuit extraction - geometry => circuit
interconnect verification - circuit A == circuit B?
Design Styles
Gate array design
FPGAs are a form of gate array
Standard cell design
General cell design
Full custom design
still used for analog circuits
Design
Styles
Implementation
Methods Gate Array
Cache Decode
RAM PLA
Datapath
uCode
ROM
Std. Cells
Analysis and Verification
Analysis
circuit extraction
determine circuit from geometry
compute circuit parameters from geometry
resistance, capacitance, transistor sizes
feed back to logic design, place & route
Verification
design rules
geometry rules - e.g. widths, spacings
electrical rules - e.g. no floating gate inputs
interconnect
compare designed and extracted circuit
pin-point difference if there is one
catch human and CAD tool bugs
Placement
Outline
What is Placement?
Why Placement?
Placement Algorithms
Goal
Understand placement problem
Understand placement algorithms
What is Placement?
density:
avg. 2.2
peak/avg 1.82
1 2 4 3 1
Cluster Growth Placement
Add components to initial placement
select components strongly connected to placed ones
place near strongly connected components
Algorithm
seedComponents = select components for seed
currentPlacement = PLACE(seedComponents, currentPlacement)
while all components not placed do
selectedComponent = SELECT(currentPlacement)
currentPlacement = PLACE(selectedComponent, currentPlacement)
endloop
results not that good
often used for initial starting position for other algorithms
O(n2) complexity for n components
Placed Unplaced
Components Components
Quadratic Placement
x, y Solution v ectors
Cost of the net between cell i and cell j
wij ( xi x j )2 ( yi y j )2
1
2
1 T 1 T
Total cost C(x ) x Qx d x x y Qy d y y const
T T
2 2
C (x, y ) C (x, y )
Minimum cost : 0, 0
xi yi
Analytic Placement
Pair Swap
cells may be of different size
results in cell overlap
penalize in cost function
final postprocess to remove
overlaps
Single Cell
often causes cell overlap
more general
Cluster
move connected components
avoids a lot of unnecessary moves
Simulated Annealing Control
Annealing Schedule
cool fast to minimize CPU time
cool slowly to get close to global optimum
maintain equilibrium at each temperature
exponentially slowly to get global optimum
usually a = 0.95
a = e-0.7t is closer to optimal
at each temperature do enough moves to reach equilibrium
stop when nothing moves
Cost Function
weighted sum of objectives
score = w1*WireLength + w2*ChipArea + w3*CellOverlapArea
+ w4*ChipAspectRatio
change weights to emphasize different goals
good weights found by trial-and-error
can also change weights as annealing runs
Simulated Annealing Improvements
Advantages
general-purpose optimization approach
finds global optimum
easily trade speed for quality
can incorporate many cost functions
can incorporate complex move functions
take advantage of problem structure
Disadvantages
constraints complicate move and cost functions
e.g. preplaced blocks, fixed wire lengths
CPU hog
Implementations
Timberwolf, Cadence, Avant! - standard cell placement
ACACIA - analog circuit transistor placement
Routing
Outline
What is Routing?
Why Routing?
Routing Algorithms Overview
Global Routing
Detail Routing
Goal
Understand routing problem
Understand overview of routing
algorithms
Understand shortest path algorithms
What is Routing?
Determination of component wiring
assignment of wires to routing areas
restricted routing problems
e.g. routing channel
detailed wiring within areas B C
layer assignment D
vias E A
Goal
minimize routing area
minimize wiring length
minimize channel height
minimize lengths of critical paths
B C
100% completion in allocated space D
fixed wiring areas E A
e.g. gate arrays, FPGAs
minimize crosstalk
Why Routing?
Multi-goal optimization
routing area
delay
cross-talk
clock and power routing
manufacturing yield
Objective Functions
Minimize routing cost according to function
want fast but reasonably accurate metrics
wiring area
channel area = channel density * channel length
wire length
minimum spanning tree
Steiner tree
half-perimeter of bounding box
wiring congestion
track density along channels
peak density 4
h average 2.2
peak/avg 1.82
area = h*L
1 2 4 3 1
Types of Routers
Global routers
function
determine routing areas
assign net to routing areas
minimize global routing area, path lengths
consider congestion, approximate path length
Detail routers
goal
route actual wires
minimize routing area, path lengths
general-purpose - maze, line probe
restricted - channel, switchbox, river routers
Specialized
power, clock routers
Example: Global Routing
B C B C
D D
E A E A
B C B C
D D
E A E A
Example: Detailed Routing
1 2 3 4 2 2 3
1 2 3 4 2 1 3
Shortest Path and Multi-Commodity
Find shortest path between two vertices in
weighted graph
graph with edge weights
weight is distance, congestion, etc.
search graph from source to destination
backtrace to source once destination is found
Multi-commodity flow
Each net is a commodity
Simultaneously route all commodities
S
1
3
3
4
1
2 3
1
5 2 10
1 D
Maze Routing
1
1 1 1
1 1
1
1
Maze Routing
Shortest path search (Lee-Moore)
maintain leaf nodes of expansion tree
at each step add unexplored neighbors to list
3
with accumulated cost 3 2 3
stop when target vertex reached 3 2 1 2 3
3 2 1 0 1 2 3
backtrace for route
3 2 1 2 3
Guaranteed to find shortest path 3 2 3
3
large memory requirements - the grid
long search time - number of vertices marked
local optimization - only routing one net at a time
16 15 14 13 12 11 10 9 8 7 6 5 4
16 15 14 13 5 4 3
16 15 14 8 7 6 5 4 3 2
9 8 7 6 5 2 1
16 15 14 13 12 11 10 8 7 1 0
13 12 11 9 8 2 1
16 15 14 10 8 7 3 2
16 15 9 8 7 6 5 4 3
Algorithm
B B
A B A B A B
Solutions
rip-up and re-route
remove wire(s) causing blockage
route blocked wire
route ripped up wires
shove-aside
add dummy grid lines
squeeze wire through
Line Probe Routing
Gridless - store list of lines and obstructions
sorted lists of vertical and horizontal lines
Algorithm
from source and destination project 4 horizontal/vertical rays (probes)
if probes intersect, done - route wires from nodes to intersection
if probes blocked, choose escape point and send new probes
a point just past obstruction
E E
B E
E
Line Probe Routing
Advantages
small memory requirements - no grid
store sorted lists of vertical and horizontal segments
fast
binary search of segments for blockage and escape points
# probes << # grid points
higher precision coordinates - no grid
Disadvantages
serial wire at a time - blockages
similar rip-up and shove-aside approaches to cope
basic algorithm may not find route when one exists
need to try more escape points
degenerates to grid search
Channel Routing
Channel
terminals on two sides of rectangle are fixed
horizontal wires on layer1 - trunks, which run in tracks
vertical wires on layer2 - branches, which run in columns
Routing Problem
minimize number of tracks used => minimizes channel height
minimize wire lengths, vias
all wires routed at same time - better overall optimization
A B A
A
track
via
B A
dogleg branch trunk
Channel Routing
Greedy algorithm
route column by column rather than track by track
scan left-right by column
at each track apply heuristics to bring new nets to an
existing trunk, and move nets between tracks
greedy - at each column try to minimize tracks and
minimize distance to terminals
can often use exhaustive search
number of tracks in a column is small - < 100
good results, but lots of vias
lots of track to track movement for each net
Algorithm
for each column
for each terminal bring in branch
connect to trunk if it exists
create trunk at first empty track
otherwise create new track
move between tracks using heuristics
collapse nets to fewer trunks with spare branch space
reduce distance between net trunks
move nets towards next terminal
connect multiple trunks for a net at end of channel
A B
B A
Pattern Channel Routers
Problem:
A Vertical constraint between A and B.
C and D occupy surrounding tracks
C
and columns
D Solution:
B Shift contacts down and to right,
doglegs on each layer to reach them
Issues with DFM