Search code examples
xilinxvivadozynq

Xilinx Vivado: Block Design, Address Range of each module end point


Consider a design where the PS (Zynq ARM A9) is connected to multiple peripherals where the addressing is depicted below.

Block Design: Address Editor

As highlighted in the purple below, why is the minimum accessible of each endpoint module (even if the module is my own IP) always at a range of four kilobytes? Is it related to something ARM processor specific?

I have tried to modify the address range of my own IP as shown below to a smaller number but it never has any effect.

IP Packaging: Addressing and Memory


Solution

  • According to notes under Table 3-9: AXI Crossbar Master Interface-Related Parameters in PG059 AXI Interconnect Product Guide, the size of all address range must be a power of 2, determined by 2 ** Mmm_Aaa_ADDR_WIDTH.

    Since the master of AXI-Interconnect in your design is probably connected to the AXI4 GP Slave interface of PS system, the Mmm_Aaa_BASE_ADDR is greater than or equal to 12, i.e. the minimum address range that can be assigned to each IP core is at least 4KBytes (4096) as shown in your pictures.

    From a design perspective, if you do not run out of memory space to allocate for your IP cores, a bigger range may be better as it reduces the bits needed for comparison in the AXI interconnect, resulting in lower hardware resource consumption, and possibly improved speed (faster achievable AXI clock) and easier placement and routing with timing constraints.