!!!! 6 0 1 987179758 Vcc7b ! Device : 7130 ! Function : CMOS Dual-port Ram 8K ! revision : B.01.00 ! safeguard : high_out_cmos ! Modifications : Modified for AwareTest xi ! warning "This library has not been verified with hardware." !Integrated Device Technology, Inc. data sheet !safeguard is "high_out_cmos" sequential assign VCC to pins 48 assign GND to pins 24 assign CE_bar_left to pins 1 assign RW_bar_left to pins 2 assign OE_bar_left to pins 5 assign Add_left to pins 15,14,13,12,11 assign Add_left to pins 10,9,8,7,6 assign BUSY_bar_left to pins 3 assign INT_bar_left to pins 4 assign IO_port_left to pins 23,22,21,20 assign IO_port_left to pins 19,18,17,16 assign IO_port_left_D0 to pins 16 !AT Added for minimum pin test. assign IO_port_left_D1 to pins 17 !AT Added for minimum pin test. assign IO_port_left_D2 to pins 18 !AT Added for minimum pin test. assign IO_port_left_D3 to pins 19 !AT Added for minimum pin test. assign IO_port_left_D4 to pins 20 !AT Added for minimum pin test. assign IO_port_left_D5 to pins 21 !AT Added for minimum pin test. assign IO_port_left_D6 to pins 22 !AT Added for minimum pin test. assign IO_port_left_D7 to pins 23 !AT Added for minimum pin test. assign Disable_pins_left to pins 1,5,2 assign CE_bar_right to pins 47 assign RW_bar_right to pins 46 assign OE_bar_right to pins 43 assign Add_right to pins 33,34,35,36,37 assign Add_right to pins 38,39,40,41,42 assign BUSY_bar_right to pins 45 assign INT_bar_right to pins 44 assign IO_port_right to pins 32,31,30,29 assign IO_port_right to pins 28,27,26,25 assign IO_port_right_D0 to pins 25 !AT Added for minimum pin test. assign IO_port_right_D1 to pins 26 !AT Added for minimum pin test. assign IO_port_right_D2 to pins 27 !AT Added for minimum pin test. assign IO_port_right_D3 to pins 28 !AT Added for minimum pin test. assign IO_port_right_D4 to pins 29 !AT Added for minimum pin test. assign IO_port_right_D5 to pins 30 !AT Added for minimum pin test. assign IO_port_right_D6 to pins 31 !AT Added for minimum pin test. assign IO_port_right_D7 to pins 32 !AT Added for minimum pin test. assign Disable_pins_right to pins 47,43,46 inputs CE_bar_left,RW_bar_left inputs OE_bar_left,Add_left inputs CE_bar_right,RW_bar_right inputs OE_bar_right,Add_right outputs INT_bar_left,INT_bar_right outputs BUSY_bar_left,BUSY_bar_right bidirectional IO_port_left, IO_port_right bidirectional IO_port_right_D0, IO_port_right_D1 !AT Added for min. pin test. bidirectional IO_port_right_D2, IO_port_right_D3 !AT Added for min. pin test. bidirectional IO_port_right_D4, IO_port_right_D5 !AT Added for min. pin test. bidirectional IO_port_right_D6, IO_port_right_D7 !AT Added for min. pin test. bidirectional IO_port_left_D0, IO_port_left_D1 !AT Added for min. pin test. bidirectional IO_port_left_D2, IO_port_left_D3 !AT Added for min. pin test. bidirectional IO_port_left_D4, IO_port_left_D5 !AT Added for min. pin test. bidirectional IO_port_left_D6, IO_port_left_D7 !AT Added for min. pin test. format hexadecimal IO_port_left,IO_port_right family TTL power VCC,GND !************* Backtrace Information *************************** trace IO_port_left to CE_bar_left,OE_bar_left,RW_bar_left,Add_left trace INT_bar_left to Add_right,RW_bar_right,OE_bar_left trace BUSY_bar_left to Add_left,Add_right,CE_bar_left,CE_bar_right trace IO_port_right to CE_bar_right,OE_bar_right,RW_bar_right,Add_right trace INT_bar_right to Add_right,RW_bar_right,OE_bar_right trace BUSY_bar_right to Add_right,Add_right,CE_bar_right,CE_bar_right !************ Disable information ****************************** disable IO_port_left with Disable_pins_left to "1XX" disable IO_port_left with Disable_pins_left to "011" disable IO_port_right with Disable_pins_right to "1XX" disable IO_port_right with Disable_pins_right to "011" when Disable_pins_left is "0X0" inputs IO_port_left when Disable_pins_left is "001" outputs IO_port_left when Disable_pins_left is "1XX" inactive IO_port_left when Disable_pins_left is "011" inactive IO_port_left when Disable_pins_right is "0X0" inputs IO_port_right when Disable_pins_right is "001" outputs IO_port_right when Disable_pins_right is "1XX" inactive IO_port_right when Disable_pins_right is "011" inactive IO_port_right set load on groups INT_bar_left, INT_bar_right to pull up set load on groups BUSY_bar_left, BUSY_bar_right to pull up !warning "Pull-ups are required on the open drain outputs, BUSY_bar_left" !warning "(pin 3),BUSY_bar_right(pin 45),INT_bar_right(pin 44), and " !warning "INT_bar_left (pin 4) for the test to run." warning "Pull-ups are also required in order to test the output enable pins." warning "The pull-ups need to be placed on 16 pins, IO_port_left and" warning "IO_port_right. The two units that require these 16 pull-ups have" warning "been commented out" !********************************************************************** !*********************** VECTOR SECTION ************************ !********************************************************************** vector Set_values_left set OE_bar_left to "1" set CE_bar_left to "1" set RW_bar_left to "1" set Add_left to "0000000000" end vector vector Set_values_right set OE_bar_right to "1" set CE_bar_right to "1" set RW_bar_right to "1" set Add_right to "0000000000" end vector vector Keep_values_left set OE_bar_left to "k" set CE_bar_left to "k" set RW_bar_left to "k" set Add_left to "kkkkkkkkkk" end vector vector Keep_values_right set OE_bar_right to "k" set CE_bar_right to "k" set RW_bar_right to "k" set Add_right to "kkkkkkkkkk" end vector vector CE_bar_left_low initialize to Keep_values_left set CE_bar_left to "0" end vector vector CE_bar_right_low initialize to Keep_values_right set CE_bar_right to "0" end vector vector CE_bar_left_hi initialize to Keep_values_left set CE_bar_left to "1" end vector vector CE_bar_right_hi initialize to Keep_values_right set CE_bar_right to "1" end vector vector OE_bar_left_low initialize to Keep_values_left set OE_bar_left to "0" end vector vector OE_bar_right_low initialize to Keep_values_right set OE_bar_right to "0" end vector vector OE_bar_left_hi initialize to Keep_values_left set OE_bar_left to "1" end vector vector OE_bar_right_hi initialize to Keep_values_right set OE_bar_right to "1" end vector vector RW_bar_left_low initialize to Keep_values_left set RW_bar_left to "0" end vector vector RW_bar_right_low initialize to Keep_values_right set RW_bar_right to "0" end vector vector RW_bar_left_hi initialize to Keep_values_left set RW_bar_left to "1" end vector vector RW_bar_right_hi initialize to Keep_values_right set RW_bar_right to "1" end vector vector BUSY_bar_left_low initialize to Keep_values_left set BUSY_bar_left to "0" end vector vector BUSY_bar_right_low initialize to Keep_values_right set BUSY_bar_right to "0" end vector vector BUSY_bar_left_hi initialize to Keep_values_left set BUSY_bar_left to "1" end vector vector BUSY_bar_right_hi initialize to Keep_values_right set BUSY_bar_right to "1" end vector vector INT_bar_left_low initialize to Keep_values_left set INT_bar_left to "0" end vector vector INT_bar_right_low initialize to Keep_values_right set INT_bar_right to "0" end vector vector INT_bar_left_hi initialize to Keep_values_left set INT_bar_left to "1" end vector vector INT_bar_right_hi initialize to Keep_values_right set INT_bar_right to "1" end vector vector Add_left_0000000000 initialize to Keep_values_left set Add_left to "0000000000" end vector vector Add_left_0011001101 initialize to Keep_values_left set Add_left to "0011001101" end vector vector Add_left_0101010101 initialize to Keep_values_left set Add_left to "0101010101" end vector vector Add_left_1000001111 initialize to Keep_values_left set Add_left to "1010101010" end vector vector Add_left_1001001001 initialize to Keep_values_left set Add_left to "1001001001" end vector vector Add_left_1010101010 initialize to Keep_values_left set Add_left to "1010101010" end vector vector Add_left_1010110010 initialize to Keep_values_left set Add_left to "1010110010" end vector vector Add_left_1100000000 initialize to Keep_values_left set Add_left to "1100000000" end vector vector Add_left_1100110010 initialize to Keep_values_left set Add_left to "1100110010" end vector vector Add_left_1111111110 initialize to Keep_values_left set Add_left to "1111111110" end vector vector Add_left_1111111111 initialize to Keep_values_left set Add_left to "1111111111" end vector vector Add_right_0000000000 initialize to Keep_values_right set Add_right to "0000000000" end vector vector Add_right_0011001101 initialize to Keep_values_right set Add_right to "0011001101" end vector vector Add_right_0101010101 initialize to Keep_values_right set Add_right to "0101010101" end vector vector Add_right_1010101010 initialize to Keep_values_right set Add_right to "1010101010" end vector vector Add_right_1010110010 initialize to Keep_values_right set Add_right to "1010110010" end vector vector Add_right_1100110010 initialize to Keep_values_right set Add_right to "1100110010" end vector vector Add_right_1111111100 initialize to Keep_values_right set Add_right to "1111111100" end vector vector Add_right_1111111110 initialize to Keep_values_right set Add_right to "1111111110" end vector vector Add_right_1111111111 initialize to Keep_values_right set Add_right to "1111111111" end vector vector Left_port_drive_00 initialize to Keep_values_left drive IO_port_left set IO_port_left to "00" end vector vector Left_port_drive_55 initialize to Keep_values_left drive IO_port_left set IO_port_left to "55" end vector vector Left_port_drive_AA initialize to Keep_values_left drive IO_port_left set IO_port_left to "AA" end vector vector Left_port_drive_CC initialize to Keep_values_left drive IO_port_left set IO_port_left to "CC" end vector vector Left_port_drive_FF initialize to Keep_values_left drive IO_port_left set IO_port_left to "FF" end vector vector Right_port_drive_00 initialize to Keep_values_right drive IO_port_right set IO_port_right to "00" end vector vector Right_port_drive_33 initialize to Keep_values_right drive IO_port_right set IO_port_right to "33" end vector vector Right_port_drive_55 initialize to Keep_values_right drive IO_port_right set IO_port_right to "55" end vector vector Right_port_drive_AA initialize to Keep_values_right drive IO_port_right set IO_port_right to "AA" end vector vector Right_port_drive_CC initialize to Keep_values_right drive IO_port_right set IO_port_right to "CC" end vector vector Right_port_drive_FF initialize to Keep_values_right drive IO_port_right set IO_port_right to "FF" end vector vector Left_port_receive_00 initialize to Keep_values_left receive IO_port_left set IO_port_left to "00" end vector vector Left_port_receive_33 initialize to Keep_values_left receive IO_port_left set IO_port_left to "33" end vector vector Left_port_receive_55 initialize to Keep_values_left receive IO_port_left set IO_port_left to "55" end vector vector Left_port_receive_AA initialize to Keep_values_left receive IO_port_left set IO_port_left to "AA" end vector vector Left_port_receive_CC initialize to Keep_values_left receive IO_port_left set IO_port_left to "CC" end vector vector Left_port_receive_FF initialize to Keep_values_left receive IO_port_left set IO_port_left to "FF" end vector vector Right_port_receive_00 initialize to Keep_values_right receive IO_port_right set IO_port_right to "00" end vector vector Right_port_receive_33 initialize to Keep_values_right receive IO_port_right set IO_port_right to "33" end vector vector Right_port_receive_55 initialize to Keep_values_right receive IO_port_right set IO_port_right to "55" end vector vector Right_port_receive_AA initialize to Keep_values_right receive IO_port_right set IO_port_right to "AA" end vector vector Right_port_receive_CC initialize to Keep_values_right receive IO_port_right set IO_port_right to "CC" end vector vector Right_port_receive_FF initialize to Keep_values_right receive IO_port_right set IO_port_right to "FF" 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 Left_port_drive_D0_0 initialize to Keep_values_left drive IO_port_left_D0 set IO_port_left_D0 to "0" end vector vector Left_port_drive_D0_1 initialize to Keep_values_left drive IO_port_left_D0 set IO_port_left_D0 to "1" end vector vector Right_port_drive_D0_0 initialize to Keep_values_right drive IO_port_right_D0 set IO_port_right_D0 to "0" end vector vector Right_port_drive_D0_1 initialize to Keep_values_right drive IO_port_right_D0 set IO_port_right_D0 to "1" end vector vector Left_port_receive_D0_0 initialize to Keep_values_left receive IO_port_left_D0 set IO_port_left_D0 to "0" end vector vector Left_port_receive_D0_1 initialize to Keep_values_left receive IO_port_left_D0 set IO_port_left_D0 to "1" end vector vector Right_port_receive_D0_0 initialize to Keep_values_right receive IO_port_right_D0 set IO_port_right_D0 to "0" end vector vector Right_port_receive_D0_1 initialize to Keep_values_right receive IO_port_right_D0 set IO_port_right_D0 to "1" end vector vector Left_port_drive_D1_0 initialize to Keep_values_left drive IO_port_left_D1 set IO_port_left_D1 to "0" end vector vector Left_port_drive_D1_1 initialize to Keep_values_left drive IO_port_left_D1 set IO_port_left_D1 to "1" end vector vector Right_port_drive_D1_0 initialize to Keep_values_right drive IO_port_right_D1 set IO_port_right_D1 to "0" end vector vector Right_port_drive_D1_1 initialize to Keep_values_right drive IO_port_right_D1 set IO_port_right_D1 to "1" end vector vector Left_port_receive_D1_0 initialize to Keep_values_left receive IO_port_left_D1 set IO_port_left_D1 to "0" end vector vector Left_port_receive_D1_1 initialize to Keep_values_left receive IO_port_left_D1 set IO_port_left_D1 to "1" end vector vector Right_port_receive_D1_0 initialize to Keep_values_right receive IO_port_right_D1 set IO_port_right_D1 to "0" end vector vector Right_port_receive_D1_1 initialize to Keep_values_right receive IO_port_right_D1 set IO_port_right_D1 to "1" end vector vector Left_port_drive_D2_0 initialize to Keep_values_left drive IO_port_left_D2 set IO_port_left_D2 to "0" end vector vector Left_port_drive_D2_1 initialize to Keep_values_left drive IO_port_left_D2 set IO_port_left_D2 to "1" end vector vector Right_port_drive_D2_0 initialize to Keep_values_right drive IO_port_right_D2 set IO_port_right_D2 to "0" end vector vector Right_port_drive_D2_1 initialize to Keep_values_right drive IO_port_right_D2 set IO_port_right_D2 to "1" end vector vector Left_port_receive_D2_0 initialize to Keep_values_left receive IO_port_left_D2 set IO_port_left_D2 to "0" end vector vector Left_port_receive_D2_1 initialize to Keep_values_left receive IO_port_left_D2 set IO_port_left_D2 to "1" end vector vector Right_port_receive_D2_0 initialize to Keep_values_right receive IO_port_right_D2 set IO_port_right_D2 to "0" end vector vector Right_port_receive_D2_1 initialize to Keep_values_right receive IO_port_right_D2 set IO_port_right_D2 to "1" end vector vector Left_port_drive_D3_0 initialize to Keep_values_left drive IO_port_left_D3 set IO_port_left_D3 to "0" end vector vector Left_port_drive_D3_1 initialize to Keep_values_left drive IO_port_left_D3 set IO_port_left_D3 to "1" end vector vector Right_port_drive_D3_0 initialize to Keep_values_right drive IO_port_right_D3 set IO_port_right_D3 to "0" end vector vector Right_port_drive_D3_1 initialize to Keep_values_right drive IO_port_right_D3 set IO_port_right_D3 to "1" end vector vector Left_port_receive_D3_0 initialize to Keep_values_left receive IO_port_left_D3 set IO_port_left_D3 to "0" end vector vector Left_port_receive_D3_1 initialize to Keep_values_left receive IO_port_left_D3 set IO_port_left_D3 to "1" end vector vector Right_port_receive_D3_0 initialize to Keep_values_right receive IO_port_right_D3 set IO_port_right_D3 to "0" end vector vector Right_port_receive_D3_1 initialize to Keep_values_right receive IO_port_right_D3 set IO_port_right_D3 to "1" end vector vector Left_port_drive_D4_0 initialize to Keep_values_left drive IO_port_left_D4 set IO_port_left_D4 to "0" end vector vector Left_port_drive_D4_1 initialize to Keep_values_left drive IO_port_left_D4 set IO_port_left_D4 to "1" end vector vector Right_port_drive_D4_0 initialize to Keep_values_right drive IO_port_right_D4 set IO_port_right_D4 to "0" end vector vector Right_port_drive_D4_1 initialize to Keep_values_right drive IO_port_right_D4 set IO_port_right_D4 to "1" end vector vector Left_port_receive_D4_0 initialize to Keep_values_left receive IO_port_left_D4 set IO_port_left_D4 to "0" end vector vector Left_port_receive_D4_1 initialize to Keep_values_left receive IO_port_left_D4 set IO_port_left_D4 to "1" end vector vector Right_port_receive_D4_0 initialize to Keep_values_right receive IO_port_right_D4 set IO_port_right_D4 to "0" end vector vector Right_port_receive_D4_1 initialize to Keep_values_right receive IO_port_right_D4 set IO_port_right_D4 to "1" end vector vector Left_port_drive_D5_0 initialize to Keep_values_left drive IO_port_left_D5 set IO_port_left_D5 to "0" end vector vector Left_port_drive_D5_1 initialize to Keep_values_left drive IO_port_left_D5 set IO_port_left_D5 to "1" end vector vector Right_port_drive_D5_0 initialize to Keep_values_right drive IO_port_right_D5 set IO_port_right_D5 to "0" end vector vector Right_port_drive_D5_1 initialize to Keep_values_right drive IO_port_right_D5 set IO_port_right_D5 to "1" end vector vector Left_port_receive_D5_0 initialize to Keep_values_left receive IO_port_left_D5 set IO_port_left_D5 to "0" end vector vector Left_port_receive_D5_1 initialize to Keep_values_left receive IO_port_left_D5 set IO_port_left_D5 to "1" end vector vector Right_port_receive_D5_0 initialize to Keep_values_right receive IO_port_right_D5 set IO_port_right_D5 to "0" end vector vector Right_port_receive_D5_1 initialize to Keep_values_right receive IO_port_right_D5 set IO_port_right_D5 to "1" end vector vector Left_port_drive_D6_0 initialize to Keep_values_left drive IO_port_left_D6 set IO_port_left_D6 to "0" end vector vector Left_port_drive_D6_1 initialize to Keep_values_left drive IO_port_left_D6 set IO_port_left_D6 to "1" end vector vector Right_port_drive_D6_0 initialize to Keep_values_right drive IO_port_right_D6 set IO_port_right_D6 to "0" end vector vector Right_port_drive_D6_1 initialize to Keep_values_right drive IO_port_right_D6 set IO_port_right_D6 to "1" end vector vector Left_port_receive_D6_0 initialize to Keep_values_left receive IO_port_left_D6 set IO_port_left_D6 to "0" end vector vector Left_port_receive_D6_1 initialize to Keep_values_left receive IO_port_left_D6 set IO_port_left_D6 to "1" end vector vector Right_port_receive_D6_0 initialize to Keep_values_right receive IO_port_right_D6 set IO_port_right_D6 to "0" end vector vector Right_port_receive_D6_1 initialize to Keep_values_right receive IO_port_right_D6 set IO_port_right_D6 to "1" end vector vector Left_port_drive_D7_0 initialize to Keep_values_left drive IO_port_left_D7 set IO_port_left_D7 to "0" end vector vector Left_port_drive_D7_1 initialize to Keep_values_left drive IO_port_left_D7 set IO_port_left_D7 to "1" end vector vector Right_port_drive_D7_0 initialize to Keep_values_right drive IO_port_right_D7 set IO_port_right_D7 to "0" end vector vector Right_port_drive_D7_1 initialize to Keep_values_right drive IO_port_right_D7 set IO_port_right_D7 to "1" end vector vector Left_port_receive_D7_0 initialize to Keep_values_left receive IO_port_left_D7 set IO_port_left_D7 to "0" end vector vector Left_port_receive_D7_1 initialize to Keep_values_left receive IO_port_left_D7 set IO_port_left_D7 to "1" end vector vector Right_port_receive_D7_0 initialize to Keep_values_right receive IO_port_right_D7 set IO_port_right_D7 to "0" end vector vector Right_port_receive_D7_1 initialize to Keep_values_right receive IO_port_right_D7 set IO_port_right_D7 to "1" end vector !********************************************************************** !******************** SUBROUTINE SECTION *********************** !********************************************************************** sub Read_left(Address,Data) execute RW_bar_left_hi execute Address execute CE_bar_left_low execute OE_bar_left_low execute Data execute CE_bar_left_hi execute OE_bar_left_hi end sub sub Read_right(Address,Data) execute RW_bar_right_hi execute Address execute CE_bar_right_low execute OE_bar_right_low execute Data execute CE_bar_right_hi execute OE_bar_right_hi end sub sub Write_left(Address,Data) execute OE_bar_left_low execute Address execute CE_bar_left_low execute RW_bar_left_low execute Data execute RW_bar_left_hi execute CE_bar_left_hi execute OE_bar_left_hi end sub sub Write_right(Address,Data) execute OE_bar_right_low execute Address execute CE_bar_right_low execute RW_bar_right_low execute Data execute RW_bar_right_hi execute CE_bar_right_hi execute OE_bar_right_hi 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 Left D0 Test" execute Set_values_left call Write_left(Add_left_0000000000,Left_port_drive_D0_0) call Read_left(Add_left_0000000000,Left_port_receive_D0_0) call Write_left(Add_left_0000000000,Left_port_drive_D0_1) call Read_left(Add_left_0000000000,Left_port_receive_D0_1) end unit unit "awaretest Left D1 Test" execute Set_values_left call Write_left(Add_left_0000000000,Left_port_drive_D1_0) call Read_left(Add_left_0000000000,Left_port_receive_D1_0) call Write_left(Add_left_0000000000,Left_port_drive_D1_1) call Read_left(Add_left_0000000000,Left_port_receive_D1_1) end unit unit "awaretest Left D2 Test" execute Set_values_left call Write_left(Add_left_0000000000,Left_port_drive_D2_0) call Read_left(Add_left_0000000000,Left_port_receive_D2_0) call Write_left(Add_left_0000000000,Left_port_drive_D2_1) call Read_left(Add_left_0000000000,Left_port_receive_D2_1) end unit unit "awaretest Left D3 Test" execute Set_values_left call Write_left(Add_left_0000000000,Left_port_drive_D3_0) call Read_left(Add_left_0000000000,Left_port_receive_D3_0) call Write_left(Add_left_0000000000,Left_port_drive_D3_1) call Read_left(Add_left_0000000000,Left_port_receive_D3_1) end unit unit "awaretest Left D4 Test" execute Set_values_left call Write_left(Add_left_0000000000,Left_port_drive_D4_0) call Read_left(Add_left_0000000000,Left_port_receive_D4_0) call Write_left(Add_left_0000000000,Left_port_drive_D4_1) call Read_left(Add_left_0000000000,Left_port_receive_D4_1) end unit unit "awaretest Left D5 Test" execute Set_values_left call Write_left(Add_left_0000000000,Left_port_drive_D5_0) call Read_left(Add_left_0000000000,Left_port_receive_D5_0) call Write_left(Add_left_0000000000,Left_port_drive_D5_1) call Read_left(Add_left_0000000000,Left_port_receive_D5_1) end unit unit "awaretest Left D6 Test" execute Set_values_left call Write_left(Add_left_0000000000,Left_port_drive_D6_0) call Read_left(Add_left_0000000000,Left_port_receive_D6_0) call Write_left(Add_left_0000000000,Left_port_drive_D6_1) call Read_left(Add_left_0000000000,Left_port_receive_D6_1) end unit unit "awaretest Left D7 Test" execute Set_values_left call Write_left(Add_left_0000000000,Left_port_drive_D7_0) call Read_left(Add_left_0000000000,Left_port_receive_D7_0) call Write_left(Add_left_0000000000,Left_port_drive_D7_1) call Read_left(Add_left_0000000000,Left_port_receive_D7_1) end unit unit "awaretest Right D0 Test" execute Set_values_Right call Write_Right(Add_Right_0000000000,Right_port_drive_D0_0) call Read_Right(Add_Right_0000000000,Right_port_receive_D0_0) call Write_Right(Add_Right_0000000000,Right_port_drive_D0_1) call Read_Right(Add_Right_0000000000,Right_port_receive_D0_1) end unit unit "awaretest Right D1 Test" execute Set_values_Right call Write_Right(Add_Right_0000000000,Right_port_drive_D1_0) call Read_Right(Add_Right_0000000000,Right_port_receive_D1_0) call Write_Right(Add_Right_0000000000,Right_port_drive_D1_1) call Read_Right(Add_Right_0000000000,Right_port_receive_D1_1) end unit unit "awaretest Right D2 Test" execute Set_values_Right call Write_Right(Add_Right_0000000000,Right_port_drive_D2_0) call Read_Right(Add_Right_0000000000,Right_port_receive_D2_0) call Write_Right(Add_Right_0000000000,Right_port_drive_D2_1) call Read_Right(Add_Right_0000000000,Right_port_receive_D2_1) end unit unit "awaretest Right D3 Test" execute Set_values_Right call Write_Right(Add_Right_0000000000,Right_port_drive_D3_0) call Read_Right(Add_Right_0000000000,Right_port_receive_D3_0) call Write_Right(Add_Right_0000000000,Right_port_drive_D3_1) call Read_Right(Add_Right_0000000000,Right_port_receive_D3_1) end unit unit "awaretest Right D4 Test" execute Set_values_Right call Write_Right(Add_Right_0000000000,Right_port_drive_D4_0) call Read_Right(Add_Right_0000000000,Right_port_receive_D4_0) call Write_Right(Add_Right_0000000000,Right_port_drive_D4_1) call Read_Right(Add_Right_0000000000,Right_port_receive_D4_1) end unit unit "awaretest Right D5 Test" execute Set_values_Right call Write_Right(Add_Right_0000000000,Right_port_drive_D5_0) call Read_Right(Add_Right_0000000000,Right_port_receive_D5_0) call Write_Right(Add_Right_0000000000,Right_port_drive_D5_1) call Read_Right(Add_Right_0000000000,Right_port_receive_D5_1) end unit unit "awaretest Right D6 Test" execute Set_values_Right call Write_Right(Add_Right_0000000000,Right_port_drive_D6_0) call Read_Right(Add_Right_0000000000,Right_port_receive_D6_0) call Write_Right(Add_Right_0000000000,Right_port_drive_D6_1) call Read_Right(Add_Right_0000000000,Right_port_receive_D6_1) end unit unit "awaretest Right D7 Test" execute Set_values_Right call Write_Right(Add_Right_0000000000,Right_port_drive_D7_0) call Read_Right(Add_Right_0000000000,Right_port_receive_D7_0) call Write_Right(Add_Right_0000000000,Right_port_drive_D7_1) call Read_Right(Add_Right_0000000000,Right_port_receive_D7_1) end unit !This unit checks the left port only by writing to and reading from !two different addresses. unit "Check left ports" execute Set_values_left call Write_left(Add_left_0101010101,Left_port_drive_AA) call Write_left(Add_left_1100000000,Left_port_drive_55) call Write_left(Add_left_1010101010,Left_port_drive_00) call Read_left(Add_left_0101010101,Left_port_receive_AA) call Read_left(Add_left_1100000000,Left_port_receive_55) call Read_left(Add_left_1010101010,Left_port_receive_00) end unit !This unit checks the right port only by writing to and reading from !two distinct addresses. unit "Check right port" execute Set_values_right call Write_right(Add_right_1100110010,Right_port_drive_33) call Write_right(Add_right_0011001101,Right_port_drive_CC) call Write_right(Add_right_1111111100,Right_port_drive_00) call Read_right(Add_right_1100110010,Right_port_receive_33) call Read_right(Add_right_0011001101,Right_port_receive_CC) call Read_right(Add_right_1111111100,Right_port_receive_00) end unit !In the next unit, the data is written to the core memory from the !left side and accessed through the right side. unit "Write left, read right" execute Set_values_left execute Set_values_right call Write_left(Add_left_0101010101,Left_port_drive_AA) call Write_left(Add_left_1010101010,Left_port_drive_55) call Read_Right(Add_Right_0101010101,Right_port_receive_AA) call Read_Right(Add_Right_1010101010,Right_port_receive_55) end unit !Now, the right side of the RAM is written to and the left side !accesses the information. unit "Write right, read left" call Write_right(Add_right_1100110010,Right_port_drive_33) call Write_right(Add_right_0011001101,Right_port_drive_CC) call Read_left(Add_left_1100110010,Left_port_receive_33) call Read_left(Add_left_0011001101,Left_port_receive_CC) end unit !NOTE, the next two units require a total of 16 pull-ups in order !to function properly. If these units are NOT executed, then !the output enable pins (pins 5,43) will NOT be completely tested!!! !unit "Test left output enable" !This unit requires pull-ups on the left I/O lines pins 16 through 23. ! execute Set_values_left ! call Write_left(Add_left_1001001001,Left_port_drive_00) ! execute RW_bar_left_hi ! execute Add_left_1001001001 ! execute CE_bar_left_low ! execute OE_bar_left_hi ! execute Left_port_receive_FF !end unit !unit "Test right output enable" ! !!This unit requires pull-ups on the right I/O lines pins 25 thru 32. ! ! execute Set_values_right ! call Write_right(Add_right_1001001001,Right_port_drive_00) ! execute RW_bar_left_hi ! execute Add_left_1001001001 ! execute CE_bar_left_low ! execute OE_bar_left_hi ! execute Right_port_receive_FF !end unit !This unit tests the Chip enable pin for the left side of the device. unit "Test left Chip Enable" execute Set_values_left execute Add_left_1010101010 execute RW_bar_left_low execute CE_bar_left_low execute Left_port_drive_AA execute RW_bar_left_hi execute CE_bar_left_hi execute Add_left_1010101010 execute RW_bar_left_low execute CE_bar_left_hi execute Left_port_drive_55 execute RW_bar_left_hi call Read_left(Add_left_1010101010,Left_port_receive_AA) end unit !This unit tests the right Chip enable pin of the device. unit "Test right Chip Enable" execute Set_values_right execute Add_right_1010101010 execute RW_bar_right_low execute CE_bar_right_low execute Right_port_drive_AA execute RW_bar_right_hi execute CE_bar_right_hi execute Add_right_1010101010 execute RW_bar_right_low execute CE_bar_right_hi execute Right_port_drive_55 execute RW_bar_right_hi call Read_right(Add_right_1010101010,Right_port_receive_AA) end unit !The BUSY_bar pins are used to moderate bus contention. The side that !is accessed first wins, and the opposite side puts out a low signal !on the BUSY line until the winning side has finished its cycle. Then !the losing side can continue its function. unit "Test BUSY_left" execute Set_values_right execute Set_values_left execute OE_bar_right_low execute OE_bar_left_low execute CE_bar_right_low execute CE_bar_left_low execute Add_right_1010110010 execute Add_left_1010110010 homingloop 10 times execute BUSY_bar_left_low exit if pass end homingloop execute RW_bar_right_low execute Right_port_drive_55 execute RW_bar_right_hi execute CE_bar_right_hi execute OE_bar_right_hi homingloop 20 times execute BUSY_bar_left_hi exit if pass end homingloop homingloop 20 times execute Left_port_receive_55 exit if pass end homingloop execute Keep_values_left execute CE_bar_left_hi execute OE_bar_left_hi end unit unit "Test BUSY_right" execute Set_values_left execute Set_values_right execute OE_bar_left_low execute OE_bar_right_low execute CE_bar_left_low execute CE_bar_right_low execute Add_left_1010101010 execute Add_right_1010101010 homingloop 10 times execute BUSY_bar_right_low exit if pass end homingloop execute RW_bar_left_low execute Left_port_drive_CC execute RW_bar_left_hi execute CE_bar_left_hi execute OE_bar_left_hi homingloop 20 times execute BUSY_bar_right_hi exit if pass end homingloop homingloop 20 times execute Right_port_receive_CC exit if pass end homingloop end unit !The interrupt line is used so that one side can interrupt the other !by trying to access a specific address and then attempting to start !a write cycle. When this occurs, the opposite side sends out a low !signal on the INT_bar line until the side that was interrupted resets !itself by sending out that same address that started the interrupt and !also enabling its output enable and chip enable lines. unit "Test INT_left" execute Set_values_left execute Set_values_right execute CE_bar_left_low execute CE_bar_right_low execute Add_right_1111111110 execute RW_bar_right_low homingloop 10 times execute INT_bar_left_low exit if pass end homingloop execute RW_bar_left_hi execute Add_left_1111111110 execute CE_bar_left_low execute OE_bar_left_low homingloop 20 times execute INT_bar_left_hi exit if pass end homingloop end unit unit "Test INT_right" execute Set_values_left execute Set_values_right execute CE_bar_left_low execute CE_bar_right_low execute Add_left_1111111111 execute RW_bar_left_low homingloop 10 times execute INT_bar_right_low exit if pass end homingloop execute RW_bar_right_hi execute Add_right_1111111111 execute CE_bar_right_low execute OE_bar_right_low homingloop 20 times execute INT_bar_right_hi exit if pass end homingloop end unit !!!end of test!!!