Often not much consideration is given to control signals such as resets or clock enables. Many designers start HDL coding with "if reset" statements without deciding whether the reset is needed or not. While all registers support resets and clock enables, their use can significantly affect the end implementation in terms of maximum clock frequency, utilization, and power.
The first factor to consider is the number of control sets. A control set is the group of clock, enable, and set/reset signals used by a sequential cell. For example, two cells connected to the same clock have different control sets if only one cell has a reset or if only one cell has a clock enable. Constant or unused enable and set/reset register pins also contribute to forming control sets.
The second factor to consider is the targeted architecture. The number of control sets that can be packed together depends on the architecture. A Versal device half-slice comprises two groups of four registers, which share one clock and one set/reset. In addition, each group of four registers has one clock enable and can ignore the set/reset. A constant logic 1 clock enable can be provided for free from interconnect control multiplexers feeding the CE pins.
CLB packing restrictions caused by control sets force the placer to move some registers, including their input LUT. In some cases, the registers are moved to less optimal locations. The additional distance can negatively impact not only utilization but also placement QoR and power consumption, due to logic spreading (longer net delays) and higher interconnect resources utilization. This is mainly of concern in designs with many low fanout control signals, such as clock enables that feed single registers.
Although the Versal device CLB contains four times the resources when compared to an UltraScale device, the control set comparison between a Versal device half-slice and UltraScale device half-CLB is similar. Therefore, AMD recommendations are the same for both architectures.