ecp5: Speed up Bel availability/binding checks

Signed-off-by: David Shah <davey1576@gmail.com>
This commit is contained in:
David Shah 2018-08-18 18:36:13 +01:00
parent b8206d71ca
commit 72a9a475fa

View File

@ -480,25 +480,31 @@ struct Arch : BaseCtx
bool checkBelAvail(BelId bel) const bool checkBelAvail(BelId bel) const
{ {
NPNR_ASSERT(bel != BelId()); 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 CellInfo *getBoundBelCell(BelId bel) const
{ {
NPNR_ASSERT(bel != BelId()); 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; return nullptr;
else else
return bel_to_cell.at(bel); return found->second;
} }
CellInfo *getConflictingBelCell(BelId bel) const CellInfo *getConflictingBelCell(BelId bel) const
{ {
NPNR_ASSERT(bel != BelId()); 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; return nullptr;
else else
return bel_to_cell.at(bel); return found->second;
} }
BelRange getBels() const BelRange getBels() const