← All projects
ShippedSpring 2026 – Summer 2026Solo

Macro Placement Optimization Challenge

Bayesian optimization and adaptive local search on top of DREAMPlace, cutting proxy placement cost 16% versus RePlace with a 1000× faster per-move evaluator.

16% vs RePlace
Proxy-cost reduction
1000×
Eval speedup
+3.2%
LNS improvement
Force-directed placement of the ibm01 benchmark converging over 150 steps, shown alongside a cost-convergence chart tracking proxy cost per step down to its best value.

The problem

Macro placement — deciding where large blocks go on a chip before the rest of placement runs — has a huge, non-convex search space, and the standard academic baseline (RePlace) leaves real room on the table across wirelength, congestion, and density. The challenge isn’t just finding a better placement for one benchmark; it’s finding a strategy that generalizes across benchmarks without overfitting to whichever one you tuned on.

Approach

The core placer is DREAMPlace, tuned via Bayesian optimization (Optuna) rather than hand-picked hyperparameters. To keep the hyperparameter strategy from overfitting to a single benchmark, a k-means clustering step groups benchmarks by characteristics first, so hyperparameter choices generalize across a cluster instead of chasing one instance. On top of the placer, an adaptive Large Neighborhood Search (LNS) with multiple destroy/repair operators handles local refinement after the initial placement.

What broke

LNS’s local search needs to evaluate many candidate moves, and the naive per-move cost evaluation — recomputing wirelength, congestion, and density from scratch — took 1.3 seconds per move. At that cost, large-scale local search simply isn’t tractable. Building an incremental cost evaluator that updates only what changed after a move, instead of recomputing everything, cut that to 1–3 milliseconds: a 1000× speedup that’s what actually made the LNS phase usable at scale.

Results

Metric Result
Proxy cost vs. RePlace −16% (wirelength, congestion, density combined)
Per-move evaluation 1.3s → 1–3ms (incremental evaluator)
Adaptive LNS refinement +3.2% over the placer’s initial result

What I’d do differently

Pending — this project’s retrospective wasn’t in the source material this case study was drafted from. Krithik: what would you change if you did this again?