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
ai2.1
ai2.2
Implementation Methods
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
Full custom design
no constraints - output is geometry highest-volume, highest performance designs requires some handcrafted design 5-10 transistors/day for custom layout use to design cells for other methods primary CAD tools layout editor, plotter
Cell-based design
compose design using a library of cells at board-level, cells are chips cell = single gate up to microprocessor primary CAD tools partitioning placement and routing
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
Design Styles
Gate array design
FPGAs are a form of gate array
Design Methods
CAD problems
placement of gates/transistors onto fixed sites global and local wire routing in fixed space
CAD problems
cell placement - row and location within row wiring in channels minimize area, delay
CAD problems
placement and routing of arbitrary shapes is difficult
Decode PLA
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?
Determination of component locations
cells in standard cells ICs on PC board pins on ICs gates in gate array modules in chip floorplan
B E D
Goal
minimize chip/board area minimize routing area minimize unused area minimize wiring length minimize length of critical paths evenly distribute power dissipation minimize crosstalk
B D E
C A
Why Placement?
Multi-goal optimization
placement area routing area delay power symmetry - analog circuits
Objective Functions
Minimize placement cost according to function
want fast but reasonably accurate metrics area total area taken by components and estimated wiring wire length (!= delay) minimum spanning tree Steiner tree half-perimeter of bounding box wiring congestion track density along channels cutset size
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 Components
Unplaced Components
Quadratic Placement
Let (xi ,yi ) ! Coordinate s of the center of cell i wij ! Weight of the net between cell i and cell j x, y ! Solution v ectors
Cost of the net between cell i and cell j 1 ! wij xi x j ) 2 ( yi y j ) 2 ( 2 1 T 1 T T T Total cost C( x ) ! x Qx d x x y Qy d y y const 2 2 xC ( x, y ) xC ( x, y ) Minimum cost : ! 0, !0 xxi xyi
Analytic Placement
Simulated Annealing
Problem
greedy approaches only accept downhill moves that improve cost function can get stuck in local minima far from global minimum
Simulated Annealing
Randomly move components
score decreases => accept move score increases => accept move with some probability common function: e-deltaS/t probability decreases over time
Cool system
initial temperature t high enough to randomize system decrease temperature - the annealing schedule do a bunch of moves between temperature changes
Single Cell
often causes cell overlap more general
Cluster
move connected components avoids a lot of unnecessary 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
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 layer assignment vias
B D E
C A
Goal
minimize routing area minimize wiring length minimize channel height minimize lengths of critical paths 100% completion in allocated space fixed wiring areas e.g. gate arrays, FPGAs minimize crosstalk
B D E
C A
Why Routing?
Hand routing impractical
1k-100k nets in large chip designs prone to error example IBM TCM has 26 routing layers how to use layers?
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 L peak density 4 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
B D E
C D A
B E
C A
B D E
C D A
B E
C A
2 1
Multi-commodity flow
Each net is a commodity Simultaneously route all commodities
S 3 3
1 4
2 5
1 2 1 10 D
Maze Routing
Place wires and components on grid
grid size = wire width + spacing works best if all wire widths and spacings are equal grid squares occupied w+s
Distance metric
each square has 4 neighbors unit cost away
Search graph
node for each square unit-cost edge to 4 neighboring nodes 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 with accumulated cost stop when target vertex reached backtrace for route
3 2 1 0 1 2 3
3 3 2 3 2 1 3 2 3
3 2 3 1 2 3 2 3 3
Algorithm
add source node S into list costS = 0 for all nodes i on list if i == destination D pathcost = costD break for j=N,S,E,W neighbors that are not visited and not occupied add node j to list costj = costi+1 mark i as visited remove node i from list while i != S do mark i as path i = min cost N,S,E,W visited neighbor
Maze Routing
Avoiding blockage
wire at a time => can block wires
A B B A A
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
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 B A E
E E
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 dogleg A 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
Challenge
developing rule set
A C D B
Problem: Vertical constraint between A and B. C and D occupy surrounding tracks and columns Solution: Shift contacts down and to right, doglegs on each layer to reach them
Due to shrinking feature size, more design rules are required Details routing becomes more tedious, considering various manufacturability rules Should we consider DFM while doing routing, or leave DFM to the next level?