UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 60550

Vivado HLS 2014.1: Nested Loops for HLS PIPELINE directive requirement

Description

This article contains general advice on using Nested Loops with the HLS PIPELINE directive.

Solution

1. Nested loops can only be flattened for PIPELINE if the loops are perfect or semi-perfect.

Perfect Loops
Only the inner most loop has body (content).
There is no logic specified between the loop statements.
The loop bounds are constant.

Semi-Perfect Loops
Only the inner most loop has body (content)
There is no logic specified between the loop statements.
The outer most loop bound can be variable.

For details refer to (UG902) Page 331.

2. If using the REWIND option with HLS PIPELINE, ensure that you use perfect nested loops.
 
Nested loops can only be flattened if the loops are perfect or semi-perfect.
Rewinding is effective only if there is one single loop (or a perfect loop nest) inside the top-level function.
 
Note that the code segment before the loop:
- Is considered as initialization.
- Is executed only once in the pipeline.
- Cannot contain any conditional operations (if-else).
AR# 60550
Date Created 05/07/2014
Last Updated 11/25/2014
Status Active
Type General Article
Tools
  • Vivado Design Suite - 2014.1