aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/placer1.cc14
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);