This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LAUNCHXL-F280039C: No rule to make target

Part Number: LAUNCHXL-F280039C
Other Parts Discussed in Thread: LP5891, SYSCONFIG, C2000WARE, LP5891EVM

Tool/software:

Hi C2000 expert,

My customer want to evaluate F280039C+LP5891 solution. They download the demo code "LP5891Q1EVM-SW-F280039C” from the link https://www.ti.com/tool/LP5891EVM.

Meanwhile, they use CCS12.8, have both version 5.3 and 4.1 C2000ware, and sysconfig version is 1.21.0.

They can't built the project successfully. Build result is shown as below. 

  

Besides, we find that all demo projects in C2000ware(both v5.3 and v4.1) have the same error as long as the projects have ".syscfg" file. ("tlc698x_lp589x_f28003x.syscfg" file in "LP5891Q1EVM-SW-F280039C" project can be open successfully in CCS12.8 ).

We checked below configuration, but didn't find anything abnormal. Could you please help review it and give some suggestions on this issue.

  

Best regards,

Fengyu

  • Hi Fengyu,

    Can you share the compiler settings?

    BEst,

    Ryan Ma

  • Hi Ryan,

    Could you please clarify what is the "complier settings" you mentioned?

    I understand the last picture I posted is complier settings. Besides, below include compiler version. Please let me know if my understanding is wrong. 

    Thanks. 

    Best Regards,

    Fengyu

  • Hi Fengyu, 

    Apologize I did not see that last picture for some reason. I see it now. I will have the LP5891EVM expert on this thread.

    Best,

    Ryan Ma

  • Hi Ryan, 

    Thanks for your quick reply!

    Actually, I have reached out to LP5891EVM expert and got the information that LP5891 reference code based on  CCS 12.7.0 and C2000Ware 5.01.00.00. No other special. Based on this, I use my computer,  import the LP5891 project using CCS12.8 and  4.1 C2000ware( the same as customer side.) The code can be built successfully from my side. 

    we find that all demo projects in C2000ware(both v5.3 and v4.1) have the same error as long as the projects have ".syscfg" file.

    Just as I said here, I understand the issue is not relative to this specific LP5891 project. It may be relative to the setting of syscfg. Hope it helpful and look forward to your reply. Thanks!

    BR,

    Fengyu

  • Hi Fengyu,

    You're correct, I do not see any syscfg/board.h or syscfg/board.c files being generated. Can you open the SysCfg file in CCS? Does it open and show the generated source code? Something like this under the <> tab. Can you share the project properties for the SysConfig tab?

  • Hi Ryan,

    Please refer to the syscfg page from customer. 

    Below is the contrast between customer and my side. The red block marks the file which they don't have. I am not sure if it is the root cause and how to fix it?

    1. Customer side's abnormal status.

    2. My side's normal status.

    BR,

    Fengyu

  • Hi Fengyu, 

    Can you please share the settings for the circled SysConfig tab, as well as the Products tab from customer's side? What is the SDK they are using?

  • Hi Ryan,

    Quickly check with customer, their setting is the same as mine except the version I mark in red. Thanks! 

    BR,

    Fengyu

  • Is it feasible for them to their update C2000WARE to the latest?

    Best,

    Ryan Ma

  • They have tried the latest version V5.3, but it doesn't work.  As you can see, they installed it. 

     

    BR,

    Fengyu

  • Can you share the include options in the project properties? It appears to be using C2000WARE 5.03, but in the compiler include options referencing 4.01.

  • Below pictures are settings from my side.

    Just double check with you, 

    include options in the project properties

    means below configuration page, right? 

    compiler include options

    means "complier settings" shown as below, right?

    If my understanding is right, I think these two page's version number must match in customer side because we can't change the version in "complier settings" page manually. I also try to change version in the page of "include option in project properties" just now and find  "complier settings" page will change with it. 

    Please help correct me if there are something wrong.

    Whatever, I will check customer's settings status and get back to you tomorrow. Feel free to contact me if you have other good idea. Thanks!

    BR,

    Fengyu

  • Yes you are correct. Please let me know if this fixes the issue.

    Best,

    Ryan Ma

  • Hi Ryan,

    It doesn't work. The version in C2000 complier page align with include option as below two pictures. 

      

    We have a new discovery. There is no file generated below Generated Source - Sysconfig in customer side. But normal status have them. Do you know the reason?

       

    BR,

    Fengyu

  • Hello,

    The appropriate expert for this question is currently out of office, returning on Monday 9/16. Please expect a response back by then.

    Thank you,

    Luke

  • Hi Fengyu,

    There is no generated source because it appears that there are compilation errors. What are the errors?

    Best,

    Ryan Ma

  • Hi Ryan,

    How to check compilation errors? I posted the errors in the first thread.

    BR,

    Fengyu

  • Hi Ryan,

    How to check compilation errors? I posted the errors in the first thread. Is that useful?

    BR,

    Fengyu

  • Hi Fengyu,

    Can you provide me the project?

    BEst,

    Ryan Ma

  • Hi Ryan,

    Customer is OoO for annual leave. I will get back to you as long as I get the project. Thanks!

    BR,

    Fengyu

  • Hi Fengyu,

    Sounds good.

    Best,

    Ryan Ma

  • Hi Ryan,

    Since customer's internal network limitation, he can't export his project file. They just download the project from the link https://www.ti.com/tool/download/LP5891Q1EVM-SW-F280039C/1.1.0

    Do you have any other clues we can check?

    BR,

    Fengyu

  • Hi Fengyu,

    I've imported the project. I do not see the issue. I've tried with C2000WARE5.02 and C200WARE5.03

    I see the correct sysconfig file generation. This is my products page.

    Include options:

    Compiler options:

    This is the .syscfg file that came with the link you provided me.

    /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --device "F28003x" --package "100PZ" --part "F28003x_100PZ" --context "system" --product "C2000WARE@5.02.00.00"
     * @versions {"tool":"1.20.0+3587"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const clb                  = scripting.addModule("/driverlib/clb.js", {}, false);
    const clb1                 = clb.addInstance();
    const clb2                 = clb.addInstance();
    const clb3                 = clb.addInstance();
    const clb4                 = clb.addInstance();
    const clb_inputxbar        = scripting.addModule("/driverlib/clb_inputxbar.js", {}, false);
    const clb_inputxbar1       = clb_inputxbar.addInstance();
    const clb_inputxbar_input  = scripting.addModule("/driverlib/clb_inputxbar_input.js");
    const clb_inputxbar_input1 = clb_inputxbar_input.addInstance();
    const clb_inputxbar_input2 = clb_inputxbar_input.addInstance();
    const clb_inputxbar_input3 = clb_inputxbar_input.addInstance();
    const clb_inputxbar_input4 = clb_inputxbar_input.addInstance();
    const clb_outputxbar       = scripting.addModule("/driverlib/clb_outputxbar.js", {}, false);
    const clb_outputxbar1      = clb_outputxbar.addInstance();
    const clb_outputxbar2      = clb_outputxbar.addInstance();
    const clb_outputxbar3      = clb_outputxbar.addInstance();
    const clb_outputxbar4      = clb_outputxbar.addInstance();
    const clbxbar              = scripting.addModule("/driverlib/clbxbar.js", {}, false);
    const clbxbar1             = clbxbar.addInstance();
    const epwm                 = scripting.addModule("/driverlib/epwm.js", {}, false);
    const epwm1                = epwm.addInstance();
    const outputxbar           = scripting.addModule("/driverlib/outputxbar.js", {}, false);
    const outputxbar1          = outputxbar.addInstance();
    const TILE                 = scripting.addModule("/utilities/clb_tool/clb_syscfg/source/TILE");
    const TILE1                = TILE.addInstance();
    const TILE2                = TILE.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    clb1.globalConfigCLB_IN0 = "CLB_GLOBAL_IN_MUX_CLB_AUXSIG0";
    clb1.synchronizeCLB_IN0  = true;
    clb1.globalConfigCLB_IN1 = "CLB_GLOBAL_IN_MUX_CLB_AUXSIG1";
    clb1.synchronizeCLB_IN1  = true;
    clb1.prescale            = 10000;
    clb1.tap                 = 5;
    clb1.inputTypeCLB_IN0    = "LOCAL";
    clb1.localConfigCLB_IN0  = "CLB_LOCAL_IN_MUX_INPUT1";
    clb1.filterConfigCLB_IN0 = "CLB_FILTER_RISING_EDGE";
    clb1.inputTypeCLB_IN1    = "LOCAL";
    clb1.inputTypeCLB_IN2    = "LOCAL";
    clb1.inputTypeCLB_IN4    = "LOCAL";
    clb1.localConfigCLB_IN4  = "CLB_LOCAL_IN_MUX_INPUT3";
    clb1.synchronizeCLB_IN4  = true;
    clb1.localConfigCLB_IN3  = "CLB_LOCAL_IN_MUX_INPUT1";
    clb1.synchronizeCLB_IN3  = true;
    clb1.filterConfigCLB_IN5 = "CLB_FILTER_RISING_EDGE";
    clb1.synchronizeCLB_IN2  = true;
    clb1.filterConfigCLB_IN2 = "CLB_FILTER_FALLING_EDGE";
    clb1.inputsUsed          = ["CLB_IN1","CLB_IN2","CLB_IN3"];
    clb1.registerInterrupts  = true;
    clb1.$name               = "CCSI1_RX_TILE";
    clb1.localConfigCLB_IN1  = "CLB_LOCAL_IN_MUX_INPUT1";
    clb1.localConfigCLB_IN2  = "CLB_LOCAL_IN_MUX_INPUT2";
    
    clb2.clbBase             = "CLB2_BASE";
    clb2.synchronizeCLB_IN0  = true;
    clb2.synchronizeCLB_IN3  = true;
    clb2.localConfigCLB_IN0  = "CLB_LOCAL_IN_MUX_INPUT1";
    clb2.localConfigCLB_IN3  = "CLB_LOCAL_IN_MUX_INPUT1";
    clb2.synchronizeCLB_IN4  = true;
    clb2.localConfigCLB_IN4  = "CLB_LOCAL_IN_MUX_INPUT3";
    clb2.filterConfigCLB_IN0 = "CLB_FILTER_FALLING_EDGE";
    clb2.globalConfigCLB_IN5 = "CLB_GLOBAL_IN_MUX_CLB_AUXSIG0";
    clb2.inputTypeCLB_IN5    = "GLOBAL";
    clb2.inputsUsed          = ["CLB_IN0","CLB_IN1","CLB_IN3","CLB_IN4","CLB_IN5","CLB_IN6"];
    clb2.registerInterrupts  = true;
    clb2.$name               = "CCSI1_TX_TILE";
    clb2.inputTypeCLB_IN0    = "GLOBAL";
    clb2.inputTypeCLB_IN4    = "GLOBAL";
    clb2.globalConfigCLB_IN4 = "CLB_GLOBAL_IN_MUX_EPWM1B";
    clb2.inputTypeCLB_IN3    = "GLOBAL";
    clb2.synchronizeCLB_IN5  = true;
    
    clb3.$name               = "CCSI2_RX_TILE";
    clb3.clbBase             = "CLB3_BASE";
    clb3.inputsUsed          = ["CLB_IN1","CLB_IN2","CLB_IN3"];
    clb3.inputTypeCLB_IN1    = "LOCAL";
    clb3.synchronizeCLB_IN1  = true;
    clb3.inputTypeCLB_IN2    = "LOCAL";
    clb3.localConfigCLB_IN2  = "CLB_LOCAL_IN_MUX_INPUT4";
    clb3.synchronizeCLB_IN2  = true;
    clb3.filterConfigCLB_IN2 = "CLB_FILTER_FALLING_EDGE";
    clb3.registerInterrupts  = true;
    clb3.localConfigCLB_IN1  = "CLB_LOCAL_IN_MUX_INPUT3";
    
    clb4.$name               = "CCSI2_TX_TILE";
    clb4.clbBase             = "CLB4_BASE";
    clb4.inputTypeCLB_IN0    = "GLOBAL";
    clb4.synchronizeCLB_IN0  = true;
    clb4.filterConfigCLB_IN0 = "CLB_FILTER_FALLING_EDGE";
    clb4.inputTypeCLB_IN3    = "GLOBAL";
    clb4.synchronizeCLB_IN3  = true;
    clb4.inputTypeCLB_IN4    = "GLOBAL";
    clb4.globalConfigCLB_IN4 = "CLB_GLOBAL_IN_MUX_EPWM1B";
    clb4.synchronizeCLB_IN4  = true;
    clb4.inputTypeCLB_IN5    = "GLOBAL";
    clb4.globalConfigCLB_IN5 = "CLB_GLOBAL_IN_MUX_CLB_AUXSIG0";
    clb4.synchronizeCLB_IN5  = true;
    clb4.inputsUsed          = ["CLB_IN0","CLB_IN1","CLB_IN3","CLB_IN4","CLB_IN5","CLB_IN6"];
    clb4.registerInterrupts  = true;
    
    clb_inputxbar1.$name = "CLB_CCSI_RX_PINS";
    
    clb_inputxbar_input1.$name         = "myCLBINPUTXBARINPUT0";
    clb_inputxbar_input1.inputxbarGpio = "GPIO17";
    
    clb_inputxbar_input2.$name          = "myCLBINPUTXBARINPUT1";
    clb_inputxbar_input2.inputxbarInput = "XBAR_INPUT2";
    clb_inputxbar_input2.inputxbarGpio  = "GPIO4";
    
    clb_inputxbar_input3.$name          = "myCLBINPUTXBARINPUT2";
    clb_inputxbar_input3.inputxbarInput = "XBAR_INPUT3";
    clb_inputxbar_input3.inputxbarGpio  = "GPIO61";
    
    clb_inputxbar_input4.$name          = "myCLBINPUTXBARINPUT3";
    clb_inputxbar_input4.inputxbarInput = "XBAR_INPUT4";
    clb_inputxbar_input4.inputxbarGpio  = "GPIO4";
    
    clb_outputxbar1.muxesUsed                                = ["XBAR_MUX09"];
    clb_outputxbar1.$name                                    = "CLB_SCLK_1";
    clb_outputxbar1.clb_outputxbar.$assign                   = "CLB_OUTPUTXBAR7";
    clb_outputxbar1.clb_outputxbar.clb_outputxbarPin.$assign = "GPIO1";
    
    clb_outputxbar2.muxesUsed                                = ["XBAR_MUX08"];
    clb_outputxbar2.$name                                    = "CLB_SPICLK_1";
    clb_outputxbar2.clb_outputxbar.$assign                   = "CLB_OUTPUTXBAR6";
    clb_outputxbar2.clb_outputxbar.clb_outputxbarPin.$assign = "GPIO4";
    
    clb_outputxbar3.muxesUsed                                = ["XBAR_MUX25"];
    clb_outputxbar3.$name                                    = "CLB_SCLK_2";
    clb_outputxbar3.clb_outputxbar.$assign                   = "CLB_OUTPUTXBAR8";
    clb_outputxbar3.clb_outputxbar.clb_outputxbarPin.$assign = "GPIO6";
    
    clb_outputxbar4.$name                                    = "CLB_SOUT_1";
    clb_outputxbar4.muxesUsed                                = ["XBAR_MUX12"];
    clb_outputxbar4.clb_outputxbar.$assign                   = "CLB_OUTPUTXBAR5";
    clb_outputxbar4.clb_outputxbar.clb_outputxbarPin.$assign = "GPIO8";
    
    clbxbar1.muxesUsed  = ["XBAR_MUX07"];
    clbxbar1.mux7Config = "XBAR_CLB_MUX07_CLB2_OUT5";
    clbxbar1.$name      = "myCLBXBAR_TRANSFER_START_SYNC";
    
    epwm1.$name                  = "myEPWM0";
    epwm1.epwm.$assign           = "EPWM1";
    epwm1.epwm.epwm_aPin.$assign = "GPIO30";
    epwm1.epwm.epwm_bPin.$assign = "GPIO31";
    
    outputxbar1.muxesUsed                        = ["XBAR_MUX13"];
    outputxbar1.$name                            = "CLB_SOUT_2";
    outputxbar1.mux13Config                      = "XBAR_OUT_MUX13_CLB4_OUT4";
    outputxbar1.outputxbar.$assign               = "OUTPUTXBAR3";
    outputxbar1.outputxbar.outputxbarPin.$assign = "GPIO60";
    
    TILE.sim_duration = 100000;
    TILE.clock_period = 8;
    
    TILE1.$name                     = "TILE1";
    TILE1.BOUNDARY.$name            = "BOUNDARY0";
    TILE1.BOUNDARY.in_sync0         = true;
    TILE1.BOUNDARY.in_edge0         = "rising edge";
    TILE1.BOUNDARY.in_sync2         = true;
    TILE1.BOUNDARY.in_sync1         = true;
    TILE1.BOUNDARY.in_repeat_count0 = 200;
    TILE1.BOUNDARY.in_repeat_count2 = 1000;
    TILE1.BOUNDARY.in_period1       = 44269;
    TILE1.BOUNDARY.in_repeat_count1 = 4;
    TILE1.BOUNDARY.in_duty1         = 500;
    TILE1.BOUNDARY.in_edge2         = "falling edge";
    TILE1.LUT_0.$name               = "LUT_0";
    TILE1.LUT_0.i0                  = "BOUNDARY.in1";
    TILE1.LUT_0.i1                  = "BOUNDARY.in2";
    TILE1.LUT_0.eqn                 = "!i0&i1";
    TILE1.LUT_0.i2                  = "BOUNDARY.in3";
    TILE1.LUT_1.$name               = "LUT_1";
    TILE1.LUT_1.i1                  = "COUNTER_1.count_match1";
    TILE1.LUT_1.i0                  = "COUNTER_2.count_match2";
    TILE1.LUT_1.i2                  = "COUNTER_1.count_match2";
    TILE1.LUT_1.i3                  = "FSM_0.OUT";
    TILE1.LUT_1.eqn                 = "i0&i1&i2&i3 | i0&!i1&!i2&i3";
    TILE1.LUT_2.$name               = "LUT_2";
    TILE1.LUT_2.i1                  = "FSM_0.OUT";
    TILE1.LUT_2.i0                  = "COUNTER_2.count_match2";
    TILE1.LUT_2.eqn                 = "i0|!i1";
    TILE1.FSM_0.$name               = "FSM_0";
    TILE1.FSM_0.e0                  = "COUNTER_0.count_match1";
    TILE1.FSM_0.e1                  = "LUT_0.OUT";
    TILE1.FSM_0.eqn_s0              = "!s1&!s0&e1&!e0 | !s1&!s0&e1&e0 | !s1&s0&!e1&!e0 | !s1&s0&e1&!e0";
    TILE1.FSM_0.eqn_out             = "!s1&s0&!e1&!e0 | !s1&s0&!e1&e0 | !s1&s0&e1&!e0 | !s1&s0&e1&e0";
    TILE1.FSM_1.$name               = "FSM_1";
    TILE1.FSM_1.e0                  = "COUNTER_2.count_match2";
    TILE1.FSM_1.e1                  = "FSM_0.OUT";
    TILE1.FSM_1.eqn_out             = "s1&s0&e1&e0";
    TILE1.FSM_1.eqn_s1              = "!s1&s0&e1&e0 | s1&!s0&e1&!e0 | s1&!s0&e1&e0 | s1&s0&e1&!e0";
    TILE1.FSM_1.eqn_s0              = "!s1&!s0&e1&e0 | !s1&s0&e1&!e0 | s1&!s0&e1&e0 | s1&s0&e1&!e0";
    TILE1.FSM_2.$name               = "FSM_2";
    TILE1.FSM_2.e0                  = "COUNTER_0.count_match1";
    TILE1.FSM_2.e1                  = "FSM_0.OUT";
    TILE1.FSM_2.eqn_out             = "e0&e1";
    TILE1.COUNTER_0.$name           = "COUNTER_0";
    TILE1.COUNTER_0.reset           = "LUT_0.OUT";
    TILE1.COUNTER_0.mode1           = "1";
    TILE1.COUNTER_0.event           = "BOUNDARY.in1";
    TILE1.COUNTER_0.match1_val      = "0x3FFFF";
    TILE1.COUNTER_0.action          = "Shift Right";
    TILE1.COUNTER_0.serializer_en   = true;
    TILE1.COUNTER_0.mode0           = "BOUNDARY.in2";
    TILE1.COUNTER_1.$name           = "COUNTER_1";
    TILE1.COUNTER_1.match1_tap_en   = true;
    TILE1.COUNTER_1.event           = "BOUNDARY.in1";
    TILE1.COUNTER_1.mode1           = "1";
    TILE1.COUNTER_1.action          = "Shift Right";
    TILE1.COUNTER_1.serializer_en   = true;
    TILE1.COUNTER_1.match2_tap_en   = true;
    TILE1.COUNTER_1.match1_tap_sel  = 1;
    TILE1.COUNTER_1.reset           = "LUT_2.OUT";
    TILE1.COUNTER_1.mode0           = "BOUNDARY.in2";
    TILE1.COUNTER_2.$name           = "COUNTER_2";
    TILE1.COUNTER_2.mode1           = "1";
    TILE1.COUNTER_2.match1_val      = "16";
    TILE1.COUNTER_2.match2_val      = "17";
    TILE1.COUNTER_2.reset           = "LUT_2.OUT";
    TILE1.COUNTER_2.mode0           = "BOUNDARY.in2";
    TILE1.OUTLUT_0.$name            = "OUTLUT_0";
    TILE1.OUTLUT_1.$name            = "OUTLUT_1";
    TILE1.OUTLUT_2.$name            = "OUTLUT_2";
    TILE1.OUTLUT_3.$name            = "OUTLUT_3";
    TILE1.OUTLUT_4.$name            = "OUTLUT_4";
    TILE1.OUTLUT_5.$name            = "OUTLUT_5";
    TILE1.OUTLUT_6.$name            = "OUTLUT_6";
    TILE1.OUTLUT_7.$name            = "OUTLUT_7";
    TILE1.HLC.$name                 = "HLC_0";
    TILE1.HLC.e0                    = "COUNTER_2.count_match1";
    TILE1.HLC.R0_init               = "1";
    TILE1.HLC.e3                    = "LUT_1.OUT";
    TILE1.HLC.e1                    = "FSM_2.OUT";
    TILE1.HLC.e2                    = "FSM_1.OUT";
    TILE1.HLC.program0.$name        = "HLCP_0";
    TILE1.HLC.program0.instruct0    = "push c1";
    TILE1.HLC.program1.$name        = "HLCP_1";
    TILE1.HLC.program1.instruct0    = "mov r1, r3";
    TILE1.HLC.program1.instruct1    = "intr 1";
    TILE1.HLC.program2.$name        = "HLCP_2";
    TILE1.HLC.program2.instruct0    = "mov r0, r2";
    TILE1.HLC.program2.instruct1    = "intr 1";
    TILE1.HLC.program3.$name        = "HLCP_3";
    TILE1.HLC.program3.instruct0    = "mov r0, r1";
    TILE1.HLC.program3.instruct1    = "intr 1";
    TILE1.AOC_0.$name               = "AOC_0";
    TILE1.AOC_1.$name               = "AOC_1";
    TILE1.AOC_2.$name               = "AOC_2";
    TILE1.AOC_3.$name               = "AOC_3";
    TILE1.AOC_4.$name               = "AOC_4";
    TILE1.AOC_5.$name               = "AOC_5";
    TILE1.AOC_6.$name               = "AOC_6";
    TILE1.AOC_7.$name               = "AOC_7";
    
    TILE2.$name                     = "TILE2";
    TILE2.BOUNDARY.$name            = "BOUNDARY1";
    TILE2.BOUNDARY.in_sync1         = true;
    TILE2.BOUNDARY.in_repeat_count1 = 1;
    TILE2.BOUNDARY.in_repeat_count0 = 1000;
    TILE2.BOUNDARY.in_period1       = 10000;
    TILE2.BOUNDARY.in_duty1         = 9500;
    TILE2.BOUNDARY.in_sync0         = true;
    TILE2.BOUNDARY.in_repeat_count3 = 1000;
    TILE2.BOUNDARY.in_sync3         = true;
    TILE2.BOUNDARY.in_edge0         = "falling edge";
    TILE2.LUT_0.$name               = "LUT_3";
    TILE2.LUT_0.i1                  = "BOUNDARY.in5";
    TILE2.LUT_0.i0                  = "BOUNDARY.in1";
    TILE2.LUT_0.eqn                 = "i0|i1";
    TILE2.LUT_1.$name               = "LUT_4";
    TILE2.LUT_1.i1                  = "FSM_0.OUT";
    TILE2.LUT_1.eqn                 = "!i0|i1";
    TILE2.LUT_1.i0                  = "COUNTER_1.count_match2";
    TILE2.LUT_2.$name               = "LUT_5";
    TILE2.LUT_2.i0                  = "COUNTER_2.count_match1";
    TILE2.LUT_2.eqn                 = "i0|i1";
    TILE2.LUT_2.i1                  = "FSM_0.OUT";
    TILE2.FSM_0.$name               = "FSM_3";
    TILE2.FSM_0.e0                  = "COUNTER_0.count_match1";
    TILE2.FSM_0.eqn_out             = "!s0 | s1";
    TILE2.FSM_0.eqn_s1              = "!s1&s0&e0 | s1&!s0&e1";
    TILE2.FSM_0.eqn_s0              = "!s1&e1&!e0 | !s1&s0&!e0";
    TILE2.FSM_0.e1                  = "LUT_0.OUT";
    TILE2.FSM_1.$name               = "FSM_4";
    TILE2.FSM_2.$name               = "FSM_5";
    TILE2.FSM_2.e0                  = "COUNTER_2.count_match1";
    TILE2.FSM_2.eqn_s1              = "s1&!s0&!e1 | s1&!e1&!e0 | !s1&s0&!e1&e0";
    TILE2.FSM_2.eqn_s0              = "!s0&!e1&e0 | s0&!e1&!e0";
    TILE2.FSM_2.eqn_out             = "s1&s0&!e1&e0";
    TILE2.FSM_2.e1                  = "FSM_0.OUT";
    TILE2.COUNTER_0.$name           = "COUNTER_3";
    TILE2.COUNTER_0.mode0           = "COUNTER_2.count_match1";
    TILE2.COUNTER_0.mode1           = "1";
    TILE2.COUNTER_0.match1_val      = "8";
    TILE2.COUNTER_0.match2_val      = "9";
    TILE2.COUNTER_0.reset           = "COUNTER_0.count_match1";
    TILE2.COUNTER_1.$name           = "COUNTER_4";
    TILE2.COUNTER_1.mode0           = "BOUNDARY.in0";
    TILE2.COUNTER_1.mode1           = "1";
    TILE2.COUNTER_1.serializer_en   = true;
    TILE2.COUNTER_1.match1_tap_en   = true;
    TILE2.COUNTER_1.action          = "Load";
    TILE2.COUNTER_1.event           = "LUT_1.OUT";
    TILE2.COUNTER_1.match1_tap_sel  = 15;
    TILE2.COUNTER_1.match2_tap_en   = true;
    TILE2.COUNTER_2.$name           = "COUNTER_5";
    TILE2.COUNTER_2.mode0           = "BOUNDARY.in0";
    TILE2.COUNTER_2.mode1           = "1";
    TILE2.COUNTER_2.match1_val      = "17";
    TILE2.COUNTER_2.reset           = "LUT_2.OUT";
    TILE2.OUTLUT_0.$name            = "OUTLUT_8";
    TILE2.OUTLUT_0.i0               = "BOUNDARY.in3";
    TILE2.OUTLUT_0.eqn              = "i0";
    TILE2.OUTLUT_1.$name            = "OUTLUT_9";
    TILE2.OUTLUT_1.i0               = "BOUNDARY.in4";
    TILE2.OUTLUT_1.eqn              = "i0";
    TILE2.OUTLUT_2.$name            = "OUTLUT_10";
    TILE2.OUTLUT_3.$name            = "OUTLUT_11";
    TILE2.OUTLUT_4.$name            = "OUTLUT_12";
    TILE2.OUTLUT_4.i0               = "COUNTER_1.count_match1";
    TILE2.OUTLUT_4.eqn              = "i0|i1";
    TILE2.OUTLUT_4.i1               = "FSM_0.OUT";
    TILE2.OUTLUT_5.$name            = "OUTLUT_13";
    TILE2.OUTLUT_5.i0               = "BOUNDARY.in6";
    TILE2.OUTLUT_5.eqn              = "i0";
    TILE2.OUTLUT_6.$name            = "OUTLUT_14";
    TILE2.OUTLUT_7.$name            = "OUTLUT_15";
    TILE2.HLC.$name                 = "HLC_1";
    TILE2.HLC.R0_init               = "1";
    TILE2.HLC.e0                    = "COUNTER_2.count_match1";
    TILE2.HLC.e1                    = "FSM_2.OUT";
    TILE2.HLC.R1_init               = "0x5555";
    TILE2.HLC.e2                    = "COUNTER_0.count_match1";
    TILE2.HLC.program0.$name        = "HLCP_4";
    TILE2.HLC.program0.instruct0    = "mov r1, c1";
    TILE2.HLC.program0.instruct1    = "pull r1";
    TILE2.HLC.program1.$name        = "HLCP_5";
    TILE2.HLC.program1.instruct0    = "mov r0, r3";
    TILE2.HLC.program1.instruct1    = "intr 1";
    TILE2.HLC.program2.$name        = "HLCP_6";
    TILE2.HLC.program2.instruct0    = "mov r0, r2";
    TILE2.HLC.program2.instruct1    = "intr 1";
    TILE2.HLC.program3.$name        = "HLCP_7";
    TILE2.AOC_0.$name               = "AOC_8";
    TILE2.AOC_1.$name               = "AOC_9";
    TILE2.AOC_2.$name               = "AOC_10";
    TILE2.AOC_3.$name               = "AOC_11";
    TILE2.AOC_4.$name               = "AOC_12";
    TILE2.AOC_5.$name               = "AOC_13";
    TILE2.AOC_6.$name               = "AOC_14";
    TILE2.AOC_7.$name               = "AOC_15";
    

    Best regards,

    Ryan Ma