!!!!    6    0    1  987013184  V4524                                         

! Device           : 2210
! Function         : 256 Bit Nonvolatile Static RAM
! revision         : B.01.00
! safeguard        : standard_ttl
! Modifications    : Modified for AwareTest xi
!
  warning           "This library has not been verified with hardware."

sequential

   warning "*******************************************************"
   warning "The unit Test Nonvolatile Memory requires approximately"
   warning "20ms due to the required storage time of 10ms for the"
   warning "nonvolatile memory.  The unit should be commented out"
   warning "if a shorter test is desired."
   warning "*******************************************************"
   warning "The vector Tristate must be modified to tristate all"
   warning "Disablegroup drivers if the unit Test Nonvolatile"
   warning "Memory is not commented.  Use safeguard cool while"
   warning "executing the test."
   warning "*******************************************************"

vector cycle   500n
receive delay  400n

assign   VCC               to pins  18
assign   GND               to pins   8

assign   A5_A0             to pins  16,  2,  3,  4,  5,  6
assign   IO4_IO1           to pins  15, 14, 13, 12
assign   IO1               to pins  12 !AT Added for minimum pin test.
assign   IO2               to pins  13 !AT Added for minimum pin test.
assign   IO3               to pins  14 !AT Added for minimum pin test.
assign   IO4               to pins  15 !AT Added for minimum pin test.

assign   CS_bar            to pins   7
assign   WE_bar            to pins  11

assign   Store_bar         to pins   9
assign   Array_Recall_bar  to pins  10

assign   NC                to pins   1, 17

family   TTL

power    VCC, GND

inputs   A5_A0
inputs   CS_bar, Store_bar, WE_bar, Array_Recall_bar

bidirectional  IO4_IO1
bidirectional  IO1, IO2, IO3, IO4            !AT Added for min. pin test.

nondigital  NC

disable  IO4_IO1  with  CS_bar  to "1"
disable  IO4_IO1  with  WE_bar  to "0"

when  CS_bar   is "1"   inactive IO4_IO1
when  WE_bar   is "0"   inactive IO4_IO1

! Note: default trace specification is used

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

vector   Initialize
   drive IO4_IO1
   set   IO4_IO1  to "0000"
   set   A5_A0    to "000000"
   set   CS_bar   to "0"
   set   WE_bar   to "1"
   set   Store_bar         to "1"
   set   Array_Recall_bar  to "1"
end vector

vector   Keep_Control
   drive IO4_IO1
   set   IO4_IO1  to "kkkk"
   set   A5_A0    to "kkkkkk"
   set   CS_bar   to "k"
   set   WE_bar   to "k"
   set   Store_bar         to "k"
   set   Array_Recall_bar  to "k"
end vector

vector   End_Cycle
   drive IO4_IO1
   set   IO4_IO1  to "kkkk"
   set   A5_A0    to "kkkkkk"
   set   CS_bar   to "k"
   set   WE_bar   to "0"
   set   Store_bar         to "k"
   set   Array_Recall_bar  to "k"
end vector

vector   Add_000000
   initialize to Keep_Control
   set   WE_bar   to "1"
   set   A5_A0    to "000000"
end vector

vector   Add_000001
   initialize to Keep_Control
   set   WE_bar   to "1"
   set   A5_A0    to "000001"
end vector

vector   Add_000010
   initialize to Keep_Control
   set   WE_bar   to "1"
   set   A5_A0    to "000010"
end vector

vector   Add_000100
   initialize to Keep_Control
   set   WE_bar   to "1"
   set   A5_A0    to "000100"
end vector

vector   Add_001000
   initialize to Keep_Control
   set   WE_bar   to "1"
   set   A5_A0    to "001000"
end vector

vector   Add_010000
   initialize to Keep_Control
   set   WE_bar   to "1"
   set   A5_A0    to "010000"
end vector

vector   Add_100000
   initialize to Keep_Control
   set   WE_bar   to "1"
   set   A5_A0    to "100000"
end vector

vector   Add_111111
   initialize to Keep_Control
   set   WE_bar   to "1"
   set   A5_A0    to "111111"
end vector

vector   Data_0101D
   initialize to Keep_Control
   set   IO4_IO1  to "0101"
end vector

vector   Data_1010D
   initialize to Keep_Control
   set   IO4_IO1  to "1010"
end vector

vector   Data_0101R
   initialize to Keep_Control
   receive  IO4_IO1
   set   IO4_IO1  to "0101"
end vector

vector   Data_1010R
   initialize to Keep_Control
   receive  IO4_IO1
   set   IO4_IO1  to "1010"
end vector

vector   CS_true
   initialize to Keep_Control
   set   WE_bar      to "1"
   set   CS_bar      to "0"
end vector

vector   CS_false
   initialize to Keep_Control
   set   WE_bar      to "1"
   set   CS_bar      to "1"
end vector

vector   Tristate
   set   CS_bar         to "z"
!#####   User modification required   #####
!! set   Disablegroup   to "z"
end vector

vector   Array_Keep_Control
   set   CS_bar      to "k"
end vector

vector   Store_false
   initialize to Keep_Control
   set   Store_bar   to "1"
end vector

vector   Store_true
   initialize to Keep_Control
   set   WE_bar      to "1"
   set   Store_bar   to "0"
end vector

vector   Array_Recall_false
   initialize to Keep_Control
   set   Array_Recall_bar  to "1"
end vector

vector   Array_Recall_true
   initialize to Keep_Control
   set   WE_bar      to "1"
   set   Array_Recall_bar  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   Initialize_IO1
   drive IO1
   set   IO1      to "0"
   set   A5_A0    to "000000"
   set   CS_bar   to "0"
   set   WE_bar   to "1"
   set   Store_bar         to "1"
   set   Array_Recall_bar  to "1"
end vector

vector   Keep_Control_IO1
   drive IO1
   set   IO1      to "k"
   set   A5_A0    to "kkkkkk"
   set   CS_bar   to "k"
   set   WE_bar   to "k"
   set   Store_bar         to "k"
   set   Array_Recall_bar  to "k"
end vector

vector   End_Cycle_IO1
   drive IO1
   set   IO1      to "k"
   set   A5_A0    to "kkkkkk"
   set   CS_bar   to "k"
   set   WE_bar   to "0"
   set   Store_bar         to "k"
   set   Array_Recall_bar  to "k"
end vector

vector   Add_000000_IO1
   initialize to Keep_Control_IO1
   set   WE_bar   to "1"
   set   A5_A0    to "000000"
end vector

vector   Data_IO1_0D
   initialize to Keep_Control_IO1
   set   IO1      to "0"
end vector

vector   Data_IO1_1D
   initialize to Keep_Control_IO1
   set   IO1      to "1"
end vector

vector   Data_IO1_0R
   initialize to Keep_Control_IO1
   receive  IO1
   set   IO1      to "0"
end vector

vector   Data_IO1_1R
   initialize to Keep_Control_IO1
   receive  IO1
   set   IO1      to "1"
end vector

vector   Initialize_IO2
   drive IO2
   set   IO2      to "0"
   set   A5_A0    to "000000"
   set   CS_bar   to "0"
   set   WE_bar   to "1"
   set   Store_bar         to "1"
   set   Array_Recall_bar  to "1"
end vector

vector   Keep_Control_IO2
   drive IO2
   set   IO2      to "k"
   set   A5_A0    to "kkkkkk"
   set   CS_bar   to "k"
   set   WE_bar   to "k"
   set   Store_bar         to "k"
   set   Array_Recall_bar  to "k"
end vector

vector   End_Cycle_IO2
   drive IO2
   set   IO2      to "k"
   set   A5_A0    to "kkkkkk"
   set   CS_bar   to "k"
   set   WE_bar   to "0"
   set   Store_bar         to "k"
   set   Array_Recall_bar  to "k"
end vector

vector   Add_000000_IO2
   initialize to Keep_Control_IO2
   set   WE_bar   to "1"
   set   A5_A0    to "000000"
end vector

vector   Data_IO2_0D
   initialize to Keep_Control_IO2
   set   IO2      to "0"
end vector

vector   Data_IO2_1D
   initialize to Keep_Control_IO2
   set   IO2      to "1"
end vector

vector   Data_IO2_0R
   initialize to Keep_Control_IO2
   receive  IO2
   set   IO2      to "0"
end vector

vector   Data_IO2_1R
   initialize to Keep_Control_IO2
   receive  IO2
   set   IO2      to "1"
end vector

vector   Initialize_IO3
   drive IO3
   set   IO3      to "0"
   set   A5_A0    to "000000"
   set   CS_bar   to "0"
   set   WE_bar   to "1"
   set   Store_bar         to "1"
   set   Array_Recall_bar  to "1"
end vector

vector   Keep_Control_IO3
   drive IO3
   set   IO3      to "k"
   set   A5_A0    to "kkkkkk"
   set   CS_bar   to "k"
   set   WE_bar   to "k"
   set   Store_bar         to "k"
   set   Array_Recall_bar  to "k"
end vector

vector   End_Cycle_IO3
   drive IO3
   set   IO3      to "k"
   set   A5_A0    to "kkkkkk"
   set   CS_bar   to "k"
   set   WE_bar   to "0"
   set   Store_bar         to "k"
   set   Array_Recall_bar  to "k"
end vector

vector   Add_000000_IO3
   initialize to Keep_Control_IO3
   set   WE_bar   to "1"
   set   A5_A0    to "000000"
end vector

vector   Data_IO3_0D
   initialize to Keep_Control_IO3
   set   IO3      to "0"
end vector

vector   Data_IO3_1D
   initialize to Keep_Control_IO3
   set   IO3      to "1"
end vector

vector   Data_IO3_0R
   initialize to Keep_Control_IO3
   receive  IO3
   set   IO3      to "0"
end vector

vector   Data_IO3_1R
   initialize to Keep_Control_IO3
   receive  IO3
   set   IO3      to "1"
end vector

vector   Initialize_IO4
   drive IO4
   set   IO4      to "0"
   set   A5_A0    to "000000"
   set   CS_bar   to "0"
   set   WE_bar   to "1"
   set   Store_bar         to "1"
   set   Array_Recall_bar  to "1"
end vector

vector   Keep_Control_IO4
   drive IO4
   set   IO4      to "k"
   set   A5_A0    to "kkkkkk"
   set   CS_bar   to "k"
   set   WE_bar   to "k"
   set   Store_bar         to "k"
   set   Array_Recall_bar  to "k"
end vector

vector   End_Cycle_IO4
   drive IO4
   set   IO4      to "k"
   set   A5_A0    to "kkkkkk"
   set   CS_bar   to "k"
   set   WE_bar   to "0"
   set   Store_bar         to "k"
   set   Array_Recall_bar  to "k"
end vector

vector   Add_000000_IO4
   initialize to Keep_Control_IO4
   set   WE_bar   to "1"
   set   A5_A0    to "000000"
end vector

vector   Data_IO4_0D
   initialize to Keep_Control_IO4
   set   IO4      to "0"
end vector

vector   Data_IO4_1D
   initialize to Keep_Control_IO4
   set   IO4      to "1"
end vector

vector   Data_IO4_0R
   initialize to Keep_Control_IO4
   receive  IO4
   set   IO4      to "0"
end vector

vector   Data_IO4_1R
   initialize to Keep_Control_IO4
   receive  IO4
   set   IO4      to "1"
end vector


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

sub   Write_cycle(Address, Data)
   execute  Address
   execute  Data
   execute  End_cycle
end sub

sub   Read_cycle(Address, Data)
   execute  Address
   execute  Data
end sub

!AT The following subroutines have been added for a minimum pins test.
!AT Vectors in the subroutine "Write_cycle" reference the entire data bus.
!AT Therefore this subroutine was copied and modified to reference only
!AT a single pin of the data bus. The subroutine "Read_cycle" did not
!AT require any modification as all references to the data bus are made
!AT via a passed parameter (Data). This reference can be modified in the
!AT call statement.

sub  Write_cycle_Dx (Address, Data, End_cycle)
   execute  Address
   execute  Data
   execute  End_cycle
end sub

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

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

unit   "awaretest IO1 Test"

   execute  Initialize_IO1

   call Write_cycle_Dx (Add_000000_IO1, Data_IO1_0D, End_cycle_IO1)
   call Read_cycle  (Add_000000_IO1, Data_IO1_0R)

   call Write_cycle_Dx (Add_000000_IO1, Data_IO1_1D, End_cycle_IO1)
   call Read_cycle  (Add_000000_IO1, Data_IO1_1R)

end unit

unit   "awaretest IO2 Test"

   execute  Initialize_IO2

   call Write_cycle_Dx (Add_000000_IO2, Data_IO2_0D, End_cycle_IO2)
   call Read_cycle  (Add_000000_IO2, Data_IO2_0R)

   call Write_cycle_Dx (Add_000000_IO2, Data_IO2_1D, End_cycle_IO2)
   call Read_cycle  (Add_000000_IO2, Data_IO2_1R)

end unit

unit   "awaretest IO3 Test"

   execute  Initialize_IO3

   call Write_cycle_Dx (Add_000000_IO3, Data_IO3_0D, End_cycle_IO3)
   call Read_cycle  (Add_000000_IO3, Data_IO3_0R)

   call Write_cycle_Dx (Add_000000_IO3, Data_IO3_1D, End_cycle_IO3)
   call Read_cycle  (Add_000000_IO3, Data_IO3_1R)

end unit

unit   "awaretest IO4 Test"

   execute  Initialize_IO4

   call Write_cycle_Dx (Add_000000_IO4, Data_IO4_0D, End_cycle_IO4)
   call Read_cycle  (Add_000000_IO4, Data_IO4_0R)

   call Write_cycle_Dx (Add_000000_IO4, Data_IO4_1D, End_cycle_IO4)
   call Read_cycle  (Add_000000_IO4, Data_IO4_1R)

end unit

unit "Test Address and Data Pins"
   execute  Initialize

   call Write_cycle (Add_000000, Data_0101D)
   call Write_cycle (Add_000001, Data_0101D)
   call Write_cycle (Add_000010, Data_0101D)
   call Write_cycle (Add_000100, Data_0101D)
   call Write_cycle (Add_001000, Data_0101D)
   call Write_cycle (Add_010000, Data_0101D)
   call Write_cycle (Add_100000, Data_0101D)

   call Read_cycle  (Add_000000, Data_0101R)
   call Write_cycle (Add_000000, Data_1010D)
   call Read_cycle  (Add_000001, Data_0101R)
   call Write_cycle (Add_000001, Data_1010D)
   call Read_cycle  (Add_000010, Data_0101R)
   call Write_cycle (Add_000010, Data_1010D)
   call Read_cycle  (Add_000100, Data_0101R)
   call Write_cycle (Add_000100, Data_1010D)
   call Read_cycle  (Add_001000, Data_0101R)
   call Write_cycle (Add_001000, Data_1010D)
   call Read_cycle  (Add_010000, Data_0101R)
   call Write_cycle (Add_010000, Data_1010D)
   call Read_cycle  (Add_100000, Data_0101R)
   call Write_cycle (Add_100000, Data_1010D)

   call Read_cycle  (Add_000000, Data_1010R)
   call Read_cycle  (Add_000001, Data_1010R)
   call Read_cycle  (Add_000010, Data_1010R)
   call Read_cycle  (Add_000100, Data_1010R)
   call Read_cycle  (Add_001000, Data_1010R)
   call Read_cycle  (Add_010000, Data_1010R)
   call Read_cycle  (Add_100000, Data_1010R)
end unit

unit "Test Chip Select"
   execute  Initialize

   call Write_cycle (Add_000000, Data_1010D)
   execute  CS_false
   call Write_cycle (Add_000000, Data_0101D)
   execute  CS_true
   call Read_cycle  (Add_000000, Data_1010R)
end unit

unit "Test Nonvolatile Memory"

   execute  Initialize

   call Write_cycle (Add_000000, Data_0101D)
   call Write_cycle (Add_111111, Data_1010D)

   execute  Store_true
   execute  Store_false

   repeat 10 times                       ! 10ms delay needed
      repeat 100 times                   ! 100 10us periods in 1ms
         execute  Tristate     ! 5us
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate

         execute  Tristate     ! 5us
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
      end repeat
   end repeat

   execute Initialize

   call Write_cycle (Add_000000, Data_1010D)
   call Write_cycle (Add_111111, Data_0101D)

   execute  Array_Recall_true
   execute  Array_Recall_false

   execute  Array_Keep_Control         ! 1us delay
   execute  Array_Keep_Control

   call Read_cycle  (Add_000000, Data_0101R)
   call Read_cycle  (Add_111111, Data_1010R)

   call Write_cycle (Add_000000, Data_1010D)
   call Write_cycle (Add_111111, Data_0101D)

   execute  Store_true
   execute  Store_false

   repeat 10 times                       ! 10ms delay needed
      repeat 100 times                   ! 100 10us periods in 1ms
         execute  Tristate     ! 5us
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate

         execute  Tristate     ! 5us
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
         execute  Tristate
      end repeat
   end repeat

   execute  Initialize

   call Write_cycle (Add_000000, Data_0101D)
   call Write_cycle (Add_111111, Data_1010D)

   execute  Array_Recall_true
   execute  Array_Recall_false

   execute  Array_Keep_Control         ! 1us delay
   execute  Array_Keep_Control

   call Read_cycle  (Add_000000, Data_1010R)
   call Read_cycle  (Add_111111, Data_0101R)
end unit

! End Test
