AM273x MCU+ SDK  08.06.00
STC

The Self-Test Controller (STC) is used to test logic cores based on the On-Product Multiple Input Signature Register (OPMISR) scan compression architecture.The self test controller facilitates complete isolation of the logical segment under test from rest of the system during the self-test run.

The STC have some internal configuration.Gernally The configuration need not to be changed for running STC. For running STC The core should be in low power mode for which STC is about to run.

Features Supported

The STC module provides the following functionality:

  • Ability to configure a STC instance
  • Implement OPMISR controller along with On-chip Self-Test controller for the synthesizable module logic which enables to achieve high test coverage.
  • Ability to divide the complete test run into independent test sets (intervals).
  • Capable of running the complete test as well as running few intervals at a time.
  • Ability to continue from the last executed interval(test set) as well as ability to restart from the beginning(1st interval in the ROM) or start from the 1st interval of each segment.

Errors detected by the STC module during operation are reported via ESM error (application will receive via ESM application callback).

SysConfig Features

  • None

Features NOT Supported

  • None

Important Usage Guidelines

  • Once R5F STC is Done, R5F Core will be reset and STC Reset cause will be set. For running the STC again on R5F, SOC will need power cycle.
  • Once DSP STC is Done, DSP Core will be reset and STC Reset cause will be set. For running STC again for DSP, SOC will need power cycle..

For DSP STC, before running STC from R5F, Interrupt register and ISR for that interrupt should be running in DSP core. ISR should have a flow to take DSP Core in to low power mode.

Example Usage

The following shows an example of SDL STC API usage by the application.

Include the below file to access the APIs

#include <sdl/sdl_stc.h>
First of all, Need to check that R5F STC has been Done or not, for this the below API will be used-
SDL_STC_testResult test_Result;
test_Result= SDL_STC_getStatus(SDL_STC_Inst instance);
According to return result of this API, Return value type is ENUM as below
typedef enum
{
}SDL_STC_testResult;
if return value is (SDL_STC_NOT_RUN), Then STC need to run, One should call below API.
For running STC, Need to Provide two inputs.
1. Instance for which, STC need to be run.
2. testType(Positive or negative)
typedef enum
{
/** The STC test should be completed and the test passed for this testType */
SDL_STC_TEST,
/** The STC test should be completed and the test failed for this testType */
SDL_STC_NEG_TEST
}SDL_STC_testType;
For Core specific STC, Core instance also need to put as input
typedef enum {
SDL_STC_INST_MAINR5F0,
SDL_STC_INST_DSP,
INVALID_INSTANCE,
} SDL_STC_Inst;
For DSP STC, the below API need to be called before calling selfTest API-
void SDL_STC_dspInit(void);
int32_t sdlResult=SDL_PAAS;
sdlResult= SDL_STC_selfTest(SDL_STC_Inst instance, SDL_STC_testType testType);
if STC will be Done Successfully, it will return nothing, beacuse core reset would have been done till now.
if something will be going wrong, it will return something (!=SDL_PASS) value.
For DSP STC, it will return sdlResult= SDL_PASS
Then need to check the status for DSP STC, call the below API
test_Result= SDL_STC_getStatus(SDL_STC_Inst instance);

API

SDL Self Test Controller(STC)

SDL_STC_COMPLETED_FAILURE
@ SDL_STC_COMPLETED_FAILURE
Definition: stc/v0/sdl_stc.h:202
SDL_STC_COMPLETED_SUCCESS
@ SDL_STC_COMPLETED_SUCCESS
Definition: stc/v0/sdl_stc.h:200
SDL_STC_getStatus
int32_t SDL_STC_getStatus(SDL_STC_Inst instance)
This API is used to get status for STC result.
SDL_STC_NOT_RUN
@ SDL_STC_NOT_RUN
Definition: stc/v0/sdl_stc.h:206
sdl_stc.h
SDL_STC_Inst
SDL_STC_Inst
Definition: sdl_stc_soc.h:83
SDL_STC_NOT_COMPLETED
@ SDL_STC_NOT_COMPLETED
Definition: stc/v0/sdl_stc.h:204
INVALID_RESULT
@ INVALID_RESULT
Definition: stc/v0/sdl_stc.h:208