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

2013.2 Vivado HLS - demo.cpp:30: error: call of overloaded 'cosf(float&)' is ambiguous

Description

When "hls_math.h" is included and "using namespace hls" is declared, the following error is received when compiling the "cosf" file:

@E [HLS-70] Compilation errors found:
demo.cpp: In function 'void demo(float*)':
demo.cpp:30: error: call of overloaded 'cosf(float&)' is ambiguous
c:/xilinx/vivado_hls/2013.2/win_x86/tools/llvm_gcc/bin/../lib/gcc/i686-pc-mingw32/4.2.1/../../../../include/math.h:450: note: candidates are: float cosf(float)
C:/Xilinx/Vivado_HLS/2013.2/include/hls_math.h:434: note:                 float hls::cosf(float)

Failed checking during preprocessing.
    while executing
"csynth_design"
    (file "C:/ybd/case/HLS_cosf/demo/hls/solution2/csynth.tcl" line 14)

Solution

This issue occurs because if hls_math.h is included, math.h is indirectly included.
 
As a result, when you call "using namespace hls", the error is received.
 
This is a known issue.

It can be difficult to avoid including math.h, as it is indirectly included from a number of basic header files.
 
To work around this, use the prefix "hls::".
AR# 57588
Date Created 09/25/2013
Last Updated 03/27/2015
Status Active
Type General Article
Tools
  • Vivado Design Suite - 2013.2