Skip to content

MPL should support incremental placement in designs with FIXED macros #7154

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
mikesinouye opened this issue Apr 16, 2025 · 2 comments
Open
Assignees
Labels
mpl Macro Placement

Comments

@mikesinouye
Copy link
Contributor

Description

In 259a4a6, it seems mpl was changed such that it cannot place UNPLACED macros if there are already existing FIXED macros in the FP area. If a user attempts to do mpl in this case, this logic will return an error:

for (odb::dbInst* inst : block_->getInsts()) {
if (inst->isFixed()
&& inst->getBBox()->getBox().overlaps(floorplan_shape)) {
logger_->error(MPL,
50,
"Found fixed instance {} inside the floorplan area.",
inst->getName());
}
}
}

[ERROR MPL-0050] Found fixed instance a/b/c/d/inst inside the floorplan area.

My understanding is that the original mpl algorithm could handle this scenario. Is that understanding correct, and if so, is there a workaround to support this in the new mpl? I notice there are checks to ignore fixed macros, which makes me think this is possible to support it, e.g.

// no risk to generate overlap.
bool ClusteringEngine::isIgnoredInst(odb::dbInst* inst)
{
odb::dbMaster* master = inst->getMaster();
return master->isPad() || master->isCover() || master->isEndCap()
|| inst->isFixed();

The use case is: The RTL is modified but the reference FP DEF with fixed macros is not. Changes to add more macros in RTL and will require incremental placement, but I would like any original placement to be respected. If this is not currently possible, it would be great to support this use case.

Suggested Solution

No response

Additional Context

No response

@eder-matheus eder-matheus added the mpl Macro Placement label Apr 16, 2025
@AcKoucher
Copy link
Contributor

AcKoucher commented Apr 16, 2025

@mikesinouye We never actually had the full support for partial macro placement i.e., having some macros placed and run mpl for others. Although these ignore checks exist in the clustering algorithm, the mechanism to handle fixed macros inside the annealer was never actually implemented.

The changes in 259a4a6 were to cover cases in which there are special fixed cells inside the core, but outside the area specified for the macro placement - these should not be touched by mpl.

I have some ideas to handle the pre-placed macros scenario.

@maliberty
Copy link
Member

We never actually had the full support for partial macro placement

I think he was referring to TritonMacroPlacer (old mpl)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mpl Macro Placement
Projects
None yet
Development

No branches or pull requests

4 participants