!!!! 6 0 1 991860520 V1bca ! Device : 40104 ! Function : shift_register 3-state 4-bit_bidirectional_universal ! revision : B.01.00 ! safeguard : standard_cmos ! Modifications : Modified for AwareTest xi ! warning "This library has not been verified with hardware." sequential vector cycle 1u receive delay 900n assign VDD to pins 16 assign VSS to pins 8 assign Parallel_inputs to pins 3,4,5,6 assign Serial_right to pins 2 assign Serial_left to pins 7 assign Outputs to pins 15,14,13,12 assign D0 to pins 12 !AT Added for minimum pin test. assign D1 to pins 13 !AT Added for minimum pin test. assign D2 to pins 14 !AT Added for minimum pin test. assign D3 to pins 15 !AT Added for minimum pin test. assign QD_output to pins 12 assign QA_output to pins 15 assign Clock to pins 11 assign Output_enable to pins 1 assign Mode_inputs to pins 10,9 family CMOS power VDD, VSS inputs Parallel_inputs, Serial_right, Serial_left, Clock inputs Output_enable, Mode_inputs outputs Outputs, QD_output, QA_output outputs D0, D1, D2, D3 !AT Added for minimum pin test. disable Outputs with Output_enable to "0" when Output_enable is "0" inactive Outputs trace Outputs to Parallel_inputs,Serial_right,Serial_left trace Outputs to Clock,Output_enable,Mode_inputs !********************************************************************* !********************************************************************* vector Clock_high__hold set Parallel_inputs to "kkkk" set Mode_inputs to "00" set Clock to "1" end vector vector Clock_high__left set Mode_inputs to "10" set Serial_left to "k" set Clock to "1" end vector vector Clock_high__load set Mode_inputs to "11" set Parallel_inputs to "kkkk" set Clock to "1" end vector vector Clock_high__right set Mode_inputs to "01" set Serial_right to "k" set Clock to "1" end vector vector Clock_high__shift set Mode_inputs to "kk" set Clock to "1" end vector vector Clock_low set Mode_inputs to "kk" set Clock to "0" end vector vector Inputs_0000 set Clock to "0" set Mode_inputs to "11" set Parallel_inputs to "0000" end vector vector Inputs_0000__hold set Clock to "0" set Mode_inputs to "00" set Parallel_inputs to "0000" end vector vector Inputs_0101 set Clock to "0" set Mode_inputs to "11" set Parallel_inputs to "0101" end vector vector Inputs_1010 set Clock to "0" set Mode_inputs to "11" set Parallel_inputs to "1010" end vector vector Inputs_1111 set Clock to "0" set Mode_inputs to "11" set Parallel_inputs to "1111" end vector vector Mode_shift_left set Clock to "0" set Mode_inputs to "10" end vector vector Mode_shift_right set Clock to "0" set Mode_inputs to "01" end vector vector Outputs_0000 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "0000" end vector vector Outputs_0101 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "0101" end vector vector Outputs_0101_ksd_right set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_right to "k" set Outputs to "0101" end vector vector Outputs_0101_ksd_left set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_left to "k" set Outputs to "0101" end vector vector Outputs_010X set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "010X" end vector vector Outputs_01XX set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "01XX" end vector vector Outputs_0XXX set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "0XXX" end vector vector Outputs_1010 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "1010" end vector vector Outputs_1010_ksd_right set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_right to "k" set Outputs to "1010" end vector vector Outputs_1010_ksd_left set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_left to "k" set Outputs to "1010" end vector vector Outputs_101X set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "101X" end vector vector Outputs_10XX set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "10XX" end vector vector Outputs_1111 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "1111" end vector vector Outputs_1XXX set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "1XXX" end vector vector Outputs_X010 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "X010" end vector vector Outputs_X101 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "X101" end vector vector Outputs_XX01 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "XX01" end vector vector Outputs_XX10 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "XX10" end vector vector Outputs_XXX0 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "XXX0" end vector vector Outputs_XXX1 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Outputs to "XXX1" end vector vector Serial_left_high set Clock to "0" set Mode_inputs to "10" set Serial_left to "1" end vector vector Serial_left_low set Clock to "0" set Mode_inputs to "10" set Serial_left to "0" end vector vector Serial_right_high set Clock to "0" set Mode_inputs to "01" set Serial_right to "1" end vector vector Serial_right_low set Clock to "0" set Mode_inputs to "01" set Serial_right to "0" 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 D0_0 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set D0 to "0" end vector vector D0_1 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set D0 to "1" end vector vector D1_0 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set D1 to "0" end vector vector D1_1 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set D1 to "1" end vector vector D2_0 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set D2 to "0" end vector vector D2_1 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set D2 to "1" end vector vector D3_0 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set D3 to "0" end vector vector D3_1 set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set D3 to "1" end vector vector D0_0_ksd_right set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_right to "k" set D0 to "0" end vector vector D0_1_ksd_right set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_right to "k" set D0 to "1" end vector vector D1_0_ksd_right set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_right to "k" set D1 to "0" end vector vector D1_1_ksd_right set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_right to "k" set D1 to "1" end vector vector D2_0_ksd_right set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_right to "k" set D2 to "0" end vector vector D2_1_ksd_right set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_right to "k" set D2 to "1" end vector vector D3_0_ksd_right set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_right to "k" set D3 to "0" end vector vector D3_1_ksd_right set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_right to "k" set D3 to "1" end vector vector D0_0_ksd_left set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_left to "k" set D0 to "0" end vector vector D0_1_ksd_left set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_left to "k" set D0 to "1" end vector vector D1_0_ksd_left set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_left to "k" set D1 to "0" end vector vector D1_1_ksd_left set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_left to "k" set D1 to "1" end vector vector D2_0_ksd_left set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_left to "k" set D2 to "0" end vector vector D2_1_ksd_left set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_left to "k" set D2 to "1" end vector vector D3_0_ksd_left set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_left to "k" set D3 to "0" end vector vector D3_1_ksd_left set Output_enable to "1" set Clock to "0" set Mode_inputs to "kk" set Serial_left to "k" set D3 to "1" end vector !********************************************************************* !********************************************************************* sub Clock_cycle (Clock_high) execute Clock_high execute Clock_low 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 shift right Test" repeat 4 times execute Serial_right_low call Clock_cycle (Clock_high__right) end repeat execute D0_0_ksd_right repeat 4 times execute Serial_right_high call Clock_cycle (Clock_high__right) end repeat execute D0_1_ksd_right end unit unit "awaretest D1 shift right Test" repeat 4 times execute Serial_right_low call Clock_cycle (Clock_high__right) end repeat execute D1_0_ksd_right repeat 4 times execute Serial_right_high call Clock_cycle (Clock_high__right) end repeat execute D1_1_ksd_right end unit unit "awaretest D2 shift right Test" repeat 4 times execute Serial_right_low call Clock_cycle (Clock_high__right) end repeat execute D2_0_ksd_right repeat 4 times execute Serial_right_high call Clock_cycle (Clock_high__right) end repeat execute D2_1_ksd_right end unit unit "awaretest D3 shift right Test" repeat 4 times execute Serial_right_low call Clock_cycle (Clock_high__right) end repeat execute D3_0_ksd_right repeat 4 times execute Serial_right_high call Clock_cycle (Clock_high__right) end repeat execute D3_1_ksd_right end unit unit "awaretest D0 shift left Test" repeat 4 times execute Serial_left_low call Clock_cycle (Clock_high__left) end repeat execute D0_0_ksd_left repeat 4 times execute Serial_left_high call Clock_cycle (Clock_high__left) end repeat execute D0_1_ksd_left end unit unit "awaretest D1 shift left Test" repeat 4 times execute Serial_left_low call Clock_cycle (Clock_high__left) end repeat execute D1_0_ksd_left repeat 4 times execute Serial_left_high call Clock_cycle (Clock_high__left) end repeat execute D1_1_ksd_left end unit unit "awaretest D2 shift left Test" repeat 4 times execute Serial_left_low call Clock_cycle (Clock_high__left) end repeat execute D2_0_ksd_left repeat 4 times execute Serial_left_high call Clock_cycle (Clock_high__left) end repeat execute D2_1_ksd_left end unit unit "awaretest D3 shift left Test" repeat 4 times execute Serial_left_low call Clock_cycle (Clock_high__left) end repeat execute D3_0_ksd_left repeat 4 times execute Serial_left_high call Clock_cycle (Clock_high__left) end repeat execute D3_1_ksd_left end unit unit "awaretest D0 parallel load Test" execute Inputs_0000 call Clock_cycle (Clock_high__load) execute D0_0 execute Inputs_1111 call Clock_cycle (Clock_high__load) execute D0_1 end unit unit "awaretest D1 parallel load Test" execute Inputs_0000 call Clock_cycle (Clock_high__load) execute D1_0 execute Inputs_1111 call Clock_cycle (Clock_high__load) execute D1_1 end unit unit "awaretest D2 parallel load Test" execute Inputs_0000 call Clock_cycle (Clock_high__load) execute D2_0 execute Inputs_1111 call Clock_cycle (Clock_high__load) execute D2_1 end unit unit "awaretest D3 parallel load Test" execute Inputs_0000 call Clock_cycle (Clock_high__load) execute D3_0 execute Inputs_1111 call Clock_cycle (Clock_high__load) execute D3_1 end unit !********************************************************************* unit "shift right only" repeat 2 times execute Serial_right_high call Clock_cycle (Clock_high__right) execute Serial_right_low call Clock_cycle (Clock_high__right) end repeat execute Outputs_0101_ksd_right repeat 2 times execute Serial_right_high call Clock_cycle (Clock_high__right) execute Outputs_1010_ksd_right execute Serial_right_low call Clock_cycle (Clock_high__right) execute Outputs_0101_ksd_right end repeat end unit unit "shift left only" repeat 2 times execute Serial_left_high call Clock_cycle (Clock_high__left) execute Serial_left_low call Clock_cycle (Clock_high__left) end repeat execute Outputs_1010_ksd_left repeat 2 times execute Serial_left_high call Clock_cycle (Clock_high__left) execute Outputs_0101_ksd_left execute Serial_left_low call Clock_cycle (Clock_high__left) execute Outputs_1010_ksd_left end repeat end unit unit "parallel load and hold" execute Inputs_0000 call Clock_cycle (Clock_high__load) execute Outputs_0000 execute Inputs_1111 call Clock_cycle (Clock_high__load) execute Outputs_1111 execute Inputs_0000__hold call Clock_cycle (Clock_high__hold) execute Outputs_1111 end unit unit "parallel input, shift right" execute Inputs_1010 call Clock_cycle (Clock_high__load) execute Outputs_1010 execute Mode_shift_right call Clock_cycle (Clock_high__shift) execute Outputs_X101 call Clock_cycle (Clock_high__shift) execute Outputs_XX10 call Clock_cycle (Clock_high__shift) execute Outputs_XXX1 execute Inputs_0101 call Clock_cycle (Clock_high__load) execute Outputs_0101 execute Mode_shift_right call Clock_cycle (Clock_high__shift) execute Outputs_X010 call Clock_cycle (Clock_high__shift) execute Outputs_XX01 call Clock_cycle (Clock_high__shift) execute Outputs_XXX0 end unit unit "parallel input, shift left" execute Inputs_1010 call Clock_cycle (Clock_high__load) execute Outputs_1010 execute Mode_shift_left call Clock_cycle (Clock_high__shift) execute Outputs_010X call Clock_cycle (Clock_high__shift) execute Outputs_10XX call Clock_cycle (Clock_high__shift) execute Outputs_0XXX execute Inputs_0101 call Clock_cycle (Clock_high__load) execute Outputs_0101 execute Mode_shift_left call Clock_cycle (Clock_high__shift) execute Outputs_101X call Clock_cycle (Clock_high__shift) execute Outputs_01XX call Clock_cycle (Clock_high__shift) execute Outputs_1XXX end unit unit "circular shift right, QD and Serial_right tied" tied Serial_right, QD_output execute Inputs_1111 call Clock_cycle (Clock_high__load) execute Outputs_1111 execute Inputs_1010 call Clock_cycle (Clock_high__load) execute Outputs_1010 execute Mode_shift_right repeat 2 times call Clock_cycle (Clock_high__shift) execute Outputs_0101 call Clock_cycle (Clock_high__shift) execute Outputs_1010 end repeat execute Inputs_0101 call Clock_cycle (Clock_high__load) execute Outputs_0101 execute Mode_shift_right repeat 2 times call Clock_cycle (Clock_high__shift) execute Outputs_1010 call Clock_cycle (Clock_high__shift) execute Outputs_0101 end repeat end unit unit "circular shift left, QA and Serial_left tied" tied Serial_left, QA_output execute Inputs_1111 call Clock_cycle (Clock_high__load) execute Outputs_1111 execute Inputs_1010 call Clock_cycle (Clock_high__load) execute Outputs_1010 execute Mode_shift_left repeat 2 times call Clock_cycle (Clock_high__shift) execute Outputs_0101 call Clock_cycle (Clock_high__shift) execute Outputs_1010 end repeat execute Inputs_0101 call Clock_cycle (Clock_high__load) execute Outputs_0101 execute Mode_shift_left repeat 2 times call Clock_cycle (Clock_high__shift) execute Outputs_1010 call Clock_cycle (Clock_high__shift) execute Outputs_0101 end repeat end unit ! End of test