Skip to content

Add leaderboard entry: 0.0000 overlap, 0.3582 wirelength, 26.15s - #65

Open
shaanpatel00 wants to merge 1 commit into
partcleda:mainfrom
shaanpatel00:leaderboard-shaan-patel
Open

Add leaderboard entry: 0.0000 overlap, 0.3582 wirelength, 26.15s#65
shaanpatel00 wants to merge 1 commit into
partcleda:mainfrom
shaanpatel00:leaderboard-shaan-patel

Conversation

@shaanpatel00

Copy link
Copy Markdown

Results (tests 1-10)

  • Average Overlap: 0.0000
  • Average Wirelength: 0.3582
  • Total Runtime: 26.15s

Code: https://github.com/shaanpatel00/partcl_intern_challenge (public)
All changes are in placement.py between the OPTIMIZATION CODE markers.
test.py is unmodified.

Approach

  1. IRLS analytic solve — the wirelength objective is convex and separable, so the unconstrained optimum is found via iteratively reweighted least squares (~3ms) rather than gradient descent (~1s for the same answer).
  2. Pin-density-aware construction — standard cells hold most pins but almost no area (Test 10: 6.7% of area, 89% of pins), so they're packed into one tight cluster, with macros flush-packed around it at positions that minimize their own incident wirelength.
  3. Randomized restart search over macro placement order (trial-count bounded, so results are reproducible).
  4. Gradient refinement, kept only when it beats the construction and stays legal, then a legalization pass guaranteeing exact zero overlap.

Bonus tests

Test 11: 0.3135; Test 12: 0.5055, both zero overlap.
Note: calculate_cells_with_overlaps in the evaluation section is an O(N²) Python loop, so scoring test 12 takes ~45 min even though placement finishes in ~4s. I verified both with an independent bucket-based overlap checker.

Sign up for freeto 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

@shaanpatel00