!!!! 6 0 1 986755442 Va9c7 ! Device : 43256 ! Function : 32K x 8-bit Static Mix-Mos RAM ! revision : B.01.00 ! safeguard : high_out_cmos ! Modifications : Modified for AwareTest xi ! warning "This library has not been verified with hardware." !NEC Electronics Inc. spec. sheet sequential assign VCC to pins 28 assign GND to pins 14 assign Address to pins 1,26,2,23,21,24 assign Address to pins 25,3,4,5,6,7,8,9,10 assign Chip_select_bar to pins 20 assign Output_enable_bar to pins 22 assign Write_enable_bar to pins 27 assign Data to pins 19,18,17,16 assign Data to pins 15,13,12,11 assign Data_D0 to pins 11 !AT Added for minimum pin test. assign Data_D1 to pins 12 !AT Added for minimum pin test. assign Data_D2 to pins 13 !AT Added for minimum pin test. assign Data_D3 to pins 15 !AT Added for minimum pin test. assign Data_D4 to pins 16 !AT Added for minimum pin test. assign Data_D5 to pins 17 !AT Added for minimum pin test. assign Data_D6 to pins 18 !AT Added for minimum pin test. assign Data_D7 to pins 19 !AT Added for minimum pin test. assign Disable_pins to pins 20,22,27 family TTL power VCC,GND inputs Address,Chip_select_bar,Output_enable_bar,Write_enable_bar bidirectional Data bidirectional Data_D0, Data_D1, Data_D2, Data_D3 !AT Added for min. pin test. bidirectional Data_D4, Data_D5, Data_D6, Data_D7 !AT Added for min. pin test. set load on groups Data to pull up !********************* Disable Information ***************************** disable Data with Disable_pins to "011" disable Data with Disable_pins to "1XX" !******************** Backtrace information *************************** when Disable_pins is "011" inactive Data when Disable_pins is "1XX" inactive Data when Disable_pins is "001" outputs Data when Disable_pins is "0X0" inputs Data trace Data to Address,Chip_select_bar trace Data to Output_enable_bar,Write_enable_bar warning "Needed to test Output_enable_bar pin in unit Test Output Enable." !******************************************************************* !************* VECTOR SECTION **************** !******************************************************************* vector Set_Values !Set chip into a known state. set Address to "000000000000000" set Chip_select_bar to "1" set Output_enable_bar to "1" set Write_enable_bar to "1" end vector vector Keep_Values !Maintain values. set Address to "kkkkkkkkkkkkkkk" set Chip_select_bar to "k" set Output_enable_bar to "k" set Write_enable_bar to "k" end vector !*********** Vectors that toggle the control pins. ******************** vector Chip_select_low initialize to Keep_Values set Chip_select_bar to "0" end vector vector Chip_select_high initialize to Keep_Values set Chip_select_bar to "1" end vector vector Output_enable_low initialize to Keep_Values set Output_enable_bar to "0" end vector vector Output_enable_high initialize to Keep_Values set Output_enable_bar to "1" end vector vector Write_enable_low initialize to Keep_Values set Write_enable_bar to "0" end vector vector Write_enable_high initialize to Keep_Values set Write_enable_bar to "1" end vector !************* Vectors that address the RAM ************************ vector Address_000000000000000 initialize to Keep_Values set Address to "000000000000000" end vector vector Address_000000000000001 initialize to Keep_Values set Address to "000000000000001" end vector vector Address_000000000000011 initialize to Keep_Values set Address to "000000000000011" end vector vector Address_000000000000111 initialize to Keep_Values set Address to "000000000000111" end vector vector Address_000000000001111 initialize to Keep_Values set Address to "000000000001111" end vector vector Address_000000000011111 initialize to Keep_Values set Address to "000000000011111" end vector vector Address_000000000111111 initialize to Keep_Values set Address to "000000000111111" end vector vector Address_000000001111111 initialize to Keep_Values set Address to "000000001111111" end vector vector Address_000000011111111 initialize to Keep_Values set Address to "000000011111111" end vector vector Address_000000111111111 initialize to Keep_Values set Address to "000000111111111" end vector vector Address_000001111111111 initialize to Keep_Values set Address to "000001111111111" end vector vector Address_000011111111111 initialize to Keep_Values set Address to "000011111111111" end vector vector Address_000111111111111 initialize to Keep_Values set Address to "000111111111111" end vector vector Address_001111111111111 initialize to Keep_Values set Address to "001111111111111" end vector vector Address_011111111111111 initialize to Keep_Values set Address to "011111111111111" end vector vector Address_111111111111111 initialize to Keep_Values set Address to "111111111111111" end vector vector Address_101010101010101 initialize to Keep_Values set Address to "101010101010101" end vector !************* Vectors that write data into the RAM. ***************** vector Data_In_00000000 initialize to Keep_Values drive Data set Data to "00000000" end vector vector Data_In_00000001 initialize to Keep_Values drive Data set Data to "00000001" end vector vector Data_In_00000011 initialize to Keep_Values drive Data set Data to "00000011" end vector vector Data_In_00000111 initialize to Keep_Values drive Data set Data to "00000111" end vector vector Data_In_00001111 initialize to Keep_Values drive Data set Data to "00001111" end vector vector Data_In_00011111 initialize to Keep_Values drive Data set Data to "00011111" end vector vector Data_In_00111111 initialize to Keep_Values drive Data set Data to "00111111" end vector vector Data_In_01111111 initialize to Keep_Values drive Data set Data to "01111111" end vector vector Data_In_11111111 initialize to Keep_Values drive Data set Data to "11111111" end vector vector Data_In_11111110 initialize to Keep_Values drive Data set Data to "11111110" end vector vector Data_In_11111100 initialize to Keep_Values drive Data set Data to "11111100" end vector vector Data_In_11111000 initialize to Keep_Values drive Data set Data to "11111000" end vector vector Data_In_11110000 initialize to Keep_Values drive Data set Data to "11110000" end vector vector Data_In_11100000 initialize to Keep_Values drive Data set Data to "11100000" end vector vector Data_In_11000000 initialize to Keep_Values drive Data set Data to "11000000" end vector vector Data_In_10000000 initialize to Keep_Values drive Data set Data to "10000000" end vector vector Data_In_10101010 initialize to Keep_Values drive Data set Data to "10101010" end vector !********* Vector that receive data from the RAM. ******************* vector Data_00000000 initialize to Keep_Values receive Data set Data to "00000000" end vector vector Data_00000001 initialize to Keep_Values receive Data set Data to "00000001" end vector vector Data_00000011 initialize to Keep_Values receive Data set Data to "00000011" end vector vector Data_00000111 initialize to Keep_Values receive Data set Data to "00000111" end vector vector Data_00001111 initialize to Keep_Values receive Data set Data to "00001111" end vector vector Data_00011111 initialize to Keep_Values receive Data set Data to "00011111" end vector vector Data_00111111 initialize to Keep_Values receive Data set Data to "00111111" end vector vector Data_01111111 initialize to Keep_Values receive Data set Data to "01111111" end vector vector Data_11111111 initialize to Keep_Values receive Data set Data to "11111111" end vector vector Data_11111110 initialize to Keep_Values receive Data set Data to "11111110" end vector vector Data_11111100 initialize to Keep_Values receive Data set Data to "11111100" end vector vector Data_11111000 initialize to Keep_Values receive Data set Data to "11111000" end vector vector Data_11110000 initialize to Keep_Values receive Data set Data to "11110000" end vector vector Data_11100000 initialize to Keep_Values receive Data set Data to "11100000" end vector vector Data_11000000 initialize to Keep_Values receive Data set Data to "11000000" end vector vector Data_10000000 initialize to Keep_Values receive Data set Data to "10000000" end vector vector Data_10101010 initialize to Keep_Values receive Data set Data to "10101010" end vector !AT The following vectors have been added for a minimum pins test. Any !AT vectors that references the data bus was copied and modified to reference !AT only a single pin of the data bus. vector Data_In_D0_0 initialize to Keep_Values drive Data_D0 set Data_D0 to "0" end vector vector Data_In_D0_1 initialize to Keep_Values drive Data_D0 set Data_D0 to "1" end vector vector Data_In_D1_0 initialize to Keep_Values drive Data_D1 set Data_D1 to "0" end vector vector Data_In_D1_1 initialize to Keep_Values drive Data_D1 set Data_D1 to "1" end vector vector Data_In_D2_0 initialize to Keep_Values drive Data_D2 set Data_D2 to "0" end vector vector Data_In_D2_1 initialize to Keep_Values drive Data_D2 set Data_D2 to "1" end vector vector Data_In_D3_0 initialize to Keep_Values drive Data_D3 set Data_D3 to "0" end vector vector Data_In_D3_1 initialize to Keep_Values drive Data_D3 set Data_D3 to "1" end vector vector Data_In_D4_0 initialize to Keep_Values drive Data_D4 set Data_D4 to "0" end vector vector Data_In_D4_1 initialize to Keep_Values drive Data_D4 set Data_D4 to "1" end vector vector Data_In_D5_0 initialize to Keep_Values drive Data_D5 set Data_D5 to "0" end vector vector Data_In_D5_1 initialize to Keep_Values drive Data_D5 set Data_D5 to "1" end vector vector Data_In_D6_0 initialize to Keep_Values drive Data_D6 set Data_D6 to "0" end vector vector Data_In_D6_1 initialize to Keep_Values drive Data_D6 set Data_D6 to "1" end vector vector Data_In_D7_0 initialize to Keep_Values drive Data_D7 set Data_D7 to "0" end vector vector Data_In_D7_1 initialize to Keep_Values drive Data_D7 set Data_D7 to "1" end vector vector Data_D0_0 initialize to Keep_Values receive Data_D0 set Data_D0 to "0" end vector vector Data_D0_1 initialize to Keep_Values receive Data_D0 set Data_D0 to "1" end vector vector Data_D1_0 initialize to Keep_Values receive Data_D1 set Data_D1 to "0" end vector vector Data_D1_1 initialize to Keep_Values receive Data_D1 set Data_D1 to "1" end vector vector Data_D2_0 initialize to Keep_Values receive Data_D2 set Data_D2 to "0" end vector vector Data_D2_1 initialize to Keep_Values receive Data_D2 set Data_D2 to "1" end vector vector Data_D3_0 initialize to Keep_Values receive Data_D3 set Data_D3 to "0" end vector vector Data_D3_1 initialize to Keep_Values receive Data_D3 set Data_D3 to "1" end vector vector Data_D4_0 initialize to Keep_Values receive Data_D4 set Data_D4 to "0" end vector vector Data_D4_1 initialize to Keep_Values receive Data_D4 set Data_D4 to "1" end vector vector Data_D5_0 initialize to Keep_Values receive Data_D5 set Data_D5 to "0" end vector vector Data_D5_1 initialize to Keep_Values receive Data_D5 set Data_D5 to "1" end vector vector Data_D6_0 initialize to Keep_Values receive Data_D6 set Data_D6 to "0" end vector vector Data_D6_1 initialize to Keep_Values receive Data_D6 set Data_D6 to "1" end vector vector Data_D7_0 initialize to Keep_Values receive Data_D7 set Data_D7 to "0" end vector vector Data_D7_1 initialize to Keep_Values receive Data_D7 set Data_D7 to "1" end vector !******************************************************************* !************* SUBROUTINE SECTION **************** !******************************************************************* sub Write (Add,Data) !Write data to the RAM. execute Add execute Chip_select_low execute Write_enable_low execute Data execute Write_enable_high execute Chip_select_high end sub sub Read (Add,Data) !Read data from the RAM. execute Add execute Chip_select_low execute Output_enable_low execute Data execute Output_enable_high execute Chip_select_high end sub !******************************************************************* !************* UNIT SECTION **************** !******************************************************************* !AT The following AwareTest units have been added for minimum pins tests. Each !AT unit tests a separate data pin starting with D0. unit "awaretest D0 Test" execute Set_Values call Write(Address_000000000000000,Data_In_D0_0) call Read(Address_000000000000000,Data_D0_0) call Write(Address_000000000000000,Data_In_D0_1) call Read(Address_000000000000000,Data_D0_1) end unit unit "awaretest D1 Test" execute Set_Values call Write(Address_000000000000000,Data_In_D1_0) call Read(Address_000000000000000,Data_D1_0) call Write(Address_000000000000000,Data_In_D1_1) call Read(Address_000000000000000,Data_D1_1) end unit unit "awaretest D2 Test" execute Set_Values call Write(Address_000000000000000,Data_In_D2_0) call Read(Address_000000000000000,Data_D2_0) call Write(Address_000000000000000,Data_In_D2_1) call Read(Address_000000000000000,Data_D2_1) end unit unit "awaretest D3 Test" execute Set_Values call Write(Address_000000000000000,Data_In_D3_0) call Read(Address_000000000000000,Data_D3_0) call Write(Address_000000000000000,Data_In_D3_1) call Read(Address_000000000000000,Data_D3_1) end unit unit "awaretest D4 Test" execute Set_Values call Write(Address_000000000000000,Data_In_D4_0) call Read(Address_000000000000000,Data_D4_0) call Write(Address_000000000000000,Data_In_D4_1) call Read(Address_000000000000000,Data_D4_1) end unit unit "awaretest D5 Test" execute Set_Values call Write(Address_000000000000000,Data_In_D5_0) call Read(Address_000000000000000,Data_D5_0) call Write(Address_000000000000000,Data_In_D5_1) call Read(Address_000000000000000,Data_D5_1) end unit unit "awaretest D6 Test" execute Set_Values call Write(Address_000000000000000,Data_In_D6_0) call Read(Address_000000000000000,Data_D6_0) call Write(Address_000000000000000,Data_In_D6_1) call Read(Address_000000000000000,Data_D6_1) end unit unit "awaretest D7 Test" execute Set_Values call Write(Address_000000000000000,Data_In_D7_0) call Read(Address_000000000000000,Data_D7_0) call Write(Address_000000000000000,Data_In_D7_1) call Read(Address_000000000000000,Data_D7_1) end unit unit "Test Ram" !Test address and I/O pins using a graycode pattern execute Set_Values call Write(Address_000000000000000,Data_In_00000000) call Write(Address_000000000000001,Data_In_00000001) call Write(Address_000000000000011,Data_In_00000011) call Write(Address_000000000000111,Data_In_00000111) call Write(Address_000000000001111,Data_In_00001111) call Write(Address_000000000011111,Data_In_00011111) call Write(Address_000000000111111,Data_In_00111111) call Write(Address_000000001111111,Data_In_01111111) call Write(Address_000000011111111,Data_In_11111111) call Write(Address_000000111111111,Data_In_11111110) call Write(Address_000001111111111,Data_In_11111100) call Write(Address_000011111111111,Data_In_11111000) call Write(Address_000111111111111,Data_In_11110000) call Write(Address_001111111111111,Data_In_11100000) call Write(Address_011111111111111,Data_In_11000000) call Write(Address_111111111111111,Data_In_10000000) call Read(Address_000000000000000,Data_00000000) call Read(Address_000000000000001,Data_00000001) call Read(Address_000000000000011,Data_00000011) call Read(Address_000000000000111,Data_00000111) call Read(Address_000000000001111,Data_00001111) call Read(Address_000000000011111,Data_00011111) call Read(Address_000000000111111,Data_00111111) call Read(Address_000000001111111,Data_01111111) call Read(Address_000000011111111,Data_11111111) call Read(Address_000000111111111,Data_11111110) call Read(Address_000001111111111,Data_11111100) call Read(Address_000011111111111,Data_11111000) call Read(Address_000111111111111,Data_11110000) call Read(Address_001111111111111,Data_11100000) call Read(Address_011111111111111,Data_11000000) call Read(Address_111111111111111,Data_10000000) end unit !The following tests are to find stuck-at zero faults on the three !chip enabling pins. The tri-state Data pins are checked for their !high impedance state in the unit "Test Output Enable." unit "Test Write Enable" !Write_enable_bar must be low execute Set_Values !in order to write to device. call Write(Address_101010101010101,Data_In_10101010) execute Address_101010101010101 execute Chip_select_low execute Data_In_11111111 execute Chip_select_high call Read(Address_101010101010101,Data_10101010) end unit unit "Test Output Enable" execute Set_Values call Write(Address_111111111111111,Data_In_00000000) execute Chip_select_low execute Output_enable_high execute Write_enable_high execute Data_11111111 execute Chip_select_high execute Chip_select_low execute Output_enable_low execute Data_00000000 execute Chip_select_high execute Output_enable_high end unit unit "Test Chip Select" execute Set_Values call Write(Address_101010101010101,Data_In_00000000) execute Address_101010101010101 execute Chip_select_high execute Write_enable_low execute Data_In_11111111 execute Write_enable_high execute Chip_select_high call Read(Address_101010101010101,Data_00000000) end unit ! ! End of test