10.1.3.4 set_location
(Ask a Question)This PDC command assigns the specified macro to a particular location on the chip.
set_location -inst_name <macro_inst_name> -fixed <true|false> -x <integer> -y <integer>
Arguments
- -inst_name
- Specifies the instance name of the macro in the netlist to assign to a particular location on the chip.
- -fixed <true | false>
-
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 lists the acceptable values for this argument.
Table 10-24. -inst_name Values Value Description True The location of this instance is locked. False 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
Example
This example assigns and locks the macro with the name
mem_data_in\[57\]
at the location x = 7, y = 2:
set_location -inst_name mem_data_in\[57\] -fixed true -x 7 -y 2
DDR3 Memory Placement
DDR3 memory must be placed in specific locations on the PolarFire chip to
meet timing requirements. For DDR3 memory placement, the set_location
command has the following syntax:
set_location -inst_name <hierarchical path to DDR instance> -location <edge>_<anchor>
- -inst_name <hierarchical path to DDR instance>
- Specifies the hierarchical path to the DDR instance.
- -location <edge>_<anchor>
- Specifies the
edge_anchor
location.
Example
set_location -inst_name {DDR3_TOP/DDR3_0}\ -location {NORTH_NE}
The maximum DDR width varies with the die/package combinations and the location they are placed in. See the following table for the correct location to place the DDR3 memory. The numbers in the table refer to the maximum DDR3 width.
Die/Package | Location (Edge_Anchor} Edge={NORTH/SOUTH/WEST}, Anchor={NE/NW/SE/SW} | |||||
---|---|---|---|---|---|---|
NORTH_NE | NORTH_NW | SOUTH_SE | SOUTH_SW | WEST_NW | WEST_SW | |
MPF200/FULLPKGE | 16 | 16 | Invalid Loc | 40 | 64 | 40 |
MPF300/FCG1152 | 64 | 72 | 16 | 40 | 72 | 64 |
MPF300/FCG484 | 8 | 8 | Invalid Loc | 32 | Invalid Loc | 16 |
MPF300/FCVG484 | 16 | 16 | Invalid Loc | 40 | 16 | 16 |
PLL Placement
set_location
command has the
following
syntax:set_location -inst_name <hierarchical inst name> -location <PLL location>
- -inst_name <hierarchical inst name>
- Specifies the hierarchical instance name.
- -location <PLL location>
-
Specifies the PLL location. Location can be one of the following:
- PLL0_NW
- PLL1_NW
- PLL0_NE
- PLL1_NE
- PLL0_SW
- PLL1_SW
- PLL0_SE
- PLL1_SE
For more information, see Placement Rules for PLLs and DLLs.
DLL Placement
For DLL placement, the set_location
command has the
following syntax:
set_location -inst_name <hierarchical inst name> -location <DLL location>
- -inst_name <hierarchical inst name>
- Specifies the hierarchical instance name.
- -location <DLL location>
-
Specifies the DLL location. Location can be one of the following:
- DLL0_NW
- DLL1_NW
- DLL0_NE
- DLL1_NE
- DLL0_SW
- DLL1_SW
- DLL0_SE
- DLL1_SE
For more information, see Placement Rules for PLLs and DLLs.
TxPLL Placement
set_location
command has the
following
syntax:set_location -inst_name <hierarchical inst name> -location <TxPLL location>
- -inst_name <hierarchical inst name>
- Specifies the hierarchical instance name.
- -location <TxPLL location>
-
Specifies the TxPLL location. Location can be one of the following:
- Q2_TXPLL0
- Q2_TXPLL_SSC
- Q2_TXPLL1
- Q0_TXPLL0
- Q0_TXPLL_SSC
- Q0_TXPLL1
- Q1_TXPLL0
- Q1_TXPLL_SSC
- Q1_TXPLL1
- Q3_TXPLL_SSC
- Q3_TXPLL1
For more information, see Placement Rules for Transceivers.
Placement Rules for PLLs and DLLs
The following table lists the error messages that indicate non-compliance with placement rules for PLL and DLL.
Error Code | Error Message | Description |
---|---|---|
PRPF_010 | There can be a maximum of 6 PLL/DLL reference and/or fabric clocks coming driven by the FPGA fabric in the <NW|SW|NE|SE> location. |
There are four corners (NW, SW, NE, SE) that PLL and DLL instances can be placed in on each MPF300 or MPF200 FPGA device. You can place multiple PLL/DLL instances in each corner. However, for each corner, the total of PLL/DLL reference clocks and fabric clocks that the fabric drives must be six or less. |
PRPF_011 | There can be a maximum of 2 PLL/DLL reference clocks coming driven by the FPGA fabric in the <NW|SW|NE|SE> location. | For each corner, only two PLL/DLL reference clocks can be driven by the fabric. |
Placement Rules for RGMII, SGMII, and IOG CDR Interfaces
Placement rules must be adhered to for RGMII, SGMII, and IOG CDR interfaces. Non-compliance with these rules may result in the following errors.
Error Code | Error Message | Description |
---|---|---|
PRPF_001 | Port <port name> for Interface <inst name> must be placed before running Place-and-Route. | All PADs must be placed using the set_io command. |
PRPF_002 | Interface <inst name> has ports that must be assigned to the same physical lane. The current port assignment for this interface does not meet this requirement. | For the SGMII interface and IOG CDR, all RX_ and TX_ PADs must be placed in the same lane. For the RGMII interface, all RX [ ] PADs and the RXCLK PAD must be placed in the same lane. |
PRPF_003 | The current Interface <inst name> port assignment requires that pin <pin name (functional pin name)> is reserved. You must not assign any port to that package pin. | For the SGMII interface and IOG CDR, the DQS_N pin of the lane
is reserved for internal use. It must be left unused. |
PRPF_004 | You must not assign <inst name> to any location. Use the set_io command to assign any interface port to package pins. This instance is automatically placed. | IOD instances with TRAINING/OVERLAY must not be placed. These are internal instances and will be handled by the tool. |
PRPF_005 | Port <port name> for Interface <inst name> must be assigned to <pin name (functional pin name)>. | For the RGMII interface, RX_CLK must be assigned to the DQS (P
pad) of the lane. |
Placement Rules for Transceivers
For PolarFire designs with the transceiver (XCVR) interface, some placement rules apply. Non-compliance with these rules may result in the following errors. For more information about rules for transceivers, see PolarFire Family Transceiver User Guide .
Error Code | Error Message | Description |
---|---|---|
PRPF_007 | TxPLL <inst name> must be placed before running Place-and-Route. | Transceiver Tx PLLs must be placed by the user with the
set_location command before running Place-and-Route. |
PRPF_008 | Dedicated XCVR ports <port name>* must be placed before running Place-and-Route. | The transceiver interface has dedicated ports. These must be placed using the
set_io command. |
PRPF_009 | Dedicated XCVR reference clock port <port name> must be placed before running Place -and-Route. | All transceiver reference clock PADs must be placed using the set_io command before running layout. |
PRPF_008 | Dedicated XCVR ports <port name>* must be placed before running Place & Route. | The transceiver interface has dedicated ports. These must be placed using the set_io command. |
PRPF_009 | Dedicated XCVR reference clock port <port name> must be placed before running Place & Route. | All transceiver reference clock PADs must be placed using the
set_io command before running layout. |
PRPF_009 | Dedicated XCVR reference clock port <port name> must be placed before running Place & Route. | The transceiver interface has dedicated ports. These must be placed using the
set_io command. |