March Algorithm
{{Short description|A memory testing algorithm}}
{{About|the memory testing algorithm|convex hull algorithm called Jarvis march algorithm|Gift wrapping algorithm}}
The March algorithm is a widely used{{cite journal | last=Masnita | first=M. I. | last2=Zuha | first2=W. H. W. | last3=Sidek | first3=R. M. | last4=Izhal | first4=A. H. | title=March-based SRAM diagnostic algorithm for distinguishing Stuck-At and transition faults | journal=IEICE Electronics Express | publisher=Institute of Electronics, Information and Communications Engineers (IEICE) | volume=6 | issue=15 | year=2009 | issn=1349-2543 | doi=10.1587/elex.6.1091 | doi-access=free | pages=1091–1097 | url=https://www.jstage.jst.go.jp/article/elex/6/15/6_15_1091/_pdf | access-date=May 25, 2025}} 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.{{Cite web |title=Documentation – Arm Developer |url=https://developer.arm.com/documentation/101528/0001/Production-test-March-Algorithm/Production-test-March-algorithm-overview |access-date=2025-05-25 |website=developer.arm.com}}{{cite journal | last=Van De Goor | first=A.J. | title=Using march tests to test SRAMs | journal=IEEE Design & Test of Computers | volume=10 | issue=1 | date=1993 | issn=0740-7475 | doi=10.1109/54.199799 | doi-access=free | pages=8–14 | url=https://repository.tudelft.nl/islandora/object/uuid%3Afcfc792d-e8cf-4c0f-ab07-0c064f328eca/datastream/OBJ/download | access-date=2025-05-25}} The March algorithm is often used to find functional faults in SRAM during testing{{Cite journal |date=August 10, 2009 |title=March-based SRAM diagnostic algorithm for distinguishing Stuck-At and transition faults |url=https://www.jstage.jst.go.jp/article/elex/6/15/6_15_1091/_pdf |journal=IEICE Electronics Express |volume=6 |issue=15}} such as:
- Stuck-at Faults (SAFs)
- Transition Faults (TFs)
- Address Decoder Faults (AFs)
- Coupling Faults (CFs), such as Inversion (CFin), Idempotent (CFid), and State (CFst) coupling faults
It has been suggested to test SRAM modules using the algorithm before sale using a built-in self-test mechanism.{{cite web | title=SRAM Memory Built in Self-Test using MARCH Algorithm | website=IEEE Xplore | date=November 24, 2022 | url=https://ieeexplore.ieee.org/document/10010813 | access-date=May 25, 2025}}
Test sequence
- Ascending: Write 0 to all cells.
- Ascending: Read 0, then write 1.
- Ascending: Read 1, then write 0.
- Ascending: Read 0.
- Descending: Read 0, then write 1.
- Descending: Read 1, then write 0.
- Ascending: Read 0
March C-
March C- is a less robust variant of the March algorithm that detects Address and Coupling faults, but it is significantly faster.
= Test sequence =
- Ascending: Write 0 to all cells.
- Ascending: Read 0, then write 1.
- Ascending: Read 1, then write 0.
- Descending: Read 0, then write 1.
- Descending: Read 1, then write 0.
- Ascending: Read 0.