Loop Merging - Non-Trivial Code - 2022.1 English

Vitis HLS Messaging (UG1448)

Document ID
UG1448
Release Date
2022-06-22
Version
2022.1 English

Description

This message reports that the code is violating loop merging optimization rules.

Explanation

When there are multiple sequential loops, it can create additional latency and prevent further optimizations.

To remove this impact, use loop merging to reduce the latency. These loops should not include 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 ; }
...
}

Solution

Consider moving the non-trivial code before or after the loops.