1
0
Files
2022-09-29 17:59:04 +03:00
..
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00
2022-09-29 17:59:04 +03:00

#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