Application Acceleration With FPGAs
Programmable Acceleration Cards (PACs), DCP, DLA, Software Stack, and Reference Designs
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
424 Discussions

How to define separate bankbits on each memory replicate?

DimitrisGrn
Beginner
616 Views

I am using Intel HLS tools to design an FPGA accelerator.

 

In my application, I have an input array of 512 elements to my component. In each iteration of a loop, there are 3 concurrent loads to that array, without any stores. I am unrolling the loop by 8, so now there are 24 concurrent loads.

 

By default, the compiler chooses to replicate the array in memory 12 times (2 ports per replicate, we need 24 ports in total). However, based on the access patterns, I have found that it can be optimized if we only have 3 replicates, and define different bankbits in each replicate, i.e replicate 1 of the array must have bankbits(0,1,2), replicate 2 must have bankbits(3,4,5) and replicate 3 must have bankbits(6,7,8). Stall-free banking cannot be implemented without replicating the memory in this case.

 

I have gone through the documentation of HLS tools but I didn't find something helpful as to how I could implement that.

 

What I basically want is to take an input array A and replicate it 3 times into arrays A1, A2 and A3 in local memory, where I can define separate bankbits for each.

 

Does anyone have any ideas on this matter?

 

Thank you in advance.

0 Kudos
5 Replies
AnilErinch_A_Intel
500 Views

Hi

we are looking in to the issue.

Can you please mention which version of the HLS / tools are being used.

Thanks and Regards

Anil

DimitrisGrn
Beginner
500 Views

Hello,

 

Thanks for your reply. I am using HLS 19.3 Pro Edition.

Best,

Dimitris

AnilErinch_A_Intel
500 Views

Hi Dimitris ,

Hope you are staying safe

you can double the number of ports in the replica if you double pump the component.

So it will give you 4 ports per replicate.

You also have the flexibility to use the hls_memory and hls_bankwidth attributes to change the number of banks and bank bits.

Please refer to section 5

Component Memories (Memory Attributes) 

of the following documents and try to come up with the best possible solution you can.

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/hls/mnl-hls-reference.pd...

Then we can analyze the reports and can work on it further.

Thanks and Regards

Anil

AnilErinch_A_Intel
495 Views

We do not receive any response from you to the previous question/reply/answer that I have provided.
Please post a response in the next 15 days to allow me to continue to support you.
After 15 days, this thread will be transitioned to community support.
The community users will be able to help you with your follow-up questions

AnilErinch_A_Intel
444 Views

Hi ,

Please let us know whether we have any updates about the issue.

Thanks and Regards

Anil


Reply