Increate the reluctance to go up in Manipulator::moveUp().

* Change: In Katana::Manipulator::moveUp(), the "reserve" value was
    of 0.5 for pivot up and locals, now set it to 1.0, like in all
    other cases ("reserve" is the number of free tracks that is
    needed to allow the move up, in addition the the length being
    moved up).
      Fix routing convergence on the MIPS pipeline bench.
This commit is contained in:
Jean-Paul Chaput 2021-06-13 12:03:35 +02:00
parent 1569e2807e
commit 63d2f69459
1 changed files with 4 additions and 4 deletions

View File

@ -1180,15 +1180,15 @@ namespace Katana {
kflags |= (flags & AllowTerminalMoveUp) ? Flags::AllowTerminal : Flags::NoFlags; kflags |= (flags & AllowTerminalMoveUp) ? Flags::AllowTerminal : Flags::NoFlags;
kflags |= (flags & IgnoreContacts ) ? Flags::IgnoreContacts : Flags::NoFlags; kflags |= (flags & IgnoreContacts ) ? Flags::IgnoreContacts : Flags::NoFlags;
//float reserve = 1.0; float reserve = 1.0;
float reserve = 0.5; //float reserve = 0.5;
if (_segment->base() and (_segment->base()->getRpDistance() > 2)) reserve = 1.0; if (_segment->base() and (_segment->base()->getRpDistance() > 2)) reserve = 1.0;
if (_segment->getLength() > 60*getPitch()) reserve = 1.0; if (_segment->getLength() > 60*getPitch()) reserve = 1.0;
if (_segment->isFixed()) return false; if (_segment->isFixed()) return false;
if (not (flags & AllowLocalMoveUp)) { if (not (flags & AllowLocalMoveUp)) {
if (_segment->isLocal()) { if (_segment->isLocal()) {
if (not _segment->canPivotUp(0.5,kflags)) return false; if (not _segment->canPivotUp(1.0,kflags)) return false;
} else { } else {
if (_segment->getLength() < 20*getPitch()) { if (_segment->getLength() < 20*getPitch()) {
if (not (flags & AllowShortPivotUp)) return false; if (not (flags & AllowShortPivotUp)) return false;
@ -1197,7 +1197,7 @@ namespace Katana {
if (not _segment->canMoveUp(reserve,kflags)) return false; if (not _segment->canMoveUp(reserve,kflags)) return false;
} }
} else { } else {
if (not _segment->canMoveUp(0.5,kflags)) return false; if (not _segment->canMoveUp(1.0,kflags)) return false;
} }
//reprocessParallels(); //reprocessParallels();