First post, by kinetix
Here's the code I expanded to test 4164 and 41246 memory chips, based on the DRAMarduino project: https://forum.defence-force.org/viewtopic.php?t=1699
It has been expanded with the help of Copilot and tested with an Arduino Uno R4 Wifi, but it should work with others, taking the pins into account. See the electronics side of the project.
I focused on this project because it's very simple, inexpensive, and just what I needed for the memory chips I wanted to test. I tested MB8264, MN4164, MB81256, MN41256 and D41256 chips.
The tests included are:
• Fill: Fills cells with zeros, ones, or a specific pattern. This is more or less the original test, but chips with some problem may pass this test but fail one or all of the following. This is why the original project is quite limited, unless the tests are expanded.
• Checkerboard: Alternating zeros and ones.
• Retention: Writes to memory and reads the data after a timeout.
• Inversion: Checks for bits that change their value after being written.
• WalkingBits: Checks for stuck cells.
• MATS++, MarchC, MarchA: These three tests expand the scope to include:
- Stuck-at errors (cell always at 0 or 1)
- Coupling faults
- Transition faults (cell does not transition correctly from 0 to 1)
- Addressing faults
- Interference faults between neighboring cells
- Conditional access faults (reading or writing fails depending on the state of other cells)
• Address Aliasing: Check if different row and column combinations accidentally access the same memory cell, indicating a fault in the address logic. However, this test still needs further work (made faster) and is disabled.
The code requires the digitalWriteFast library. Install it into the IDE.
After turning on the Arduino, press the Reset key once to avoid possible errors.
Sometimes, a single error in $0 may immediately appear at the start of the first test. Reset until the tests start correctly, unless it's a real error.
The code allows you to run a given sequence of tests (you need to modify and recompile the code) or use a menu via the terminal (tested in the Arduino IDE) at 9600. The terminal displays the running tests and their results. It is recommended to use the terminal console.
During the tests, the green LED keep flashing. At the end of a partial or full test, both flash. After all the tests, if everything is OK, the green LED remains lit; if there is at least one error, the red LED remains lit.
If during the tests there are more than 100 errors, the remaining tests are canceled.
There are unused or commented-out parts of the code; this is a WiP.
You can do whatever you want with the code, modify it, adapt it to your needs, etc. If anyone tries it, please share your thoughts. I'm sure Copilot or I made mistakes or added unnecessary things.