aboutsummaryrefslogtreecommitdiffstats
path: root/common/placer1.cc
diff options
context:
space:
mode:
authorSergiusz Bazanski <q3k@q3k.org>2018-07-13 14:50:58 +0100
committerSergiusz Bazanski <q3k@q3k.org>2018-07-13 14:50:58 +0100
commit9e4f97290a50fc5d9dc0cbe6ead945840b9811b1 (patch)
tree92ceb562f28bb42d4bd1913dbeba38dd34c5ca94 /common/placer1.cc
parent0816f447b768ebe0632f419e9b696714dda4e860 (diff)
downloadnextpnr-9e4f97290a50fc5d9dc0cbe6ead945840b9811b1.tar.gz
nextpnr-9e4f97290a50fc5d9dc0cbe6ead945840b9811b1.tar.bz2
nextpnr-9e4f97290a50fc5d9dc0cbe6ead945840b9811b1.zip
Make PnR use Unlocked methods
Diffstat (limited to 'common/placer1.cc')
-rw-r--r--common/placer1.cc38
1 files changed, 19 insertions, 19 deletions
diff --git a/common/placer1.cc b/common/placer1.cc
index 53295a91..05f760a3 100644
--- a/common/placer1.cc
+++ b/common/placer1.cc
@@ -85,7 +85,7 @@ class SAPlacer
auto loc = cell->attrs.find(ctx->id("BEL"));
if (loc != cell->attrs.end()) {
std::string loc_name = loc->second;
- BelId bel = ctx->getBelByName(ctx->id(loc_name));
+ BelId bel = ctx->getBelByNameUnlocked(ctx->id(loc_name));
if (bel == BelId()) {
log_error("No Bel named \'%s\' located for "
"this chip (processing BEL attribute on \'%s\')\n",
@@ -100,7 +100,7 @@ class SAPlacer
cell->type.c_str(ctx));
}
- ctx->bindBel(bel, cell->name, STRENGTH_USER);
+ ctx->bindBelUnlocked(bel, cell->name, STRENGTH_USER);
locked_bels.insert(bel);
placed_cells++;
}
@@ -235,7 +235,7 @@ class SAPlacer
}
// Final post-pacement validitiy check
for (auto bel : ctx->getBels()) {
- IdString cell = ctx->getBoundBelCell(bel);
+ IdString cell = ctx->getBoundBelCellUnlocked(bel);
if (!ctx->isBelLocationValid(bel)) {
std::string cell_text = "no cell";
if (cell != IdString())
@@ -267,12 +267,12 @@ class SAPlacer
CellInfo *ripup_target = nullptr;
BelId ripup_bel = BelId();
if (cell->bel != BelId()) {
- ctx->unbindBel(cell->bel);
+ ctx->unbindBelUnlocked(cell->bel);
}
BelType targetType = ctx->belTypeFromId(cell->type);
for (auto bel : ctx->getBels()) {
if (ctx->getBelType(bel) == targetType && (ctx->isValidBelForCell(cell, bel) || !require_legal)) {
- if (ctx->checkBelAvail(bel)) {
+ if (ctx->checkBelAvailUnlocked(bel)) {
uint64_t score = ctx->rng64();
if (score <= best_score) {
best_score = score;
@@ -282,7 +282,7 @@ class SAPlacer
uint64_t score = ctx->rng64();
if (score <= best_ripup_score) {
best_ripup_score = score;
- ripup_target = ctx->cells.at(ctx->getBoundBelCell(bel)).get();
+ ripup_target = ctx->cells.at(ctx->getBoundBelCellUnlocked(bel)).get();
ripup_bel = bel;
}
}
@@ -292,12 +292,12 @@ class SAPlacer
if (iters == 0 || ripup_bel == BelId())
log_error("failed to place cell '%s' of type '%s'\n", cell->name.c_str(ctx), cell->type.c_str(ctx));
--iters;
- ctx->unbindBel(ripup_target->bel);
+ ctx->unbindBelUnlocked(ripup_target->bel);
best_bel = ripup_bel;
} else {
all_placed = true;
}
- ctx->bindBel(best_bel, cell->name, STRENGTH_WEAK);
+ ctx->bindBelUnlocked(best_bel, cell->name, STRENGTH_WEAK);
// Back annotate location
cell->attrs[ctx->id("BEL")] = ctx->getBelName(cell->bel).str(ctx);
@@ -313,7 +313,7 @@ class SAPlacer
new_lengths.clear();
update.clear();
BelId oldBel = cell->bel;
- IdString other = ctx->getBoundBelCell(newBel);
+ IdString other = ctx->getBoundBelCellUnlocked(newBel);
CellInfo *other_cell = nullptr;
if (other != IdString()) {
other_cell = ctx->cells[other].get();
@@ -321,9 +321,9 @@ class SAPlacer
return false;
}
wirelen_t new_wirelength = 0, delta;
- ctx->unbindBel(oldBel);
+ ctx->unbindBelUnlocked(oldBel);
if (other != IdString()) {
- ctx->unbindBel(newBel);
+ ctx->unbindBelUnlocked(newBel);
}
for (const auto &port : cell->ports)
@@ -336,16 +336,16 @@ class SAPlacer
update.insert(port.second.net);
}
- ctx->bindBel(newBel, cell->name, STRENGTH_WEAK);
+ ctx->bindBelUnlocked(newBel, cell->name, STRENGTH_WEAK);
if (other != IdString()) {
- ctx->bindBel(oldBel, other_cell->name, STRENGTH_WEAK);
+ ctx->bindBelUnlocked(oldBel, other_cell->name, STRENGTH_WEAK);
}
if (require_legal) {
if (!ctx->isBelLocationValid(newBel) || ((other != IdString() && !ctx->isBelLocationValid(oldBel)))) {
- ctx->unbindBel(newBel);
+ ctx->unbindBelUnlocked(newBel);
if (other != IdString())
- ctx->unbindBel(oldBel);
+ ctx->unbindBelUnlocked(oldBel);
goto swap_fail;
}
}
@@ -369,8 +369,8 @@ class SAPlacer
improved = true;
} else {
if (other != IdString())
- ctx->unbindBel(oldBel);
- ctx->unbindBel(newBel);
+ ctx->unbindBelUnlocked(oldBel);
+ ctx->unbindBelUnlocked(newBel);
goto swap_fail;
}
curr_wirelength = new_wirelength;
@@ -379,9 +379,9 @@ class SAPlacer
return true;
swap_fail:
- ctx->bindBel(oldBel, cell->name, STRENGTH_WEAK);
+ ctx->bindBelUnlocked(oldBel, cell->name, STRENGTH_WEAK);
if (other != IdString()) {
- ctx->bindBel(newBel, other, STRENGTH_WEAK);
+ ctx->bindBelUnlocked(newBel, other, STRENGTH_WEAK);
}
return false;
}