Emulation and SIL3 Diagnostic Modes
258
SPNU503C – March 2018
Copyright © 2018, Texas Instruments Incorporated
F021 Flash Module Controller (FMC)
5.6.2.1
ECC Data Correction Test Mode: DIAG_MODE = 1
This diagnostic mode can be enabled while ECC logic is also enabled for normal bank read. The Flash
wrapper will arbitrate the usage of the ECC logic if a conflict occurs between a normal bank read and
diagnostic checking.
When in diagnostic data correction mode, FEMU_xxxx registers contain the 64-bit EEPROM emulation
data register, the 19-bit emulation address register and the 8-bit emulation check-bit register. These
values are used to enter diagnostic data to exercise the SECDED logic. The user can apply a value with
an error in any bit location. When the DIAG_TRIG is set, the SECDED calculation is done and the
corrected values are saved back into the same FEMU_xxxx registers. The error position register is also
updated to indicate the bit position in error. Either ERR_ONE_FLG or ERR_ZERO_FLG bit is set when a
correctable error is detected. The D_COR_ERR bit will also be set in FEDACSTATUS register. For
uncorrectable error, the error status bit ERR_PRF_FLG is set as well as the D_UNC_ERR bit in the same
register. Status bits should be cleared by the user before applying a new diagnostic data.
It takes multiple CPU transactions to preload the registers with diagnostic values. During this time, the
result of the diagnostic logic such as comparator can change. User should apply a trigger by setting
DIAG_TRIG bit to 1 as a qualifier after all registers are loaded with intended values. The DIAG_TRIG
serves to validate the diagnostic result. Only when DIAG_TRIG is high and a failing result in the diagnostic
logic will update the corresponding status flag and the position register.
5.6.2.2
ECC Syndrome Reporting Test Mode: DIAG_MODE = 2
When in diagnostic syndrome reporting mode, the resulting syndrome calculated by SECDED is captured
into the ECC check-bit register FEMU_ECC. The syndrome can be read by the user and compare with a
known syndrome value. Diagnostic data in FEMU_DxSW and FEMU_ADDR is not corrected and the error
position register is not updated. The FEDACSTATUS register error bits are not updated during this mode.
See
For devices with ECC_IN_CPU (CONF_TYPE = 5), the resulting FEMU_ECC value represents the 32-bit
byte swapped values. Here, bytes 7654_3210 are rearranged to 4567_0123. For instance, if the syndrome
shows an error in data bit 33, it would really be an error in EMU_DMW bit 57. You can also XOR the data
bit position with “011000”. (21h XOR 18h => 39h)
NOTE:
The user should pre-load the registers with the test values with DIAG_TRIG = 0. After all test
values are written, the DIAG_TRIG should then be set high to validate the diagnostic result.