3.6.3.4 SHLS-5

Message

Warning: (SHLS-5) Loop unrolling failed on {location}.
                  This loop nest is inside the function '{function}', which is specified to be pipelined.

When a function is designated for pipelining, SmartHLS requires that all loops within the function be statically unrollable. If SmartHLS encounters a loop that cannot be unrolled at compile time within a function that is requested to be pipelined, an SHLS-5 message will be generated to notify users of the issue.

/*****************************************************************
 *  This example is expected to result in
 *  - Code  : SHLS-5
 *  - Type  : Warning
 *  - Cause : Failed to unroll loop inside a function that is
 *            specified to be pipelined due to runtime variable
 *            value 'nelem'.
 *****************************************************************/
int DUT(int A[100], int B[100], int nelem) {
    #pragma HLS function pipeline top
    int tmp = 0;
    for (int i = 0; i < nelem; i++) {
        tmp += A[i] + B[i];
    }
    return tmp;
}

Related to: Loop Unrolling, Pipeline Function