e1844: EBI: Timed out accesses (external TA only) may generate spurious TS_B pulse
Errata type: Errata
Description: When an external Transfer Acknowledge (TA) access times out, there is a boundary case
where the External Bus Interface (EBI) asserts a Transfer Start (TS) pulse as if starting
another access, even if no other internal request is pending. The boundary case is when the
access is part of a "small access" set (sequence of external accesses to satisfy 1 internal
request), and when the external TA arrives around the same cycle (+/- 1 clkout cycle) as the
bus monitor timeout (BMT).
Most EBI signals will stay negated during this erroneous transfer (CS, OE, WE, BDIP).
However, along with TS assertion, RD_WR may also assert (for 1 cycle only, during this
phantom TS), if the prior access that timed out was a write. This condition can generate an
erroneous write transfer (with CS negated). The address (ADDR pins) will be incremented to
the address of the next small access transfer that would have been performed, and the value
driven by the EBI on the DATA bus (if a write) may change. Busy Busy (BB) may be asserted
along with the phantom TS (if external master modes is enabled in the EBI Module
configuration Register, SIU_MCR[EXTM]=1), and the Transfer Size (TSIZ) value may change.
Internally, the EBI terminates the timeout access, and the internal state machine goes to IDLE
after the timeout access. So the EBI will not be "hung" after the spurious TS, and the EBI does
respond properly to future internal or external requests.
However, the side effect of the spurious TS is that it may cause an external non-chip-select
device to think an access is being performed to it, resulting in 1 of 2 bad effects (depending on
RD_WR value during spurious TS):
1) RD_WR high (read): ext. device may drive back read data some number of cycles later,
possibly conflicting with a future real access (e.g. write) that might have started by that time.
2) RD_WR low (write): ext. device may get an erroneous write performed to it
Note that the soonest possible TS for a real transfer (after the timeout transfer), is 2 cycles
after the spurious TS (so 1 cycle gap), meaning this Bug will never result in a 2-cycle TS pulse.
Workaround: Do not enable bus monitor in the EBI Bus Monitor Control Register (keep
SIU_BMCR[BME]=0), unless at least 1 of the following 3 conditions can be met:
1) The external TA will never be asserted from external device within 1 cycle of when the
access would be timing out (see NOTE below)
2) No internal requests greater than external bus size will be performed (e.g. doing data-only
fetches of 32 bits or less on 32-bit data bus or 16 bits or less on a 16 bit bus only, so a "small
access" could never occur).
3) The side effect of this TS pulse driven to non-CS device is judged to be tolerable in system
after a timeout error occurs; depends on spec of external device and user requirements for
data coherency after a timeout error occurs.
NOTE: Of the 3 above, #1 is easiest to achieve in most systems. If the maximum possible TA
latency of the external device is known, the user just needs to set the BMT period more than
(external device maximum latency + 2), and this condition will not occur.
e2773: ECSM: ECC error reported on prefetches outside the flash
Errata type: Errata
Mask Set Errata for Mask REVB, Rev 10 JUL 2013
8 Freescale Semiconductor, Inc.