Part Number: AM625-Q1
Other Parts Discussed in Thread: SK-AM62B-P1
Tool/software:
Greetings,
We were stress testing the DDR4 RAM (Part No: MT40A1G16TB-062EIT:F) on our custom board based on the AM62-Q1 SoC using the memtester tool in Linux. The Linux kernel version and the memory settings are:
root@am62xx-evm:~# uname -a
Linux am62xx-evm 6.1.836.1.80-******-g55992697949d #1 SMP PREEMPT Mon May 6 12:53:20 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
root@am62xx-evm:~# free
total used free shared buff/cache available
Mem: 1968568 247412 1474800 74644 246356 1572044
Swap: 0 0 0
root@am62xx-evm:~#
The results we observed were:
For the 1GB test for 1 cycle:
root@am62xx-evm:/# memtester 1G 1 memtester version 4.5.1 (64-bit) Copyright (C) 2001-2020 Charles Cazabon. Licensed under the GNU General Public License version 2 (only). pagesize is 4096 pagesizemask is 0xfffffffffffff000 want 1024MB (1073741824 bytes) got 1024MB (1073741824 bytes), trying mlock ...locked. Loop 1/1: Stuck Address : testing 3FAILURE: possible bad address line at offset 0x153c4558. Skipping to next test... Random Value : ok Compare XOR : ok FAILURE: 0x1041e82a881663ce != 0x1041e82a881463ce at offset 0x115a4d78. Compare SUB : Compare MUL : ok Compare DIV : ok Compare OR : ok Compare AND : ok Sequential Increment: ok Solid Bits : ok Block Sequential : testing 12FAILURE: 0xc0c0c0c0c080c0c != 0xc0c0c0c0c0c0c0c at offset 0x117ecf40. Checkerboard : ok Bit Spread : testing 22FAILURE: 0x00400000 != 0x01400000 at offset 0x0f28ab10. Bit Flip : testing 44FAILURE: 0x20000000000020 != 0x00000020 at offset 0x153cc558. Walking Ones : ok Walking Zeroes : ok Done.
For the 1.5GB test for 1 cycle:
root@am62xx-evm:/# memtester 1500M 1
memtester version 4.5.1 (64-bit)
Copyright (C) 2001-2020 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffffffffffff000
want 1500MB (1572864000 bytes)
got 1500MB (1572864000 bytes), trying mlock ...locked.
Loop 1/1:
Stuck Address : testing 1FAILURE: possible bad address line at offset 0x24460c10.
Skipping to next test...
Random Value : ok
FAILURE: 0x80758605128b4e9 != 0x80758604128b4e9 at offset 0x21ecebc0.
FAILURE: 0x80758605128b4e9 != 0x80758604128b4e9 at offset 0x22086bc0.
FAILURE: 0x80758604528b4e9 != 0x80758604128b4e9 at offset 0x2466cc10.
FAILURE: 0x80758604528b4e9 != 0x80758604128b4e9 at offset 0x249e4c10.
FAILURE: 0x82758604128b4e9 != 0x80758604128b4e9 at offset 0x28128558.
Compare XOR : FAILURE: 0x89a43f3704365584 != 0x89843f3704365584 at offset 0x281c0558.
Compare SUB : Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : testing 12FAILURE: 0x00020000 != 0x00000000 at offset 0x23b84d78.
Block Sequential : testing 12FAILURE: 0xc0c0c0c080c0c0c != 0xc0c0c0c0c0c0c0c at offset 0x24504c10.
Checkerboard : ok
Bit Spread : testing 101FAILURE: 0x14000000 != 0x10000000 at offset 0x2c9b9c00.
Bit Flip : testing 4FAILURE: 0x20000000000001 != 0x00000001 at offset 0x280e4558.
Walking Ones : ok
Walking Zeroes : ok
Done.
We compared the results with that of SK-AM62B-P1:
For the 1GB test for 1 cycle:
root@am62xx-evm:/# memtester 1G 1
memtester version 4.5.1 (64-bit)
Copyright (C) 2001-2020 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffffffffffff000
want 1024MB (1073741824 bytes)
got 1024MB (1073741824 bytes), trying mlock ...locked.
Loop 1/1:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
Done.
For the 1.5GB test for 1 cycle:
root@am62xx-evm:/# memtester 1500M 1
memtester version 4.5.1 (64-bit)
Copyright (C) 2001-2020 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffffffffffff000
want 1500MB (1572864000 bytes)
got 1500MB (1572864000 bytes), trying mlock ...locked.
Loop 1/1:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
Done.
Queries:
1) What might be the reasons for the failures during the memtest?
2) What are the methods to mitigate the same?
3) Do we need to do RAM tuning?