Loop Rewind - Multiple Loops - 2021.2 English

Vitis HLS Messaging (UG1448)

Document ID
UG1448
Release Date
2021-10-27
Version
2021.2 English

Description

Warning: [200-954] Unable to perform loop rewinding: Function '%s' contains multiple loops.
This message reports that the code is violating loop rewind optimization rules.

Explanation

Loop rewind optimization requires the function to have no more than a single loop. The below code shows the violation:

decoderInput_whileloop:while(1)
        {
    #pragma HLS PIPELINE II=1 rewind
            if(!inputStream.empty())
            {
                ...
            else
            {
                ...
                break;
            }
        }
        for(auto i=0;i<50;i++)
        {
            tempData.even = i*2;
            tempData.odd = i*2+1;
            pairedData.write(tempData);
        }

Solution

Loop rewind optimization only applies when there is a single loop inside the function. Move the loops into each separate function to perform loop rewind optimization.