offset
option in that flow. In the Vivado IP flow,
Vitis HLS defines the size, or
range of addresses assigned to a port in the S_AXILITE Control Register Map depending on the argument data type and
the port protocol used. However, the INTERFACE pragma also contains an
offset
option that lets you specify
the address offset in the AXI4-Lite
interface.
When specifying the offset for your argument, you must
consider the size of your data and reserve some extra for the port control
protocol. The range of addresses you reserve should be based on a 32-bit
word. You should reserve enough 32-bit words to fit your argument data type,
and add reserve one additional word for the control protocol, even for
ap_none
.
ap_memory
protocol for arrays,
you do not need to reserve the extra word for the control protocol. In this
case, simply reserve enough 32-bit words to fit your argument data type. For example, to reserve enough space for a double you need to reserve 2 32-bit words for the 64-bit data type, and then reserve an additional 32-bit word for the control protocol. So you need to reserve a total of 3 32-bit words, or 96 bits. If your argument offset starts at 0x020, then the next available offset would begin at 0x02c, in order to reserve the required address range for your argument.
If you make a mistake in setting the offset of your arguments, by not reserving enough address range to fit your data type and the control protocol, Vitis HLS will recognize the error, will warn you of the issue, and will recover by moving your misplaced argument register to the end of the Control Register Map. This will allow your build to proceed, but may not work with your host application or driver if they were written to your specified offset.