@@ -99,8 +99,27 @@ class RRSpatialLookup {
99
99
* Considering a bounding box (x, y)->(x + width, y + height) of a multi-height and multi-width grid,
100
100
* SOURCE and SINK nodes are indexable in any location inside the boundry.
101
101
*
102
+ * An example of usage:
103
+ *
104
+ * // Create a empty lookup
105
+ * RRSpatialLookup rr_lookup;
106
+ * // Adding other nodes ...
107
+ * // Copy the nodes whose types are SOURCE at (1, 1) to (1, 2)
108
+ * rr_lookup.mirror_nodes(vtr::Point<int>(1, 1),
109
+ * vtr::Point<int>(1, 2),
110
+ * SOURCE,
111
+ * TOP);
112
+ *
102
113
* Note: currently this function only accepts SOURCE/SINK nodes. May unlock for the other types
103
114
* depending on needs
115
+ *
116
+ * TODO: Consider to make a high-level API to duplicate the nodes for large blocks.
117
+ * Then this API can become a private one
118
+ * For example,
119
+ * expand_nodes(source_coordinate, bounding_box_coordinate, type, side);
120
+ * Alternatively, we can rework the ``find_node()`` API so that we always search the lowest (x,y)
121
+ * corner when dealing with large blocks. But this may require the data structure to be dependent
122
+ * on DeviceGrid information (it needs to identify if a grid has height > 1 as well as width > 1)
104
123
*/
105
124
void mirror_nodes (const vtr::Point<int >& src_coord,
106
125
const vtr::Point<int >& des_coord,
0 commit comments