@@ -38,14 +38,16 @@ struct t_physical_tile_type;
38
38
* bins and how overfilled / underfilled they are.
39
39
*
40
40
* Currently, a bin is created for each tile in the FPGA grid (with a unique
41
- * root tile location). The capacity of each bin is the capacity of the tile
42
- * it represents (as computed by the flat placement mass calculator). When
43
- * AP blocks are added / removed from bins, this class will maintain the current
44
- * utilization of the bin. Since these masses / capacities are repesented by
45
- * M-dimensional quantities (where M is the number of models in the architecture),
46
- * the overfill and underfill of each bin is given as an M-dimensional vector.
47
- * For example, in an architecture of only LUTs and FFs, an overfill of <3, 1>
48
- * means that a bin has 3 too many LUTs and 1 too many FFs.
41
+ * root tile location). For example, a CLB taking up a single tile would be a
42
+ * 1x1 bin, while a DSP block taking up multiple tiles may be a 4x1 bin. The
43
+ * capacity of each bin is the capacity of the tile it represents (as computed
44
+ * by the flat placement mass calculator). When AP blocks are added / removed
45
+ * from bins, this class will maintain the current utilization of the bin. Since
46
+ * these masses / capacities are repesented by M-dimensional quantities (where
47
+ * M is the number of models in the architecture), the overfill and underfill of
48
+ * each bin is given as an M-dimensional vector. For example, in an architecture
49
+ * of only LUTs and FFs, an overfill of <3, 1> means that a bin has 3 too many
50
+ * LUTs and 1 too many FFs.
49
51
*
50
52
* This class is able to answer questions about the current density of the flat
51
53
* placement such as which bins are currently overfilled, what bin is at the
@@ -199,6 +201,15 @@ class FlatPlacementDensityManager {
199
201
*
200
202
* This will return the position of the block that is closest to the position
201
203
* in the given flat placement, while still being within the the bin region.
204
+ *
205
+ * For example, if the block is located within the bin, its position will
206
+ * be returned (unmodified). If the block is located to the left of the bin
207
+ * (y coordinate is within the bounds of the bin), then this will return
208
+ * the point on the left edge of the bin with the same y coordinate as the
209
+ * block.
210
+ *
211
+ * TODO: It may be a good idea to investigate placing blocks at the input
212
+ * or output pin locations of the bin.
202
213
*/
203
214
vtr::Point <double > get_block_location_in_bin (APBlockId blk_id,
204
215
const vtr::Rect <double >& bin_region,
@@ -235,6 +246,8 @@ class FlatPlacementDensityManager {
235
246
236
247
// / @brief Spatial lookup for an (layer, x, y) position to the bin at that
237
248
// / location.
249
+ // /
250
+ // / Access: [0..grid.num_layers-1][0..grid.width-1][0..grid.height-1]
238
251
vtr::NdMatrix<FlatPlacementBinId, 3 > bin_spatial_lookup_;
239
252
240
253
// / @brief The capacity of each bin.
0 commit comments