!!!!    6    0    1  991863050  Vcab8                                         

! Device           : 4517
! Function         : Shift_Register 3_State 64_Bit
! revision         : B.01.00
! safeguard        : standard_cmos
! Modifications    : No modifications. This test is compatible for AwareTest xi
!

warning "Library/cmos/4517: This test is for a CMOS shift register."
warning "The '4517' 16k x 1 dynamic RAM is entered as 'MCM4517'"
!
! This test is a duplicate of 'library/cmos/4517b' with the above warning
! added.  Any changes to the test must be made in both library files.

sequential

vector cycle 1u
receive delay 900n

assign VDD to pins 16
assign VSS to pins 8

assign E1_Clock to pins 4
assign E1_Data to pins 7
assign E1_Write_Enable to pins 3
assign E1_Q_16 to pins 1
assign E1_Q_32 to pins 6
assign E1_Q_48 to pins 2
assign E1_Q_64 to pins 5

assign E2_Clock to pins 12
assign E2_Data to pins 9
assign E2_Write_Enable to pins 13
assign E2_Q_16 to pins 15
assign E2_Q_32 to pins 10
assign E2_Q_48 to pins 14
assign E2_Q_64 to pins 11

power  VDD,  VSS
family  CMOS

inputs E1_Clock, E1_Data, E1_Write_Enable
inputs E2_Clock, E2_Data, E2_Write_Enable


bidirectional E1_Q_16, E1_Q_32, E1_Q_48, E1_Q_64
bidirectional E2_Q_16, E2_Q_32, E2_Q_48, E2_Q_64

disable E1_Q_16    with E1_Write_Enable  to "1"
disable E2_Q_16    with E2_Write_Enable  to "1"
disable E1_Q_32    with E1_Write_Enable  to "1"
disable E2_Q_32    with E2_Write_Enable  to "1"
disable E1_Q_48    with E1_Write_Enable  to "1"
disable E2_Q_48    with E2_Write_Enable  to "1"
disable E1_Q_64    with E1_Write_Enable  to "1"
disable E2_Q_64    with E2_Write_Enable  to "1"

when  E2_Write_Enable  is "1"  inactive E2_Q_64
when  E1_Write_Enable  is "1"  inactive E1_Q_64

when  E1_Write_Enable  is "1"  inputs E1_Q_16
when  E1_Write_Enable  is "1"  inputs E1_Q_32
when  E1_Write_Enable  is "1"  inputs E1_Q_48

when  E1_Write_Enable  is "0"  outputs E1_Q_16
when  E1_Write_Enable  is "0"  outputs E1_Q_32
when  E1_Write_Enable  is "0"  outputs E1_Q_48

when  E2_Write_Enable  is "1"  inputs E2_Q_16
when  E2_Write_Enable  is "1"  inputs E2_Q_32
when  E2_Write_Enable  is "1"  inputs E2_Q_48

when  E2_Write_Enable  is "0"  outputs E2_Q_16
when  E2_Write_Enable  is "0"  outputs E2_Q_32
when  E2_Write_Enable  is "0"  outputs E2_Q_48

trace  E1_Q_16 to E1_Clock, E1_Data, E1_Write_Enable
trace  E1_Q_32 to E1_Clock, E1_Data, E1_Write_Enable
trace  E1_Q_32 to E1_Q_16
trace  E1_Q_48 to E1_Clock, E1_Data, E1_Write_Enable
trace  E1_Q_48 to E1_Q_16,E1_Q_32
trace  E1_Q_64 to E1_Clock, E1_Data, E1_Write_Enable
trace  E1_Q_64 to E1_Q_16,E1_Q_32,E1_Q_48

trace  E2_Q_16 to E2_Clock, E2_Data, E2_Write_Enable
trace  E2_Q_32 to E2_Clock, E2_Data, E2_Write_Enable
trace  E2_Q_32 to E2_Q_16
trace  E2_Q_48 to E2_Clock, E2_Data, E2_Write_Enable
trace  E2_Q_48 to E2_Q_16,E2_Q_32
trace  E2_Q_64 to E2_Clock, E2_Data, E2_Write_Enable
trace  E2_Q_64 to E2_Q_16,E2_Q_32,E2_Q_48

!**********************************************************************
!**********************************************************************

vector E1_Clock_Low
     set E1_Clock    to "0"
     set E1_Data     to "K"
     set E1_Write_Enable  to "K"
end vector

vector E1_Clock_High
     set E1_Clock    to "1"
     set E1_Data     to "K"
     set E1_Write_Enable  to "K"
end vector

vector E1_Clock_Low_Q_16
     drive E1_Q_16
     set E1_Clock    to "0"
     set E1_Q_16     to "K"
     set E1_Write_Enable  to "K"
end vector

vector E1_Clock_High_Q_16
     drive E1_Q_16
     set E1_Clock    to "1"
     set E1_Q_16     to "K"
     set E1_Write_Enable  to "K"
end vector

vector E1_Clock_Low_Q_32
     drive E1_Q_32
     set E1_Clock    to "0"
     set E1_Q_32     to "K"
     set E1_Write_Enable  to "K"
end vector

vector E1_Clock_High_Q_32
     drive E1_Q_32
     set E1_Clock    to "1"
     set E1_Q_32     to "K"
     set E1_Write_Enable  to "K"
end vector

vector E1_Clock_Low_Q_48
     drive E1_Q_48
     set E1_Clock    to "0"
     set E1_Q_48     to "K"
     set E1_Write_Enable  to "K"
end vector

vector E1_Clock_High_Q_48
     drive E1_Q_48
     set E1_Clock    to "1"
     set E1_Q_48     to "K"
     set E1_Write_Enable  to "K"
end vector

vector E1_Write_Enable_Low
     set E1_Clock    to "0"
     set E1_Write_Enable  to  "0"
end vector

vector E1_Write_Enable_High
     set E1_Clock    to "0"
     set E1_Write_Enable  to "1"
end vector

vector E1_Data_Low
     set E1_Clock    to "0"
     set E1_Data     to "0"
     set E1_Write_Enable  to "K"
end vector

vector E1_Data_High
     set E1_Clock    to "0"
     set E1_Data     to "1"
     set E1_Write_Enable  to "K"
end vector

vector E1_Toggle_Data
     set E1_Clock    to "0"
     set E1_Write_Enable  to "K"
     set E1_Data     to "T"
end vector

vector E1_Q_16_Drive_Low
     drive E1_Q_16
     set E1_Write_Enable  to "1"
     set E1_Clock    to "0"
     set E1_Q_16     to "0"
end vector

vector E1_Q_16_Receive_Low
     receive E1_Q_16
     set E1_Write_Enable  to "0"
     set E1_Clock    to "0"
     set E1_Q_16     to "0"
end vector

vector E1_Q_32_Drive_Low
     drive E1_Q_32
     set E1_Write_Enable  to "1"
     set E1_Clock    to "0"
     set E1_Q_32     to "0"
end vector

vector E1_Q_32_Receive_Low
     receive E1_Q_32
     set E1_Write_Enable  to "0"
     set E1_Clock    to "0"
     set E1_Q_32     to "0"
end vector

vector E1_Q_48_Drive_Low
     drive E1_Q_48
     set E1_Write_Enable  to "1"
     set E1_Clock    to "0"
     set E1_Q_48     to "0"
end vector

vector E1_Q_48_Receive_Low
     receive E1_Q_48
     set E1_Write_Enable  to "0"
     set E1_Clock    to "0"
     set E1_Q_48     to "0"
end vector

vector E1_Q_64_Receive_Low
     receive E1_Q_64
     set E1_Write_Enable  to "0"
     set E1_Clock    to "0"
     set E1_Q_64     to "0"
end vector

vector E1_Q_16_Drive_High
     drive E1_Q_16
     set E1_Write_Enable  to "1"
     set E1_Clock    to "0"
     set E1_Q_16     to "1"
end vector

vector E1_Q_16_Receive_High
     receive E1_Q_16
     set E1_Write_Enable  to "0"
     set E1_Clock    to "0"
     set E1_Q_16     to "1"
end vector

vector E1_Q_32_Drive_High
     drive E1_Q_32
     set E1_Write_Enable  to "1"
     set E1_Clock    to "0"
     set E1_Q_32     to "1"
end vector

vector E1_Q_32_Receive_High
     receive E1_Q_32
     set E1_Write_Enable  to "0"
     set E1_Clock    to "0"
     set E1_Q_32     to "1"
end vector

vector E1_Q_48_Drive_High
     drive E1_Q_48
     set E1_Write_Enable  to "1"
     set E1_Clock    to "0"
     set E1_Q_48     to "1"
end vector

vector E1_Q_48_Receive_High
     receive E1_Q_48
     set E1_Write_Enable  to "0"
     set E1_Clock    to "0"
     set E1_Q_48     to "1"
end vector

vector E1_Q_64_Receive_High
     receive E1_Q_64
     set E1_Write_Enable  to "0"
     set E1_Clock    to "0"
     set E1_Q_64     to "1"
end vector

vector E1_Q_16_Drive_Toggle
     drive E1_Q_16
     set E1_Write_Enable to "1"
     set E1_Clock    to "1"
     set E1_Q_16     to "T"
end vector

vector E1_Q_32_Drive_Toggle
     drive E1_Q_32
     set E1_Write_Enable to "1"
     set E1_Clock    to "1"
     set E1_Q_32     to "T"
end vector

vector E1_Q_48_Drive_Toggle
     drive E1_Q_48
     set E1_Write_Enable to "1"
     set E1_Clock    to "1"
     set E1_Q_48     to "T"
end vector


!*****************************************************************


vector E2_Clock_Low
     set E2_Clock    to "0"
     set E2_Data     to "K"
     set E2_Write_Enable  to "K"
end vector

vector E2_Clock_High
     set E2_Clock    to "1"
     set E2_Data     to "K"
     set E2_Write_Enable  to "K"
end vector

vector E2_Clock_Low_Q_16
     drive E2_Q_16
     set E2_Clock    to "0"
     set E2_Q_16     to "K"
     set E2_Write_Enable  to "K"
end vector

vector E2_Clock_High_Q_16
     drive E2_Q_16
     set E2_Clock    to "1"
     set E2_Q_16     to "K"
     set E2_Write_Enable  to "K"
end vector

vector E2_Clock_Low_Q_32
     drive E2_Q_32
     set E2_Clock    to "0"
     set E2_Q_32     to "K"
     set E2_Write_Enable  to "K"
end vector

vector E2_Clock_High_Q_32
     drive E2_Q_32
     set E2_Clock    to "1"
     set E2_Q_32     to "K"
     set E2_Write_Enable  to "K"
end vector

vector E2_Clock_Low_Q_48
     drive E2_Q_48
     set E2_Clock    to "0"
     set E2_Q_48     to "K"
     set E2_Write_Enable  to "K"
end vector

vector E2_Clock_High_Q_48
     drive E2_Q_48
     set E2_Clock    to "1"
     set E2_Q_48     to "K"
     set E2_Write_Enable  to "K"
end vector

vector E2_Write_Enable_Low
     set E2_Clock    to "0"
     set E2_Write_Enable  to  "0"
end vector

vector E2_Write_Enable_High
     set E2_Clock    to "0"
     set E2_Write_Enable  to "1"
end vector

vector E2_Data_Low
     set E2_Clock    to "0"
     set E2_Data     to "0"
     set E2_Write_Enable  to "K"
end vector

vector E2_Data_High
     set E2_Clock    to "0"
     set E2_Data     to "1"
     set E2_Write_Enable  to "K"
end vector

vector E2_Toggle_Data
     set E2_Clock    to "0"
     set E2_Write_Enable  to "K"
     set E2_Data     to "T"
end vector

vector E2_Q_16_Drive_Low
     drive E2_Q_16
     set E2_Write_Enable  to "1"
     set E2_Clock    to "0"
     set E2_Q_16     to "0"
end vector

vector E2_Q_16_Receive_Low
     receive E2_Q_16
     set E2_Write_Enable  to "0"
     set E2_Clock    to "0"
     set E2_Q_16     to "0"
end vector

vector E2_Q_32_Drive_Low
     drive E2_Q_32
     set E2_Write_Enable  to "1"
     set E2_Clock    to "0"
     set E2_Q_32     to "0"
end vector

vector E2_Q_32_Receive_Low
     receive E2_Q_32
     set E2_Write_Enable  to "0"
     set E2_Clock    to "0"
     set E2_Q_32     to "0"
end vector

vector E2_Q_48_Drive_Low
     drive E2_Q_48
     set E2_Write_Enable  to "1"
     set E2_Clock    to "0"
     set E2_Q_48     to "0"
end vector

vector E2_Q_48_Receive_Low
     receive E2_Q_48
     set E2_Write_Enable  to "0"
     set E2_Clock    to "0"
     set E2_Q_48     to "0"
end vector

vector E2_Q_64_Receive_Low
     receive E2_Q_64
     set E2_Write_Enable  to "0"
     set E2_Clock    to "0"
     set E2_Q_64     to "0"
end vector

vector E2_Q_16_Drive_High
     drive E2_Q_16
     set E2_Write_Enable  to "1"
     set E2_Clock    to "0"
     set E2_Q_16     to "1"
end vector

vector E2_Q_16_Receive_High
     receive E2_Q_16
     set E2_Write_Enable  to "0"
     set E2_Clock    to "0"
     set E2_Q_16     to "1"
end vector

vector E2_Q_32_Drive_High
     drive E2_Q_32
     set E2_Write_Enable  to "1"
     set E2_Clock    to "0"
     set E2_Q_32     to "1"
end vector

vector E2_Q_32_Receive_High
     receive E2_Q_32
     set E2_Write_Enable  to "0"
     set E2_Clock    to "0"
     set E2_Q_32     to "1"
end vector

vector E2_Q_48_Drive_High
     drive E2_Q_48
     set E2_Write_Enable  to "1"
     set E2_Clock    to "0"
     set E2_Q_48     to "1"
end vector

vector E2_Q_48_Receive_High
     receive E2_Q_48
     set E2_Write_Enable  to "0"
     set E2_Clock    to "0"
     set E2_Q_48     to "1"
end vector

vector E2_Q_64_Receive_High
     receive E2_Q_64
     set E2_Write_Enable  to "0"
     set E2_Clock    to "0"
     set E2_Q_64     to "1"
end vector

vector E2_Q_16_Drive_Toggle
     drive E2_Q_16
     set E2_Write_Enable to "1"
     set E2_Clock    to "1"
     set E2_Q_16     to "T"
end vector

vector E2_Q_32_Drive_Toggle
     drive E2_Q_32
     set E2_Write_Enable to "1"
     set E2_Clock    to "1"
     set E2_Q_32     to "T"
end vector

vector E2_Q_48_Drive_Toggle
     drive E2_Q_48
     set E2_Write_Enable to "1"
     set E2_Clock    to "1"
     set E2_Q_48     to "T"
end vector




!**********************************************************************
!**********************************************************************

!    Tested as two separate elements, E1 and E2

!    Each element has separate test units for each output.
!    WE_Low is assummed for each unit.
!    WE_High is tested as a seperate unit.


!    Test element E1

   unit   "E1 Test 16_bit output only"
     execute    E1_Write_Enable_Low
     execute    E1_Data_Low
       repeat 16 times
          execute    E1_Clock_High
          execute    E1_Clock_Low
          execute    E1_Toggle_Data
       end repeat
     execute     E1_Q_16_Receive_Low
     execute     E1_Clock_High
     execute     E1_Clock_Low
     execute     E1_Q_16_Receive_High
   end unit



   unit   "E1 Test 32_bit output only"
     execute    E1_Write_Enable_Low
     execute    E1_Data_Low
       repeat 32 times
          execute    E1_Clock_High
          execute    E1_Clock_Low
          execute    E1_Toggle_Data
       end repeat
     execute     E1_Q_32_Receive_Low
     execute     E1_Clock_High
     execute     E1_Clock_Low
     execute     E1_Q_32_Receive_High
   end unit



   unit   "E1 Test 48_bit output only"
     execute    E1_Write_Enable_Low
     execute    E1_Data_Low
       repeat 48 times
          execute    E1_Clock_High
          execute    E1_Clock_Low
          execute    E1_Toggle_Data
       end repeat
     execute     E1_Q_48_Receive_Low
     execute     E1_Clock_High
     execute     E1_Clock_Low
     execute     E1_Q_48_Receive_High
   end unit



   unit   "E1 Test 64_bit output only"
     execute    E1_Write_Enable_Low
     execute    E1_Data_Low
       repeat 64 times
          execute    E1_Clock_High
          execute    E1_Clock_Low
          execute    E1_Toggle_Data
       end repeat
     execute     E1_Q_64_Receive_Low
     execute     E1_Clock_High
     execute     E1_Clock_Low
     execute     E1_Q_64_Receive_High
   end unit


   unit  "E1 Test Write_Enable"
     execute    E1_Q_16_Drive_Low  !* see below
      repeat 16 times
       execute    E1_Clock_High_Q_16
       execute    E1_Clock_Low_Q_16
       execute    E1_Q_16_Drive_toggle  !*if Q_16 is not available, change
                                         ! Q_16 to Q_32 or Q_48
      end repeat
     execute      E1_Q_32_Receive_High  !**and change Q_32 to Q_48 or Q_64
     execute      E1_Clock_High_Q_16  !*see above
     execute      E1_Clock_Low_Q_16  !*see above
     execute      E1_Q_32_Receive_Low  !**see above
   end unit




!    Test element E2

   unit   "E2 Test 16_bit output only"
     execute    E2_Write_Enable_Low
     execute    E2_Data_Low
       repeat 16 times
          execute    E2_Clock_High
          execute    E2_Clock_Low
          execute    E2_Toggle_Data
       end repeat
     execute     E2_Q_16_Receive_Low
     execute     E2_Clock_High
     execute     E2_Clock_Low
     execute     E2_Q_16_Receive_High
   end unit



   unit   "E2 Test 32_bit output only"
     execute    E2_Write_Enable_Low
     execute    E2_Data_Low
       repeat 32 times
          execute    E2_Clock_High
          execute    E2_Clock_Low
          execute    E2_Toggle_Data
       end repeat
     execute     E2_Q_32_Receive_Low
     execute     E2_Clock_High
     execute     E2_Clock_Low
     execute     E2_Q_32_Receive_High
   end unit



   unit   "E2 Test 48_bit output only"
     execute    E2_Write_Enable_Low
     execute    E2_Data_Low
       repeat 48 times
          execute    E2_Clock_High
          execute    E2_Clock_Low
          execute    E2_Toggle_Data
       end repeat
     execute     E2_Q_48_Receive_Low
     execute     E2_Clock_High
     execute     E2_Clock_Low
     execute     E2_Q_48_Receive_High
   end unit



   unit   "E2 Test 64_bit output only"
     execute    E2_Write_Enable_Low
     execute    E2_Data_Low
       repeat 64 times
          execute    E2_Clock_High
          execute    E2_Clock_Low
          execute    E2_Toggle_Data
       end repeat
     execute     E2_Q_64_Receive_Low
     execute     E2_Clock_High
     execute     E2_Clock_Low
     execute     E2_Q_64_Receive_High
   end unit



   unit  "E2 Test Write_Enable"
     execute    E2_Q_16_Drive_Low  !* see below
      repeat 16 times
       execute    E2_Clock_High_Q_16
       execute    E2_Clock_Low_Q_16
       execute    E2_Q_16_Drive_toggle  !*if Q_16 is not available, change
                                         ! Q_16 to Q_32 or Q_48
      end repeat
     execute      E2_Q_32_Receive_High  !**and change Q_32 to Q_48 or Q_64
     execute      E2_Clock_High_Q_16  !*see above
     execute      E2_Clock_Low_Q_16  !*see above
     execute      E2_Q_32_Receive_Low  !**see above
   end unit









!    End of Test


