SPRACA7A October 2017 – September 2022 TMS320F28075 , TMS320F28075-Q1 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S
To execute a full run of the HWBIST of the CPU under test, call the following function:
STL_HWBIST_runFull();
The errorType parameter is an enumerated type STL_HWBIST_Error, which specifies the type of error to inject before executing a full run of HWBIST test. If on a multi-core device, this function expects the CPU trying to run a full HWBIST to claim the HWBIST semaphore before calling it. This function initializes the HWBIST engine and then injects the errorType. It also registers the STL_HWBIST_errorNMIISR() function as the NMI handler. The function then performs a full HWBIST run, achieving the maximum coverage supported by the device. If there is a failure in the HWBIST, then a global error flag is set and the return value specifies a failure. Additionally, if the coverage is not achieved in the expected micro-runs then the test fails due to an overrun. Before returning, the function restores the previous NMI vector.
If the HWBIST full run test passes with no errors within the expected number of micro-runs, then this function returns the status of the HWBIST and the value will be a bitwise OR of the values STL_HWBIST_BIST_DONE and STL_HWBIST_MACRO_DONE. If the test fails, then the status of the HWBIST and the return value of the function is a bitwise OR of some combination of the following values: STL_HWBIST_NMI, STL_HWBIST_BIST_FAIL, STL_HWBIST_INT_COMP_FAIL, STL_HWBIST_TO_FAIL, and STL_HWBIST_OVERRUN_FAIL.
For more information about these types of errors, see the SDL User's Guide.
Figure 2-3 shows a flow chart detailing the design of the STL_HWBIST_runFull() function on a device that supports 99% coverage.
To perform a full HWBIST with 99% coverage using the STL_HWBIST_runFull() function, execute the following sequence of functions:
STL_HWBIST_claimSemaphore();
STL_HWBIST_runFull();
STL_HWBIST_releaseSemaphore();
This sequence executes a full HWBIST in a single time-slice. Figure 2-4 shows a full HWBIST run in a single time-slice.