From 90086698679d8a3c5f9e58d619bc18a284ab17e1 Mon Sep 17 00:00:00 2001 From: David Shah Date: Tue, 19 Jun 2018 14:44:49 +0200 Subject: Major performance improvement to placement validity check Signed-off-by: David Shah --- dummy/arch_place.cc | 9 +++++++-- dummy/arch_place.h | 20 +++++++++++++------- 2 files changed, 20 insertions(+), 9 deletions(-) (limited to 'dummy') diff --git a/dummy/arch_place.cc b/dummy/arch_place.cc index 4e712f6d..f35cb6fe 100644 --- a/dummy/arch_place.cc +++ b/dummy/arch_place.cc @@ -21,8 +21,13 @@ NEXTPNR_NAMESPACE_BEGIN -bool isValidBelForCell(Context *ctx, CellInfo *cell, BelId bel) { return true; } +PlaceValidityChecker::PlaceValidityChecker(Context *ctx) {} -bool isBelLocationValid(Context *ctx, BelId bel) { return true; } +bool PlaceValidityChecker::isValidBelForCell(CellInfo *cell, BelId bel) +{ + return true; +} + +bool PlaceValidityChecker::isBelLocationValid(BelId bel) { return true; } NEXTPNR_NAMESPACE_END diff --git a/dummy/arch_place.h b/dummy/arch_place.h index 3abd80c5..1111ac42 100644 --- a/dummy/arch_place.h +++ b/dummy/arch_place.h @@ -26,13 +26,19 @@ NEXTPNR_NAMESPACE_BEGIN // Architecure-specific placement functions -// Whether or not a given cell can be placed at a given Bel -// This is not intended for Bel type checks, but finer-grained constraints -// such as conflicting set/reset signals, etc -bool isValidBelForCell(Context *ctx, CellInfo *cell, BelId bel); - -// Return true whether all Bels at a given location are valid -bool isBelLocationValid(Context *ctx, BelId bel); +class PlaceValidityChecker +{ + public: + PlaceValidityChecker(Context *ctx); + + // Whether or not a given cell can be placed at a given Bel + // This is not intended for Bel type checks, but finer-grained constraints + // such as conflicting set/reset signals, etc + bool isValidBelForCell(CellInfo *cell, BelId bel); + + // Return true whether all Bels at a given location are valid + bool isBelLocationValid(BelId bel); +}; NEXTPNR_NAMESPACE_END -- cgit v1.2.3