Axi boundary calculation

can anybody explain how AXI Wrap boundary calculation done? For example, what is wrap boundary for address 0x24, databus width is 32-bit, awlen is 4, awsize is 2?

In reply to dorababu:

Let us consider your slave’s size is slave[3:0][3:0] with 1byte each so your addressing will be from 0x08 to 0x128

You have taken size ‘2’ meaning 4-byte size for each transfer for 4 transfers(length) with your starting address as 0x24.

Wrap boundary for this will be,
size of each transferlength => 32bits4 => 128 => 0x128 is your wrap boundary.

Your transaction will be something like this,
Transfer 1 : 0x24 to 0x48
Transfer 2 : 0x56 to 0x80
Transfer 3 : 0x88 to 0x112
Transfer 4 : 0x120, 0x128 (it reached its last location - here the wrapping happens - next byte goes to the lowest location - 0x08 followed by 0x16)

You prevent loss of data(here the last 2 bytes) by wrapping

Hope this helped you.

Hello sir,
As you mentioned slave size[3:0][3:0] and calculated 0x08 to 0X128, so how this range was obtained?
Does size of each transfer will be equal to the data bus width as you have taken 32bit?

You are wrong. The wrap boundary is the size of each transfer in bytes * the number of transfer in a burst. Therefore, the wrap boundary is not 32 bits * 4=0x128, it is 4 bytes * 4 = 0x16.