Skip to content

Commit 9849395

Browse files
updated docs with layer_low and layer_high
1 parent 00e5b65 commit 9849395

File tree

1 file changed

+33
-3
lines changed

1 file changed

+33
-3
lines changed

doc/src/vpr/placement_constraints.rst

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ A Placement Constraints File Example
2828
<add_atom name_pattern="n4917"/>
2929
<add_atom name_pattern="n6010"/>
3030
</partition>
31+
32+
<partition name="Part2">
33+
<add_region x_low="3" y_low="3" x_high="85" y_high="85"/> <!-- When the layer is not explicitly specified, layer 0 is assumed. -->
34+
<add_region x_low="8" y_low="5" x_high="142" y_high="29 layer_low="0" layer_high="1"/> <!-- In 3D architectures, the region can span across multiple layers. -->
35+
<add_region x_low="6" y_low="55" x_high="50" y_high="129 layer_low="2" layer_high="2"/> <!-- If the region only covers a non-zero layer, both layer_low and layer_high must be set the same value. -->
36+
<add_atom name_pattern="n135"/>
37+
<add_atom name_pattern="n7016"/>
38+
</partition>
3139
</partition_list>
3240
</vpr_constraints>
3341
@@ -75,7 +83,10 @@ The ``name_pattern`` can be the exact name of the atom from the input atom netli
7583
Region
7684
^^^^^^
7785

78-
An ``<add_region>`` tag is used to add a region to the partition. A ``region`` is a rectangular area on the chip. A partition can contain any number of independent regions - the regions within one partition must not overlap with each other (in order to ease processing when loading in the file). An ``<add_region>`` tag has the following attributes.
86+
An ``<add_region>`` tag is used to add a region to the partition. A ``region`` is a rectangular area or cubic volume
87+
on the chip. A partition can contain any number of independent regions - the regions within one partition **must not**
88+
overlap with each other (in order to ease processing when loading in the file).
89+
An ``<add_region>`` tag has the following attributes.
7990

8091
:req_param x_low:
8192
The x value of the lower left point of the rectangle.
@@ -90,11 +101,30 @@ An ``<add_region>`` tag is used to add a region to the partition. A ``region`` i
90101
The y value of the upper right point of the rectangle.
91102

92103
:opt_param subtile:
93-
Each x, y location on the grid may contain multiple locations known as subtiles. This paramter is an optional value specifying the subtile location that the atom(s) of the partition shall be constrained to.
104+
Each x, y location on the grid may contain multiple locations known as subtiles. This parameter is an optional value specifying the subtile location that the atom(s) of the partition shall be constrained to.
105+
106+
:opt_param layer_low:
107+
The lowest layer number that the region covers. The default value is 0.
108+
109+
:opt_param layer_high:
110+
The highest layer number that the region covers. The default value is 0.
94111

95112
The optional ``subtile`` attribute is commonly used when constraining an atom to a specific location on the chip (e.g. an exact I/O location). It is legal to use with larger regions, but uncommon.
96113

97-
If a user would like to specify an area on the chip with an unusual shape (e.g. L-shaped or T-shaped), they can simply add multiple ``<add_region>`` tags to cover the area specified.
114+
In 2D architectures, ``layer_low`` and ``layer_high`` can be safely ignored as their default value is 0.
115+
In 3D architectures, a region can span across multiple layers or be assigned to a specific layer.
116+
For assigning a region to a specific non-zero layer, the user should set both ``layer_low`` and ``layer_high`` to the
117+
desired layer number. If a layer range is to be covered by the region, the user set ``layer_low`` and ``layer_high`` to
118+
different values.
119+
120+
If a user would like to specify an area on the chip with an unusual shape (e.g. L-shaped or T-shaped),
121+
they can simply add multiple ``<add_region>`` tags to cover the area specified.
122+
123+
It is strongly recommended that different partitions do not overlap. The packing algorithm compares the number clustered
124+
blocks and the number of physical blocks in a region to decide pack atoms inside a partition more aggressively when
125+
there are not enough resources in a partition. Overlapping partitions causes some physical blocks to be counted in more
126+
than one partition.
127+
98128

99129

100130

0 commit comments

Comments
 (0)