Skip to content

Conversation

@AcKoucher
Copy link
Contributor

@AcKoucher AcKoucher commented Oct 16, 2025

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 AcKoucher marked this pull request as draft October 16, 2025 12:49
@AcKoucher AcKoucher changed the title mpl: ensure we at least try using the actual target utilization mpl: re-work utilization handling Oct 16, 2025
    1) Remove target_dead_space;
    2) Use target_util to inflate both mixed and std cell clusters;
    3) Refactor fine shaping function;
    4) Reduce utilization step across annealing runs;
    5) Choose best run based on utilization rather than cost.

Signed-off-by: Arthur Koucher <[email protected]>
@github-actions
Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant