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

 

  1.   C2000™ Hardware Built-In Self-Test
  2.   Trademarks
  3. 1Introduction
    1. 1.1 HWBIST Overview
      1. 1.1.1 HWBIST Working In-System
    2. 1.2 HWBIST Failure Response
    3. 1.3 Advantages of Using HWBIST In-System
  4. 2Using HWBIST In-System
    1. 2.1 Fundamental HWBIST Operation
      1. 2.1.1 Initializing the HWBIST Controller
      2. 2.1.2 Executing HWBIST
        1. 2.1.2.1 Executing HWBIST Micro-Run
        2. 2.1.2.2 Executing HWBIST Full-Run
      3. 2.1.3 Error Management
    2. 2.2 Managing HWBIST on Dual-Core Device
      1. 2.2.1 Semaphore Management
      2. 2.2.2 Interprocessor Communications
    3. 2.3 System Considerations When Using HWBIST
      1. 2.3.1 Interrupt Latency
      2. 2.3.2 Power Considerations
      3. 2.3.3 HWBIST Memory Requirements
      4. 2.3.4 Injecting Errors
    4. 2.4 Debugging HWBIST In-System
  5. 3References
  6. 4Revision History

Executing HWBIST Full-Run

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.

GUID-C8FFC806-C2A9-455E-88D7-1553AFBA9586-low.gif Figure 2-3 STL_HWBIST_runFull() Flow Chart

To perform a full HWBIST with 99% coverage using the STL_HWBIST_runFull() function, execute the following sequence of functions:

  1. If on a multi-core device, claim the HWBIST semaphore.
    STL_HWBIST_claimSemaphore();
  2. Execute a HWBIST full run.
    STL_HWBIST_runFull();
  3. If on a multi-core device, release the HWBIST semaphore.
    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.

GUID-50502607-4E55-45CC-AB3C-519CA7026B9C-low.gif Figure 2-4 Full HWBIST in Single Time-Slice