Command/Property Name | Description |
---|---|
create_pblock
|
Command that creates the initial Pblock for each OOC instance. |
resize_pblock
|
Command that defines the site types (SLICE, RAMB36, etc.) and site locations to be owned by the Pblock. |
add_cells_to_pblock
|
Command that specifies the instances that will belong to the Pblock.
This is typically a level of hierarchy as opposed to individual
instances. For OOC implementations, -top can be used to specify all cells under the OOC
module instead of specifying cell names. |
CONTAIN_ROUTING | Pblock property that controls the routing to prevent usage of routing resources not owned by the Pblock. Default value is FALSE. Only paths that are entirely owned by the Pblock range will be contained (for example, no BUFGMUX range exists, paths from/to a BUFGMUX will not be contained. This is the desired behavior for many components like BUFGMUX). |
EXCLUDE_PLACEMENT | Pblock property that prevents the placement of any logic not belonging to the Pblock inside the defined Pblock range. The default value is FALSE. This property has no effect on the OOC implementation, but it affects the placement of the top-level logic during assembly. AMD recommends you leave this FALSE for the best results during assembly. |
PARENT | Pblock property that identifies Pblock hierarchy. The value is the name of the parent Pblock in which the child Pblock is fully contained. Any nested Pblocks with the OOC implementation must use the Parent keyword to get correct behavior during Module Reuse. |
Pblock Command and Property Examples
-
create_pblock <pblock_name>
-
add_cells_to_pblock [get_pblocks <pblock_name>] -top
-
resize_pblock [get_pblocks <pblock_name>] -add {SLICE_X0Y0:SLICE_X100Y100}
-
resize_pblock [get_pblocks <pblock_name>] -add {RAMB18_X0Y0:RAMB18_X2Y20}
-
set_property CONTAIN_ROUTING true [get_pblocks <pblock_name>]
The cells added to the Pblock are specified using -top
. This is because in an out-of-context implementation, the OOC
instance is the top level, and the entire OOC instance must be contained by the
Pblock. Using -top
also allows the Pblock to be
properly translated to the correct level of hierarchy when the OOC module is
imported into the top-level design.
Nested Pblocks are permitted for floorplanning logic within an OOC module. Any child Pblock must be completely contained within the parent. The parent-child relationship between Pblocks is declared using the PARENT property, as shown here:
set_property PARENT <parent_pblock_name> [get_pblocks <child_pblock_name>]
Because the PARENT Pblock property references another Pblock, the
order in which the constraints are processed does not matter. The parent Pblock
(which uses -top
) must be defined before the child Pblock which
references it.
In addition to timing and physical constraints shown above, there are constraints to define context for an OOC.