cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Observer
Observer
9,911 Views
Registered: ‎02-16-2014

Long Runtime

HI to All,

 

I am trying to optimize my design , but when i try to add required directive( Dataflow and array partitioning)  vivado hls proccess runs for long time that practically it is an error since never gives result. in vivado HLS consol i recived warning related to array partitioning as follow:

"accessed through non-constant indices on dimension 1" ,which may result in long runtime and suboptimal QoR due to large multiplexers. Please consider wrapping the array access into a function or using a register file core instead".

 

any help, about this warning(wrapping the array access into a function or using a register file core instead)and also about long run time error that made optimization impossible.

 

 

0 Kudos
6 Replies
Highlighted
Moderator
Moderator
9,880 Views
Registered: ‎04-17-2011

Re: Long Runtime

Can you post your testcase?
Regards,
Debraj
----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------------
0 Kudos
Highlighted
Observer
Observer
9,878 Views
Registered: ‎02-16-2014

Re: Long Runtime

The region that access array y[] is :

if(ix < 2048){
                i = ix + n;
         accum = (y[ix].re << 15) - (y[i].re << 15);
         tempRe = accum >> 15;
         accum = (y[ix].im << 15) - (y[i].im << 15);
          tempIm = accum >> 15;
          accum = (y[ix].re << 15) + (y[i].re << 15);
          temp2Re = accum >> 15;
          accum = (y[ix].im << 15) + (y[i].im << 15);
          y[ix].re = temp2Re;
          y[ix].im = accum >> 15;

         /* Compute y[i2] = W*ctemp */
          y[i].re = (tempRe * twidRe - tempIm * twidIm) >> 15;
          y[i].im = (tempRe * twidIm + tempIm * twidRe) >> 15;

          ix+=n_0;

    }
the region is inside a function with following arguments:  MWDSPCG_R2DIF_TBLS_Ys32n8C_Ts16n15_As32n23_Ps32n23_f
        (&Model_Fixed_DW->SimulinkFFT[0U], 1, 2048, 2048, 0,
         Model_Fixed_ConstP.SimulinkFFT_Twiddl, 1, FALSE);

first argument(&Model_Fixed_DW->SimulinkFFT[0U]) is passed to function to be consumed in the region.

I could not apply array partitioning for mentioned warning that cause the synthesis runs for hours without  results, array size is 2048 and it is complex.

 

0 Kudos
Highlighted
9,668 Views
Registered: ‎08-12-2014

Re: Long Runtime

Hi~Is the problem resolved? Could you please share the experience?

0 Kudos
Highlighted
Xilinx Employee
Xilinx Employee
9,661 Views
Registered: ‎08-17-2011

Re: Long Runtime

@rooozmeh and @huangjiasen100, here I feel like a testcase that we can run would really help to get the "full picture".

That is the source code, selfchecking C TB and scripts (either standalone TCL or from your project's solution: setup script.tcl + directives directives.tcl).
Everything else that VHLS generates, we can also regenerate locally :)
- Hervé

SIGNATURE:
* New Dedicated Vivado HLS forums* http://forums.xilinx.com/t5/High-Level-Synthesis-HLS/bd-p/hls
* Readme/Guidance* http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

* Please mark the Answer as "Accept as solution" if information provided is helpful.
* Give Kudos to a post which you think is helpful and reply oriented.
0 Kudos
Highlighted
Observer
Observer
9,645 Views
Registered: ‎02-16-2014

Re: Long Runtime

@herver

Hi ,

Thanks!!!

I attached my case study and in readme&nbsp; file i included directives and descriptions. Please let me know if something is missing.

regards,

roozmeh

 

 

 

 

 

 

 

 

0 Kudos
Highlighted
Visitor
Visitor
120 Views
Registered: ‎02-13-2020

Re: Long Runtime

Is this issue solved or not? I also encounter the similiar issue.
0 Kudos