Two-Way Partitioning(Fiduccia & Mattheyses)
Main loop:
lock base cell;
foreach(net n on base cell) {
if(T(n) == 0) increment gains of all free cells on net n;
else if(T(n) == 1) decrement gains of the T cell on net n if it is free;
F(n)--;
T(n)++;
/* check critical nets after the move */
if(F(n)== 0) decrement gains of all free cells on net n;
else if(F(n) == 1) increment gain of the only F cell on net n if it is free;
}