!!!! 6 0 1 986861544 V35c0 ! Device : mcm6290 ! Function : Static RAM 16k x 4 ! revision : B.01.00 ! safeguard : high_out_cmos ! Modifications : Modified for AwareTest xi ! warning "This library has not been verified with hardware." ! In this revision Address_High and Address_Low are not considered as ! seperate vectors. In the same vectore we set both Address_High and ! Address_Low. ! Advangtage is we need not have a seperate "kk" and subroutine also ! becomes simpler. ! sequential assign VCC to pins 24 assign GND to pins 12 assign Chip_Enable_Bar to pins 10 assign Output_Enable_Bar to pins 11 assign Write_Enable_Bar to pins 13 assign Address_High to pins 23, 22 assign Address_Low to pins 21,20,19,9,8,7,6,5,4,3,2,1 assign Data_Bus to pins 17, 16, 15, 14 assign Data_D0 to pins 14 !AT Added for minimum pin test. assign Data_D1 to pins 15 !AT Added for minimum pin test. assign Data_D2 to pins 16 !AT Added for minimum pin test. assign Data_D3 to pins 17 !AT Added for minimum pin test. assign NC to pins 18 power VCC, GND family TTL inputs Chip_Enable_Bar, Output_Enable_Bar, Write_Enable_Bar inputs Address_High, Address_Low bidirectional Data_Bus bidirectional Data_D0, Data_D1, Data_D2, Data_D3 !AT Added for min. pin test. nondigital NC format hexadecimal Address_Low, Data_Bus disable Data_Bus with Chip_Enable_Bar to "1" disable Data_Bus with Output_Enable_Bar to "1" trace Data_Bus to Address_High, Address_Low,Chip_Enable_Bar trace Data_Bus to Output_Enable_Bar, Write_Enable_Bar ! vector definitions ! **************************************************************** vector Init_State set Chip_Enable_Bar to "0" set Output_Enable_Bar to "0" end vector vector Keep_State drive Data_bus set Chip_Enable_Bar to "k" set Output_Enable_Bar to "k" set Write_Enable_bar to "k" set Address_High to "kk" set Address_Low to "kkk" set Data_bus to "k" end vector vector Chip_Enable initialize to Keep_State set Chip_Enable_Bar to "0" end vector vector Chip_Disable initialize to Keep_State set Chip_Enable_Bar to "1" end vector vector Output_Enable initialize to Keep_State set Output_Enable_Bar to "0" end vector vector Output_Disable initialize to Keep_State set Output_Enable_Bar to "1" end vector vector Write_Enable initialize to Keep_State set Write_Enable_Bar to "0" end vector vector Write_Disable initialize to Keep_State set Write_Enable_Bar to "1" end vector vector Read_Enable initialize to Keep_State set Write_Enable_Bar to "1" end vector vector Address_Bus_00_000 initialize to Keep_State set Address_High to "00" set Address_Low to "000" end vector vector Address_Bus_00_001 initialize to Keep_State set Address_High to "00" set Address_Low to "001" end vector vector Address_Bus_00_002 initialize to Keep_State set Address_High to "00" set Address_Low to "002" end vector vector Address_Bus_00_004 initialize to Keep_State set Address_High to "00" set Address_Low to "004" end vector vector Address_Bus_00_008 initialize to Keep_State set Address_High to "00" set Address_Low to "008" end vector vector Address_Bus_00_010 initialize to Keep_State set Address_High to "00" set Address_Low to "010" end vector vector Address_Bus_00_020 initialize to Keep_State set Address_High to "00" set Address_Low to "020" end vector vector Address_Bus_00_040 initialize to Keep_State set Address_High to "00" set Address_Low to "040" end vector vector Address_Bus_00_080 initialize to Keep_State set Address_High to "00" set Address_Low to "080" end vector vector Address_Bus_00_100 initialize to Keep_State set Address_High to "00" set Address_Low to "100" end vector vector Address_Bus_00_200 initialize to Keep_State set Address_High to "00" set Address_Low to "200" end vector vector Address_Bus_00_400 initialize to Keep_State set Address_High to "00" set Address_Low to "400" end vector vector Address_Bus_00_800 initialize to Keep_State set Address_High to "00" set Address_Low to "800" end vector vector Address_Bus_01_000 initialize to Keep_State set Address_High to "01" set Address_Low to "000" end vector vector Address_Bus_10_000 initialize to Keep_State set Address_High to "10" set Address_Low to "000" end vector vector Data_D_0 initialize to Keep_State set Data_Bus to "0" end vector vector Data_D_1 initialize to Keep_State set Data_Bus to "1" end vector vector Data_D_2 initialize to Keep_State set Data_Bus to "2" end vector vector Data_D_3 initialize to Keep_State set Data_Bus to "3" end vector vector Data_D_4 initialize to Keep_State set Data_Bus to "4" end vector vector Data_D_5 initialize to Keep_State set Data_Bus to "5" end vector vector Data_D_6 initialize to Keep_State set Data_Bus to "6" end vector vector Data_D_7 initialize to Keep_State set Data_Bus to "7" end vector vector Data_D_8 initialize to Keep_State set Data_Bus to "8" end vector vector Data_D_9 initialize to Keep_State set Data_Bus to "9" end vector vector Data_D_A initialize to Keep_State set Data_Bus to "A" end vector vector Data_D_B initialize to Keep_State set Data_Bus to "B" end vector vector Data_D_C initialize to Keep_State set Data_Bus to "C" end vector vector Data_D_D initialize to Keep_State set Data_Bus to "D" end vector vector Data_D_E initialize to Keep_State set Data_Bus to "E" end vector vector Data_D_F initialize to Keep_State set Data_Bus to "F" end vector vector Data_R_x initialize to Keep_State receive Data_Bus set Data_Bus to "x" end vector vector Data_R_0 initialize to Keep_State receive Data_Bus set Data_Bus to "0" end vector vector Data_R_1 initialize to Keep_State receive Data_Bus set Data_Bus to "1" end vector vector Data_R_2 initialize to Keep_State receive Data_Bus set Data_Bus to "2" end vector vector Data_R_3 initialize to Keep_State receive Data_Bus set Data_Bus to "3" end vector vector Data_R_4 initialize to Keep_State receive Data_Bus set Data_Bus to "4" end vector vector Data_R_5 initialize to Keep_State receive Data_Bus set Data_Bus to "5" end vector vector Data_R_6 initialize to Keep_State receive Data_Bus set Data_Bus to "6" end vector vector Data_R_7 initialize to Keep_State receive Data_Bus set Data_Bus to "7" end vector vector Data_R_8 initialize to Keep_State receive Data_Bus set Data_Bus to "8" end vector vector Data_R_9 initialize to Keep_State receive Data_Bus set Data_Bus to "9" end vector vector Data_R_A initialize to Keep_State receive Data_Bus set Data_Bus to "A" end vector vector Data_R_B initialize to Keep_State receive Data_Bus set Data_Bus to "B" end vector vector Data_R_C initialize to Keep_State receive Data_Bus set Data_Bus to "C" end vector vector Data_R_D initialize to Keep_State receive Data_Bus set Data_Bus to "D" end vector vector Data_R_E initialize to Keep_State receive Data_Bus set Data_Bus to "E" end vector vector Data_R_F initialize to Keep_State receive Data_Bus set Data_Bus to "F" 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 Keep_State_D0 drive Data_D0 set Chip_Enable_Bar to "k" set Output_Enable_Bar to "k" set Write_Enable_bar to "k" set Address_High to "kk" set Address_Low to "kkk" set Data_D0 to "k" end vector vector Address_00_000_D0 initialize to Keep_State_D0 set Address_High to "00" set Address_Low to "000" end vector vector Write_Enable_D0 initialize to Keep_State_D0 set Write_Enable_Bar to "0" end vector vector Write_Disable_D0 initialize to Keep_State_D0 set Write_Enable_Bar to "1" end vector vector Data_D0_0 initialize to Keep_State_D0 set Data_D0 to "0" end vector vector Data_D0_1 initialize to Keep_State_D0 set Data_D0 to "1" end vector vector Read_Enable_D0 initialize to Keep_State_D0 set Write_Enable_Bar to "1" end vector vector Data_RD0_x initialize to Keep_State_D0 receive Data_D0 set Data_D0 to "x" end vector vector Data_RD0_0 initialize to Keep_State_D0 receive Data_D0 set Data_D0 to "0" end vector vector Data_RD0_1 initialize to Keep_State_D0 receive Data_D0 set Data_D0 to "1" end vector vector Keep_State_D1 drive Data_D1 set Chip_Enable_Bar to "k" set Output_Enable_Bar to "k" set Write_Enable_bar to "k" set Address_High to "kk" set Address_Low to "kkk" set Data_D1 to "k" end vector vector Address_00_000_D1 initialize to Keep_State_D1 set Address_High to "00" set Address_Low to "000" end vector vector Write_Enable_D1 initialize to Keep_State_D1 set Write_Enable_Bar to "0" end vector vector Write_Disable_D1 initialize to Keep_State_D1 set Write_Enable_Bar to "1" end vector vector Data_D1_0 initialize to Keep_State_D1 set Data_D1 to "0" end vector vector Data_D1_1 initialize to Keep_State_D1 set Data_D1 to "1" end vector vector Read_Enable_D1 initialize to Keep_State_D1 set Write_Enable_Bar to "1" end vector vector Data_RD1_x initialize to Keep_State_D1 receive Data_D1 set Data_D1 to "x" end vector vector Data_RD1_0 initialize to Keep_State_D1 receive Data_D1 set Data_D1 to "0" end vector vector Data_RD1_1 initialize to Keep_State_D1 receive Data_D1 set Data_D1 to "1" end vector vector Keep_State_D2 drive Data_D2 set Chip_Enable_Bar to "k" set Output_Enable_Bar to "k" set Write_Enable_bar to "k" set Address_High to "kk" set Address_Low to "kkk" set Data_D2 to "k" end vector vector Address_00_000_D2 initialize to Keep_State_D2 set Address_High to "00" set Address_Low to "000" end vector vector Write_Enable_D2 initialize to Keep_State_D2 set Write_Enable_Bar to "0" end vector vector Write_Disable_D2 initialize to Keep_State_D2 set Write_Enable_Bar to "1" end vector vector Data_D2_0 initialize to Keep_State_D2 set Data_D2 to "0" end vector vector Data_D2_1 initialize to Keep_State_D2 set Data_D2 to "1" end vector vector Read_Enable_D2 initialize to Keep_State_D2 set Write_Enable_Bar to "1" end vector vector Data_RD2_x initialize to Keep_State_D2 receive Data_D2 set Data_D2 to "x" end vector vector Data_RD2_0 initialize to Keep_State_D2 receive Data_D2 set Data_D2 to "0" end vector vector Data_RD2_1 initialize to Keep_State_D2 receive Data_D2 set Data_D2 to "1" end vector vector Keep_State_D3 drive Data_D3 set Chip_Enable_Bar to "k" set Output_Enable_Bar to "k" set Write_Enable_bar to "k" set Address_High to "kk" set Address_Low to "kkk" set Data_D3 to "k" end vector vector Address_00_000_D3 initialize to Keep_State_D3 set Address_High to "00" set Address_Low to "000" end vector vector Write_Enable_D3 initialize to Keep_State_D3 set Write_Enable_Bar to "0" end vector vector Write_Disable_D3 initialize to Keep_State_D3 set Write_Enable_Bar to "1" end vector vector Data_D3_0 initialize to Keep_State_D3 set Data_D3 to "0" end vector vector Data_D3_1 initialize to Keep_State_D3 set Data_D3 to "1" end vector vector Read_Enable_D3 initialize to Keep_State_D3 set Write_Enable_Bar to "1" end vector vector Data_RD3_x initialize to Keep_State_D3 receive Data_D3 set Data_D3 to "x" end vector vector Data_RD3_0 initialize to Keep_State_D3 receive Data_D3 set Data_D3 to "0" end vector vector Data_RD3_1 initialize to Keep_State_D3 receive Data_D3 set Data_D3 to "1" end vector ! Sub definitions sub Write(Address, Data) execute Address execute Write_Enable execute Data execute Write_Disable end sub sub Read(Address ,Data) execute Address execute Read_Enable execute Data_R_x execute Data end sub !AT The following subroutines have been added for a minimum pins test. !AT Vectors in the subroutines reference the entire data bus. !AT Therefore this subroutine was copied and modified to reference only !AT a single pin of the data bus. sub Write_Dx(Address, Write_Enable, Data, Write_Disable) execute Address execute Write_Enable execute Data execute Write_Disable end sub sub Read_Dx(Address, Read_Enable, Data_R_x, Data) execute Address execute Read_Enable execute Data_R_x execute Data end sub ! Unit Definitions ! Check Address and Data lines ! The following pattern of Address_Bus and Data_Bus Write/Read ! tests for an address pin stuck to Hi and also for address pins ! are stuck together. !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 Init_State call Write_Dx (Address_00_000_D0, Write_Enable_D0, Data_D0_0, Write_Disable_D0) call Read_Dx (Address_00_000_D0, Read_Enable_D0, Data_RD0_x, Data_RD0_0) call Write_Dx (Address_00_000_D0, Write_Enable_D0, Data_D0_1, Write_Disable_D0) call Read_Dx (Address_00_000_D0, Read_Enable_D0, Data_RD0_x, Data_RD0_1) end unit unit "awaretest D1 Test" execute Init_State call Write_Dx (Address_00_000_D1, Write_Enable_D1, Data_D1_0, Write_Disable_D1) call Read_Dx (Address_00_000_D1, Read_Enable_D1, Data_RD1_x, Data_RD1_0) call Write_Dx (Address_00_000_D1, Write_Enable_D1, Data_D1_1, Write_Disable_D1) call Read_Dx (Address_00_000_D1, Read_Enable_D1, Data_RD1_x, Data_RD1_1) end unit unit "awaretest D2 Test" execute Init_State call Write_Dx (Address_00_000_D2, Write_Enable_D2, Data_D2_0, Write_Disable_D2) call Read_Dx (Address_00_000_D2, Read_Enable_D2, Data_RD2_x, Data_RD2_0) call Write_Dx (Address_00_000_D2, Write_Enable_D2, Data_D2_1, Write_Disable_D2) call Read_Dx (Address_00_000_D2, Read_Enable_D2, Data_RD2_x, Data_RD2_1) end unit unit "awaretest D3 Test" execute Init_State call Write_Dx (Address_00_000_D3, Write_Enable_D3, Data_D3_0, Write_Disable_D3) call Read_Dx (Address_00_000_D3, Read_Enable_D3, Data_RD3_x, Data_RD3_0) call Write_Dx (Address_00_000_D3, Write_Enable_D3, Data_D3_1, Write_Disable_D3) call Read_Dx (Address_00_000_D3, Read_Enable_D3, Data_RD3_x, Data_RD3_1) end unit unit "Address, Data test" execute Init_State call Write (Address_Bus_00_000, Data_D_0) call Write (Address_Bus_00_001, Data_D_1) call Write (Address_Bus_00_002, Data_D_2) call Write (Address_Bus_00_004, Data_D_3) call Write (Address_Bus_00_008, Data_D_4) call Write (Address_Bus_00_010, Data_D_5) call Write (Address_Bus_00_020, Data_D_6) call Write (Address_Bus_00_040, Data_D_7) call Write (Address_Bus_00_080, Data_D_8) call Write (Address_Bus_00_100, Data_D_9) call Write (Address_Bus_00_200, Data_D_A) call Write (Address_Bus_00_400, Data_D_B) call Write (Address_Bus_00_800, Data_D_C) call Write (Address_Bus_01_000, Data_D_D) call Write (Address_Bus_10_000, Data_D_E) call Read (Address_Bus_00_000, Data_R_0) call Read (Address_Bus_00_001, Data_R_1) call Read (Address_Bus_00_002, Data_R_2) call Read (Address_Bus_00_004, Data_R_3) call Read (Address_Bus_00_008, Data_R_4) call Read (Address_Bus_00_010, Data_R_5) call Read (Address_Bus_00_020, Data_R_6) call Read (Address_Bus_00_040, Data_R_7) call Read (Address_Bus_00_080, Data_R_8) call Read (Address_Bus_00_100, Data_R_9) call Read (Address_Bus_00_200, Data_R_A) call Read (Address_Bus_00_400, Data_R_B) call Read (Address_Bus_00_800, Data_R_C) call Read (Address_Bus_01_000, Data_R_D) call Read (Address_Bus_10_000, Data_R_E) end unit ! ********************************************************************* ! Check Output Enable ! Toggling G_bar btween Hi to Lo with Write_Bar held Hi ! for Data output to go between 0 to Z-state to 0 warning "This test required pullups on pins 17, 16, 15, 14 to" warning "test Output Enable pin" unit "Output Enable test" execute Init_State call Write ( Address_Bus_00_000, Data_D_0) call Read ( Address_Bus_00_000, Data_R_0) execute Read_Enable execute Output_Disable call Read ( Address_Bus_00_000, Data_R_F) execute Read_Enable execute Output_Enable call Read ( Address_Bus_00_000, Data_R_0) end unit ! ******************************************************************** ! Check Chip Enable ! Toggling E_Bar between Hi to Lo with G_Bar held Lo ! for Data output to go between 0 to Z-state to 0 warning "This test required pullups on pins 17, 16, 15, 14 to" warning "test Chip Enable pin" unit "Chip Enable test" execute Init_State call Write ( Address_Bus_00_000, Data_D_0) call Read ( Address_Bus_00_000, Data_R_0) execute Output_Enable execute Chip_Disable call Read ( Address_Bus_00_000, Data_R_F) execute Output_Enable execute Chip_Enable call Read ( Address_Bus_00_000, Data_R_0) end unit ! *********************************************************************