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!

Showing results for 
Search instead for 
Did you mean: 
Registered: ‎03-13-2015

max depth when passing an array as an argument?

From this input argument...

mytype_t Buffers[<some defines that resolves to 2048>]


...I am getting the error: 

ERROR: [XFORM 203-103] Array 'Buffers.V' (<path and filename>):
partitioned elements number (2048) has exeeded the threshold (1024), which may cause long run-time.


Is there a way to increase this depth limit?

0 Kudos
3 Replies
Teacher xilinxacct
Registered: ‎10-23-2018

Re: max depth when passing an array as an argument?


If this in a c++ routine and using arbitrary precision... redefine the MAX prior to including the header file

#define AP_INT_MAX_W 4096 // Must be defined before next line
#include "ap_int.h"
ap_int<4096> very_wide_var;


Hope that helps

If so, please mark as solution accepted.. Kudos also weclomed :-)

0 Kudos
Xilinx Employee
Xilinx Employee
Registered: ‎01-09-2008

Re: max depth when passing an array as an argument?

No. The problem is not the width of the integer, but the length of the array: the number of elements.

The transmitted array seems to be partitionned.

I don't know the type myType_t, but If you think about the generated hardware: 2048 elements x let say 8 bits, this means 16384 wires directly connected to the IP! This is not manageable in hardware.

The error says also that it cannot partition an array longer than 1024, because it may cause long runtime. When you partition an array and execute a number of operations in parallel, the tool has to generate all these operations and schedule them: a lot of hardware at the end.

Olivier Trémois
Scholar u4223374
Registered: ‎04-26-2015

Re: max depth when passing an array as an argument?

As @oliviert has said, what you're asking for is going to take an awfully large amount of space. The only time I've ever used a massively partitioned array (1024 elements) was when I was specifically trying to see how full I could get a Zynq 7045 before Vivado gave up; the answer was over 90% LUT utilization and still meeting timing...


Can you explain the scenario in more detail? Where is this data coming from (another IP? CPU?) and how is it being used?

0 Kudos