Circuit Partitioning
Divides circuit into smaller partitions that can be efficiently handled Goal is generally to minimize communication between balanced partitions Kernighan-Lin Fiduccia-Mattheyses (KLFM) is popular algorithm
KLFM Algorithm
Basic Idea:
Start with initial partition Iteratively improves cutsize
Cutsize is number of edges between partitions Node that gives greatest reduction or least degradation
Moves one node at a time
Lock node after moving Continue moving nodes until all locked or size contraints are violated Find best partitioning, unlock all nodes Repeat until no improvement found
KLFM Algorithm
Initial Partition
Maximum Size = 4 Size = 3 Size = 3 Cutsize = 5
KLFM Algorithm
Maximum Size = 4 Size = 4 Size = 2 Cutsize = 3
KLFM Algorithm
Maximum Size = 4 Size = 3 Size = 3 Cutsize = 2
KLFM Algorithm
Maximum Size = 4 Size = 2 Size = 4 Cutsize = 2
KLFM Algorithm
Maximum Size = 4 Size = 3 Size = 3 Cutsize = 4
KLFM Algorithm
Maximum Size = 4 Size = 2 Size = 4 Cutsize = 4
KLFM Algorithm
Maximum Size = 4 Size = 3 Size = 3 Cutsize = 5
KLFM Algorithm
Backtrack to minimum cut size, unlock nodes, and repeat
Size = 3 Size = 3 Cutsize = 2