!!!! 6 0 1 987108204 Vdb10 ! Device : 5516 ! Function : Static RAM 2048 x 8 CMOS ! revision : B.01.00 ! safeguard : standard_cmos ! Modifications : Modified for AwareTest xi ! warning "This library has not been verified with hardware." assign VDD to pins 24 assign VSS to pins 12 assign Address_bus to pins 19,22,23,1,2,3 assign Address_bus to pins 4,5,6,7,8 assign Data_bus to pins 17,16,15,14,13 assign Data_bus to pins 11,10,9 assign Data_D0 to pins 9 !AT Added for minimum pin test. assign Data_D1 to pins 10 !AT Added for minimum pin test. assign Data_D2 to pins 11 !AT Added for minimum pin test. assign Data_D3 to pins 13 !AT Added for minimum pin test. assign Data_D4 to pins 14 !AT Added for minimum pin test. assign Data_D5 to pins 15 !AT Added for minimum pin test. assign Data_D6 to pins 16 !AT Added for minimum pin test. assign Data_D7 to pins 17 !AT Added for minimum pin test. assign Chip_enable_bar_1 to pins 20 assign Chip_enable_bar_2 to pins 18 assign Chip_enables to pins 20,18 assign Write_bar to pins 21 family CMOS power VDD, VSS inputs Address_bus, Chip_enable_bar_2, Chip_enable_bar_1, Write_bar inputs Chip_enables bidirectional Data_bus 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. when Chip_enable_bar_2 is "1" inactive Data_bus when Chip_enable_bar_1 is "1" inactive Data_bus when Write_bar is "1" outputs Data_bus when Write_bar is "0" inputs Data_bus trace Data_bus to Address_bus,Chip_enable_bar_2,Chip_enable_bar_1,Write_bar disable Data_bus with Chip_enable_bar_2 to "1" disable Data_bus with Chip_enable_bar_1 to "1" !***************************************************************************** !***************************************************************************** vector Normal_operation set Chip_enables to "11" set Write_bar to "1" set Address_bus to "00000000000" end vector vector Keeps set Chip_enables to "kk" set Write_bar to "k" set Address_bus to "kkkkkkkkkkk" end vector vector Write_bar_lo drive Data_bus set Chip_enables to "kk" set Data_bus to "kkkkkkkk" set Address_bus to "kkkkkkkkkkk" set Write_bar to "0" end vector vector Write_bar_hi drive Data_bus set Chip_enables to "kk" set Data_bus to "kkkkkkkk" set Address_bus to "kkkkkkkkkkk" set Write_bar to "1" end vector vector CE_bar_1_lo initialize to Keeps set Chip_enable_bar_1 to "0" end vector vector CE_bar_2_lo initialize to Keeps set Chip_enable_bar_2 to "0" end vector vector Chip_Enables_lo initialize to Keeps set Chip_enables to "00" end vector vector Chip_Enables_hi initialize to Keeps set Chip_enables to "11" end vector vector Address_10101010101 initialize to Keeps set Address_bus to "10101010101" end vector vector Address_01010101010 initialize to Keeps set Address_bus to "01010101010" end vector vector Address_00000000000 initialize to Keeps set Address_bus to "00000000000" end vector vector Address_00000000001 initialize to Keeps set Address_bus to "00000000001" end vector vector Address_00000000011 initialize to Keeps set Address_bus to "00000000011" end vector vector Address_00000000111 initialize to Keeps set Address_bus to "00000000111" end vector vector Address_00000001111 initialize to Keeps set Address_bus to "00000001111" end vector vector Address_00000011111 initialize to Keeps set Address_bus to "00000011111" end vector vector Address_00000111111 initialize to Keeps set Address_bus to "00000111111" end vector vector Address_00001111111 initialize to Keeps set Address_bus to "00001111111" end vector vector Address_00011111111 initialize to Keeps set Address_bus to "00011111111" end vector vector Address_00111111111 initialize to Keeps set Address_bus to "00111111111" end vector vector Address_01111111111 initialize to Keeps set Address_bus to "01111111111" end vector vector Address_11111111111 initialize to Keeps set Address_bus to "11111111111" end vector vector Data_In_01010101 initialize to Keeps drive Data_bus set Data_bus to "01010101" end vector vector Data_In_10101010 initialize to Keeps drive Data_bus set Data_bus to "10101010" end vector vector Data_In_00000000 initialize to Keeps drive Data_bus set Data_bus to "00000000" end vector vector Data_In_00000001 initialize to Keeps drive Data_bus set Data_bus to "00000001" end vector vector Data_In_00000011 initialize to Keeps drive Data_bus set Data_bus to "00000011" end vector vector Data_In_00000111 initialize to Keeps drive Data_bus set Data_bus to "00000111" end vector vector Data_In_00001111 initialize to Keeps drive Data_bus set Data_bus to "00001111" end vector vector Data_In_00011111 initialize to Keeps drive Data_bus set Data_bus to "00011111" end vector vector Data_In_00111111 initialize to Keeps drive Data_bus set Data_bus to "00111111" end vector vector Data_In_01111111 initialize to Keeps drive Data_bus set Data_bus to "01111111" end vector vector Data_In_11111111 initialize to Keeps drive Data_bus set Data_bus to "11111111" end vector vector Data_In_11111110 initialize to Keeps drive Data_bus set Data_bus to "11111110" end vector vector Data_In_11111100 initialize to Keeps drive Data_bus set Data_bus to "11111100" end vector vector Data_In_11111000 initialize to Keeps drive Data_bus set Data_bus to "11111000" end vector vector Data_Out_01010101 initialize to Keeps receive Data_bus set Data_bus to "01010101" end vector vector Data_Out_10101010 initialize to Keeps receive Data_bus set Data_bus to "10101010" end vector vector Data_Out_00000000 initialize to Keeps receive Data_bus set Data_bus to "00000000" end vector vector Data_Out_00000001 initialize to Keeps receive Data_bus set Data_bus to "00000001" end vector vector Data_Out_00000011 initialize to Keeps receive Data_bus set Data_bus to "00000011" end vector vector Data_Out_00000111 initialize to Keeps receive Data_bus set Data_bus to "00000111" end vector vector Data_Out_00001111 initialize to Keeps receive Data_bus set Data_bus to "00001111" end vector vector Data_Out_00011111 initialize to Keeps receive Data_bus set Data_bus to "00011111" end vector vector Data_Out_00111111 initialize to Keeps receive Data_bus set Data_bus to "00111111" end vector vector Data_Out_01111111 initialize to Keeps receive Data_bus set Data_bus to "01111111" end vector vector Data_Out_11111111 initialize to Keeps receive Data_bus set Data_bus to "11111111" end vector vector Data_Out_11111110 initialize to Keeps receive Data_bus set Data_bus to "11111110" end vector vector Data_Out_11111100 initialize to Keeps receive Data_bus set Data_bus to "11111100" end vector vector Data_Out_11111000 initialize to Keeps receive Data_bus set Data_bus to "11111000" 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 Wb_lo_D0 drive Data_D0 set Chip_enables to "kk" set Data_D0 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "0" end vector vector Wb_lo_D1 drive Data_D1 set Chip_enables to "kk" set Data_D1 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "0" end vector vector Wb_lo_D2 drive Data_D2 set Chip_enables to "kk" set Data_D2 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "0" end vector vector Wb_lo_D3 drive Data_D3 set Chip_enables to "kk" set Data_D3 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "0" end vector vector Wb_lo_D4 drive Data_D4 set Chip_enables to "kk" set Data_D4 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "0" end vector vector Wb_lo_D5 drive Data_D5 set Chip_enables to "kk" set Data_D5 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "0" end vector vector Wb_lo_D6 drive Data_D6 set Chip_enables to "kk" set Data_D6 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "0" end vector vector Wb_lo_D7 drive Data_D7 set Chip_enables to "kk" set Data_D7 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "0" end vector vector Wb_hi_D0 drive Data_D0 set Chip_enables to "kk" set Data_D0 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "1" end vector vector Wb_hi_D1 drive Data_D1 set Chip_enables to "kk" set Data_D1 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "1" end vector vector Wb_hi_D2 drive Data_D2 set Chip_enables to "kk" set Data_D2 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "1" end vector vector Wb_hi_D3 drive Data_D3 set Chip_enables to "kk" set Data_D3 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "1" end vector vector Wb_hi_D4 drive Data_D4 set Chip_enables to "kk" set Data_D4 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "1" end vector vector Wb_hi_D5 drive Data_D5 set Chip_enables to "kk" set Data_D5 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "1" end vector vector Wb_hi_D6 drive Data_D6 set Chip_enables to "kk" set Data_D6 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "1" end vector vector Wb_hi_D7 drive Data_D7 set Chip_enables to "kk" set Data_D7 to "k" set Address_bus to "kkkkkkkkkkk" set Write_bar to "1" end vector vector Data_In_D0_0 initialize to Keeps drive Data_D0 set Data_D0 to "0" end vector vector Data_In_D0_1 initialize to Keeps drive Data_D0 set Data_D0 to "1" end vector vector Data_In_D1_0 initialize to Keeps drive Data_D1 set Data_D1 to "0" end vector vector Data_In_D1_1 initialize to Keeps drive Data_D1 set Data_D1 to "1" end vector vector Data_In_D2_0 initialize to Keeps drive Data_D2 set Data_D2 to "0" end vector vector Data_In_D2_1 initialize to Keeps drive Data_D2 set Data_D2 to "1" end vector vector Data_In_D3_0 initialize to Keeps drive Data_D3 set Data_D3 to "0" end vector vector Data_In_D3_1 initialize to Keeps drive Data_D3 set Data_D3 to "1" end vector vector Data_In_D4_0 initialize to Keeps drive Data_D4 set Data_D4 to "0" end vector vector Data_In_D4_1 initialize to Keeps drive Data_D4 set Data_D4 to "1" end vector vector Data_In_D5_0 initialize to Keeps drive Data_D5 set Data_D5 to "0" end vector vector Data_In_D5_1 initialize to Keeps drive Data_D5 set Data_D5 to "1" end vector vector Data_In_D6_0 initialize to Keeps drive Data_D6 set Data_D6 to "0" end vector vector Data_In_D6_1 initialize to Keeps drive Data_D6 set Data_D6 to "1" end vector vector Data_In_D7_0 initialize to Keeps drive Data_D7 set Data_D7 to "0" end vector vector Data_In_D7_1 initialize to Keeps drive Data_D7 set Data_D7 to "1" end vector vector Data_Out_D0_0 initialize to Keeps receive Data_D0 set Data_D0 to "0" end vector vector Data_Out_D0_1 initialize to Keeps receive Data_D0 set Data_D0 to "1" end vector vector Data_Out_D1_0 initialize to Keeps receive Data_D1 set Data_D1 to "0" end vector vector Data_Out_D1_1 initialize to Keeps receive Data_D1 set Data_D1 to "1" end vector vector Data_Out_D2_0 initialize to Keeps receive Data_D2 set Data_D2 to "0" end vector vector Data_Out_D2_1 initialize to Keeps receive Data_D2 set Data_D2 to "1" end vector vector Data_Out_D3_0 initialize to Keeps receive Data_D3 set Data_D3 to "0" end vector vector Data_Out_D3_1 initialize to Keeps receive Data_D3 set Data_D3 to "1" end vector vector Data_Out_D4_0 initialize to Keeps receive Data_D4 set Data_D4 to "0" end vector vector Data_Out_D4_1 initialize to Keeps receive Data_D4 set Data_D4 to "1" end vector vector Data_Out_D5_0 initialize to Keeps receive Data_D5 set Data_D5 to "0" end vector vector Data_Out_D5_1 initialize to Keeps receive Data_D5 set Data_D5 to "1" end vector vector Data_Out_D6_0 initialize to Keeps receive Data_D6 set Data_D6 to "0" end vector vector Data_Out_D6_1 initialize to Keeps receive Data_D6 set Data_D6 to "1" end vector vector Data_Out_D7_0 initialize to Keeps receive Data_D7 set Data_D7 to "0" end vector vector Data_Out_D7_1 initialize to Keeps receive Data_D7 set Data_D7 to "1" end vector !***************************************************************************** !***************************************************************************** sub Write_Data (Address,Data) execute Address execute Chip_Enables_lo execute Data execute Write_bar_lo execute Write_bar_hi execute Chip_Enables_hi end sub sub Read_Data (Address,Data) execute Address execute Chip_Enables_lo execute Data execute Chip_Enables_hi end sub !AT The following subroutines have been added for a minimum pins test. !AT Vectors in the subroutine "Write_data" reference the entire data bus. !AT Therefore this subroutine was copied and modified to reference only !AT a single pin of the data bus. The subroutine "Read_data" did not !AT require any modification as all references to the data bus are made !AT via a passed parameter (data). This reference can be modified in the !AT call statement. sub Write_data_Dx (Address, Data_Dx, Wb_lo_Dx, Wb_hi_Dx) execute Address execute Chip_Enables_lo execute Data_Dx execute Wb_lo_Dx execute Wb_hi_Dx execute Chip_Enables_hi end sub !***************************************************************************** !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 Normal_operation call Write_Data_Dx (Address_00000000000, Data_In_D0_0, Wb_lo_D0, Wb_hi_D0) call Read_Data (Address_00000000000, Data_Out_D0_0) call Write_Data_Dx (Address_00000000000, Data_In_D0_1, Wb_lo_D0, Wb_hi_D0) call Read_Data (Address_00000000000, Data_Out_D0_1) end unit unit "awaretest D1 Test" execute Normal_operation call Write_Data_Dx (Address_00000000000, Data_In_D1_0, Wb_lo_D1, Wb_hi_D1) call Read_Data (Address_00000000000, Data_Out_D1_0) call Write_Data_Dx (Address_00000000000, Data_In_D1_1, Wb_lo_D1, Wb_hi_D1) call Read_Data (Address_00000000000, Data_Out_D1_1) end unit unit "awaretest D2 Test" execute Normal_operation call Write_Data_Dx (Address_00000000000, Data_In_D2_0, Wb_lo_D2, Wb_hi_D2) call Read_Data (Address_00000000000, Data_Out_D2_0) call Write_Data_Dx (Address_00000000000, Data_In_D2_1, Wb_lo_D2, Wb_hi_D2) call Read_Data (Address_00000000000, Data_Out_D2_1) end unit unit "awaretest D3 Test" execute Normal_operation call Write_Data_Dx (Address_00000000000, Data_In_D3_0, Wb_lo_D3, Wb_hi_D3) call Read_Data (Address_00000000000, Data_Out_D3_0) call Write_Data_Dx (Address_00000000000, Data_In_D3_1, Wb_lo_D3, Wb_hi_D3) call Read_Data (Address_00000000000, Data_Out_D3_1) end unit unit "awaretest D4 Test" execute Normal_operation call Write_Data_Dx (Address_00000000000, Data_In_D4_0, Wb_lo_D4, Wb_hi_D4) call Read_Data (Address_00000000000, Data_Out_D4_0) call Write_Data_Dx (Address_00000000000, Data_In_D4_1, Wb_lo_D4, Wb_hi_D4) call Read_Data (Address_00000000000, Data_Out_D4_1) end unit unit "awaretest D5 Test" execute Normal_operation call Write_Data_Dx (Address_00000000000, Data_In_D5_0, Wb_lo_D5, Wb_hi_D5) call Read_Data (Address_00000000000, Data_Out_D5_0) call Write_Data_Dx (Address_00000000000, Data_In_D5_1, Wb_lo_D5, Wb_hi_D5) call Read_Data (Address_00000000000, Data_Out_D5_1) end unit unit "awaretest D6 Test" execute Normal_operation call Write_Data_Dx (Address_00000000000, Data_In_D6_0, Wb_lo_D6, Wb_hi_D6) call Read_Data (Address_00000000000, Data_Out_D6_0) call Write_Data_Dx (Address_00000000000, Data_In_D6_1, Wb_lo_D6, Wb_hi_D6) call Read_Data (Address_00000000000, Data_Out_D6_1) end unit unit "awaretest D7 Test" execute Normal_operation call Write_Data_Dx (Address_00000000000, Data_In_D7_0, Wb_lo_D7, Wb_hi_D7) call Read_Data (Address_00000000000, Data_Out_D7_0) call Write_Data_Dx (Address_00000000000, Data_In_D7_1, Wb_lo_D7, Wb_hi_D7) call Read_Data (Address_00000000000, Data_Out_D7_1) end unit ! "Ram_Test" tests I/O pins for proper operation using a graycode ! pattern for both addresses and data. unit "Ram_Test" execute Normal_operation call Write_Data (Address_00000000000,Data_In_00000000) call Write_Data (Address_00000000001,Data_In_00000001) call Write_Data (Address_00000000011,Data_In_00000011) call Write_Data (Address_00000000111,Data_In_00000111) call Write_Data (Address_00000001111,Data_In_00001111) call Write_Data (Address_00000011111,Data_In_00011111) call Write_Data (Address_00000111111,Data_In_00111111) call Write_Data (Address_00001111111,Data_In_01111111) call Write_Data (Address_00011111111,Data_In_11111111) call Write_Data (Address_00111111111,Data_In_11111110) call Write_Data (Address_01111111111,Data_In_11111100) call Write_Data (Address_11111111111,Data_In_11111000) call Read_Data (Address_00000000000,Data_Out_00000000) call Read_Data (Address_00000000001,Data_Out_00000001) call Read_Data (Address_00000000011,Data_Out_00000011) call Read_Data (Address_00000000111,Data_Out_00000111) call Read_Data (Address_00000001111,Data_Out_00001111) call Read_Data (Address_00000011111,Data_Out_00011111) call Read_Data (Address_00000111111,Data_Out_00111111) call Read_Data (Address_00001111111,Data_Out_01111111) call Read_Data (Address_00011111111,Data_Out_11111111) call Read_Data (Address_00111111111,Data_Out_11111110) call Read_Data (Address_01111111111,Data_Out_11111100) call Read_Data (Address_11111111111,Data_Out_11111000) end unit ! "Test Chip_enable_bar_1" and "Test Chip_enable_bar_2" are used to ! find stuck-at-zero falts on these pins. unit "Test Chip_enable_bar_1" execute Normal_operation call Write_Data (Address_10101010101,Data_In_01010101) execute Address_10101010101 execute CE_bar_2_lo execute Data_In_11111111 execute Write_bar_lo execute Write_bar_hi execute Chip_Enables_hi call Read_Data (Address_10101010101,Data_Out_01010101) end unit unit "Test Chip_enable_bar_2" execute Normal_operation call Write_Data (Address_01010101010,Data_In_10101010) execute Address_01010101010 execute CE_bar_1_lo execute Data_In_11111111 execute Write_bar_lo execute Write_bar_hi execute Chip_Enables_hi call Read_Data (Address_01010101010,Data_Out_10101010) end unit ! End of test