diff options
author | Sergiusz Bazanski <q3k@q3k.org> | 2018-07-13 14:50:58 +0100 |
---|---|---|
committer | Sergiusz Bazanski <q3k@q3k.org> | 2018-07-13 14:50:58 +0100 |
commit | 9e4f97290a50fc5d9dc0cbe6ead945840b9811b1 (patch) | |
tree | 92ceb562f28bb42d4bd1913dbeba38dd34c5ca94 /common/placer1.cc | |
parent | 0816f447b768ebe0632f419e9b696714dda4e860 (diff) | |
download | nextpnr-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.cc | 38 |
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; } |