.Trashed 1744221879 ACT Memory Test
.Trashed 1744221879 ACT Memory Test
Abstract
Discussion
Volatile memory:
This is any memory that loses data when its power is turned off. This memory
type is more commonly called Random Access Memory (RAM). The two main types are
Static and Dynamic. Static RAMs (SRAMs) retain data as long as power is
applied to them. The data stored in Dynamic RAMs (DRAMs) gradually decays and
must be periodically refreshed. There are many variations of each of these
memory types. Members of the DRAM family include Synchronous DRAM, Double Data
Rate SDRAM, and Rambus (TM). The SRAM family is usually differentiated as
synchronous or asynchronous. Some speciality memory such as Content-
Addressable-Memory and multi-port memories are usually created with SRAM
circuitry.
Non-volatile memory:
This memory will retain data through periods without power. The most common
types of these memories are: ROM, EPROM, EEPROM, and flash. Read-Only-Memory is
produced with its data programmed into it and cannot be changed. Erasable
Programmable Read Only Memory is erased by exposing it to a long period of
ultraviolet light. Electrically Erasable Read-Only-Memory can be erased with an
electric signal, though that operation is slow. Flash memories are EEPROMs that
can be written faster, in a “flash”. The EEPROM and flash varieties of non-
volatile memories can be both written and read, although their reading speed
takes nanoseconds and their writing speed takes microseconds.
What is special about testing memory?
With the simplest digital circuits, you check all combinations of the inputs.
These combinations form a logic truth table. More complicated digital circuits
have specific states they can take on and specific transitions between states.
For instance, microprocessors have a set of opcodes and any other numeric value
in the opcode field is illegal. When logic for these types is designed, the
circuit design software usually creates a set of test vectors, so testing is
often not much more than using these vectors to apply inputs and compare the
device outputs to the expected outputs.
Each storage element in a memory can take on either logic level and can make any
logic transition, independent of all other storage elements. In other words,
there is no such thing as an illegal data pattern to write to or read from a
memory. Therefore, memories must be tested for all states. They must also be
tested to check that changes at one storage element do not affect any other
storage elements.
In addition, memories must be tested that they retain data. In the case of
DRAMs, there is a specification for the retention time. For SRAMs and non-
volatile memories, the retention period is infinite, which makes it harder to
test.
The term embedded memory means that the memory array is surrounded by logic
circuits, so it is not accessible under normal conditions. This is a very
common design when memory arrays are used as part of a large digital circuit.
Adding direct access to this internal memory array is rarely done, as it adds
complexity to the design and extra pins to the device packaging.
Embedded memories are tested in the same way as stand-alone memories, with the
only difference being how the embedded memory can addressed. Sometimes the
device designers provide a test mode to directly access the memory array and
sometimes logic vectors must be designed which use other on-board logic to send
the correct sequence of ones and zeros to the memory to test it. If you hear
you must test embedded memory, your first question should be how this memory
array can be accessed independent of the logic circuits surrounding it.
Bitmaps, which are pictures of fails by address, are a useful tool for
understanding how to improve yield. Seeing that a single bit, or a whole row,
or other physical orientations of fails have occurred can give useful clues to
the cause of test failures.
BIST can be run at the full operating speed of the device, which can be faster
than that of available ATE, and its speed is not limited by the need to get
signals into and out of the device under test. For this reason, adding BIST to
a device can be a good idea. Most BIST designs depend on ATE to initiate the
self test and evaluate its result.
RAMs need to write each address and read it. RAMs can have pattern sensitive
faults, which means that writing or reading some addresses can affect other
addresses. That means that not only must each address be written and read, but
that the order in which addresses are accessed is important. Memory testing is
done with patterns, which are sequences of addresses and data. ATE designed for
memory test usually includes an algorithmic pattern generator, which can
calculate addresses and data as the test is conducted, avoiding the use of
stored vectors.
Flash memories are read like RAMs, but operate differently for writing. When
the device is erased, it contains all ones. Addresses containing zeros must be
written, but addresses that should continue to be all ones are skipped. This
means flash memory testing is a series of patterns that write some addresses,
then other patterns that read the device.
Memory patterns
Memories are tested with patterns, which are sequences of addresses and data for
each address. The simplest pattern to consider is a solid zero and ones
pattern. First, each address is written to zeros, then each address is read for
zeros. Next, each address is written to ones, then each address is read for
ones. This pattern will detect stuck-at faults, but it does not guarantee that
each address can be uniquely accessed, or that data transitions at one address
do not affect other addresses.
In the 1970s, there was quite a bit of academic research into the optimum
pattern for memory test. Eventually it was concluded that there was no single
pattern that would completely test a memory. A variety of patterns are required
to find all the faults of a memory array.
Many companies have a library of patterns that have been found to be effective
in finding memory faults. Some people have experimented with pseudo-random test
patterns, though device manufacturers feel that the faults they identify can
always be also found with a non-random pattern.
Address scrambling
Many memories are designed with address scrambling. That means a sequentially
incrementing series of addresses delivered to the memory may not access
contiguous memory cells within the memory. Scrambling may be done to simplify
decoder design, saving silicon area. A common type of scrambling is known as
mirroring. This is when addresses numerically increase over some area of the
memory, then decrease. For instance, this address sequence illustrates
mirroring:
0 1 2 3 4 5 6 7 15 14 13 12 11 10 9 8
Mirroring may be the result of circuitry being reversed so two circuit areas can
share power or ground connections. Complicated scrambling is more common in
DRAMs, both because there are more cost pressures on DRAMs, forcing designers to
minimize silicon area. The flip-flop circuits in SRAMs can drive larger
capacitive loads than the capacitors in DRAMs, which makes it less important to
compress the physical layout of SRAMs.
Most memory pattern generators include circuitry that can be programmed with the
scrambling algorithm. When this is the case, memory patterns are designed
without considering the actual physical layout of the memory array, then the
physical scrambling information is implemented with the tester's address
scrambler.
When programming the scrambler, remember that the decoders of the memory can
result in the data being routed to a different location from what one might
expect by simply numbering the internal addresses sequentially. The tester's
address scrambler should be programmed with the reverse of this change. There
are some memories which have different scrambling schemes for different data
input/output lines. It is impossible to accommodate this during test, as only
one address is simultaneously applied to all data inputs and outputs.
It is very common for the test engineer to have trouble getting complete
scrambling information in a form that is easily usable in a test program. This
appears to be because device designers and test engineers tend to think of
memory array internal design in completely different ways. For some complicated
memories, to may be true that no single designer understands the complete
address scrambling algorithm. In these cases, as many of the designers as
needed must be interviewed. The test engineer must completely understand all
the internal scrambling.
SRAMs have two bitlines for each memory cell, one carrying true data and one
carrying complemented data (bitline and bitline bar). Some layouts reverse
these lines at various places, resulting in another example of data topological
inversion.
Memory organization
In DRAMs, row addresses are the word lines, which cause an entire row of cells
to be connected to their sense amps, and column addresses are bit lines, which
select which sense amplifiers are connected to the device outputs.
There are a variety of ways that memories can fail and specific ways to test for
these failure modes.
Decoder failures:
There are static and dynamic decoder designs. Static decoders can have opens
which will pass patterns that sequentially increment or decrement. To detect
these fails, address sequences need to jump around. All decoders can have
faults that result in mis-addressing memories. Many patterns, including march
patterns, can detect this problem.
EPROM addressing:
There is a tendency to think of non-volatile memories as being permanent storage
that once they are written to, they can always be read, and to focus on what is
required to successfully write them. However, internal crosstalk and other
problems can affect flash and EPROM devices, so they must be tested with varying
address sequences in the same way as volatile memories.
Common patterns
Pattern names are not standardized. When someone asks for a specific pattern,
it is wise to have them describe how they believe this pattern operates.
Bitmaps
Redundancy analysis
At time of 64k dynamic RAMs, memory manufacturers began to feel that inherent
fabrication defects would affect enough devices that yields would not be
acceptable unless the memories were manufactured with extra addresses. During
test, bad rows and columns are identified, then a variety of techniques are used
to disconnect the bad rows and columns and to program to spare rows and columns
with those addresses.
Many testers can be used for tasks that they are not ideally suited, given
enough programming and interface design effort. A well-designed tester has
hardware and software features to make the programming task easy. The first
characteristic of memory ATE is an algorithmic pattern generator. Some machines
test memory with a logic vector generator, which requires one vector for each
memory read or write operation. Because memory patterns often scale to the
power of the number of memory addresses, the number of vectors can far exceed
the vector size of most logic testers. With algorithmic pattern generation, the
number of vectors is not a limitation. The next limitation becomes the speed of
the pattern generation.
Hardware support for the address scrambling, data generation, and data
topological inversion are important useful tester features. An interrupt
capability for the pattern generator to satisfy DRAM refresh needs is important.
Because bitmaps are so important for failure analysis, a memory tester should be
able to store pass/fail information as a function of device address. Even
better is to retain whether each fail occurred as a result of reading a high, or
low, or both high and low. Once fail information is saved, it should be
recovered as a bitmap, which will probably display the addresses and IO
locations within the address differently from the order in which the memory was
tested.
References: