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

2013.3 Vivado HLS - Why are the C and RTL simulation floating-point to integer type conversions resulting in different values?


There is a discrepancy in floating-point to integer type conversion between C and RTL simulation.

For example, in C, when 1.9 is assigned to one integer, the result is 1.

However, in RTL simulation, the result will be 2.

Why is there a discrepancy?


In C, the rounding mode rounds down to the next integer when converting from floating point to integer.

HLS calls floating-point IP in the Xilinx Device to do the conversion.

The floating-point IP(v7.0) only uses the default rounding mode (Round to Nearest Even) to do the conversion.

This is why the discrepancy occurs between C and RTL simulation.

This issue has been fixed in Vivado 2013.4.
AR# 58301
Date Created 11/07/2013
Last Updated 02/20/2015
Status Active
Type Known Issues
  • Vivado Design Suite - 2013.1
  • Vivado Design Suite - 2013.2
  • Vivado Design Suite - 2013.3
  • Vivado Design Suite - 2012.4