167 lines
5.6 KiB
Plaintext
167 lines
5.6 KiB
Plaintext
#ident "ide/godzilla/mem/README file: Revision: 1.1 $"
|
|
|
|
|
|
Speedracer memory tests
|
|
=======================
|
|
|
|
Summary
|
|
-------
|
|
The IP30 (Speedracer) Memory Diagnostics will include a combination
|
|
of pon (power-on) tests, and standalone (ide) tests.
|
|
This doc covers the standalone (ide) tests only.
|
|
|
|
|
|
Overview of the existing memory tests (IP22 and IP26): state as of 4-9-95
|
|
=========================================================================
|
|
The following tests are in the stand tree, in ide/fforward/mem
|
|
(for IP22 and IP26).
|
|
One must note that IP22 has a parity checking feature, IP26, an ECC
|
|
(Error Correcting Code) feature.
|
|
|
|
- memtest.c contains the basic memory test (address uniqueness and
|
|
walking bit tests)
|
|
|
|
- memtest2.c gives access to over a dozen memory tests,
|
|
including the basic memory tests, via a test number.
|
|
It is also called expanded memory test.
|
|
The tests have different coverages and lengths, using different algorithms.
|
|
A couple of them (tb_test and checker) seem to be used
|
|
exclusively by manufacturing.
|
|
|
|
- separate memory tests: low_memtest (including parity, for IP22)
|
|
dram_diagnostics (including parity, for IP22)
|
|
dram2_diagnostics
|
|
khlow_dr
|
|
blk_test
|
|
shift_dram
|
|
|
|
- memory diagram feature. The function is print_memory_diagram in diagram.c.
|
|
|
|
- parity tests (IP22 only): dcache_par
|
|
icache_par
|
|
parity_test
|
|
pargenlog_test
|
|
|
|
Test durations:
|
|
---------------
|
|
These were measured on an IP26/640MB system (teton9):
|
|
addruniq 3 min
|
|
march 2 hours
|
|
mats 4 min
|
|
kn 5 min
|
|
altaccess 45 min
|
|
khpar N/A for IP26
|
|
movi days
|
|
walkingbit 3 hours
|
|
marchX 5 min
|
|
marchY 5 min
|
|
butterfly 4 min
|
|
|
|
|
|
hardware dependencies
|
|
=====================
|
|
|
|
The hardware dependencies are few: they are limited mostly to
|
|
controlling the parity/ECC bits in the memory controller
|
|
(CPUCTRL0 for IP22/26, HEART_MODE for IP30) and to flushing
|
|
(or not) the D-cache.
|
|
There is also an issue with reporting errors (HEART and MC are different).
|
|
|
|
|
|
Proposal of guidelines for reorganization
|
|
=========================================
|
|
|
|
The primary objective is to have a set of tests for bring-up,
|
|
then to package a minimal set that is fully debugged.
|
|
|
|
- bundle the memory tests into 4 functional groups: Low DRAM, memory,
|
|
ECC, and manufacturing memory tests
|
|
|
|
- create a separate "memtest2"-type of menu for Mfg
|
|
|
|
- keep the memory diagram separate
|
|
|
|
- port most IP22/IP26 tests and provide an entry for each one in the
|
|
appropriate "bundle"; as each test is tested and debugged,
|
|
I will evaluate which are for keeps.
|
|
|
|
- remove memtest which runs addruniq and walkingbit successively
|
|
(these tests are already in memtest2). Rename metest2 memtest.
|
|
|
|
- for the field, a selection of tests will be put together to achieve
|
|
a couple of coverage/length combinations.
|
|
|
|
- move and create all header files in IP30/include and godzilla/include,
|
|
that both engr and mfg can share.
|
|
|
|
|
|
New organization
|
|
================
|
|
|
|
The following memory test commands will be offered in cpu_diagcmds:
|
|
- ldram remains the low DRAM (0-16MB) data/address test
|
|
(low_memtest/ldramtest.c&ldram_diags.s)
|
|
- dram remains the dram diagnostics (dram_diagnostics/dram_diag.c)
|
|
|
|
- dram2 remains the expanded dram diagnostics (applicable to speedracer??)
|
|
|
|
- memtest <testnumber> where the existing numbering is preserved:
|
|
<test number> = test title (function/filename)
|
|
0 = memory address uniqueness (memaddruniq/addruniq.c)
|
|
1 = marching ones and zeroes (March_l/march.c)
|
|
2 = modified algorithmic test sequence memory test (Mats_l/mats.c)
|
|
3 = Knaizuk-Hartman memory test (Kh_l/kh.c)
|
|
4 = alternating access test (Altaccess_l/altaccess.c)
|
|
5 = Knaizuk-Hartman test of the D-cache (khparity/khparity.s) (??)
|
|
6 = moving inversions memory test (Movi_l/movi.c)
|
|
7 = walking bit test (memwalkingbit/walkingbit.c)
|
|
8 = marchX test (marchX/marchxy.c)
|
|
9 = marchY test (marchY/marchxy.c)
|
|
10 = three bit test (three_l/threebit.c&misc.s)
|
|
11 = butterfly test (Butterfly_l/butterfly.c)
|
|
12 = Knaizuk-Hartman double word test (khdouble_drv/khdouble.c)
|
|
13 = new three bit test (three_ll/new3bit.c&misc.s)
|
|
(*NEW*) 14 = block read/write test (blk_test/blk.c)
|
|
(was blk) (XXX remove?)
|
|
(*NEW*) 15 = Shifting data patterns into successive addresses
|
|
(was shift) (shift_dram/shift_dram.c)(XXX remove?)
|
|
|
|
- ecc_test, testing the IP30 ECC feature (*ALL NEW*)
|
|
|
|
- help_mem still prints the memory diagram
|
|
|
|
- all mfg tests could be listed under a mfg_diagcmds table and
|
|
located in IP30/mfg.
|
|
The mfg memory tests could be kept together in a memtest-like function,
|
|
something like:
|
|
mfgmtest <testnumber>
|
|
<test number> = test title (function/filename)
|
|
0 = tb_test (used to be a memtest2 option)
|
|
1 = checker (used to be a memtest2 option)
|
|
|
|
- all csd test could be listed under the (existing) field_diagcmds
|
|
where there could be a csdmtest command for memory tests.
|
|
These memory tests would select a set of memory test to achieve a
|
|
variety of coverage and test time lengths.
|
|
The "packaging" (gui, selection of tests etc.) could reside in
|
|
an IP30/csd directory.
|
|
NOTE: this covers only the memory CSD tests.
|
|
0 = short test (<1 min) for approx XX% coverage
|
|
1 = medium test (few minutes) for approx XX% coverage
|
|
2 = long test (10 min ???) for approx XX% coverage
|
|
|
|
The individual files have comments at the top explaining what was done
|
|
specifically when ported to Speedracer, plus what is still undefined
|
|
or in question.
|
|
|
|
|
|
what's left to do
|
|
=================
|
|
Each file has a "to do" list.
|
|
- review each file for XXX's and "to do" list.
|
|
- bring-up memory tests on emulator: length will be an issue
|
|
- come-up with a "fast" test
|
|
- revise the code pointing at a SIMM number
|
|
|
|
|