Emulation and SIL3 Diagnostic Modes
260
SPNU503C – March 2018
Copyright © 2018, Texas Instruments Incorporated
F021 Flash Module Controller (FMC)
5.6.2.5
Address Tag Register Test Mode: DIAG_MODE = 5
NOTE:
The test code for Diag mode 5 needs to be executed from RAM or when executed from
Flash, the Flash Address Wait State (ASWSTEN) bit in the FRDCNTL register should be set
to 1. This is due to conflicting accesses by the CPU and Flash wrapper during the test
execution.
There are four sets of address tag registers. Each set consists of a primary and a duplicate address tag
registers. Normally, these registers store the recently issued CPU addresses during pipeline mode. To
detect errors in these registers, the primary and duplicate address tag registers are continuously
compared to each other if the buffer is valid. If they are different, then an address tag register error event
is generated.
These registers are memory-mapped. All primary address tag registers are memory-mapped to one
address and, likewise, all duplicate tag registers are mapped to another single address. During diagnostic
mode, each individual set can be selected by the DIAG_BUF_SEL (Diagnostic Buffer Select) bit in the
FDIAGCTRL register. User-supplied values can be written into the selected set during a diagnostic mode.
If different values are written into the primary and the duplicate address tag registers, then the
ADD_TAG_ERR (Address Tag Error) flag in the FEDACSTATUS register will be set. This diagnostic mode
uses the FRAW_DATAL register to supply the alternate address when DIAG_TRIG is set. The
FUNC_ERR_ADD register will not contain useful information during Diag mode 5. It will also trigger the
normal uncorrectable register freeze.
All address tags and buffer valid bits will be cleared to 0 when leaving Diag mode 5. Going to mode 5 and
back out clears the pipeline buffers and is useful for other test modes also. No functional checking is done
by the address tag logic while the mode is 5.
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.