C2:C2: VLSI CAD Tools VLSI CAD Tools Problems and AlgorithmsProblems and Algorithms
Marcelo JohannMarcelo Johann
EAMTA 2006EAMTA 2006
EAMTA 2006 - Marcelo Johann - C21.2
OutlineOutlineFIRST PART
• Tools and CAD• The Placement Problem• The Routing Problem•Complexity, Graphs and Optimization
SECOND PART•Routing Algorithms• Placement Algorithms• Interconnections•Methodology Aspects
EAMTA 2006 - Marcelo Johann - C21.3
OutlineOutlineTHIRD PART
• Layout Compaction• Logic Synthesis, BDDs• Technology Mapping• Simmulation vs Formal Verification• Voltage Drop by Random Walks
FOURTH PART•High-Level Synthesis•CDFG, Allocation, Scheduling, Generation
EAMTA 2006 - Marcelo Johann - C21.4
ToolsToolsA long time ago we discovered the first tools…
EAMTA 2006 - Marcelo Johann - C21.5
ToolsTools…tools started to get more sophisticated…
EAMTA 2006 - Marcelo Johann - C21.6
ToolsTools…more sophisticated and complex…
EAMTA 2006 - Marcelo Johann - C21.7
ToolsTools…and then came VLSI CAD tools!
EAMTA 2006 - Marcelo Johann - C21.8
ToolsToolsDesigners use CAD tools to make Chips
EAMTA 2006 - Marcelo Johann - C21.9
ToolsToolsAnd there is a chain of tools that make tools.
g++g++STLSTL
MathCSEE
CEEE
EAMTA 2006 - Marcelo Johann - C21.10
ToolsTools
g++g++STLSTL
MathCSEE
CEEE
EEPhyChe
ProgrammingAlgorithmsGraph TheoryOptimization
VLSI Design
Foundry
EAMTA 2006 - Marcelo Johann - C21.11
But why CAD tools???But why CAD tools???
• Complexity
> 100.000.000 xtores
• Efficiency
– Effort, + productivity
EAMTA 2006 - Marcelo Johann - C21.12
Cresc
imen
to d
o Mer
cado
Desaparecimento do M
ercado
perd
a
atraso
tempo
rece
itaTime to Market
EAMTA 2006 - Marcelo Johann - C21.13
Design FlowDesign Flow
Projetista faz descrição inicial (ex:VHDL) e usa um método, um conjunto de operações com ferramentas para obter o circuito
• Síntese de alto-nível;
• Síntese Lógica;
• Síntese Física:
Placement
Routing
EAMTA 2006 - Marcelo Johann - C21.14
The Routing ProblemThe Routing Problem
QuickTime™ and aTIFF (LZW) decompressor
are needed to see this picture.
EAMTA 2006 - Marcelo Johann - C21.15
The Placement ProblemThe Placement Problem
QuickTime™ and aTIFF (LZW) decompressor
are needed to see this picture.
EAMTA 2006 - Marcelo Johann - C21.16
The Placement ProblemThe Placement Problem
a b c d e f
g h i j k l
But why this way?
EAMTA 2006 - Marcelo Johann - C21.17
The Placement ProblemThe Placement Problem
a
b c
d
e f
g
h
ij
k
l
And not this way?
EAMTA 2006 - Marcelo Johann - C21.18
The Placement ProblemThe Placement ProblemBecause in some dispositions cells to connect are a lot closer
EAMTA 2006 - Marcelo Johann - C21.19
The Placement ProblemThe Placement Problem
a
b c
d
e f
g
h
ij
k
l
12 !
Ok. Lets see how many options we have…
That’s479.001.600
for a circuit with only 12 cells!!!
The Placement The Placement ProblemProblem
EAMTA 2006 - Marcelo Johann - C21.20
Algorithms and DataAlgorithms and Data
Algorithm Sequence of steps to solve a problem• Fundamental area of math and CS theory
Data Sctructures The way data is organized is as important as
an algorithm in order to efficiently solve a problem
• Fundamental area of applied CS;
EAMTA 2006 - Marcelo Johann - C21.21
Graph TheoryGraph TheoryGraph A Set and a set or Pairs
Relation Each pair elementbelongs to the other set
Function There is a single element fromone set associated to each elementof the first set
EAMTA 2006 - Marcelo Johann - C21.22
Circuito representado por um grafo G=(V,E)
v1
v2
v3 v4
v5
v6
v7
v8
v9
componentes
redes
RepresentationRepresentation
EAMTA 2006 - Marcelo Johann - C21.23
A Placement AlgorithmA Placement Algorithm
SA512.ppt
EAMTA 2006 - Marcelo Johann - C21.24
The Routing ProblemThe Routing Problem
+ =
Back again… After placement• Lets see how we can add connections to the
cells so that we build a real circuit
• Switch to Glauco’s Routing Intro - part 1
EAMTA 2006 - Marcelo Johann - C21.25
The Maze RouterThe Maze Router
EAMTA 2006 - Marcelo Johann - C21.26
The Maze RouterThe Maze Router
EAMTA 2006 - Marcelo Johann - C21.27
Maze RouterMaze Router’s expansion’s expansion g++void print(void);int bfs(int source, int target) { queue<int> q; q.push(source); while (!q.empty()) { int n = q.front(); q.pop(); if (n==target)
return 1; if (Space[n] != 'X')
{Space[n] = 'X';print();getchar();q.push(WEST(n));q.push(EAST(n));q.push(NORTH(n));q.push(SOUTH(n));}
} return 0; }
#include <iostream>#include <queue>using namespace std;#define SIDE 20#define PLACE(x,y) ((y)*SIDE+(x))#define WEST(n) (n-1)#define EAST(n) (n+1)#define NORTH(n) (n-SIDE)#define SOUTH(n) (n+SIDE)char Space[SIDE*SIDE];void init (void) { for (int i=0; i<SIDE*SIDE; ++i) Space[i] = ' '; for (int i=0; i<SIDE; ++i) { Space[PLACE(i,0)] = 'X'; Space[PLACE(i,SIDE-1)] = 'X'; Space[PLACE(0,i)] = 'X'; Space[PLACE(SIDE-1,i)] = 'X'; } for (int i=3; i<SIDE-3; ++i) Space[PLACE(i,10)] = 'X'; }
EAMTA 2006 - Marcelo Johann - C21.28
Maze RouterMaze Router’s tracking’s tracking g++typedef pair<int,int> Ref;
char Expansion[SIDE*SIDE];char Taken[SIDE*SIDE];
int bfs(int source, int target) { queue<Ref> q; q.push(Ref(source,0)); while (!q.empty()) { int n = q.front().first; int p = q.front().second; q.pop(); if (n==target)
return 1; if (Expansion[n] == 0 &&
Taken[n] == ' '){Expansion[n] = p;q.push(Ref(WEST(n),n));. . . }
} return 0; }
1-You have to store the node and where it came from in the queue using a pair<int,int>
2-Instead of Space, use Expansion[n] to store where the nodes came from and Taken to represent obstacles and routes
4-Write backtrack(t,s) from target to source following Expansion[n]
EAMTA 2006 - Marcelo Johann - C21.29
Solution SpaceSolution SpaceMethods to find a valid solutionCombinatorial Optimazation Algorithms• Key areas of Computer Science
http://www.rci.rutgers.edu/~cfs/305_html/ProblemSolving_Planning/TOH3DiskSol.html
EAMTA 2006 - Marcelo Johann - C21.30
ComplexityComplexityfunção n = 2 n = 6 n = 10 n = 20 n = 102 n = 103 n = 106
n 2 6 10 20 102 103 106
3n 6 18 30 60 3 * 102 3 * 103 3 * 106
n log10 n 0.6 4.7 10 26 2 * 102 3 * 103 6 * 106
n2 4 36 102 4 * 102 104 106 1012
n3 8 216 103 8 * 103 106 109 1018
2n 4 64 103 106 1030 10301 > 10500
n! 2 720 3 * 106 2 * 1018 9 * 10157 > 10500 > 10500
EAMTA 2006 - Marcelo Johann - C21.31
Complexity vs SpeedComplexity vs Speed
Both are important in practice
Complexity• When the problem’s instance size increases
Speed• When the problem’s instance size is
bounded
EAMTA 2006 - Marcelo Johann - C21.32
AlgorithmsAlgorithms• Exact Algorithms• Heuristic and Meta-Heuristic Algorithms• Randomized Algorithms
EAMTA 2006 - Marcelo Johann - C21.33
Graphs RepresentationGraphs RepresentationAdjacency Matrix• Tells which pair is connectedList of Edges• Enumarates each pairList of Neighbors• Is a vector of listsGenerating function• A successor operatorDedicated• Uses implicit graph structure
C2:C2: VLSI CAD Tools VLSI CAD Tools Problems and AlgorithmsProblems and Algorithms
EAMTA 2006EAMTA 2006
Marcelo JohannMarcelo Johann
www.inf.ufrgs.br/~johann
Part 1 ends