USR_ACCESSE2 Advanced Uses - USR_ACCESSE2 Advanced Uses - UG570

UltraScale Architecture Configuration User Guide (UG570)

Document ID
UG570
Release Date
2025-03-04
Revision
1.20.1 English

Because USR_ACCESSE2 data is stored in the AXSS Configuration register, the data can be dynamically updated through JTAG commands or through the use of ICAPE3. See Configuration Packets for the form of packets that write to the AXSS register. For dynamic updates of the AXSS register, the waveforms from the USR_ACCESSE2 primitive that reflect the update events are shown in the following figure.

Figure 1. USR_ACCESSE2 Update

UltraScale+ devices add a special internal pin for the timing of the USR_ACCESSE2 output pins. The internal pin is not visible but accessible through the Vivado get_pins command. To constrain USR_ACCESSE2 in UltraScale+, a clock needs to be defined on the internal clock pin. The clock definition triggers the proper timing arcs on the DATA[31:0] and DATAVALID interfaces. Pin descriptions are provided in the following table.

Table 1. USR_ACCESSE2 Special UltraScale+ Device Internal Pin Descriptions
USR_ACCESSE2 Pin Internal Pin for Constraints Description
CFGCLK CCLK Equivalent to device CFGCLK pin.
DATA[31:0] CCLK Rising-edge output register.
DATAVALID CCLK Rising-edge output register.

The following is an example of constraints for the special internal USR_ACCESSE2 timing pin, specifically an example for creating a primary clock on the internal pin. For a 200 MHz (5 ns period), a 50% duty cycle CCLK clock constraint on the USR_ACCESSE2_inst.CCLK clock source pin covers the timing paths from DATAVALID or DATA[31:0] to the destination register clocked by USR_ACCESSE2.CFGCLK.

create_clock -period 5.000 -name CLOCK [get_pins USR_ACCESSE2_inst/CCLK]

Example constraints are shown if USR_ACCESSE2.DATAVALID and USR_ACCESSE2.DATA max delays are required. In some cases, the skew between USR_ACCESSE2 and the first level of registers can result in a difficult timing closure on those paths. The skew is introduced by the clock buffer connected between the pin USR_ACCESSE2.CFGCLK and the clock pins of the logic registers. When such a scenario occurs, it is possible to over-constrain the paths driven by USR_ACCESSE2 by changing the path requirement using a max delay constraint. The over-constraining mechanism forces the logic connected to USR_ACCESSE2 to be placed close to it. You should use this mechanism carefully because over-constraining too much can result in difficulty with timing closure.

In the following example, the path requirement is changed from a 5 ns (clock period defined on CCLK) to 3.5 ns:

set_max_delay -from [get_pins <USR_ACCESS>/DATAVALID] -to [get_pins datavalid_reg/D] 3.5
set_max_delay -from [get_pins <USR_ACCESS>/DATA[*]] -to [get_pins data_reg[*]/D] 3.5