March algorithm


The March algorithm is a widely used algorithm that tests SRAM memory by filling all its entries test patterns. It carries out several passes through an SRAM checking the patterns and writing new patterns.
The SRAM read and write operations performed on each pass are called a March element and each element is repeated for each entry. The March algorithm is often used to find functional faults in SRAM during testing such as:
It has been suggested to test SRAM modules using the algorithm before sale using a built-in self-test mechanism.

Notation

Each pass in a test sequence is represented by an "element". An element consists of a vertical arrow to indicate the direction in which the memory is scanned followed by a list of read/write operations to be applied to each memory cell. Multiple elements can be listed, separated by semicolons, to form a "test".
For example, specifies to:
  1. Scan in both directions, writing 0.
  2. Scan from lowest to highest address, reading 0 and writing 1.
  3. Scan from highest to lowest address, reading 1, writing 0 and reading 0.

Variants

Many variants of the March algorithm exist with different sequences of tests. Each variant makes a different tradeoff between what faults it can detect and the complexity of the algorithm.
Several variants have been given names:
NameElementsComplexity
MATS+5 N
MATS++6 N
March A15 N
March B17 N
March C-10 N
March C+14 N
March SR14 N
March SS22 N
March X6 N
March Y22 N