aboutsummaryrefslogtreecommitdiffstats
path: root/common/arch_api.h
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-04-27 10:42:01 +0100
committergatecat <gatecat@ds0.me>2021-05-06 11:47:06 +0100
commitb62dcc4bccc4cfba33ed1a1e0a24ebb72de61579 (patch)
treecd93dc70317d0b3c3bd28b61072d55d078a56f65 /common/arch_api.h
parented17091e6ada98a55396186a22c748abf3fca310 (diff)
downloadnextpnr-b62dcc4bccc4cfba33ed1a1e0a24ebb72de61579.tar.gz
nextpnr-b62dcc4bccc4cfba33ed1a1e0a24ebb72de61579.tar.bz2
nextpnr-b62dcc4bccc4cfba33ed1a1e0a24ebb72de61579.zip
arch_api: Outline of new cluster API
Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'common/arch_api.h')
-rw-r--r--common/arch_api.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/common/arch_api.h b/common/arch_api.h
index 7ed81434..76b78c62 100644
--- a/common/arch_api.h
+++ b/common/arch_api.h
@@ -139,6 +139,13 @@ template <typename R> struct ArchAPI : BaseCtx
virtual typename R::CellTypeRangeT getCellTypes() const = 0;
virtual typename R::BelBucketRangeT getBelBuckets() const = 0;
virtual typename R::BucketBelRangeT getBelsInBucket(BelBucketId bucket) const = 0;
+ // Cluster methods
+ virtual CellInfo *getClusterRootCell(ClusterId cluster) const = 0;
+ virtual ArcBounds getClusterBounds(ClusterId cluster) const = 0;
+ virtual Loc getClusterOffset(ClusterId cluster, CellInfo *cell) const = 0;
+ virtual bool isClusterStrict(CellInfo *cell) const = 0;
+ virtual bool getClusterPlacement(ClusterId cluster, BelId root_bel,
+ std::vector<std::pair<CellInfo *, BelId>> &placement) const = 0;
// Flow methods
virtual bool pack() = 0;
virtual bool place() = 0;