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.

TDA4VM: Test with the SDL

Part Number: TDA4VM

Hi,expert

I used the ecc example in the SDL, and test follow the process in the example,I tested the RAM ID in the

COMPUTE_CLUSTER0_MSMC_ECC_AGGR0

For some RAMID it can be injected error sucess and generate ESM interrrupt, but for some RAMID after inject error,it won't generate ESM interrupt. Why? What other information need to config?

The error inject code follow the below code in the ecc_trigger.c

 

  • Hi,

    For some RAMID it can be injected error sucess and generate ESM interrrupt, but for some RAMID after inject error,it won't generate ESM interrupt.

    Could you please share your test logs? Which of the RAM ID instances are failing?

    Thanks,

    Josiitaa

  • Hi,

    I chose some testcase about MSMC as follows,some can generate ESM interrupt for example RAMID 96,94,93, but for RAMID 99,98,97,95,92,91,90 can't generate ESM interrupt. All the RAMIDs in MSMC_AGGR0 have been initialized in SDL_ECC_init function

    Log:

    Testcase 3: MSMC error inject test Memtype 94: ,RAMID 99,test starting

    MSMC Double bit error inject test: Subtype 0x99 test complete

    Waiting for ESM Interrupt
    Test fail

    Testcase 4: MSMC error inject test Memtype 94: ,RAMID 98,test starting

    MSMC Double bit error inject test: Subtype 0x98 test complete

    Waiting for ESM Interrupt
    Test fail

    Testcase 5: MSMC error inject test Memtype 94: ,RAMID 97,test starting

    MSMC Double bit error inject test: Subtype 0x97 test complete

    Waiting for ESM Interrupt
    Test fail

    Testcase 6: MSMC error inject test Memtype 94: ,RAMID 96,test starting
    ESM Call back function called : instType 0x3, intType 0x2, grpChannel 0x1, index 0x10, intSrc 0x30
    Take action
    Low Priority Interrupt Executed

    ECC Error Call back function called : eccMemType 94, errorSrc 0x2, ramId 96, bitErrorOffset 0x00000000, bitErrorGroup 0


    MSMC Double bit error inject test: Subtype 0x96 test complete

    Waiting for ESM Interrupt
    Testcase 6 : Injected error and got ESM Interrupt
    Test pass

    Testcase 7: MSMC error inject test Memtype 94: ,RAMID 95,test starting

    MSMC Double bit error inject test: Subtype 0x95 test complete

    Waiting for ESM Interrupt
    Test fail

    Testcase 8: MSMC error inject test Memtype 94: ,RAMID 94,test starting
    ESM Call back function called : instType 0x3, intType 0x2, grpChannel 0x1, index 0x10, intSrc 0x30
    Take action
    Low Priority Interrupt Executed

    ECC Error Call back function called : eccMemType 94, errorSrc 0x2, ramId 94, bitErrorOffset 0x00000000, bitErrorGroup 0


    MSMC Double bit error inject test: Subtype 0x94 test complete

    Waiting for ESM Interrupt
    Testcase 8 : Injected error and got ESM Interrupt
    Test pass

    Testcase 9: MSMC error inject test Memtype 94: ,RAMID 93,test starting
    ESM Call back function called : instType 0x3, intType 0x2, grpChannel 0x1, index 0x10, intSrc 0x30
    Take action
    Low Priority Interrupt Executed

    ECC Error Call back function called : eccMemType 94, errorSrc 0x2, ramId 93, bitErrorOffset 0x00000000, bitErrorGroup 0


    MSMC Double bit error inject test: Subtype 0x93 test complete

    Waiting for ESM Interrupt
    Testcase 9 : Injected error and got ESM Interrupt
    Test pass

    Testcase 10: MSMC error inject test Memtype 94: ,RAMID 92,test starting

    MSMC Double bit error inject test: Subtype 0x92 test complete

    Waiting for ESM Interrupt
    Test fail

    Testcase 11: MSMC error inject test Memtype 94: ,RAMID 91,test starting

    MSMC Double bit error inject test: Subtype 0x91 test complete

    Waiting for ESM Interrupt
    Test fail

    Testcase 12: MSMC error inject test Memtype 94: ,RAMID 90,test starting

    MSMC Double bit error inject test: Subtype 0x90 test complete

    Waiting for ESM Interrupt
    Test fail

  • Hi,

    The standalone test seems to be working. Which SDK are you using? Can you share your source code if there are any modifications you have made? You are building the ecc_app, is that correct?

    Thanks,

    Josiitaa

  • Hi,

    The SDK version is ti-processor-sdk-rtos-j721e-evm-08_06_00_12.

    I uesd the code in sdl/exmaple/ecc to build ecc_app.

    To test standalone for exmaple  RAMID 99, seems not working.

    In the code,I just modified two places,any other places need to modify?

  • test result

  • Hi,

    I am able to reproduce the issue. Checking internally to see if this is expected. I will post an update soon.

    Thanks,

    Josiitaa

  • Hi,

    The ecc_func_app in sdl/test/ecc/sdl_ecc_funcTest has a single bit error self test API for the RAM ID 99 of the COMPUTE_CLUSTER0_MSMC_ECC_AGGR0. Could you try going through that to see if it is similar to your usecase?

    Thanks,

    Josiitaa

  • Hi,

    I try to test with the ecc_func_app. For COMPUTE_CLUSTER0_MSMC_ECC_AGGR0, it seems only RAMID 7 and RAMID 100 got interrupt,others can't get interrupt.

    Thanks

  • Hi,

    For COMPUTE_CLUSTER0_MSMC_ECC_AGGR0, it seems only RAMID 7 and RAMID 100 got interrupt,others can't get interrupt.

    This depends on the ECC type. For ECC type 0(Wrapper type), you will see ESM interrupt. For ECC type 1(Interconnect type), you will not see ESM interrupt.

    The ECC type has been defined in the sdlr_soc_ecc_aggr.h file in sdl/include/soc/j721e. The self test for all the RAM IDs seem to be passing.

    Thanks,

    Josiitaa

  • Hi,

    Used  ecc_app in  /sdl/examples/ecc can get interrupt for RAMID 107 and RAMID 20,

    but in the above  ecc_func_app in sdl/test/ecc/sdl_ecc_funcTest can get interrupt in RAMID 7 and RAMID 100. The test results is inconsistent. If the ESM interrupt is associationed with ECC type, is the ecc_app test result correct?Which is correct?

  • Hi,Josiitaa

    I still have the issue. Wait for your reply.

    Thanks

  • Hi,

    Whether or not you see a trace for the ESM callback depends on the SDL API used as well. In the test app, the interconnect type endpoints in the test app will use the SDL_ECC_selfTest API, which will not print any trace about a callback. This is because it is handling the error internally as a self-test (internally this API will inject the error, then wait for the error response and report the result).
    The RAM wrapper type endpoints that are considered as “not accessible” will use the SDL_ECC_injectError API to inject the error. This is because after injection, an access of the RAM is needed to trigger the ECC callback.
    In the example application, SDL_ECC_injectError API is being used. Hence we see the callback.

    Thanks,

    Josiitaa

  • Hi,

    Thank you for your reply. Thank you for explaining the SDL API so clearly. I have no issue about sdl_ecc_funcTest now. I still have the problem about ecc_app. In the sdlr_soc_ecc_aggr.h,the RAM ID 93-RAM ID 99,there are no differnces about ECC TYPE,INJECT TYPE,ACCESSIBLE. But in ecc_app RAM ID 96,94,93 can get interrupt,RAM ID 99,98,97,95 can’t get interrupt. Why?  And if I need to get interrupt from all RAM ID,what should I do?

    Thanks.

  • Hi,

    On replacing the SDL_ECC_selfTest API with SDL_ECC_injectError API in the sdl/test/ecc/sdl_ecc_funcTest/ecc_func.c file, I am able to trigger the callbacks for RAM IDs 99,98,97,95 while running the ecc_func_app.

    Regards,

    Josiitaa

  • Hi,

    Thanks for your reply.  Replacing the SDL_ECC_selfTest API with SDL_ECC_injectError API in the sdl/test/ecc/sdl_ecc_funcTest/ecc_func.c file can trigger.

    But there's still a issue. When the error type is SDL_INJECT_ECC_ERROR_FORCING_1BIT_ONCE can trigger, but change the error type  to SDL_INJECT_ECC_ERROR_FORCING_2BIT_ONCE won't trigger.   And use the ecc_app in /sdl/examples/ecc , if the error type is SDL_INJECT_ECC_ERROR_FORCING_1BIT_ONCE also can trigger interrupt, but if change to SDL_INJECT_ECC_ERROR_FORCING_2BIT_ONCE some RAMID trigger failed. I need to get interrupt for all error type. Can you give me some help?

    Thanks

     

  • Hi,

    Can you share your logs after replacing the DL_ECC_selfTest API with SDL_ECC_injectError API and setting SDL_INJECT_ECC_ERROR_FORCING_2BIT_ONCE in the sdl/test/ecc/sdl_ecc_funcTest/ecc_func.c?

    Thanks,

    Josiitaa

  • Hi,

     replacing the SDL_ECC_selfTest API with SDL_ECC_injectError API and setting SDL_INJECT_ECC_ERROR_FORCING_2BIT_ONCE

    self test started RamId 94 starting

    ESM Call back function called : instType 0x3, intType 0x1, grpChannel 0x1, index 0x10, intSrc 0x30
    Take action
    High Priority Interrupt Executed

    ECC Error Call back function called : eccMemType 94, errorSrc 0x2, ramId 94, bitErrorOffset 0x00000000, bitErrorGroup 0

    ESM Call back function called : instType 0x3, intType 0x1, grpChannel 0x1, index 0x10, intSrc 0x30
    Take action
    High Priority Interrupt Executed

    ECC Error Call back function called : eccMemType 94, errorSrc 0x2, ramId 94, bitErrorOffset 0x00000000, bitErrorGroup 1
    self test started RamId 95 starting
    self test started RamId 96 starting

    ESM Call back function called : instType 0x3, intType 0x1, grpChannel 0x1, index 0x10, intSrc 0x30
    Take action
    High Priority Interrupt Executed

    ECC Error Call back function called : eccMemType 94, errorSrc 0x2, ramId 96, bitErrorOffset 0x00000000, bitErrorGroup 0
    self test started RamId 97 starting
    self test started RamId 98 starting
    self test started RamId 99 starting
    self test started not accessable RamId 100 starting

    add ecc_app test log:

    ecc_app  Double bit error inject(RAMID 94 and 96 pass)

    Testcase 136:

    MSMC  error inject test Memtype 94: ,RAMID 94,test starting

      ESM Call back function called : instType 0x3, intType 0x2, grpChannel 0x1, index 0x10, intSrc 0x30

      Take action

     Low Priority Interrupt Executed

     

      ECC Error Call back function called : eccMemType 94, errorSrc 0x2, ramId 94, bitErrorOffset 0x00000000, bitErrorGroup 0

     

    MSMC 2 bit error inject test: Subtype 0x94 test complete

     

     Waiting for ESM Interrupt

    Testcase 136 : Injected  error and got ESM Interrupt

    Test pass

     

     

     

    Testcase 137:

    MSMC  error inject test Memtype 94: ,RAMID 95,test starting

    MSMC 2 bit error inject test: Subtype 0x95 test complete

     

     Waiting for ESM Interrupt

    Test fail

     

    Testcase 138:

    MSMC  error inject test Memtype 94: ,RAMID 96,test starting

      ESM Call back function called : instType 0x3, intType 0x2, grpChannel 0x1, index 0x10, intSrc 0x30

      Take action

     Low Priority Interrupt Executed

     

      ECC Error Call back function called : eccMemType 94, errorSrc 0x2, ramId 96, bitErrorOffset 0x00000000, bitErrorGroup 0

     

    MSMC 2 bit error inject test: Subtype 0x96 test complete

     

     Waiting for ESM Interrupt

    Testcase 138 : Injected  error and got ESM Interrupt

    Test pass

     

     

     

    Testcase 139:

    MSMC  error inject test Memtype 94: ,RAMID 97,test starting

    MSMC 2 bit error inject test: Subtype 0x97 test complete

     

     Waiting for ESM Interrupt

    Test fail

     

    Testcase 140:

    MSMC  error inject test Memtype 94: ,RAMID 98,test starting

    MSMC 2 bit error inject test: Subtype 0x98 test complete

     

     Waiting for ESM Interrupt

    Test fail

     

    Testcase 141:

    MSMC  error inject test Memtype 94: ,RAMID 99,test starting

    MSMC 2 bit error inject test: Subtype 0x99 test complete

     

     Waiting for ESM Interrupt

    Test fail

  • Hi,

    These are the logs that I get on replacing the SDL_ECC_selfTest API with SDL_ECC_injectError API and setting SDL_INJECT_ECC_ERROR_FORCING_2BIT_ONCE in the ecc_func_app. I also had to change SDL_ECC_AGGR_INTR_SRC_SINGLE_BIT to SDL_ECC_AGGR_INTR_SRC_DOUBLE_BIT.

    Regards,

    Josiitaa

  • Hi,

    Thank you for your reply.  What SDK version are you using? Besides setting SDL_INJECT_ECC_ERROR_FORCING_2BIT_ONCE and replacing the SDL_ECC_selfTest API with SDL_ECC_injectError API,anyother change in the code?

    Thanks

  • Hi,

    I am able to reproduce your issue on SDK 8.6. I am checking internally to see if there are any other changes to be made to test double bit error injection. I will get back to you.

    Thanks,

    Josiitaa

  • Hi,

    There are two things that you will have to verify before performing a double bit error injection:

    1. Each ECC aggregator has a number of checker groups to identify where the error has occured. Endpoints that have their checker group type as parity do not support double bit error injection. You can verify this in the sdl/include/soc/j721e/sdlr_soc_ecc_aggr.h file. For example RAM ID 95 has 191 checker groups and they all have the checker type as 2u (Parity), hence 2 bit error injection fails.

    2. You must also verify the width of the checker group. For example, in case of RAM ID 97, even though the checker type is not 2 for group 6, the width is 1U, therefore, 2 bit error injection is not possible.

    If any of the checker groups  of a specific RAM ID satisfy both these conditions, then we get a callback or the 2 bit error injection passes.

    Thanks,

    Josiitaa

  • Hi,

    Thank you for your answer.  I think this resolved my issue.