1.system Partioning
1.system Partioning
1.system Partioning
Partitioning
System design
Partitioning of A Circuit
Input size = 48
(a)
~
(b)
Cut 1 = 4 Cut 2 = 4
Size 1 = 15 Size 2 = 16 Size 3 = 17
System
Board
System
Level
Hierarchical Partitioning
The levels of partitioning are:
1. System Level Partitioning: A system is partitioned into a set of
subsystems such that each subsystem can be designed and
fabricated independently on a single PCB.
~
2. Board Level Partitioning: The circuit assigned to a PCB is
partitioned into subcircuits such that each subcircuit can be
fabricated as a VLSI chip.
3. Chip Level Partitioning: The circuit assigned to a chip is
partitioned into smaller subcircuits.
Chip level partitioning is physically not necessary.
System Hierarchy
A
A B
X
10X
C
10X C
B
20X
(b)
(a)
Problem Formulation
1. Interconnections between partitions:
k X
X k
Obj1 :
i=1 j =1
cij ; (i 6= j ) is minimized
2. Delay due to partitioning:
Obj2 : max
p 2P
i
(H (pi)) is minimized
~ 3. Number of terminals:
Cons1 : Count(Vi) Ti; 1 i k
where,
cij is the cutsize between partitions Vi and Vj .
H (pi) is the number of times a hyperpath pi is cut.
Count(Vi) is the terminal count for partition Vi.
Problem Formulation
~
2. Number of partitions:
Cons3 : Kmin k Kmax
Partitioning Algorithms
Kernighan-Lin Algorithm
It is a bisectioning algorithm
The input graph is partitioned into two subsets of equal sizes.
Till the cutsize keeps improving,
{ Vertex pairs which give the largest decrease in cutsize
~
are exchanged
{ These vertices are then locked
{ If no improvement is possible and some vertices are still
unlocked, the vertices which give the smallest
increase are exchanged
~ W. Kernighan and S. Lin, Bell System Technical Journal, 1970.
Kernighan-Lin Algorithm
Algorithm KL
begin
INITIALIZE();
while( IMPROVE(table) = TRUE ) do
(* if an improvement has been made during last iteration,
the process is carried out again. *)
while ( UNLOCK(A) = TRUE ) do
(* if there exists any unlocked vertex in A,
more tentative exchanges are carried out. *)
for ( each a 2 A ) do
if (a = unlocked) then
~
for( each b 2 B ) do
if (b = unlocked) then
if (Dmax < D(a) + D(b)) then
Dmax = D(a) + D(b);
amax = a;
bmax = b;
TENT-EXCHGE(amax; bmax);
LOCK(amax; bmax);
LOG(table);
Dmax = ;1;
ACTUAL-EXCHGE(table);
end.
2 6
2 6 3 7
3 7
4 8 5 4
Fiduccia-Mattheyses Algorithm
Vertex # Vertex #
-pmax
Vertex
1 2 ......... n List of free
vertices
+pmax IInd Partition
Vertex # Vertex #
-pmax
Vertex
1 2 ......... n
v4 v6 v 3-4 v 5-6
v2 v8
v1 v7 v 1-2 v 7-8
v 12 v 10
v 11-12 v 9-10
v 11 v9
Matching
(a) Matching of Graph (b) After Contracting
B B
B B
~
(a)
(b)
Local Minima’s
Global Minima
Time
~
Ist Generation
IInd Generation
METRIC-PARTITION Algorithm
Input is a set V of the nodes and a set S = S1; S2; :::; SN of the nets.
A metric value over V V is computed
Nodes in V are then partitioned into subsets
Partitions meet area constraints and
terminal constraints
Algorithm METRIC-PARTITION
~
begin
for(i = 1 to N ) do
CONSTRUCT-ST( Si );
ADD-EDGES( Si; L);
SORT-ASCENDING(L; metric);
no groups = INITIALIZE-GROUPS( V );
while( L 6= ) do
METRIC-PARTITION Algorithm
eij = SELECT-EDGE(L);
if( (Gi 6= Gj ) and
(AREA(Gi) + AREA(Gj ) A) and
(COUNT(Gi) + COUNT(Gj ) T ) )
MERGE-GROUPS( Gi, Gj );
no groups = no groups ; 1;
if(no groups K )
return(G);
else
~
continue;
while( no groups > K ) do
Gi = SELECT SMALL();
for(j = 1 to no groups) do
if( i 6= j ) and
(AREA(Gi) + AREA(Gj ) A) and
(COUNT(Gi) + COUNT(Gj ) T ) )
STORE-MIN( Gj );
METRIC-PARTITION Algorithm
merge success = TRUE;
MERGE-GROUPS( Gi, RESTORE-MIN(Gj ) );
if( no groups K )
return( G );
if( merge success = FALSE )
if( SIZE( Gi) = 1 )
~
return( ); ~
else
Gj = SELECT LARGE();
DECOMPOSE( Gj , Gk , Gl );
end.
1 2
0 1
2 1 2 1
0 0 1 2
4 3
1 2
Reduction of cutsize
A B C
Balanced Partitions
D E F
speed,
performance