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# 58984

2013.4 Vivado HLS - Adding and removing directives causes change in C code and gives Synthesis errors.

Description

When I add a Pipeline directive to the DCT_Inner_Loop of the (UG871) Lab1 design (attached) and remove it, the C code gets changed as shown below.

This behavior is seen only with Vivado 2013.4 and does not occur in 2013.3.

Original code:

DCT_Outer_Loop:
   for (k = 0; k < DCT_SIZE; k++) {
DCT_Inner_Loop:
      for(n = 0, tmp = 0; n < DCT_SIZE; n++) {
         int coeff = (int)dct_coeff_table[k][n];
         tmp += src[n] * coeff;
      }
      dst[k] = DESCALE(tmp, CONST_BITS);
   }
}
--------------------------------------------------

Changed code:

DCT_Outer_Loop:
   for (k = 0; k < DCT_SIZE; k++) {
DCT_Innefor(n = 0, tmp = 0; n < DCT_SIZE; n++) {
         int coeff = (int)dct_coeff_table[k][n];
         tmp += src[n] * coeff;
      }
      dst[k] = DESCALE(tmp, CONST_BITS);
   }
}

 

 

Solution

Try to change the modified code manually and give the directive again. 

There is a chance that you may not find the DCT_Innner_Loop in the directive pane, but this occurs randomly.

When you close and open the project and make the manual changes, you can synthesize the project.

This issue has been fixed in Vivado 2014.2.

AR# 58984
Date Created 01/02/2014
Last Updated 02/20/2015
Status Active
Type Known Issues
Devices
  • FPGA Device Families