cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
dadduni
Observer
Observer
495 Views
Registered: ‎10-08-2020

input array does not reshape

Hi,

I've the following code. I want to have 16 input parallel BRAM each one 512 long. Why the reshaping is not working?

void cov(int mat_in[512][16], int mat_out[16][16]){
	int mat_temp_in[512][16];
	int mat_temp_out[16][16];
#pragma HLS array_reshape variable=mat_temp_in complete dim=2
#pragma HLS array_reshape variable=mat_temp_out complete dim=2

If in "variable" I put mat_in it's the same: in the synthesis I obtain always just one input port and not 16 as I want.

Any suggestion?

Thank You

0 Kudos
2 Replies
joancab
Teacher
Teacher
466 Views
Registered: ‎05-11-2015

 

If by "input ports" you mean the ports in the IP block you generate, I think ARRAY_RESHAPE is not for that. With ARRAY_RESHAPE, arrays are internally reshaped to speed up internal processing (for example a loop to do N/2, N/4, etc. iterations instead of N), but it won't create a number of ports.

 

0 Kudos
u4223374
Advisor
Advisor
416 Views
Registered: ‎04-26-2015

If you want 16 separate ports, use the array_partition pragma rather than array_reshape. Reshaping the array first partitions it, but then recombines the partitioned array into wider words so you still end up with a single port.