Hi,
I have been trying to use the TCRAM wrapper test mechanism to verify behavior of the redundant address decode and compare logic. I have run into some confusing results.
To start off, I make sure to clear the appropriate registers like RAMUERRADDR, RAMERRSTATUS, set a test address in RAMADDRDECVECT, and enable and set the test mode to an inequality test in RAMTEST. I then trigger the test by writing to the appropriate pin in RAMTEST. So far so good...
I run the test on B0TCM, and then on B1TCM (while debugging). Here are the issues I see:
1) RAMMERRSTATUS bit that gets raised is ADDR DEC FAIL, (bit 2), not ADDR COMP LOGIC FAIL (bit 4), as the TRM says.
2) The first test (B0TCM), RAMERRSTATUS is read and cleared properly, but the appropriate ESMSR2 channel also gets raised. However, even though this channel is raised, the ERROR pin is not driven low as expected.
3) The second test (B1TCM), RAMERRSTATUS is viewed to have been raised in my debugger, but when my code tries to read it, it comes out as cleared. The appropriate ESMSR2 channel is also raised, except this time the ERROR pin IS driven low.
When I repeat the test, switching the order so I test B1TCM first and then B0TCM, I see the opposite (so B0TCM and B1TCM are no different, its whoever is tested first acts likt step (2) and whoever is tested second acts like step (3).
My direct questions are:
(A) Is it correct to expect a RAMERRSTATUS ADDR DEC FAIL instead of a ADDR COMP LOGIC FAIL?
(B) Why does the Group 2 ESM signal of the first test not trigger the ERROR pin while the second test does? I thought all Group 2 ESM signals were fixed to lower the ERROR pin.
(C) Why can my first test read RAMERRSTATUS correctly while my second test cannot? (These are different registers in memory too, so I dont know why the order matters).
The only similarity I can think of is I use the same test address in RAMADDRDECVECT.
Thanks,
Nate