diff options
Diffstat (limited to 'common')
| -rw-r--r-- | common/placer1.cc | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/common/placer1.cc b/common/placer1.cc index 74a11040..be20c072 100644 --- a/common/placer1.cc +++ b/common/placer1.cc @@ -145,6 +145,7 @@ class SAPlacer          }          int n_no_progress = 0; +        wirelen_t min_metric = curr_metric;          double avg_metric = curr_metric;          temp = 10000; @@ -169,6 +170,12 @@ class SAPlacer                          try_swap_position(cell, try_bel);                  }              } + +            if (curr_metric < min_metric) { +                min_metric = curr_metric; +                improved = true; +            } +              // Heuristic to improve placement on the 8k              if (improved)                  n_no_progress = 0; @@ -222,6 +229,9 @@ class SAPlacer                  ctx->shuffle(autoplaced);                  assign_budget(ctx);              } +            else { +                update_budget(ctx); +            }              // Recalculate total metric entirely to avoid rounding errors              // accumulating over time @@ -365,8 +375,8 @@ class SAPlacer          // SA acceptance criterea          if (delta < 0 || (temp > 1e-6 && (ctx->rng() / float(0x3fffffff)) <= std::exp(-delta / temp))) {              n_accept++; -            if (delta < 2) -                improved = true; +            //if (delta < 2) +            //    improved = true;          } else {              if (other != IdString())                  ctx->unbindBel(oldBel);  | 
