Could I run 2 IPs of the same overlay in parallel with PYNQ?

I am building an overlay that does some Matrix-Matrix and Matrix vector computing. Let us suppose that my overlay has 2 IPs :slight_smile:
IP (1): do matrix A and matrix B multiplication
IP (2): do matrix A and matrix C addition

Could I run IP (1) and (2) in parallel using PYNQ? If yes, is there any actual example for it?

Yes you could do this. How to do this depends on a few things.

Are you designing the two IPs yourself?
What interfaces do the IP have? GPIO, AXI slave for control, AXI streams?


Yes, I am designing the 2 IPs myself using Vivado HLS. They mainly use AXI streams and Axi_lite for Matrices and scalars. @cathalmccabe, do you have an example that you can point me to it?

OK. There are a number of things you can do.
I would first try to combine the IPs in HLS if you can.

If you keep two separate IP, if they are streaming IP, you can enable (start) the IPs, then start streaming data to the IP(s) and they will be running in parallel.

Would either of these options work for you?


Hello @cathalmccabe

Both options would work. First of all, I am using the Dataflow and pipelining pragmas as a start (I don’t know if you mean something else). As for the second option, I understand what you mean but let me try that and come back to you later.
In the meanwhile, I would appreciate it if you could point me to some related examples.