Compute space margin from bounding box (for user-specified bounding box)

This commit is contained in:
Gabriel Gouvine 2023-06-22 17:03:10 +02:00
parent 76e9da0b64
commit 4973d0a181
1 changed files with 5 additions and 3 deletions

View File

@ -763,10 +763,11 @@ namespace Etesian {
if (instance->getPlacementStatus() == Instance::PlacementStatus::FIXED) {
++fixedNb;
totalLength -= length;
} else if (instance->getPlacementStatus() == Instance::PlacementStatus::PLACED) {
cerr << "PLACED " << instance << endl;
} else {
usedLength += length;
if (instance->getPlacementStatus() == Instance::PlacementStatus::PLACED) {
cerr << "PLACED " << instance << endl;
}
}
}
if (instancesNb <= fixedNb) {
@ -842,7 +843,8 @@ namespace Etesian {
}
}
double spaceMargin = getSpaceMargin();
// Compute the space margin from the row length computed earlier
double spaceMargin = (double) (totalLength - usedLength) / usedLength;
double densityVariation = getDensityVariation();
double bloatFactor = 1.0 + std::max(spaceMargin - densityVariation, 0.0);
if (bloatFactor != 1.0) {