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

2014.2 Vivado HLS - Tool does not recognize mult-adder for one DSP and resource estimation is not consistent with RTL evaluation.

Description

In the sample code below, I would expect it to be packed into one DSP, with OP MODE: C+A*B.

#include "ap_cint.h"
int48 ybd(int18 in1, int16 in2, int48 in3){
 int48 sum;
 sum=in1*in2+in3;
 return sum;
}


However, HLS C synthesis reports 1 DSP + 49 LUTs.

RTL evaluation reports only 1 DSP.

Solution

By default, HLS will convert multiplication in1*in2 to a multiplier with 32 bits output, according to the C compiler's rule.

You would need to use explicit cast as below to get the expected result:
 

sum=(int48)in1*in2+in3;

AR# 61456
Date Created 07/11/2014
Last Updated 03/05/2015
Status Active
Type General Article
Tools
  • Vivado Design Suite - 2014.2