BCM1250/BCM1125/BCM1125H
User Manual
10/21/02
B r o a d c o m C o r p o r a t i o n
Page
98
Section 5: L2 Cache
Document
1250_1125-UM100CB-R
ECC D
IAGNOSTIC
M
ANAGEMENT
A
CCESSES
(ECC_
DIAG
BITS
NONZERO
)
Management accesses with the ECC_diag field nonzero modify the behavior of the cache to allow access to
the raw memory bits for testing.
Management reads with the ECC_diag [0] bit set will return the raw data from the addressed index and way.
The data ECC checking and correction is disabled, the raw data from the cache memory array will be returned
and will always be marked valid.
As the management read is done the tag associated with the entry is transferred to the
l2_read_tag
register.
Again the ECC correction is modified. The register will contain the raw tag data and the raw tag ECC bits. The
register can be read by the CPU as in the standard management access, with the same care required about
read ordering.
The ECC_diag address field modifies the behavior of management writes to allow data and tag ECC errors (of
any number of bits) to be written into the cache, to test both the hardware and software ECC detection and
recovery mechanisms.
Management writes with the ECC_diag address field nonzero are used to check the ECC bits. The
combinations allow direct writes from the data into the cache tag, and can write using ECC information from a
previous write.
summarizes the operations.
Data ECC errors can be stimulated with two writes. The first write (which is a normal write or standard
management write) sets the index and way for the test along with the data ECC bits to be used for the test.
The second write (an ECC diagnostic write of type 2’b01) replaces only the actual data. If the data of the
second write differs by a single bit from the data in the first write a subsequent standard read will get the data
from the first write flagged with a corrected ECC error. If the second write had two bits difference the
subsequent read will get an uncorrectable ECC error.
Tag ECC errors can also be stimulated with two writes. The first write writes the tag bits with correct ECC to
be used for the test (using ECC diagnostic write of type 2’b10). The second write changes the tag bits but uses
the ECC bits from the first write (using an ECC diagnostic write of type 2’b11). If the tag generated by the first
write differs by a single bit from the tag in the second, a subsequent standard management read will be flagged
with a corrected tag ECC error and the
l2_read_tag
register will hold the reconstructed tag for the second
write. If the tag generated by the first write had two bits difference the subsequent read will get an uncorrectable
tag ECC error.
Table 55: ECC Diagnostic Operations
ecc_diag[1:0]
Read
Write
2’b00
Normal
Normal
2’b01
Raw Access ECC disabled
Write data to the cache, write the tag from the data bits.
Generate tag ECC bits.
The tag address bits are written from ZBbus bits [23:0].
The tag valid bit is written from ZBbus bit [24].
The tag dirty bit is written from ZBbus bit [25].
Note that these are from the double-word at offset h18.
2’b10
Reserved
Write current data with the ECC bits from the previous cache write.
2’b11
Reserved
Write data to the cache, write the tag from the data bits (as in code 2’b01).
Use tag ECC bits from the previous write.