aboutsummaryrefslogtreecommitdiffstats
path: root/docs/archapi.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/archapi.md')
-rw-r--r--docs/archapi.md54
1 files changed, 33 insertions, 21 deletions
diff --git a/docs/archapi.md b/docs/archapi.md
index 855796d6..f7246f08 100644
--- a/docs/archapi.md
+++ b/docs/archapi.md
@@ -40,6 +40,10 @@ A type representing a wire name. `WireId()` must construct a unique null-value.
A type representing a pip name. `PipId()` must construct a unique null-value. Must provide `==`, `!=`, and `<` operators and a specialization for `std::hash<PipId>`.
+### BelBucketId
+
+A type representing a BEL bucket. `BelBucketId()` must construct a unique null-value. Must provide `==`, `!=`, and `<` operators and a specialization for `std::hash<BelBucketId>`.
+
### GroupId
A type representing a group name. `GroupId()` must construct a unique null-value. Must provide `==` and `!=` operators and a specialization for `std::hash<GroupId>`.
@@ -483,44 +487,52 @@ Return the _clocking info_ (including port name of clock, clock polarity and set
port. Where ports have more than one clock edge associated with them (such as DDR outputs), `index` can be used to obtain
information for all edges. `index` must be in [0, clockInfoCount), behaviour is undefined otherwise.
-Partition Methods
------------------
+BEL Buckets Methods
+-------------------
-Partitions are subsets of BelIds and cell types used by analytic placer to
-seperate types of BELs during placement. Typical partitions are:
+BEL buckets are subsets of BelIds and cell types used by analytic placer to
+seperate types of BELs during placement. The buckets should form an exact
+cover over all BelIds and cell types.
+
+Each BEL bucket should be BelIds and cell types that are roughly
+interchangable during placement. Typical buckets are:
- All LUT BELs
- All FF BELs
- All multipliers BELs
- All block RAM BELs
- etc.
-The general rule here is to include all BELs that are roughly interchangable
-during placement. Partitions should form an exact cover over all BelIds and
-cell types.
+The BEL buckets will be used during analytic placement for spreading prior to
+strict legality enforcement. It is not required that all BELs within a bucket
+are strictly equivelant.
+
+Strict legality step will enforce those differences, along with additional
+local constraints. `isValidBelForCell`, `isValidBelForCellType`, and
+`isBelLocationValid` are used to enforce strict legality checks.
-### const\_range\<PartitionId\> getPartitions() const
+### const\_range\<BelBucketId\> getBelBuckets() const
-Return a list of all partitions on the device.
+Return a list of all BEL buckets on the device.
-### IdString getPartitionName(PartitionId partition) const
+### IdString getBelBucketName(BelBucketId bucket) const
-Return the name of the partition.
+Return the name of this BEL bucket.
-### PartitionId getPartitionByName(IdString partition\_name) const
+### BelBucketId getBelBucketByName(IdString bucket\_name) const
-Return the partition for the specified partition name.
+Return the BelBucketId for the specified bucket name.
-### PartitionId getPartitionForBel(BelId bel) const
+### BelBucketId getBelBucketForBel(BelId bel) const
-Returns the partition for a particular BEL.
+Returns the bucket for a particular BEL.
-### PartitionId getPartitionForCell(IdString cell\_type) const
+### BelBucketId getBelBucketForCell(IdString cell\_type) const
-Returns the partition for a particular cell type.
+Returns the BEL bucket for a particular cell type.
-### const\_range\<BelId\> getBelsForPartition(PartitionId partition) const
+### const\_range\<BelId\> getBelsInBucket(BelBucketId bucket) const
-Return the list of BELs within a partition.
+Return the list of BELs within a bucket.
Placer Methods
--------------
@@ -533,9 +545,9 @@ return the same value regardless if other cells are placed within the fabric.
### bool isValidBelForCell(CellInfo \*cell, BelId bel) const
-Returns true if the given cell can be bound to the given bel, considering
+Returns true if the given cell can be bound to the given BEL, considering
other bound resources. For example, this can be used if there is only
-a certain number of different clock signals allowed for a group of bels.
+a certain number of different clock signals allowed for a group of BELs.
### bool isBelLocationValid(BelId bel) const