10.2.5 Floorplanning FDC Commands
(Ask a Question)This Floorplanning (FDC) commands are used to create and edit user regions and to assign/unassign logic to these regions.
10.2.5.1 assign_region
(Ask a Question)PDC command; constrains a set of macros to a specified region.
assign_region region_name [ macro_name]+
Arguments
The following sections describe assign_region
arguments.
- region_name
-
Specifies the region to which the macros are assigned. The macros are constrained to this region. Because the define_region command returns a region object, you can write a simpler command such as
assign_region [define_region]+ [macro_name]+
. - macro_name
-
Specifies the macro(s) to assign to the region. You must specify at least one macro name. You can use the following wild card characters in macro names.
Table 10-84. Wild Card Characters in Macro Names Wild Card What it Does \ Interprets the next character as a non-special character ? Matches any single character * Matches any string
Exceptions
- The region must be created before you can assign macros to it. If the region creation PDC command and the macro assignment command are in different PDC files, the order of the PDC files is important.
- You can assign only hard macros or their instances to a region. You cannot assign a group name. A hard macro is a logic cell consisting of one or more silicon modules with locked relative placement.
- You can assign a collection of macros by providing a prefix to their names.
Examples
In the following example, two macros are assigned to a region:
assign_region cluster_region1 des01/G_2722_0_and2 des01/data1_53/U0
In the following example, all macros whose names have the prefix des01/Counter_1 (or all macros whose names match the expression des01/Counter_1/*) are assigned to a region:
assign_region User_region2 des01/Counter_1/*
See Also
10.2.5.2 assign_net_macros
(Ask a Question)This PDC command assigns to a user-defined region all the macros that are connected to a net.
assign_net_macros region_name [net1]+ [-include_driver value]
Arguments
The following sections describe assign_net_macros
arguments.
- region_name
-
Specifies the name of the region to which you are assigning macros. The region must exist before you use this command. See define_region (rectangular) or define_region (rectilinear). Because the define_region command returns a region object, you can write a simple command such as
assign_net_macros [define_region]+ [net]+
. - net1
-
You must specify at least one net name. Net names are AFL-level (flattened netlist) names. These names match your netlist names most of the time. When they do not, you must export AFL and use the AFL names. Net names are case insensitive. Hierarchical net names from ADL are not allowed. You can use the following wild card characters in net names:net1.
Table 10-85. net1 Wild Card What it Does \ Interprets the next character as a non-special character ? Matches any single character * Matches any string - -include_driver
-
Specifies whether to add the driver of the net(s) to the region. You can enter one of the following values.
Table 10-86. -include_driver Value Value Descriptions Yes Include the driver in the list of macros assigned to the region (default). No Do not assign the driver to the region.
Exceptions
- Placed macros (not connected to the net) that are inside the area occupied by the net region are automatically unplaced
- Net region constraints are internally converted into constraints on macros. PDC export results as a series of assign_region <region_name> macro1 statements for all the connected macros.
- If the region does not have enough space for all of the macros, or if the region constraint is impossible, the constraint is rejected and a warning message appears in the Log window
- For overlapping regions, the intersection must be at least as big as the overlapping macro count
- If a macro on the net cannot legally be placed in the region, it is not placed and a warning message appears in the Log window
- Net region constraints may result in a single macro being assigned to multiple regions. These net region constraints result in constraining the macro to the intersection of all the regions affected by the constraint.
Examples
assign_net_macros cluster_region1 keyin1intZ0Z_62 -include_driver no
See Also
10.2.5.3 define_region
(Ask a Question)This PDC command defines either a rectangular region or a rectilinear region.
define_region [-name region_name ] -type region_type [x1 y1 x2 y2]+ [-color value]\ [-route value] [-push_place value]
Arguments
The following sections describe define_region
arguments.
- -name region_name
-
Specifies the region name. The name must be unique. Do not use reserved names such as "bank0" and "bank<N>" for region names. If the region cannot be created, the name is empty. A default name is generated if a name is not specified in this argument.
- -type region_type
-
Specifies the region type. The default is inclusive. The following table shows the acceptable values for this argument.
Table 10-87. -type region_type Region Type Description Empty Empty regions cannot contain macros. Exclusive Only contains macros assigned to the region. Inclusive Can contain macros both assigned and unassigned to the region. - x1, y1, x2, and y2
-
Specifies the series of coordinate pairs that constitute the region. These rectangles may or may not overlap. They are given as x1, y1, x2, and y2 where x1, y1 is the lower left and x2, y2 is the upper right corner in row/column coordinates. You must specify at least one set of coordinates.
- -color Value
-
Specifies the color of the region.
Note: This option is deprecated. - -route Value
-
Specifies whether to direct the routing of all nets internal to a region to be constrained within that region. A net is internal to a region if its source and destination pins are assigned to the region. You can enter one of the following values.
Table 10-88. -route Value Constrain Routing Value Description Yes Constrain the routing of nets within the region as well as the placement. No Do not constrain the routing of nets within the region. Only constrain the placement. This is the default value. Note: Local clocks and global clocks are excluded from the -route option. Also, interface nets are excluded from the -route option because they cross region boundaries.An empty routing region is an empty placement region. If -route is "yes", then no routing is allowed inside the empty region. However, local clocks and globals can cross empty regions. An exclusive routing region is an exclusive placement region (rectilinear area with assigned macros) along with the following additional constraints:
- For all nets internal to the region (the source and all destinations belong to the region), routing must be inside the region (that is, such nets cannot be assigned any routing resource which is outside the region or crosses the region boundaries)
- Nets without pins inside the region cannot be assigned any routing resource which is inside the region or crosses any region boundaries
An inclusive routing region is an inclusive placement region (rectilinear area with assigned macros) along with the following additional constraints:
- For all nets internal to the region (the source and all destinations belong to the region), routing must be inside the region (that is, such nets cannot be assigned any routing resource which is outside the region or crosses the region boundaries)
- Nets not internal to the region can be assigned routing resources within the region.
Description
Unlocked macros in empty or exclusive regions are unassigned from that region. You cannot create empty regions in areas that contain locked macros. Use inclusive or exclusive region constraints, if you intend to assign logic to a region. An inclusive region constraint with no macros assigned to it has no effect. An exclusive region constraint with no macros assigned to it is equivalent to an empty region.
Exceptions
If macros assigned to a region exceed the area's capacity, the region’s Properties window displays the overbooked resources (over 100 percent resource usage) in red.
Examples
The following example defines an empty rectangular region.
define_region -name cluster_region1 -type empty 100 46 102 46
The following example defines a rectilinear region with the name RecRegion. This region contains two rectangular areas.
define_region -name RecRegion -type Exclusive 0 40 3 42 0 77 7 79
The following examples define three regions with three different colors:
define_region -name UserRegion0 -color 128 50 19 60 25
define_region -name UserRegion1 -color 16711935 11 2 55 29
define_region -name UserRegion2 -color 8388736 61 6 69 19
See Also
10.2.5.4 undefine_region
(Ask a Question)This PDC command removes the specified region. All macros assigned to the region are unassigned.
undefine_region region_name
Arguments
The following sections describe
undefine_region
arguments.
- region_name
-
Specifies the region to be removed.
Exceptions
To use this command, the region must be previously defined.
Examples
undefine_region cluster_region1
See Also
10.2.5.5 move_region
(Ask a Question)This PDC command moves the named region to the coordinates specified.
move_region region_name [x1 y1 x2 y2]+
Arguments
The following sections describe move_region
arguments.
- region_name
-
Specifies the name of the region to move. This name must be unique.
- x1 y1 x2 y2
-
Specifies the series of coordinate pairs representing the location in which to move the named region. These rectangles can overlap. They are given as x1 y1 x2 y2, where x1, y1 represents the lower-left corner of the rectangle and x2 y2 represents the upper-right corner. You must specify at least one set of coordinates.
Exceptions
None.
Examples
This example moves the region named RecRegion to a new region which is made up of two rectangular areas:
move_region RecRegion 0 40 3 42 0 77 7 79
See Also
10.2.5.6 unassign_net_macros
(Ask a Question)This PDC command unassigns macros connected to a specified net.
unassign_net_macros region_name [net1]+
Arguments
The following sections describe unassign_net_macros
arguments.
- region_name
-
Specifies the name of the region containing the macros in the net(s) to unassign.
- net1
-
Specifies the name of the net(s) that contain the macros to unassign from the specified region. You must specify at least one net name. Optionally, you can specify additional nets to unassign.
Exceptions
If the region is currently not assigned, an error message appears in the Log window, if you try to unassign it.
Examples
unassign_net_macros cluster_region1 keyin1intZ0Z_62
See Also
10.2.5.7 unassign_macro_from_region
(Ask a Question)unassign_macro_from_region [region_name] macro_name
Arguments
The following sections describe unassign_macro_from_region
arguments.
- region_name
-
Specifies the region where the macro or macros are to be removed.
- macro_name
-
Specifies the macro to be unassigned from the region. Macro names are case sensitive. You can unassign a collection of macros by assigning a prefix to their names. You cannot use hierarchical net names from ADL. However, you can use the following wild card characters in macro names.
Table 10-89. Wild Card Characters in Macro Names Wild card What It Does \ Interprets the next character as a non-special character ? Matches any single character * Matches any string
Exceptions
If the macro was not previously assigned, an error message is generated.
Examples
unassign_macro_from_region macro21
See Also
10.2.5.8 set_location
(Ask a Question)This PDC command assigns the specified macro to a particular location on the chip.
set_location macro_name -fixed value x y
Arguments
The following sections describe set_location
arguments.
- macro_name
-
Specifies the name of the macro in the netlist to assign to a particular location on the chip.
- -fixed Value
-
Sets whether the location of this instance is fixed (that is, locked). Locked instances are not moved during layout. The default is yes. The following table shows the acceptable values for this argument.
Table 10-90. -fixed Value Value Description yes The location of this instance is locked. no The location of this instance is unlocked. - x y
-
The x and y coordinates specify where to place the macro on the chip. Use the Chip Planner tool to determine the x and y coordinates of the location.
Exceptions
None.
Examples
This example assigns and locks the macro with the name
"mem_data_in\[57\]
" at the location x=7, y=2:
set_location mem_data_in\[57\] -fixed yes 7 2
10.2.5.9 move_block
(Ask a Question)This PDC command moves a Block from its original, locked placement by preserving the relative placement between the instances. You can move the Block to the left, right, up, or down.
move_block -inst_name instance_name -up y -down y -left x -right x -non_logic value
Arguments
The following sections describe move_block
arguments.
- -inst_name instance_name
-
Specifies the name of the instance to move. Refer to the Logical Veiw of Chip Planner for the instance name to use.
- -up y
-
Moves the block up the specified number of rows. The value must be a positive integer.
- -down y
-
Moves the block down the specified number of rows. The value must be a positive integer.
- -left x
-
Moves the block left the specified number of columns. The value must be a positive integer.
- -right x
-
Moves the block right the specified number of columns. The value must be a positive integer.
- -non_logic Value
-
Specifies what to do with the non-logic part of the block, if one exists. The following table shows the acceptable values for this argument.
Table 10-91. -non_logic Value Value Description move Move the entire block. keep Move only the logic portion of the block (COMB/SEQ) and keep the rest locked in the same previous location, if there is no conflict with other blocks. unplace Move only the logic portion of the block (COMB/SEQ) and unplace the rest of it, such as I/Os and RAM.
Description
This command moves a block from its original, locked position to a new position. You can move the entire block or just the logic part of it. You must use the -non_logic argument to specify what to do with the non-logic part of the block.
The -up, -down, -left, and -right arguments enable you to specify how to move the block from its original placement. You cannot rotate the block, but the relative placement of macros within the block will be preserved and the placement will be locked. However, routing will be lost. You can either use the Chip Planner tool or run a Block report to determine the location of the block.
The -non_logic argument enables you to move a block that includes non-logic instances, such as RAM or I/Os that are difficult to move. Once you have moved a part of a block, you can unplace the remaining parts of the block and then place them manually as necessary.
Exceptions
- You must associate this PDC constraint file to Place and Route
- You must use this PDC command if you want to preserve the relative placement and routing (if possible) of a block you are instantiating many times in your design. Only one instance will be preserved by default. To preserve other instances, you must move them using this command.
Examples
The following example moves the entire block (instance name instA) 12 columns to the right and 3 rows up:
move_block -inst_name instA -right 12 -up 3 -non_logic move
The following example moves only the logic portion of the block and unplaces the rest by 24 columns to the right and 6 rows up.
move_block -inst_name instA -right 24 -up 6 -non_logic unplace
See Also
10.2.5.10 set_port_block
(Ask a Question)This PDC command sets properties on a port in the block flow. This PDC command applies to only one I/O.
set_port_block -name portName -remove_ios value -add_interface value
Arguments
The following sections describe set_port_block
arguments.
- -name portName
-
Specify the name of the port.
- -remove_ios Value
-
Sets whether or not to remove I/Os connected to the specified port from the netlist. The following table shows the acceptable values for this argument.
Table 10-92. -remove_ios Value Value Description yes Remove I/Os connected to the specified port from the netlist. no Do not remove I/Os connected to the specified port from the netlist. - -add_interface Value
-
Adds an interface macro each time the fanout of the net connected to the port is greater than the value specified. The value must be a positive integer.
Exceptions
- You must import this PDC command as a constraint file
- TRIBUFF and BIBUF macros cannot be removed even if you specify "-remove_ios yes"
- You must enable the block flow before calling this command. To enable the block flow, either select the "Enable block creation" option in the New Project wizard, or use the -block argument in the new_design Tcl command to enable block mode.
Examples
This example removes any I/Os connected to portA, excluding TRIBUFF and BIBUF I/Os.
set_port_block -name portA -remove_ios yes
10.2.5.11 set_block_options
(Ask a Question)This PDC command overrides the compile option for placement or routing conflicts for an instance of a block.
set_block_options -inst_name instance_name -placement_conflicts value \
-routing_conflicts value
Arguments
The following sections describe set_block_options
arguments.
- -inst_name instance_name
-
Specifies the block instance name. If you do not know the name of the instance, run a Block Report ( ) or look at the names shown in the Block View tab of the Chip Planner.
- -placement_conflicts Value
-
Specifies what to do when the software encounters a placement conflict. The following table shows the acceptable values for this argument.
Table 10-93. -placement_conflicts Value Value Description error Compile errors out if any instance from a Designer block becomes unplaced or its routing is deleted. This is the default compile option. resolve If some instances get unplaced for any reason, the non-conflicting elements remaining are also unplaced. Basically, if there are any conflicts, nothing from the block is kept. keep If some instances get unplaced for any reason, the non-conflicting elements remaining are preserved but not locked. Therefore, the placer can move them into another location if necessary. lock If some instances get unplaced for any reason, the non-conflicting elements remaining are preserved and locked. discard Discards any placement from the block, even if there are no conflicts. - -routing_conflicts Value
-
Specifies what to do when the software encounters a routing conflict. The following table shows the acceptable values for this argument.
Table 10-94. -routing_conflicts Value Value Description error Compile errors out if any route in any preserved net from a Designer block is deleted. resolve If a route is removed from a net for any reason, the routing for the non- conflicting nets is also deleted. Basically, if there are any conflicts, no routes from the block are kept. keep If a route is removed from a net for any reason, the routing for the non- conflicting nets is kept unlocked. Therefore, the router can re-route these nets. lock If routing is removed from a net for any reason, the routing for the non- conflicting nets is kept as locked, and the router will not change them. This is the default compile option. discard Discards any routing from the block, even if there are no conflicts.
Description
This command enables you to override the compile option for placement or routing conflicts for an instance of a block.
Exceptions
You must put this PDC command in a constraint PDC file and associate it to Place and Route. If placement is discarded, the routing is automatically discarded too.
Examples
This example makes the Libero Soc software display an error if any instance from a block becomes unplaced or the routing is deleted:
set_block_options -inst_name instA -placement_conflicts ERROR -routing_conflicts ERROR