Skip to content

Comments

GPL: add support to TD with multiple regions#9389

Open
LucasYuki wants to merge 12 commits intoThe-OpenROAD-Project:masterfrom
LucasYuki:gpl-TD-region
Open

GPL: add support to TD with multiple regions#9389
LucasYuki wants to merge 12 commits intoThe-OpenROAD-Project:masterfrom
LucasYuki:gpl-TD-region

Conversation

@LucasYuki
Copy link
Contributor

@LucasYuki LucasYuki commented Jan 29, 2026

Part of #8838.

Changes:

  • Fixes cell creation inside GPL.
    • Insert the new cell in the right dbRegion (inDbInstCreate).
  • Fixes cell destruction inside GPL.
    • Each region has a NesterovBase object, but the cells are stored in the NesterovBaseCommon
    • When a cell is deleted in NesterovBaseCommon, we replace the deleted cell with the last cell in the list. After this, we need to update the index of this cell in all NesterovBases.
  • Fixes a small bug in DPL:
    • The dummy_cell_ was not set as fixed, causing a segmentation fault in some cases.
  • Updates the test/upf_aes.tcl to use TD.
  • Removes the inDbInstCreate(dbInst* inst, dbRegion* region) callback.
    • Since it's possible to get the dbRegion from the dbInst, only the inDbInstCreate(dbInst* inst) is necessary.

This PR doesn't assign regions to buffers inserted by the RSZ.
Currently, all buffers are placed in the top region, but support for inserting instances in a dbRegion was added.

@LucasYuki LucasYuki requested a review from gudeh January 29, 2026 12:30
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces important fixes and features for region-based placement in GPL. The changes to handle cell creation and destruction within specific regions are well-implemented, particularly the refactoring in NesterovBase to correctly update all placer instances after a cell is destroyed and replaced. The bug fix in DPL for the dummy_cell_ is also a good catch.

I've found one logic issue in the new createCbkGCell function in nesterovPlace.cpp where a warning is logged incorrectly. My review includes a specific comment with a suggested fix for this.

Overall, this is a solid set of changes that improves the robustness and capabilities of the placer.

@github-actions
Copy link
Contributor

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

2 similar comments
@github-actions
Copy link
Contributor

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

@github-actions
Copy link
Contributor

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

@gudeh
Copy link
Contributor

gudeh commented Jan 29, 2026

is this no-op for current designs without regions?

@gudeh
Copy link
Contributor

gudeh commented Jan 29, 2026

we should have secure-CI for this branch PR

@github-actions
Copy link
Contributor

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

@LucasYuki LucasYuki changed the title Gpl td region GPL: add support to TD with multiple regions Jan 30, 2026
@github-actions
Copy link
Contributor

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

@LucasYuki
Copy link
Contributor Author

@gudeh, I ran a secure-CI and it didn't change any current designs without regions.

LucasYuki and others added 12 commits February 20, 2026 14:24
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: LucasYuki <46359888+LucasYuki@users.noreply.github.com>
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
Signed-off-by: LucasYuki <lucasyuki@yahoo.com.br>
@github-actions
Copy link
Contributor

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

@LucasYuki LucasYuki requested a review from maliberty February 22, 2026 22:28
Comment on lines +741 to 745
deepIterativePause("pause after legalGridPt() inside shiftMove(), cell "
+ target_cell->name());

deepIterativePause("pause after legalGridPt() inside shiftMove(), cell "
+ target_cell->name());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this duplicated?

set_layer_rc -via via2 -resistance 3.368786E-3
set_layer_rc -via via3 -resistance 0.376635E-3
set_layer_rc -via via4 -resistance 0.00580E-3
set_layer_rc -via via4 -resistance 0.00580E-3 No newline at end of file
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No reason to remove the last newline. Do you have an editor setting issue?

global_placement -skip_initial_place -density uniform -routability_driven -timing_driven

detailed_placement
detailed_placement -max_displacement 1000
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is such a large limit needed?

@maliberty maliberty requested a review from gudeh February 23, 2026 15:42
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.

3 participants