Intel HLS (20.2) - problem with compiling more than 2 inputs writing into 1 output (one at time)
Generic functionality of component splitter, which can be seen in the attached picture.
Basic functionality of the request part:
- Read mi32_in input and forwards it (based on address) to the right output.
- If a request is READ, the request part writes address into ext_addr_fifo and starts response part.
If a request is READ and into another external block then before (i.e. first there was READ request into external 1, then into external 2), request part is stopped and waits for completion of all responses.
Basic functionality of the response part:
- Waits, until it started from the request part.
- Reads ext_addr_fifo and reads from extern block based on the address and writes to output.
Two connections to external blocks (splitter folder)
With two external block connections, there is not a single problem with implementation and functionality.
More connections to external blocks (splitter_4con folder)
With more connections (I tested 3, 4 and splitter_4con folder represents 4 connections) to external blocks, there are problems with implementation.
The code is quite similar - only streams and cases added, but the request part does not give any output on mi32_out when co-simulation is made. I added some debug streams to see if the address is passed properly and it is. I tried two changes that helped, but with those, the design functionality is lacking:
- Deleting condition if (success) on line 188 - output is given
- Removing ext_addr_fifo and implementing address (addr from request part) into response part - output is given
Let's get to the strangest thing. As I was sure my description of the design is right, I tried to make more spaces between line 186 and 188. Strangely, after co-simulation, first 7 outputs were given (from 17).
So. Where can the problem be?