//************************************************************************************** //MEMA3.TST //By B. Rosen and M. Thomson February 1, 1979 //Sub Test Program for D0 MEM Module //************************************************************************************** get "mema.d" //Edge pin and test connector signal busses available to this sub-test: //{CrctSyn: CrctSyn0,CrctSyn1, CrctSyn2,CrctSyn3,CrctSyn4, CrctSyn5,CrctSyn6,CrctSyn7} //{Odata: Odata.00, Odata.01,Odata.02,Odata.03, Odata.04,Odata.05,Odata.06, Odata.07,Odata.08,Odata.09, Odata.10,Odata.11,Odata.12, Odata.13,Odata.14,Odata.15} //{rbus: R.00, R.01,R.02,R.03, R.04,R.05,R.06, R.07,R.08,R.09, R.10,R.11,R.12, R.13,R.14,R.15} //{StorDin: StorDin.00, StorDin.01,StorDin.02,StorDin.03, StorDin.04,StorDin.05,StorDin.06, StorDin.07,StorDin.08,StorDin.09, StorDin.10,StorDin.11,StorDin.12, StorDin.13,StorDin.14,StorDin.15} //{StorEcIn: StorEcIn.0,StorEcIn.1, StorEcIn.2,StorEcIn.3,StorEcIn.4, StorEcIn.5,StorEcIn.6,StorEcIn.7} //************************************************************************************** //Test 5: Test assorted logic indicated by the sub-titles let Test5() be [ SpeakTest(5) //set initial conditions (see notes at end of MEMA.TEST) //Test the R.04_H4ParityError_H4InputPE_H3IParity_Idata.16 path (pages 1,10,15) //{t5bus1: Idata.00,Idata.01,Idata.16} //Set up intitial conditions: {EnInputParChk}=1; //for H4ParityError_H4InputPE {ResetMemErrs'}=0; //Enable RERa' when RamClock {MC1SXport}=1; //Enable clkH4Par' {R_Pipe'}=0; //for R.04_H4ParityError' //SpeakTest sets up the H4_IMux_Idata path; also LoadH3I=1 for i = 0 to 8 do [ {t5bus1}=i EClock() //H4.00_(Idata.00=i[13]) for GenX_i[13] //H4.01_(Idata.01=i[14]) for GenY_i[14] //H4[2:15]_(Idata[2:15]=0) //clkH3I': H3IParity _(Idata.16=i[15]) RClock() //RERa': DC reset H4ParityError WCompare({R.04},0,5000,i) EClock() //clkH4Par': H4ParityError_(H4InputPE =1 if i = 0,3,5,6,8) WCompare({R.04},(#551 rshift i)&1,5001,i) //If stop, see MEMA.TST, page 1, NOTE 3 ] //Test the control logic related to H4ParityError (pages 14,15) //H4InputPE=1 from prior logic and will remain =1 during this sub-test {EnInputParChk}=0; //disable i16a gate b EClock() //clkH4Par': i16a gate a holds H4ParityError =1 WCompare({R.04},1,5010) {ResetMemErrs'}=1; //disable RERa' (page 14) RClock() //don't DC reset H4ParityError since RERa' is disabled WCompare({R.04},1,5011) //[ //test loop {ResetMemErrs'}=0; //enable RERa' RClock() //RERa': DC reset H4ParityError EClock() //i16a gate a holds H4ParityError =0 WCompare({R.04},0,5012) //] repeat //test loop {EnInputParChk}=1; //enable i16a gate b {MC1SXport}=0; //disable clkH4Par' (page 14) EClock() //don't set H4ParityError since clkH4Par' is disabled WCompare({R.04},0,5013) {MC1SXport}=1; //return to normal to enable clkH4Par' //Test the gates which are qualified by H4ParityError {preMC1Next.6}=0; //disqualify gate b of MC1Next.6' for loop ahead for i = 0 to 3 do [ //Set up H4ParityError = i[14]' {Idata.16} = i< clkMC2ErA': MC2ErA'_1, f13 ff's_(CrctSyn[0:7]=0) //i=1 => clkMC2ErB': MC2ErB'_1, d13 ff's_(CrctSyn[0:7]=0) WCompare({R.0007}ij,(#100 lshift i)%(i lshift 2),5320+i) RClock() //RERa': DC reset MC2ErA, MC2ErB, and FBounds WCompare({R.0007}ij,#300,5330+i) ] //Check the R[0:7],,R[8:15]_f13,d13 ff's_CrctSyn[0:7] logic (page 19) {R_Pipe'}=1 {ReadSyn'}=0; //for R[0:7]_f13 ff's, R[8:15]_d13 ff's //Check that the previous loop caused f13,d13 ff's_(CrctSyn[0:7]=0) WCompare({rbus},0,5400) for i = 0 to 1 do [ let a = #177400 xor (-i) //#177400 if i=0, #377 if i=1 {MC1Pipe.0}=i EClock() //clkStartMC2': MC2Pipe.0_(MC1Pipe.0=i) for j = 0 to 8 do [ let b = #200 rshift j let c = (b lshift 8) % b {StorEcIn}=b EClock() //ChkSyn[0:7]_(StorEcIn[0:7]=b) EClock() //CrctSyn[0:7]_(ChkSyn[0:7]=b) EClock() //i=0 => clkMC2ErA': f13 ff's_(CrctSyn[0:7]=b), d13's stay =0 //i=1 => clkMC2ErB': d13 ff's_(CrctSyn[0:7]=b), f13's stay =0 WCompare({rbus},a&c,5410+i,j) ] ] {ReadSyn'}=1; //disconnect f13,d13 ff's from the R bus ]