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

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

Description

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?

Solution

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
Tools
  • Vivado Design Suite - 2013.1
  • Vivado Design Suite - 2013.2
  • Vivado Design Suite - 2013.3
  • Vivado Design Suite - 2012.4