Imtegrating Custom IP with DMA

Hi, I am using a PYNQ Z1 board and I am fairly new. I am familiar with system verilog and cpp though.

I want to create a simple project, where I write an array of data via DMA, then perform some numerical operations on the data with a custom IP and then write that data back to the PS and then return it.

How would I go about doing this
I don’t want to use any HLS tools.
Apologies if the question is phrased incorrectly and/or unprofessionally.

So you want to create an array of data in the PS, write that array in the PL memory via DMA, do some operations in the PL memory, and finally read this modified array from the PL to the PS memory? Did I understand correctly?

Yes thats right.
I have verilog to do the mathematical functions, and I want to load an array of numbers via the juypter notebook i would assume, do the operations on it, store it in an output array/ memory location and then read the output from it on the jupyter notebook.

Did you check the Pynq DMA tutorial?

Yes I have, the problem I have is implementing the verilog. As in I know what verilog I want to write to process numbers, but actually like reading the data values in verilog and integrating it within the whole block diagram is confusing me.