In AutoSegment::canMoveUp(), adjust balance for FlexLib M2/M4.

* Change: In AutoSegment::canMoveUp(), hard code for FlexLib a track
    reserve of one when trying to move up.
      In FlexLib, the router promotes too easily METAL2 towards METAL4,
    clogging the higher level. So we end up with the METAL2 level
    under-saturated and the METAL4 over saturated, leading to routing
    failures.
      Now we assume that there is "one track less available" in METAL4.
      As for now, solves the problem for LibreSOC.
This commit is contained in:
Jean-Paul Chaput 2021-04-21 13:49:41 +02:00
parent ab908b8c44
commit 493ed1ea11
1 changed files with 2 additions and 0 deletions

View File

@ -2103,6 +2103,8 @@ namespace Anabatic {
{
cdebug_log(159,0) << "AutoSegment::canMoveUp() " << flags
<< " (reserve:" << reserve << ") " << this << endl;
if (Session::getRoutingGauge()->getName() == "FlexLib")
reserve += 1.0;
bool nLowDensity = true;
bool nLowUpDensity = true;