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.

pbistSelfCheck()

Other Parts Discussed in Thread: HALCOGEN

Why is this register marked as reserved (do not write to this location) in SPNU499b, if halcogen generates code to  run the pbist, as the comment suggests?

    /* PBIST_RUN */
    pbistREG->rsvd1[1U]    = 1U;

How can I write working code with this lack of information?

Regards,

Thomas Weber

  • To run a PBIST test on a memory, please follow the procedure in the TRM. I will pass your question to the Halcogen team about why reserved register is used in creating the pbistSelfCheck() function which is a diagnostic test for the PBIST module.

    Thanks and regards,

    Zhaohong
  • Hi Thomas,

    PBIST is the module originally designed for In build Memory testing during the Design and manufacturing phase of the device. For safety applications we thought it would be good feature for the customers during application runtime and exposed this module out with certain features reserving because of potential risk to the device memory if used in non-recommended way. 

    Enough Story!! :) 

    pbistSelfCheck() functions diagnostic check on the PBIST module, This function uses custom algorithm which will make the PBIST fail to ensure that PBIST is capable of detecting and indicating a memory self-test failure.This is the optimized and safer way to check the PBIST controller. The reserved register that this function sets is a bit to run the custom algorithm which you could notice few lines just above the line  "pbistREG->rsvd1[1U]    = 1U;" .

    We do not want customers to write to the "RSVD" registers because there is lot of chances for user to make error with custom algo and make the device memory test to produce erroneous result. 

    Similar is the case with errata_PBIST_4() function. 

    We encourage you to use these functions as is to make sure PBIST module diagnostics are done in elegant way. 

    You could also do pbist Self Check by simply choosing wrong memory against wrong algorithm. i.e you can select a single port Memory and choose a dual port Test algorithm ( basically not follow PBIST RAM Grouping Table in datasheet) and try running you should get an error, but this will take up some cycles in startup time unlike the current implementation in HALCoGen.

    Sorry for the long message!.