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

2012.2 Vivado HLS - Known Issues

Description

This answer record lists known issues and limitations for 2012.2 Vivado HLS.

Solution

Coding Style
- Multiple inheritance of virtual functions is not supported.
-On 64-bit operation systems, "long' data types might cause a simulation mismatch. The "long long" data type is recommended for 64-bit integers.

Directive/Pragma Usage
- Design level handshake signals are not added if there is a valid output on every cycle. If interface mode ap_ctrl_hs is selected, which is also the default, it is expected that design level handshakes such as ap_start or ap_done, are added to the design. However, if the design is pipelined with II=1, such that there is valid output on every clock cycle, the design level handshakes will be optimized in the final RTL. This issue will be resolved in a future release.
- Complete array partitioning on multiple variables indexed array accesses may lead to long runtime and excessive memory usage.
Example:
Array[x] = y;
Array[x+1] = y+1;
...
Array[x+N] = y+N;
#pragma AP array partition variable=Array
- Pragmas on C__ class objects such as ap_int, ap_fixed variables, require additional ampersand &. No such requirement for tcl directives.
Example:
ap_int<N>x = y*z;
#pragma AP resource core=PipeMul2S variable=&x
- The array streaming directive cannot configure the FIFO depth for scalar variables in dataflow.
Example:
Void DUT(Type_M in_data[N], Type_M out_data[N})
{
Type_M mem[N]; // Can configure depth with array streaming if
// this array is converted into FIFO.
bool flag; // Cannot configure depth for this scalar variable.
//bool flag[1]; // Workaround of using single-element array.
read_data(in_data, mem, &flag);
write_data(out_data, memo, flag);
}

RTL Co-Simulation
- Segmentation fault in C simulation of the pre-synthesis test bench and design under test (DUT) or test bench in post-0synthesis co-simulation. This can occur if the code contains array which are large, as these require a large stack space. Two potential work-arounds are available:
- Using a static qualifier will move the arrays out of stack.
- The shell command, ulimit -s, can also be used to increase stack size.
- Using the C compilation flag -O2 to optimize the run time performance during C simulation might cause the RTL simulation (a co-simulation of the C test bench and RTL) to fail.
- To optimize the run time of the C simulation, especially when using floating point types, remove any -O2 used with the add_files -cflag option.

Linked Answer Records

Master Answer Records

Answer Number Answer Title Version Found Version Resolved
47397 Vivado Design Suite 2012 - Known Issues N/A N/A
47429 Xilinx Vivado HLS Solution Center - Top Issues N/A N/A
AR# 51019
Date Created 07/26/2012
Last Updated 07/26/2012
Status Active
Type Known Issues
Tools
  • Vivado - 2012.2