AM261x MCU+ SDK: STC

| AM261x MCU+ SDK 26.00.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

Note
  It is strongly recommend to use SysConfig where it is available instead of using direct SW API calls. This will help simplify the SW application and also catch common mistakes early in the development cycle.

# Features NOT Supported

- None

# Important Usage Guidelines

- R5F STC can be tested by enabling sysconfig in SBL_NULL bootloader example only, not in standalone example.

# 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_COMPLETED_SUCCESS,
SDL_STC_COMPLETED_FAILURE,
SDL_STC_NOT_COMPLETED,
SDL_STC_NOT_RUN,
INVALID_RESULT
}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;
int32_t sdlResult=SDL_PASS;
sdlResult = SDL_STC_selfTest(SDL_STC_Inst instance, SDL_STC_testType testType,SDL_STC_Config *pConfig);
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.

# API

SDL Self Test Controller(STC)

SDL_STC_getStatus
int32_t SDL_STC_getStatus(SDL_STC_Inst instance)
This API is used to get status for STC result.
SDL_STC_COMPLETED_FAILURE
@ SDL_STC_COMPLETED_FAILURE
Definition: stc/v0/sdl_stc.h:199
sdl_stc.h
SDL_STC_NOT_COMPLETED
@ SDL_STC_NOT_COMPLETED
Definition: stc/v0/sdl_stc.h:201
SDL_STC_Inst
SDL_STC_Inst
Definition: sdl_stc_soc.h:79
SDL_STC_NOT_RUN
@ SDL_STC_NOT_RUN
Definition: stc/v0/sdl_stc.h:203
SDL_STC_COMPLETED_SUCCESS
@ SDL_STC_COMPLETED_SUCCESS
Definition: stc/v0/sdl_stc.h:197
INVALID_RESULT
@ INVALID_RESULT
Definition: stc/v0/sdl_stc.h:205