cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
eita
Observer
Observer
2,667 Views
Registered: ‎12-21-2017

How to solve [XFORM 203-1403]?

Jump to solution

Hi, everyone.

 

I'm getting error as below.

How to solve this error?

 

INFO: [XFORM 203-401] Performing if-conversion on hyperblock from (../src/Matching.cpp:55:3) to (../src/Matching.cpp:57:3) in function 'estSubPixel'... converting 4 basic blocks.
INFO: [XFORM 203-401] Performing if-conversion on hyperblock to (../src/Matching.cpp:233:2) in function 'Matching'... converting 508 basic blocks.
INFO: [XFORM 203-401] Performing if-conversion on hyperblock from (../src/Matching.cpp:285:2) to (../src/Matching.cpp:286:1) in function 'Matching'... converting 3 basic blocks.
INFO: [XFORM 203-602] Inlining function 'estSubPixel' into 'Matching' (../src/Matching.cpp:237) automatically.
INFO: [XFORM 203-11] Balancing expressions in function 'Matching' (../src/Matching.cpp:72)...4352 expression(s) balanced.
INFO: [HLS 200-111] Finished Pre-synthesis Time (s): cpu = 00:02:19 ; elapsed = 00:02:15 . Memory (MB): peak = 646.117 ; gain = 209.500 ; free physical = 34418 ; free virtual = 111743
WARNING: [ANALYSIS 214-1] Tool encounters 11054 load/store instructions to analyze which may result in long runtime.
ERROR: [XFORM 203-1403] Unsupported enormous number of load/store instructions: 'Matching' (../src/Matching.cpp:72) .
ERROR: [HLS 200-70] Failed building synthesis data model.
command 'ap_source' returned error code
    while executing
"source hls/Algorithm/solution1/csynth.tcl"
    invoked from within
"hls::main hls/Algorithm/solution1/csynth.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel 1 hls::main {*}$args"
    (procedure "hls_proc" line 5)
    invoked from within
"hls_proc $argv"
Finished C synthesis.

I searched same issues in this forum, and found this posts.

Load-store-instructions-crash-ERROR-XFORM-203-1403

 

In this posts said, this error causes by large matrix, which uses unrolling loops.

But my code didn't use UNROLL directives. 

I can't share my code, but my code is kind of image matching algorithm with two images.

By the default, this algorithm is uses 9x9 pixel matrix.

When I want to increase matrix size, like 11x11 or 13x13, this error was occured.

 

In the 11x11's log, the expression number is larger than 9x9.

Probably, I think this issue is caused by FPGA resources , or machine specs which running vivado-HLS.

 

Regards,

0 Kudos
1 Solution

Accepted Solutions
chrisz
Xilinx Employee
Xilinx Employee
2,713 Views
Registered: ‎05-06-2008

Hello @eita,

 

The developers continue to make Vivado HLS better by fixing bugs and improving the algorithms, which is what has happened between 2017.4 and 21018.2.  I am glad that it is working now in 2018.2.

 

Please let us know if you have any other questions,
Chris

 

 

View solution in original post

7 Replies
chrisz
Xilinx Employee
Xilinx Employee
2,608 Views
Registered: ‎05-06-2008

Hello @eita,

 

Which version of the HLS tool are you running?

  Which OS?

 

I would like to investigate this issue, so can you share your code via this post or PM.

  I would like to review the scheduler results and dive into the issue further.

 

Thanks,
Chris

0 Kudos
eita
Observer
Observer
2,595 Views
Registered: ‎12-21-2017

Hello @chrisz.

Thank you for reply.

 

Vivado HLS is 2017.4, and OS is Linux(CentOS6).

 

I can't share my code here(because it is confidential in business),

but I can share log message or get another logs and sample code.

 

My code sample is below.

This is main calculation process, it's become most large logic after hls.

If I set the  variable "WINDOW_W" to larger than 11, then ERROR: [XFORM 203-1403] was occured.

 

 

     label0:for(d=0; d<CW; d++)
     {
         S1=0;
         S2=0;
 
         x=WINDOW_W-1;
         for(y=0; y<WINDOW_W; y++)
         {
             sum = wbuf_r[x+MATCH_WID][y]+wbuf_l[x+d][y];
             S1 += sum;
             S2 += sum*sum;
         }
         S1_BUF[d][0]=S1_BUF[d][0]+S1_BUF[d][1]+S1;
         S2_BUF[d][0]=S2_BUF[d][0]+S2_BUF[d][1]+S2;
 
         for(y=0; y<WINDOW_W-1; y++)
         {
             S1_BUF[d][y+1]=S1_BUF[d][y+2];
             S2_BUF[d][y+1]=S2_BUF[d][y+2];
         }
         S1_BUF[d][WINDOW_W]=S1;
         S2_BUF[d][WINDOW_W]=S2;
 
         costs[d] = ((WINDOW_W*WINDOW_W*S2_BUF[d][0]) + (S1_BUF[d][0]*S1_BUF[d][0]));
     }

 

Regards,

Eita

 

0 Kudos
chrisz
Xilinx Employee
Xilinx Employee
2,579 Views
Registered: ‎05-06-2008

Hello @eita,

 

How are 'S1_BUF' and 'S2_BUF' declared?

 

Thanks,

Chris

0 Kudos
eita
Observer
Observer
2,569 Views
Registered: ‎12-21-2017

Hello, @chrisz.

 

S1_BUF and S2_BUF is decreated below.

 

static i15_t S1_BUF[MATCH_LEN+MATCHWIDTH_EXPAND*2][WINDOW_W+1]={}; 
static ui22_t S2_BUF[MATCH_LEN+MATCHWIDTH_EXPAND*2][WINDOW_W+1]={}; 

 

 

MATCH_LEN, MATCHWIDTH,WINDOW_W is constant value, which defined in header file.

 

#define LINE_W				(IMGW/*3840*/)
#define WINDOW_W			(11)
#define MATCH_LEN			(128)
#define MATCHWIDTH_EXPAND	(2)

 

I was changing "WINDOW_W" value only.

When the value of "WINDOW_W" was 7 to 9 between, there is no errors, but larger than 9, Error [XFORM 203-1403] is occures.

 

Regards,

Eita

0 Kudos
eita
Observer
Observer
2,557 Views
Registered: ‎12-21-2017

@chrisz

Additional information:

 

I tried to compile same source code on vivado HLS 2018.2.
Then, it's works and Error [XFORM 203-1403] wasn't occured.

 

I think something is difference, between 2017.4 and 2018.2.
But difficult to analysis this... (because I didn't touch any source code, and directives.)

 

Regards,

Eita

 

0 Kudos
chrisz
Xilinx Employee
Xilinx Employee
2,714 Views
Registered: ‎05-06-2008

Hello @eita,

 

The developers continue to make Vivado HLS better by fixing bugs and improving the algorithms, which is what has happened between 2017.4 and 21018.2.  I am glad that it is working now in 2018.2.

 

Please let us know if you have any other questions,
Chris

 

 

View solution in original post

eita
Observer
Observer
2,513 Views
Registered: ‎12-21-2017

Hello, @chrisz.

 

Thank you for everything.

 

Synthesized verilog file is available now, so no more question.

 

Regards,

Eita

0 Kudos