Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎08-12-2018

Why doesn't USER_SLR_ASSIGNMENT apply?

vivado 2019.1 used

I tried adding the following cases to the xdc file.
1.set_property USER_SLR_ASSIGNMENT SLR2 [get_cells -quiet [list AXIRayTrace/RCCoreToAXI2]]
2.set_property USER_SLR_ASSIGNMENT SLR2 [get_cells -hierarchical -filter {NAME=~"AXIRayTrace/RCCoreToAXI2*"}]
3.set_property USER_SLR_ASSIGNMENT SLR2 [get_cells -hierarchical -filter {NAME=~"AXIRayTrace/RCCoreToAXI2*"}]
set_property USER_CROSSING_SLR FALSE [get_nets {AXIRayTrace/RCCoreToAXI2/CoreWrAddr_reg_n_0_[*]}]
set_property USER_CROSSING_SLR TRUE [get_nets {AXIRayTrace/RCCoreToAXI2/axi_awaddr_reg[31]_0[*]}]

However, all three were not placed in the location I wanted.
I would appreciate it if you let me know the cause of what you did wrong.


cell properties says USER_SLR_ASSIGNMENT: SLR2,
If you look at the DEVICE, you can see that it is deployed on SLR1.

0 Kudos
1 Reply
Xilinx Employee
Xilinx Employee
Registered: ‎11-28-2007

Hi @gjwlstjr ,

USER_SLR_ASSIGNMENT should only be used on the hierarchical module (= the module containing all the logic you want to floorplan).

However, that doesn't explain why it doesn't work: I see you put the property on both the module as well as the cells.

Just to be sure: can you confirm the hierarchical module has the USER_SLR_ASSIGNMENT property correctly set?


USER_SLR_ASSIGNMENT is what we call a soft floorplanning constraint. Most likely Vivado placer doesn't want to place it in SLR2 as it it not optimal. See UG912 page 386:

IMPORTANT:This property is considered a guideline which the placer will attempt to follow, but can be overridden to achieve a valid placement result.

For a hard floorplanning constraint that the placer cannot dismiss, use pblock constraints (create_pblock, add_cells_to_pblock, resize_pblock).

Are you familiar with floorplanning in Vivado? There isn't a recent tutorial/example, but you might still be able to use step 4 of UG938, the Vivado design analysis closure tutorial.

It's actually not that difficult to directly set the constraint in XDC manually. You just need to know the CLOCK_REGIONs of each SLR, but you can see these in the device view window. The syntax for your case should be:


create_pblock Pblock_RCCoreToAXI2
add_cells_to_pblock [get_pblocks Pblock_RCCoreToAXI2] [get_cells -quiet [list AXIRayTrace/RCCoreToAXI2]]
resize_pblock [get_pblocks Pblock_RCCoreToAXI2] -add {CLOCKREGION_X0Y8:CLOCKREGION_X7Y11}



Let me know if you have any further questions.

If it still doesn't work, I'm more than willing to have a deeper look at your specific case (if you can share the VDI log file and/or a DCP)

I can send you an EZ-move package over which you can securely share files.


Best regards


Please mark the Answer as "Accept as solution" if the information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented by clicking the star next to the post.
0 Kudos