OpenROAD icon indicating copy to clipboard operation
OpenROAD copied to clipboard

mpl: re-work utilization handling

Open AcKoucher opened this issue 2 months ago • 1 comments

Context

When we're placing clusters, we generate multiple annealing runs in order to attempt convergence. For each new run, we decrease the amount of dead space i.e., increase the utilization by 5% so that it becomes easier to fit the rectangles in the outline.

Currently there are two controls that handle how utilization varies across runs:

  • target_util which handles the inflation of Mixed clusters;
  • target_dead_space which handles the inflation of Std Cell clusters;

The rationale is cited in a comment in the code:

// During our experiements, we found that keeping
// the same utilization of standard-cell clusters and mixed cluster will make
// SA very difficult to find a feasible solution.  With different utilization,
// SA can more easily find the solution.

However, after quite some testing, it looks like the convergence problems MPL had were mainly due to different problems such as the shaping engine or the annealing engine not working due to bugs.

Changes

  1. Use target_utilization as the unique control for the inflation of both Mixed and Std Cell clusters.
  2. Retire target_dead_space;
  3. Refactor fine shaping function*;
  4. Reduce utilization step across annealing runs from 5% to 0.2%;
  5. Choose the final result i.e., the "best" run based on utilization rather than cost.

*The fine shaping function was doing many things at the same time. So I broke it into 3 separate pieces, each one of them takes care of a single thing:

  • discardValidTilings gets rid of the tilings that don't fit in the outline.
  • validUtilization is to check if the current utilization value generates a total soft area that surpasses the available area for inflation.
  • applyUtilization is the function that actually inflates the objects.

AcKoucher avatar Oct 16 '25 12:10 AcKoucher

clang-tidy review says "All clean, LGTM! :+1:"

github-actions[bot] avatar Oct 16 '25 13:10 github-actions[bot]