!!!!    6    0    1  991764167  Vd53a                                         

! Device           : 74hc256
! Function         : dual 4 bit addressable latch
! revision         : B.01.00
! safeguard        : high_out_hcmos
! Modifications    : Modified for AwareTest xi
!
  warning           "This library has not been verified with hardware."

sequential

vector cycle         500n
receive delay        400n

assign   VCC         to pins  16
assign   GND         to pins  8

assign   Address     to pins  2,1
assign   Data_A      to pins  3
assign   Data_B      to pins  13
assign   Clear_bar   to pins  15
assign   Enable_bar  to pins  14

assign   Outputs_A   to pins  7,6,5,4
assign   A_D0        to pins  4          !AT Added for minimum pin test.
assign   A_D1        to pins  5          !AT Added for minimum pin test.
assign   A_D2        to pins  6          !AT Added for minimum pin test.
assign   A_D3        to pins  7          !AT Added for minimum pin test.

assign   Outputs_B   to pins  12,11,10,9
assign   B_D0        to pins  9          !AT Added for minimum pin test.
assign   B_D1        to pins  10         !AT Added for minimum pin test.
assign   B_D2        to pins  11         !AT Added for minimum pin test.
assign   B_D3        to pins  12         !AT Added for minimum pin test.

family   CMOS

power    VCC,GND

inputs   Address,Data_A,Data_B,Clear_bar,Enable_bar

outputs  Outputs_A,Outputs_B
outputs  A_D0, A_D1, A_D2, A_D3          !AT Added for minimum pin test.
outputs  B_D0, B_D1, B_D2, B_D3          !AT Added for minimum pin test.

trace Outputs_A to Address,Data_A,Clear_bar,Enable_bar
trace Outputs_B to Address,Data_B,Clear_bar,Enable_bar
!*******************************************************************************
!*******************************************************************************

vector  Initialize_inputs
   set   Address     to "11"
   set   Clear_bar   to "1"
   set   Enable_bar  to "1"
   set   Data_A      to "1"
   set   Data_B      to "1"
end vector

vector  Keep_inputs
   set   Address     to "kk"
   set   Clear_bar   to "k"
   set   Enable_bar  to "k"
   set   Data_A      to "k"
   set   Data_B      to "k"
end vector

vector  Clear_true
   initialize        to Keep_inputs
   set   Clear_bar   to "0"
end vector

vector  Clear_false
   initialize        to Keep_inputs
   set   Clear_bar   to "1"
end vector

vector  Enable_true
   initialize        to Keep_inputs
   set   Enable_bar  to "0"
end vector

vector  Enable_false
   initialize        to Keep_inputs
   set   Enable_bar  to "1"
end vector

vector  Data_A_high
   initialize        to Keep_inputs
   set   Data_A      to "1"
end vector

vector  Data_A_low
   initialize        to Keep_inputs
   set   Data_A      to "0"
end vector

vector  Data_B_high
   initialize        to Keep_inputs
   set   Data_B      to "1"
end vector

vector  Data_B_low
   initialize        to Keep_inputs
   set   Data_B      to "0"
end vector

vector  Address_0
   initialize        to Keep_inputs
   set   Address     to "00"
end vector

vector  Address_1
   initialize        to Keep_inputs
   set   Address     to "01"
end vector

vector  Address_2
   initialize        to Keep_inputs
   set   Address     to "10"
end vector

vector  Address_3
   initialize        to Keep_inputs
   set   Address     to "11"
end vector

vector  Outputs_A_0000
   initialize        to Keep_inputs
   set   Outputs_A   to "0000"
end vector

vector  Outputs_A_0001
   initialize        to Keep_inputs
   set   Outputs_A   to "0001"
end vector

vector  Outputs_A_0010
   initialize        to Keep_inputs
   set   Outputs_A   to "0010"
end vector

vector  Outputs_A_0011
   initialize        to Keep_inputs
   set   Outputs_A   to "0011"
end vector

vector  Outputs_A_0100
   initialize        to Keep_inputs
   set   Outputs_A   to "0100"
end vector

vector  Outputs_A_0111
   initialize        to Keep_inputs
   set   Outputs_A   to "0111"
end vector

vector  Outputs_A_1000
   initialize        to Keep_inputs
   set   Outputs_A   to "1000"
end vector

vector  Outputs_A_1100
   initialize        to Keep_inputs
   set   Outputs_A   to "1100"
end vector

vector  Outputs_A_1110
   initialize        to Keep_inputs
   set   Outputs_A   to "1110"
end vector

vector  Outputs_A_1111
   initialize        to Keep_inputs
   set   Outputs_A   to "1111"
end vector
vector  Outputs_B_0000
   initialize        to Keep_inputs
   set   Outputs_B   to "0000"
end vector

vector  Outputs_B_0001
   initialize        to Keep_inputs
   set   Outputs_B   to "0001"
end vector

vector  Outputs_B_0010
   initialize        to Keep_inputs
   set   Outputs_B   to "0010"
end vector

vector  Outputs_B_0011
   initialize        to Keep_inputs
   set   Outputs_B   to "0011"
end vector

vector  Outputs_B_0100
   initialize        to Keep_inputs
   set   Outputs_B   to "0100"
end vector

vector  Outputs_B_0111
   initialize        to Keep_inputs
   set   Outputs_B   to "0111"
end vector

vector  Outputs_B_1000
   initialize        to Keep_inputs
   set   Outputs_B   to "1000"
end vector

vector  Outputs_B_1100
   initialize        to Keep_inputs
   set   Outputs_B   to "1100"
end vector

vector  Outputs_B_1110
   initialize        to Keep_inputs
   set   Outputs_B   to "1110"
end vector

vector  Outputs_B_1111
   initialize        to Keep_inputs
   set   Outputs_B   to "1111"
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  A_D0_0
   initialize        to Keep_inputs
   set   A_D0        to "0"
end vector

vector  A_D0_1
   initialize        to Keep_inputs
   set   A_D0        to "1"
end vector

vector  A_D1_0
   initialize        to Keep_inputs
   set   A_D1        to "0"
end vector

vector  A_D1_1
   initialize        to Keep_inputs
   set   A_D1        to "1"
end vector

vector  A_D2_0
   initialize        to Keep_inputs
   set   A_D2        to "0"
end vector

vector  A_D2_1
   initialize        to Keep_inputs
   set   A_D2        to "1"
end vector

vector  A_D3_0
   initialize        to Keep_inputs
   set   A_D3        to "0"
end vector

vector  A_D3_1
   initialize        to Keep_inputs
   set   A_D3        to "1"
end vector

vector  B_D0_0
   initialize        to Keep_inputs
   set   B_D0        to "0"
end vector

vector  B_D0_1
   initialize        to Keep_inputs
   set   B_D0        to "1"
end vector

vector  B_D1_0
   initialize        to Keep_inputs
   set   B_D1        to "0"
end vector

vector  B_D1_1
   initialize        to Keep_inputs
   set   B_D1        to "1"
end vector

vector  B_D2_0
   initialize        to Keep_inputs
   set   B_D2        to "0"
end vector

vector  B_D2_1
   initialize        to Keep_inputs
   set   B_D2        to "1"
end vector

vector  B_D3_0
   initialize        to Keep_inputs
   set   B_D3        to "0"
end vector

vector  B_D3_1
   initialize        to Keep_inputs
   set   B_D3        to "1"
end vector

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

sub  Clock
   execute  Enable_true
   execute  Enable_false
end sub

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

!AT The following AwareTest units have been added for minimum pins tests. Each
!AT unit tests a separate data pin starting with A D0.

unit "awaretest A_D0 Test"
   execute  Initialize_inputs
   execute  Clear_true
   execute  A_D0_0
   execute  Enable_true
   execute  Address_0
   execute  A_D0_1
end unit

unit "awaretest A_D1 Test"
   execute  Initialize_inputs
   execute  Clear_true
   execute  A_D1_0
   execute  Enable_true
   execute  Address_1
   execute  A_D1_1
end unit

unit "awaretest A_D2 Test"
   execute  Initialize_inputs
   execute  Clear_true
   execute  A_D2_0
   execute  Enable_true
   execute  Address_2
   execute  A_D2_1
end unit

unit "awaretest A_D3 Test"
   execute  Initialize_inputs
   execute  Clear_true
   execute  A_D3_0
   execute  Enable_true
   execute  Address_3
   execute  A_D3_1
end unit

unit "awaretest B_D0 Test"
   execute  Initialize_inputs
   execute  Clear_true
   execute  B_D0_0
   execute  Enable_true
   execute  Address_0
   execute  B_D0_1
end unit

unit "awaretest B_D1 Test"
   execute  Initialize_inputs
   execute  Clear_true
   execute  B_D1_0
   execute  Enable_true
   execute  Address_1
   execute  B_D1_1
end unit

unit "awaretest B_D2 Test"
   execute  Initialize_inputs
   execute  Clear_true
   execute  B_D2_0
   execute  Enable_true
   execute  Address_2
   execute  B_D2_1
end unit

unit "awaretest B_D3 Test"
   execute  Initialize_inputs
   execute  Clear_true
   execute  B_D3_0
   execute  Enable_true
   execute  Address_3
   execute  B_D3_1
end unit

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

unit  "Test latch A clear"
   execute  Initialize_inputs
   execute  Clear_true
   execute  Outputs_A_0000
end unit

unit  "Test latch A demultiplex"
   execute  Initialize_inputs
   execute  Clear_true
   execute  Enable_true
   execute  Address_0
   execute  Outputs_A_0001
   execute  Address_1
   execute  Outputs_A_0010
   execute  Address_2
   execute  Outputs_A_0100
   execute  Address_3
   execute  Outputs_A_1000
end unit

unit  "Test latch A addressable"
   execute  Initialize_inputs
   execute  Clear_true
   execute  Outputs_A_0000
   execute  Clear_false
   execute  Data_A_high
   execute  Address_0
   call  Clock
   execute  Outputs_A_0001
   execute  Address_1
   call  Clock
   execute  Outputs_A_0011
   execute  Address_2
   call  Clock
   execute  Outputs_A_0111
   execute  Address_3
   call  Clock
   execute  Outputs_A_1111
   execute  Data_A_low
   execute  Address_0
   call  Clock
   execute  Outputs_A_1110
   execute  Address_1
   call  Clock
   execute  Outputs_A_1100
   execute  Address_2
   call  Clock
   execute  Outputs_A_1000
   execute  Address_3
   call  Clock
   execute  Outputs_A_0000
end unit

unit  "Test latch B clear"
   execute  Initialize_inputs
   execute  Clear_true
   execute  Outputs_B_0000
end unit

unit  "Test latch B demultiplex"
   execute  Initialize_inputs
   execute  Clear_true
   execute  Enable_true
   execute  Address_0
   execute  Outputs_B_0001
   execute  Address_1
   execute  Outputs_B_0010
   execute  Address_2
   execute  Outputs_B_0100
   execute  Address_3
   execute  Outputs_B_1000
end unit

unit  "Test latch B addressable"
   execute  Initialize_inputs
   execute  Clear_true
   execute  Outputs_B_0000
   execute  Clear_false
   execute  Data_B_high
   execute  Address_0
   call  Clock
   execute  Outputs_B_0001
   execute  Address_1
   call  Clock
   execute  Outputs_B_0011
   execute  Address_2
   call  Clock
   execute  Outputs_B_0111
   execute  Address_3
   call  Clock
   execute  Outputs_B_1111
   execute  Data_B_low
   execute  Address_0
   call  Clock
   execute  Outputs_B_1110
   execute  Address_1
   call  Clock
   execute  Outputs_B_1100
   execute  Address_2
   call  Clock
   execute  Outputs_B_1000
   execute  Address_3
   call  Clock
   execute  Outputs_B_0000
end unit

! end of test
