7 * \copyright Copyright (c) 2013 Infineon Technologies AG. All rights reserved.
8 *
9 *
10 * IMPORTANT NOTICE
11 *
12 *
13 * Infineon Technologies AG (Infineon) is supplying this file for use
14 * exclusively with Infineon's microcontroller products. This file can be freely
15 * distributed within development tools that are supporting such microcontroller
16 * products.
17 *
18 * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
19 * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
20 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
21 * INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL,
22 * OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
23 *
24 *
25 * \defgroup IfxLld_Mtu_Usage How to use the Mtu driver?
26 * \ingroup IfxLld_Mtu
27 *
28 * The Memory Test Unit (MTU) controls and monitors the test, initialization and data integrity checking functions of the various internal memories in the device
29 *
30 * The Mtu driver provides set of routines for various Mbist operations
31 *
32 * In the following sections it will be described, how to integrate the Mtu driver into the application framework.
53 * The Sram initialisation can be triggered by calling IfxMtu_clearSramStart() function, then can be queried for completion in a task using IfxMtu_isMbistDone. Once it's completed, then IfxMtu_clearSramContinue() has to be
54 * called.
55 * Note: The Safety Endinit watchdog has to be cleared before and set after for the IfxMtu_clearSramStart() and IfxMtu_clearSramContinue() functions.
302/** \brief Function to Clear the MBIST SRAM (Synchronous mode).
303 * Note: The function clears & sets safety endinit bit while running the test to prevent watchdog TO and automatically restores the endinit state (same state at the time of entering the function) at the end.
304 * \param mbistSel Memory Selection
305 * \return None
306 *
307 * A coding example can be found in \ref IfxLld_Mtu_Usage
322/** \brief This Function triggers the Clear the MBIST SRAM operation (Asynchronous operation). It doesn't wait till the end of operation.
323 * The application has to poll the Mbist status (IfxMtu_isMbistDone()) in a task and once the operation is done, the IfxMtu_clearSramContinue() function should be called to complete the operation.
324 * If Synchronous usage is need, use IfxMtu_clearSram() function.
325 * Note: The function should be called with safety endinit bit cleared.
326 * \param mbistSel Memory Selection
327 * \return None
328 *
329 * A coding example can be found in \ref IfxLld_Mtu_Usage
354/** \brief Run CheckerBoard test. This test consists of writing the physical checkerboard pattern into the memory, then reading it back for verification
355 * Note: The function clears & sets safety endinit bit while running the test to prevent watchdog TO and automatically restores the endinit state (same state at the time of entering the function) at the end.
365/** \brief Run March U test. This test MARCHES 0 and 1 values through the memory array in an up and down direction. More precisely, 0 and 1 values are propagated through the memory in each direction; i.e. a single bit cell toggles into each direction with the neighboring cells having a given value and, in another run, the inverse given value.
366 * Note: The function clears & sets safety endinit bit while running the test to prevent watchdog TO and automatically restores the endinit state (same state at the time of entering the function) at the end.
376/** \brief This function runs the Non-Destructive Inversion test algorithm.
377 * Non-Destructive Inversion test can be considered as a simple linear test that is able to find all Stuck-At faults (the cell remains stuck at a value for any operation) without destroying any user data. The test accesses every Word in the address range defined by the RANGE register, four times.
378 * Test Steps:
379 * 1. Read data Word including check bits
380 * 2. write back all bits inverted
381 * 3. Read data Word including check bits
382 * 4. Write back all bits inverted
383 * At the end of this procedure the user data remains unchanged and and every bit has been set to 0 and 1. Any single Stuck-At error will be visible as a correctable error.
384 * Note: The function clears & sets safety endinit bit while running the test to prevent watchdog TO and automatically restores the endinit state (same state at the time of entering the function) at the end.
443/** \brief Returns the tracked SRAM error addresses and memory blocks which are stored in the MBIST ETRR registers.
444 * CAUTION: This function should be called after enabling Mbist Shell (Refer Errata: MTU_TC.005).
445 * \param mbistSel Memory Selection
446 * \param trackedSramAddresses will contain the tracked error addresses in trackedSramAdresses[x].B.ADDR and affected blocks in sramAddresses[x].B.MBI
447 *
448 * The array size shall be IFXMTU_MAX_TRACKED_ADDRESSES
449 * \return number of tracked errors (0..IFXMTU_MAX_TRACKED_ADDRESSES)
450 *
451 * Example usage to print out tracked errors of a given memory:
452 *
453 * We assume that the MTU clock has already been enabled, and that the MBIST instance has been selected; e.g. for LMU:
499/** \brief Returns the error tracking overflow status.
500 * CAUTION: This function should be called after enabling Mbist Shell (Refer Errata: MTU_TC.005).
501 * \param mbistSel Memory Selection
502 * \return TRUE if more errors were detected since last clear than error tracking registers are available, or if more than one memory block was in error at the same time.