From 72a9a475fad693dd6e96c5fa55d02a8869e97120 Mon Sep 17 00:00:00 2001 From: David Shah Date: Sat, 18 Aug 2018 18:36:13 +0100 Subject: ecp5: Speed up Bel availability/binding checks Signed-off-by: David Shah --- ecp5/arch.h | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'ecp5') diff --git a/ecp5/arch.h b/ecp5/arch.h index 98aa6941..5b2738b5 100644 --- a/ecp5/arch.h +++ b/ecp5/arch.h @@ -480,25 +480,31 @@ struct Arch : BaseCtx bool checkBelAvail(BelId bel) const { NPNR_ASSERT(bel != BelId()); - return bel_to_cell.find(bel) == bel_to_cell.end() || bel_to_cell.at(bel) == nullptr; + auto found = bel_to_cell.find(bel); + if (found == bel_to_cell.end()) + return true; + else + return found->second == nullptr; } CellInfo *getBoundBelCell(BelId bel) const { NPNR_ASSERT(bel != BelId()); - if (bel_to_cell.find(bel) == bel_to_cell.end()) + auto found = bel_to_cell.find(bel); + if (found == bel_to_cell.end()) return nullptr; else - return bel_to_cell.at(bel); + return found->second; } CellInfo *getConflictingBelCell(BelId bel) const { NPNR_ASSERT(bel != BelId()); - if (bel_to_cell.find(bel) == bel_to_cell.end()) + auto found = bel_to_cell.find(bel); + if (found == bel_to_cell.end()) return nullptr; else - return bel_to_cell.at(bel); + return found->second; } BelRange getBels() const -- cgit v1.2.3