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.

two questions about the STC of TMS570ls3137

Other Parts Discussed in Thread: TMS570LS3137

I have two questions about the STC of TMS570ls3137.

First, what is intervals real meaning? When I add one more interval, the test cycle will add 1365. And if I set 8 intcount in STCGCR0, the intervals is 8 and to run this function three times, can its test coverage achieve 90.21? In every 1365 test cycle, does it run the same test program?

Second, at STCGCR0 we can set RS_CNT at 0 so that continue STC run from the previous interval. But how can I stop STC run at some interval and to make STC continue run at which I stop last time? Is there any event can stop the STC run lead to STC run cannot run from interval0 to inerval24 directly?

  • Hello user4267432;

    First, the concept of intervals closely maps to a test vector approach. In other words, each interval is a separate test that is testing different areas of the core. With this said, it is important to know that the tests are designed to test the core at gate levels using the microcode stored in the STC ROM. Each separate interval executed will gain coverage of a percentage of the overall gates. For example if you execute interval 0 repeatedly, you will only get 62.13% coverage and never more. If you add the second interval, you will get approximately an additional 8% coverage, a third will give + approx. 4.4%, and you will only achieve the full 90.21% coverage when all 24 intervals have been executed.

    With this in mind, one approach to performing the CPU BIST is to execute a few intervals periodically in your application. For example, if you have a 500us main loop, you would execute 8 intervals continuing from the last executed interval in the next loop until all 24 are executed. This means it would take 3 iterations of your main loop before you have the full capability of the coverage but you would have this during the active execution of the application. It is key to understand that during the CPU BIST, the CPU is completely unavailable to the application so you must plan the number of intervals in accordance with your applications ability to handle this period of unresponsiveness.

    Finally, the STCGC0 register has the field that determines how many intervals are executed for each loop/instantiation as you mentioned in your post. As long as you set the RS_CNT field to continue STC run from previous interval, you will always get a continuation. You can check this by looking at the interval count given in STCCICR which you will see increment for each interval execution and which will allow you to monitor the level of coverage you have achieved so far.
  • Hi Chuck Davenport,
    Thank you very much. It is really helpful.
    I just want to ensure one thing. If I set STCGC0 register intcount is 8 and set STCGC0[0] RS_CNT is 0,then I run the main loop twice. Can I read STCCICR is 16?
  • Yes. This should be the case.
  • Thank you very much.