pragma HLS loop_tripcount
Description
TRIPCOUNT
pragma can be applied to a loop to manually specify the
total number of iterations performed by a loop. TRIPCOUNT
pragma is for analysis only, and does not impact the results
of synthesis.Vivado HLS reports the total latency of each loop, which is the number of clock cycles to execute all iterations of the loop. The loop latency is therefore a function of the number of loop iterations, or tripcount.
The tripcount can be a constant value. It may depend on the value of variables used in the
loop expression (for example, x<y
), or depend on control statements used
inside the loop. In some cases Vivado HLS cannot determine the tripcount, and the latency is
unknown. This includes cases in which the variables used to determine the tripcount are:
- Input arguments, or
- Variables calculated by dynamic operation.
In cases where the loop latency is unknown or cannot be calculate, the
TRIPCOUNT
pragma lets you specify minimum and maximum iterations for a
loop. This lets the tool analyze how the loop latency contributes to the total design
latency in the reports, and helps you determine appropriate optimizations for the
design.
Syntax
Place the pragma in the C source within the body of the loop:
#pragma HLS loop_tripcount min=<int> max=<int> avg=<int>
Where:
max=<int>
: Specifies the maximum number of loop iterations.min=<int>
: Specifies the minimum number of loop iterations.avg=<int>
: Specifies the average number of loop iterations.
Examples
In this example loop_1
in function foo
is specified to have a
minimum tripcount of 12 and a maximum tripcount of 16:
void foo (num_samples, ...) {
int i;
...
loop_1: for(i=0;i< num_samples;i++) {
#pragma HLS loop_tripcount min=12 max=16
...
result = a + b;
}
}
See Also
- Vivado Design Suite User Guide: High-Level Synthesis (UG902)