Implementation of Fidducia--Matheyeses Algorithm
The first step of the physical design process in VLSI chip fabrication is partitioning. It is done to solve the complexity of the design. Fidducia--Matheyeses is an algorithm for automizing the partitioning process.
Algorithm
- Compute the balance criterion
- Compute the cell gain of each cell
- Choose the base cell ci that has maximum gain and satify the balance criteria and move the cell
- Lock the base cell and update the gains of all the cells connected to the nets of this base cell
- If all the cell are locked then go to step 6, otherwise go to step 3
- Determine the best move sequence c1,c2,……cm(1<=m<=i), so that Gm = ΣΔ𝑔𝑖𝑚𝑖=1 is maximized. If Gm > 0 go to step 7
- Make all the moves permanent and end.
Implementation details:
The Algorithm was implemented in C++ using STL libraries. The code is written in a very modular way where different functions have been defined for calculating different aspects of the FM-algorithm.
Steps to run the code:
- First download the ibmXX.net and ibm.are file in a directory (XX = benchmark id)
- Run the perl script: $ ibm.perl ibmXX.net ibmXX.are > ibmXX.hgr
- Compile partitioning.cpp $ g++ partitioning.cpp
- Run the FM algorithm: $ ./a.out ibmXX.hgr