!!!!    6    0    1  991854587  V668f                                         

! Device           : 4580
! Function         : Register 3_State multiport_4_by_4
! revision         : B.01.00
! safeguard        : standard_cmos
! Modifications    : Modified for AwareTest xi
!
  warning           "This library has not been verified with hardware."

warning  " Pullups are required for Outputs in high impedance state."

sequential

vector cycle 5u
receive delay 4.9u

assign VDD           to pins 24
assign VSS           to pins 12

assign Clock         to pins 16
assign Write_Enable  to pins 15
assign Data_Input    to pins 17,18,19,20
assign D0            to pins 20         !AT Added for minimum pin test.
assign D1            to pins 19         !AT Added for minimum pin test.
assign D2            to pins 18         !AT Added for minimum pin test.
assign D3            to pins 17         !AT Added for minimum pin test.

assign Write_Address to pins 9,8
assign E1_Read_Address to pins 14,13
assign E2_Read_Address to pins 10,11
assign E1_Outputs    to pins 7,6,5,4
assign E1_D0         to pins 4          !AT Added for minimum pin test.
assign E1_D1         to pins 5          !AT Added for minimum pin test.
assign E1_D2         to pins 6          !AT Added for minimum pin test.
assign E1_D3         to pins 7          !AT Added for minimum pin test.

assign E2_Outputs    to pins 1,2,23,22
assign E2_D0         to pins 22         !AT Added for minimum pin test.
assign E2_D1         to pins 23         !AT Added for minimum pin test.
assign E2_D2         to pins 2          !AT Added for minimum pin test.
assign E2_D3         to pins 1          !AT Added for minimum pin test.

assign E1_Disable    to pins 3
assign E2_Disable    to pins 21

power  VDD, VSS
family  CMOS

inputs Clock, Write_Enable, Data_Input, Write_Address
inputs E1_Read_Address, E2_Read_Address, E1_Disable, E2_Disable
inputs D0, D1, D2, D3                   !AT Added for minimum pin test.

outputs E1_Outputs, E2_Outputs
outputs E1_D0, E1_D1, E1_D2, E1_D3      !AT Added for minimum pin test.
outputs E2_D0, E2_D1, E2_D2, E2_D3      !AT Added for minimum pin test.

disable E1_Outputs  with E1_Disable  to "0"
disable E2_Outputs  with E2_Disable  to "0"

when    E1_Disable  is  "0"  inactive   E1_Outputs
when    E2_Disable  is  "0"  inactive   E2_Outputs

trace E1_Outputs to   Clock,Write_Enable,Data_Input,Write_Address
trace E1_Outputs to   E1_Read_Address,E1_Disable

trace E2_Outputs to   Clock,Write_Enable,Data_Input,Write_Address
trace E2_Outputs to   E2_Read_Address,E2_Disable

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

vector Data_In_0001
     set Data_Input  to "0001"
     set Clock       to "0"
     set Write_Enable to "0"
end vector

vector Data_In_0010
     set Data_Input  to "0010"
     set Clock       to "0"
     set Write_Enable to "0"
end vector

vector Data_In_0100
     set Data_Input  to "0100"
     set Clock       to "0"
     set Write_Enable to "0"
end vector

vector Data_In_1000
     set Data_Input  to "1000"
     set Clock       to "0"
     set Write_Enable to "0"
end vector

vector Data_In_0000
     set Data_Input  to "0000"
     set Clock       to "0"
     set Write_Enable to "0"
end vector

vector Data_In_1111
     set Data_Input  to "1111"
     set Clock       to "0"
     set Write_Enable to "0"
end vector

vector Write_Address_00
     set Data_Input  to "KKKK"
     set Clock       to "0"
     set Write_Address to "00"
     set Write_Enable to "1"
end vector

vector Write_Address_00_WE_false
     set Data_Input  to "KKKK"
     set Clock       to "0"
     set Write_Address to "00"
     set Write_Enable to "0"
end vector

vector Write_Address_01
     set Data_Input  to "KKKK"
     set Clock       to "0"
     set Write_Address to "01"
     set Write_Enable to "1"
end vector

vector Write_Address_10
     set Data_Input  to "KKKK"
     set Clock       to "0"
     set Write_Address to "10"
     set Write_Enable to "1"
end vector

vector Write_Address_11
     set Data_Input  to "KKKK"
     set Clock       to "0"
     set Write_Address to "11"
     set Write_Enable to "1"
end vector

vector Clock_High_Write
     set Data_Input  to "KKKK"
     set Clock       to "1"
     set Write_Address to "KK"
     set Write_Enable to "K"
end vector

vector Clock_Low_Write
     set Data_Input  to "KKKK"
     set Clock       to "0"
     set Write_Address to "KK"
     set Write_Enable to "K"
end vector

vector E1_Clock_High_Read
     set Clock       to "1"
     set E1_Read_Address to "KK"
end vector

vector E1_Clock_Low_Read
     set Clock       to "0"
     set E1_Read_Address to "KK"
end vector

vector E2_Clock_High_Read
     set Clock       to "1"
     set E2_Read_Address to "KK"
end vector

vector E2_Clock_Low_Read
     set Clock       to "0"
     set E2_Read_Address to "KK"
end vector

vector E1_Read_Address_00
     set Clock       to "0"
     set E1_Read_Address to "00"
     set E1_Disable  to "1"
     set Write_Enable to "0"
end vector

vector E1_Read_Address_01
     set Clock       to "0"
     set E1_Read_Address to "01"
     set E1_Disable  to "1"
     set Write_Enable to "0"
end vector

vector E1_Read_Address_10
     set Clock       to "0"
     set E1_Read_Address to "10"
     set Write_Enable to "0"
     set E1_Disable  to "1"
end vector

vector E1_Read_Address_11
     set Clock       to "0"
     set E1_Read_Address to "11"
     set Write_Enable to "0"
     set E1_Disable to "1"
end vector

vector E2_Read_Address_00
     set Clock       to "0"
     set E2_Read_Address to "00"
     set E2_Disable  to "1"
     set Write_Enable to "0"
end vector

vector E2_Read_Address_01
     set Clock       to "0"
     set E2_Read_Address to "01"
     set E2_Disable  to "1"
     set Write_Enable to "0"
end vector

vector E2_Read_Address_10
     set Clock       to "0"
     set E2_Read_Address to "10"
     set Write_Enable to "0"
     set E2_Disable  to "1"
end vector

vector E2_Read_Address_11
     set Clock       to "0"
     set E2_Read_Address to "11"
     set Write_Enable to "0"
     set E2_Disable to "1"
end vector

vector E1_Output_0001
     set Clock       to "0"
     set E1_Read_Address to "KK"
     set Write_Enable to "0"
     set E1_Disable  to "0"
     set E1_Outputs  to "0001"
end vector

vector E1_Output_0010
     set Clock       to "0"
     set E1_Read_Address to "KK"
     set Write_Enable to "0"
     set E1_Disable  to "0"
     set E1_Outputs  to "0010"
end vector

vector E1_Output_0100
     set Clock       to "0"
     set E1_Read_Address to "KK"
     set Write_Enable to "0"
     set E1_Disable  to "0"
     set E1_Outputs  to "0100"
end vector

vector E1_Output_1000
     set Clock       to "0"
     set E1_Read_Address to "KK"
     set Write_Enable to "0"
     set E1_Disable  to "0"
     set E1_Outputs  to "1000"
end vector

vector E1_Output_1111
     set Clock       to "0"
     set E1_Read_Address to "KK"
     set Write_Enable to "0"
     set E1_Disable  to "0"
     set E1_Outputs  to "1111"
end vector

vector E2_Output_0001
     set Clock       to "0"
     set E2_Read_Address to "KK"
     set Write_Enable to "0"
     set E2_Disable  to "0"
     set E2_Outputs  to "0001"
end vector

vector E2_Output_0010
     set Clock       to "0"
     set E2_Read_Address to "KK"
     set Write_Enable to "0"
     set E2_Disable  to "0"
     set E2_Outputs  to "0010"
end vector

vector E2_Output_0100
     set Clock       to "0"
     set E2_Read_Address to "KK"
     set Write_Enable to "0"
     set E2_Disable  to "0"
     set E2_Outputs  to "0100"
end vector

vector E2_Output_1000
     set Clock       to "0"
     set E2_Read_Address to "KK"
     set Write_Enable to "0"
     set E2_Disable  to "0"
     set E2_Outputs  to "1000"
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 Data_In_D0_0
     set D0            to "0"
     set Clock         to "0"
     set Write_Enable  to "0"
end vector

vector Data_In_D0_1
     set D0            to "1"
     set Clock         to "0"
     set Write_Enable  to "0"
end vector

vector Data_In_D1_0
     set D1            to "0"
     set Clock         to "0"
     set Write_Enable  to "0"
end vector

vector Data_In_D1_1
     set D1            to "1"
     set Clock         to "0"
     set Write_Enable  to "0"
end vector

vector Data_In_D2_0
     set D2            to "0"
     set Clock         to "0"
     set Write_Enable  to "0"
end vector

vector Data_In_D2_1
     set D2            to "1"
     set Clock         to "0"
     set Write_Enable  to "0"
end vector

vector Data_In_D3_0
     set D3            to "0"
     set Clock         to "0"
     set Write_Enable  to "0"
end vector

vector Data_In_D3_1
     set D3            to "1"
     set Clock         to "0"
     set Write_Enable  to "0"
end vector

vector Write_Address_00_D0
     set D0            to "K"
     set Clock         to "0"
     set Write_Address to "00"
     set Write_Enable  to "1"
end vector

vector Write_Address_00_D1
     set D1            to "K"
     set Clock         to "0"
     set Write_Address to "00"
     set Write_Enable  to "1"
end vector

vector Write_Address_00_D2
     set D2            to "K"
     set Clock         to "0"
     set Write_Address to "00"
     set Write_Enable  to "1"
end vector

vector Write_Address_00_D3
     set D3            to "K"
     set Clock         to "0"
     set Write_Address to "00"
     set Write_Enable  to "1"
end vector

vector Clock_High_Write_D0
     set D0            to "K"
     set Clock         to "1"
     set Write_Address to "KK"
     set Write_Enable  to "K"
end vector

vector Clock_Low_Write_D0
     set D0            to "K"
     set Clock         to "0"
     set Write_Address to "KK"
     set Write_Enable  to "K"
end vector

vector Clock_High_Write_D1
     set D1            to "K"
     set Clock         to "1"
     set Write_Address to "KK"
     set Write_Enable  to "K"
end vector

vector Clock_Low_Write_D1
     set D1            to "K"
     set Clock         to "0"
     set Write_Address to "KK"
     set Write_Enable  to "K"
end vector

vector Clock_High_Write_D2
     set D2            to "K"
     set Clock         to "1"
     set Write_Address to "KK"
     set Write_Enable  to "K"
end vector

vector Clock_Low_Write_D2
     set D2            to "K"
     set Clock         to "0"
     set Write_Address to "KK"
     set Write_Enable  to "K"
end vector

vector Clock_High_Write_D3
     set D3            to "K"
     set Clock         to "1"
     set Write_Address to "KK"
     set Write_Enable  to "K"
end vector

vector Clock_Low_Write_D3
     set D3            to "K"
     set Clock         to "0"
     set Write_Address to "KK"
     set Write_Enable  to "K"
end vector

vector E1_Output_D0_0
     set Clock         to "0"
     set E1_Read_Address to "KK"
     set Write_Enable  to "0"
     set E1_Disable    to "0"
     set E1_D0         to "0"
end vector

vector E1_Output_D0_1
     set Clock         to "0"
     set E1_Read_Address to "KK"
     set Write_Enable  to "0"
     set E1_Disable    to "0"
     set E1_D0         to "1"
end vector

vector E1_Output_D1_0
     set Clock         to "0"
     set E1_Read_Address to "KK"
     set Write_Enable  to "0"
     set E1_Disable    to "0"
     set E1_D1         to "0"
end vector

vector E1_Output_D1_1
     set Clock         to "0"
     set E1_Read_Address to "KK"
     set Write_Enable  to "0"
     set E1_Disable    to "0"
     set E1_D1         to "1"
end vector

vector E1_Output_D2_0
     set Clock         to "0"
     set E1_Read_Address to "KK"
     set Write_Enable  to "0"
     set E1_Disable    to "0"
     set E1_D2         to "0"
end vector

vector E1_Output_D2_1
     set Clock         to "0"
     set E1_Read_Address to "KK"
     set Write_Enable  to "0"
     set E1_Disable    to "0"
     set E1_D2         to "1"
end vector

vector E1_Output_D3_0
     set Clock         to "0"
     set E1_Read_Address to "KK"
     set Write_Enable  to "0"
     set E1_Disable    to "0"
     set E1_D3         to "0"
end vector

vector E1_Output_D3_1
     set Clock         to "0"
     set E1_Read_Address to "KK"
     set Write_Enable  to "0"
     set E1_Disable    to "0"
     set E1_D3         to "1"
end vector

vector E2_Output_D0_0
     set Clock         to "0"
     set E2_Read_Address to "KK"
     set Write_Enable  to "0"
     set E2_Disable    to "0"
     set E2_D0         to "0"
end vector

vector E2_Output_D0_1
     set Clock         to "0"
     set E2_Read_Address to "KK"
     set Write_Enable  to "0"
     set E2_Disable    to "0"
     set E2_D0         to "1"
end vector

vector E2_Output_D1_0
     set Clock         to "0"
     set E2_Read_Address to "KK"
     set Write_Enable  to "0"
     set E2_Disable    to "0"
     set E2_D1         to "0"
end vector

vector E2_Output_D1_1
     set Clock         to "0"
     set E2_Read_Address to "KK"
     set Write_Enable  to "0"
     set E2_Disable    to "0"
     set E2_D1         to "1"
end vector

vector E2_Output_D2_0
     set Clock         to "0"
     set E2_Read_Address to "KK"
     set Write_Enable  to "0"
     set E2_Disable    to "0"
     set E2_D2         to "0"
end vector

vector E2_Output_D2_1
     set Clock         to "0"
     set E2_Read_Address to "KK"
     set Write_Enable  to "0"
     set E2_Disable    to "0"
     set E2_D2         to "1"
end vector

vector E2_Output_D3_0
     set Clock         to "0"
     set E2_Read_Address to "KK"
     set Write_Enable  to "0"
     set E2_Disable    to "0"
     set E2_D3         to "0"
end vector

vector E2_Output_D3_1
     set Clock         to "0"
     set E2_Read_Address to "KK"
     set Write_Enable  to "0"
     set E2_Disable    to "0"
     set E2_D3         to "1"
end vector

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

!    Device tested as two separate single port 4-by-4 registers.


sub Write_Clock
     execute Clock_High_Write
     execute Clock_Low_Write
end sub

sub E1_Read_Clock
     execute E1_Clock_High_Read
     execute E1_Clock_Low_Read
end sub

sub E2_Read_Clock
     execute E2_Clock_High_Read
     execute E2_Clock_Low_Read
end sub

!AT The following subroutines have been added for a minimum pins test.
!AT Vectors in the subroutine "Write_Clock" 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_Clock_Dx (Clock_High_Write_Dx, Clock_Low_Write_Dx)
     execute Clock_High_Write_Dx
     execute Clock_Low_Write_Dx
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 Data_In_D0_0
     execute Write_Address_00_D0
     call Write_Clock_Dx (Clock_High_Write_D0, Clock_Low_Write_D0)

     execute E1_Read_Address_00
     call E1_Read_Clock
     execute E1_Output_D0_0

     execute Data_In_D0_1
     execute Write_Address_00_D0
     call Write_Clock_Dx (Clock_High_Write_D0, Clock_Low_Write_D0)

     execute E1_Read_Address_00
     call E1_Read_Clock
     execute E1_Output_D0_1
end unit

unit "awaretest D1 Test"
     execute Data_In_D1_0
     execute Write_Address_00_D1
     call Write_Clock_Dx (Clock_High_Write_D1, Clock_Low_Write_D1)

     execute E1_Read_Address_00
     call E1_Read_Clock
     execute E1_Output_D1_0

     execute Data_In_D1_1
     execute Write_Address_00_D1
     call Write_Clock_Dx (Clock_High_Write_D1, Clock_Low_Write_D1)

     execute E1_Read_Address_00
     call E1_Read_Clock
     execute E1_Output_D1_1
end unit

unit "awaretest D2 Test"
     execute Data_In_D2_0
     execute Write_Address_00_D2
     call Write_Clock_Dx (Clock_High_Write_D2, Clock_Low_Write_D2)

     execute E1_Read_Address_00
     call E1_Read_Clock
     execute E1_Output_D2_0

     execute Data_In_D2_1
     execute Write_Address_00_D2
     call Write_Clock_Dx (Clock_High_Write_D2, Clock_Low_Write_D2)

     execute E1_Read_Address_00
     call E1_Read_Clock
     execute E1_Output_D2_1
end unit

unit "awaretest D3 Test"
     execute Data_In_D3_0
     execute Write_Address_00_D3
     call Write_Clock_Dx (Clock_High_Write_D3, Clock_Low_Write_D3)

     execute E1_Read_Address_00
     call E1_Read_Clock
     execute E1_Output_D3_0

     execute Data_In_D3_1
     execute Write_Address_00_D3
     call Write_Clock_Dx (Clock_High_Write_D3, Clock_Low_Write_D3)

     execute E1_Read_Address_00
     call E1_Read_Clock
     execute E1_Output_D3_1
end unit

unit "awaretest D0 Test"
     execute Data_In_D0_0
     execute Write_Address_00_D0
     call Write_Clock_Dx (Clock_High_Write_D0, Clock_Low_Write_D0)

     execute E2_Read_Address_00
     call E2_Read_Clock
     execute E2_Output_D0_0

     execute Data_In_D0_1
     execute Write_Address_00_D0
     call Write_Clock_Dx (Clock_High_Write_D0, Clock_Low_Write_D0)

     execute E2_Read_Address_00
     call E2_Read_Clock
     execute E2_Output_D0_1
end unit

unit "awaretest D1 Test"
     execute Data_In_D1_0
     execute Write_Address_00_D1
     call Write_Clock_Dx (Clock_High_Write_D1, Clock_Low_Write_D1)

     execute E2_Read_Address_00
     call E2_Read_Clock
     execute E2_Output_D1_0

     execute Data_In_D1_1
     execute Write_Address_00_D1
     call Write_Clock_Dx (Clock_High_Write_D1, Clock_Low_Write_D1)

     execute E2_Read_Address_00
     call E2_Read_Clock
     execute E2_Output_D1_1
end unit

unit "awaretest D2 Test"
     execute Data_In_D2_0
     execute Write_Address_00_D2
     call Write_Clock_Dx (Clock_High_Write_D2, Clock_Low_Write_D2)

     execute E2_Read_Address_00
     call E2_Read_Clock
     execute E2_Output_D2_0

     execute Data_In_D2_1
     execute Write_Address_00_D2
     call Write_Clock_Dx (Clock_High_Write_D2, Clock_Low_Write_D2)

     execute E2_Read_Address_00
     call E2_Read_Clock
     execute E2_Output_D2_1
end unit

unit "awaretest D3 Test"
     execute Data_In_D3_0
     execute Write_Address_00_D3
     call Write_Clock_Dx (Clock_High_Write_D3, Clock_Low_Write_D3)

     execute E2_Read_Address_00
     call E2_Read_Clock
     execute E2_Output_D3_0

     execute Data_In_D3_1
     execute Write_Address_00_D3
     call Write_Clock_Dx (Clock_High_Write_D3, Clock_Low_Write_D3)

     execute E2_Read_Address_00
     call E2_Read_Clock
     execute E2_Output_D3_1
end unit

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

unit "RAM Test"

     execute Data_In_0001
     execute Write_Address_00
     call Write_Clock
     execute Data_In_0010
     execute Write_Address_01
     call Write_Clock
     execute Data_In_0100
     execute Write_Address_10
     call Write_Clock
     execute Data_In_1000
     execute Write_Address_11
     call Write_Clock

     execute E1_Read_Address_00
     call E1_Read_Clock
     execute E1_Output_0001
     execute E1_Read_Address_01
     call E1_Read_Clock
     execute E1_Output_0010
     execute E1_Read_Address_10
     call E1_Read_Clock
     execute E1_Output_0100
     execute E1_Read_Address_11
     call E1_Read_Clock
     execute E1_Output_1000

     execute E2_Read_Address_00
     call E2_Read_Clock
     execute E2_Output_0001
     execute E2_Read_Address_01
     call E2_Read_Clock
     execute E2_Output_0010
     execute E2_Read_Address_10
     call E2_Read_Clock
     execute E2_Output_0100
     execute E2_Read_Address_11
     call E2_Read_Clock
     execute E2_Output_1000

     execute Data_In_1111
     execute Write_Address_00
     call Write_Clock
     execute Data_In_0000
     execute Write_Address_00_WE_false
     call Write_Clock
     execute E1_Read_Address_00
     call E1_Read_Clock
     execute E1_Output_1111

end unit


!    End of Test


