Results 1 to 3 of 3

Thread: What can I do for 'Main Optimizer failed' error in Intel HLS?

  1. #1
    Join Date
    May 2018
    Posts
    6
    Rep Power
    1

    Default What can I do for 'Main Optimizer failed' error in Intel HLS?

    Hi,

    My component has two stream in inputs and one stream out output.
    The two inputs pass through the Shift register and perform multiply operations between the elements.
    x86 execution is not a problem. An error such as the following occurs when executing build.bat test-fpga.

    "Instruction does not dominate all users!"

    One stream in is a blocking read, and the other stream in is a non-blocking read.
    Changing both data to non-blocking causes the same error.

    Shift register has no errors, and errors occur when multiplying the elements.
    The data type is ac_fixed, and is an operation of 8bit and 1bit.

    I uses Quartus 17.1 version. What can I do?
    Last edited by Kevin Ryu; June 20th, 2018 at 09:31 PM.

  2. #2
    Join Date
    Nov 2017
    Posts
    562
    Rep Power
    1

    Default Re: What can I do for 'Main Optimizer failed' error in Intel HLS?

    Hi,

    Can you share the command prompt log, .cpp & .bat files?

    Best Regards,
    Anand Raj Shankar
    (This message was posted on behalf of Intel Corporation)

  3. #3
    Join Date
    May 2018
    Posts
    6
    Rep Power
    1

    Default Re: What can I do for 'Main Optimizer failed' error in Intel HLS?

    Dear Mr. Anand

    I am sorry. I can't share any files because of our company policy.

    But I add pseudo code. build.bat is changed only cpp filename and -ghdl option for test-fpga.

    #include <>
    ...

    typedef ac_fixed<8,8,false> fixed8;
    typedef ac_fixed<1,1,false> fixed1;
    typedef ac_fixed<10,10,false> fixed10;

    component void func(stream_in<fixed8> a, stream_in<fixed1> b, stream_out<fixed10> c) {
    hls_init_on_reset static fixed8 d[xx];
    hls_init_on_reset static fixed1 e[xx];

    for (){
    // Non blocking read1
    bool success = false;
    fixed8 data = a.tryRead(success);
    if (success) {
    //Shift register
    # pragma unroll
    for ...
    d[] = data;
    }

    // Non blocking read2
    bool success1 = false;
    fixed8 data1 = b.tryRead(success1);
    if (success1) {
    //Shift register
    # pragma unroll
    for ...
    e[] = data1;
    }

    //--------------- The following makes error ----------------
    fixed10 m = d[] *e[];
    ...

    c.write(out);

    }
    }

    int main() {
    //Generate stream in data and buffer

    // Invoke component

    return 0;
    }

    That's all. What can I do?

Similar Threads

  1. Error: Optimizer FAILED
    By shaile in forum OpenCL
    Replies: 3
    Last Post: February 28th, 2017, 08:51 AM
  2. optical flow example optimizer failed
    By dyb918 in forum OpenCL
    Replies: 0
    Last Post: May 19th, 2015, 12:05 AM
  3. optical flow example Optimizer FAILED
    By sssdddong in forum OpenCL
    Replies: 1
    Last Post: May 5th, 2015, 12:48 PM
  4. Replies: 8
    Last Post: February 20th, 2011, 04:12 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •