Auto-pipelining is not limited to the AXI Register Slice IP. You can also control auto-pipelining on custom interfaces using the properties shown in the following table, which are specified in the RTL. For more information, see the Vivado Design Suite Properties Reference Guide (UG912).
|AUTOPIPELINE_MODULE||hierarchical cell||Boolean||Establishes a separate name-space for all group names defined throughout sub-hierarchies. This property must be used when a module with auto-pipelining properties is instantiated several times in the design.|
|AUTOPIPELINE_GROUP||net||String (case-insensitive)||Establishes the auto-pipeline group name of signals that must receive an equal number of auto-inserted pipeline flip-flops.|
|AUTOPIPELINE_INCLUDE||net||String (case-insensitive)||Specifies the name of another AUTOPIPELINE_GROUP to include when applying the AUTOPIPELINE_LIMIT.|
|AUTOPIPELINE_LIMIT||net||0 < integer <= 24||Defines the maximum number of auto-inserted pipeline flip-flops for associated groups.|
All nets that belong to the same AUTOPIPELINE_GROUP must have an equal number of pipeline registers inserted on each tagged signal. Following are additional considerations:
- If an AUTOPIPELINE_GROUP does not reference an AUTOPIPELINE_INCLUDE group, the number of pipeline stages inserted into the AUTOPIPELINE_GROUP must be between 0 and the AUTOPIPELINE_LIMIT.
- If an AUTOPIPELINE_GROUP references an AUTOPIPELINE_INCLUDE group, the sum of the pipeline stages inserted into the AUTOPIPELINE_GROUP and the AUTOPIPELINE_INCLUDE group must be between 0 and the AUTOPIPELINE_LIMIT.
When you specify the AUTOPIPELINE_GROUP, AUTOPIPELINE_LIMIT, and AUTOPIPELINE_INCLUDE properties on a register in RTL, the Vivado tools automatically propagate the properties to the net directly connected to the output of the register. For best timing QoR, AMD recommends the following:
- Only apply the AUTOPIPELINE_* properties to registers with no clock enable and no reset control signals.
- Create distinct hierarchies for both sides of the interface, and apply a
different USER_SLR_ASSIGNMENT with a different string to each side. The strings
must not be SLR<n>. The soft floorplanning constraints guide the Vivado placer to move the two groups of registers to different
SLRs as needed to improve timing QoR. For example, if hierarchy hierA includes
the source registers, and hierB includes the destination registers, you must add
set_property USER_SLR_ASSIGNMENT apSrcGrpA [get_cells hierA] set_property USER_SLR_ASSIGNMENT apDstGrpB [get_cells hierB]
The following figure shows how the auto-pipeline properties are used in the AXI Register Slice RTL.
The following logic diagram shows one AXI channel of the AXI Register Slice with nets tagged with auto-pipeline properties.