Loop Rewind - Infinite Loop - 2020.2 English

Vitis HLS Messaging (UG1448)

Document ID
Release Date
2020.2 English


This message is to inform the user that the code is preventing the loop merging optimization.


When there are multiple sequential loops it can create additional latency moving from one loop to another loop. In these scenarios, the compiler can help to optimize it by merging the sequential loops.

For which loops should follow the rules which say that there should not be any non-trivial code.

The following code shows a violation of loop merging.

void top (a[4],b[4],c[4],d[4], var, ot...) {
Add: for (i=3;i>=0;i--) { if (d[i])
a[i] = b[i] + c[i]; }
// non-trivial code.
int h = var*a[0]*ot;
Sub: for (i=3;i>=0;i--) { if (!d[i])
a[i] = b[i] - c[i] +h ; }


Consider moving the code inside the for loop.