# Memory Test

Hi,

I m doing a diagnostic test program for memory. I would like to write a program to test with all different methods. I have heard of terms like checkerboards, march c, sliding diagonal. But I do not know what it means and the algorithms. Could some one point me in the right direction to start my coding e.g to explain the algorithms? Thanks.

• : Hi,
:
: I m doing a diagnostic test program for memory. I would like to write a program to test with all different methods. I have heard of terms like checkerboards, march c, sliding diagonal. But I do not know what it means and the algorithms. Could some one point me in the right direction to start my coding e.g to explain the algorithms? Thanks.
:
:

These are referring to the data pattern written into memory and read back and compared against the known value.

For a checkerboard, I'd use FF,00,FF,00,FF,00,FF.... but other patterns like 55AA55AA55AA can also be useful. (inverting bit patterns)

Sliding or walking (marching perhaps) simply means taking a single bit and applying it to bytes at different positions:

A pattern of 01,02,04,08,10,20,40,80 "walks" a single bit held as a 1 across all 8 bit positions.

The idea is to test every single bit in every single byte in the memory you are testing. You'll want to test to make sure a bit can be written as a 1, and also written as a 0 to ensure that a single bit isn't stuck as a 1 or a 0.

You also want to test every bit as a 1 when every other bit in that byte is a 0, and vice versa. This ensures that bits are independantly toggling of each other.

I can't help you with the C algorithms (I'm an assembly programmer) but once you understand the concept, it shouldn't really be that hard to write the code.

-jeff!

• : : Hi,
: :
: : I m doing a diagnostic test program for memory. I would like to write a program to test with all different methods. I have heard of terms like checkerboards, march c, sliding diagonal. But I do not know what it means and the algorithms. Could some one point me in the right direction to start my coding e.g to explain the algorithms? Thanks.
: :
: :
:
: These are referring to the data pattern written into memory and read back and compared against the known value.
:
: For a checkerboard, I'd use FF,00,FF,00,FF,00,FF.... but other patterns like 55AA55AA55AA can also be useful. (inverting bit patterns)
:
: Sliding or walking (marching perhaps) simply means taking a single bit and applying it to bytes at different positions:
:
: A pattern of 01,02,04,08,10,20,40,80 "walks" a single bit held as a 1 across all 8 bit positions.
:
: The idea is to test every single bit in every single byte in the memory you are testing. You'll want to test to make sure a bit can be written as a 1, and also written as a 0 to ensure that a single bit isn't stuck as a 1 or a 0.
:
: You also want to test every bit as a 1 when every other bit in that byte is a 0, and vice versa. This ensures that bits are independantly toggling of each other.
:
: I can't help you with the C algorithms (I'm an assembly programmer) but once you understand the concept, it shouldn't really be that hard to write the code.
:
:
: -jeff!
:
:
Thanks! For the reply! I have another question. What is NPSF and how do I check for those faults?

• : Thanks! For the reply! I have another question. What is NPSF and how do I check for those faults?
:

Jeeze. I had to google on it just to find out myself!
(N) PSF are pattern specific faults. N is near or neighboring as far as I can tell.

http://larc.ee.nthu.edu.tw/~cww/n/625/6253/m02MT0402.pdf
"The PSF is a general (multi-cell) coupling fault, which causes the content of a memory cell, or the ability to change the content, to be influenced by certain patterns of other cells in the memory"

These failures are near impossible to find. Essentially certain vaules written to certain bytes in memory can cause failures. In the case of nearby failures, writing data patterns to bytes can cause other bytes that are not being written to to fail. Essentially you'd have to write random data to the memory area you want to test and try reading it all back. In the memory tests that I've worked with, there were known patterns of data, discovered through trial and error, that caused memory to fail on occasion. I won't even attempt to explain how that happens-it's way over my head.

Heavy switching patterns can also bring out failures. Hold 1 bit in a byte low and toggle all other bits surrounding it high and low and see if your target bit ever toggles on its own. Then hold that bit high and see if it ever goes low on its own. Repeat ad nauseum on the amount of bytes that are switching while still holding 1 bit.

-jeff!