If I produce a relatively placed macro (RPM) using RLOCs within the Vivado and PlanAhead tools, a critical warning is issued complaining about a failure to build shape.
After implementation finishes, the resulting RPM is incorrect.
Running the same HDL through the ISE tools does result in the correct RPM being built.
After further analysis, it appears that the EDIF that the PlanAhead tool produces from the NGC file is the cause of the issue.
Running this through the ISE tools produces the same incorrect RPM.
The following is from the error message received:
[Shape Builder 18-146] Failed to build an RLOC shape for set "<SET Name>". No placement was found that satisfies the grid spacing requirements for all instances in the set.
This may be due to an invalid RLOC constraint causing incorrect column spacing. The macro reference instance is "<cell name>".
This issue occurs if there are multiple hierarchical layers of RPMs where an RPM has a number of instances that have an RLOC value, and another RLOC value applied to the hierarchy level above.
A LUT2 has an RLOC of X0Y0, but is in a hierarchy with an RLOC value of X0Y24.
The two RLOCs together accumulate to a value of X0Y24.
However, after being processed by the PlanAhead tool the RLOC value of X0Y24 is placed on both the instance and hierarchy level, and when placed they accumulated to X0Y48 which doubles the size of the macro.
The incorrect accumulation causes incorrect RPM structure and may cause RLOC conflicts.
To work around this issue, you can do one of the following
This issue is resolved in Vivado Design Suite 2013.3