Help with pynq.allocate() to allocate from the PL DDR4 on ZCU111

Hello everyone,

I’m trying to test PYNQ’s zcu111 example for 100G ethernet as explained in the link below.

I’m able to transfer the data from the 4xSFP connectors on zcu111 to PC. I did this as explained in the pynq example by allocating memory on PS DRAM using pynq.allocate and passing it to the dma. Now I’m trying to allocate memory from the PL DDR4 and pass it directly to the DMA.

I understand that I have to map the PL ddr4 using MMIO and use mmio.array to allocate an array in the DDR4 memory. When I pass this array to the dma.transfer function, I get the following error

                                   Missing attribute "physical_address"

It looks like I have to create an allocator and obtain a pynq buffer with all appropriate attributes including the “physical_address”. I tried to do this and failed multiple times. Could someone please give me some hint or example of how to do this?

Thanks for your help.