Problem or possible limitation writing to large array with mimo

Hi Everyone,

I’m experiencing an issue when trying to write to a large offset using the mimo write function. Basically I was following the adder tutorial but I have modified it with an array instead of a single variable. When the array is small everything works as expected but after I hit a certain size I can no longer write to it in PYNQ. Specifically I get an index error: It seems like the largest offset I can have is 16384.

IndexError: index 65536 is out of bounds for axis 0 with size 16384

This seems like a limitation in pynq as I see the address width of the axi port in vivado as 19 bits which should be plenty. I am quite inexperienced however so I wanted to check I was not doing anything wrong.

I’ve attached my HLS code as well as my block design and the error I see in python.

Also wanted to say I just love the project as it’s making high bandwidth IO so much more accessible for me.

I was unable to put all screenshots in the above post but here is my hls code. I’ll leave out the block design for now as it’s identical to the hls adder example. I see the address width as 19 bits when I look at the axi lite slave port.

Realised I also did not include all the necessary info.
I am using a PYNQ Z2 board. Relevant files attached.

PYNQ version: 3.0.1
Git Id: 16022d5f2c61c7e5e1d4aabcfc9b3e4c91b491b6


IO Test.ipynb (9.2 KB)
IO_Test.tcl (33.4 KB)

Sorry for the spam I just can’t seem to post everything I need as I am a new user:

IO_Test.hwh (144.5 KB)
IO_Test.bit (3.9 MB)

Hi @johnscott4,

Welcome to the PYNQ community.

PYNQ allocates 4 KB for MMIO devices, as you can see here PYNQ/pynq/pl_server/embedded_device.py at master · Xilinx/PYNQ · GitHub

For large buffers such as the one you are trying, using DMA is much more appropriate and efficient.

Mario

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.