!!!!    6    0    1  986224618  Vb24a                                         

! Device           : CY7C122
! Function         : Static RAM 256_by_4
! revision         : B.01.00
! safeguard        : high_out_hcmos
! Modifications    : Modified for AwareTest xi
!
  warning           "This library has not been verified with hardware."

warning  " This device has outputs that can be set in the high   "
warning  "   impedance state.  In order to test OEbar (pin 18)   "
warning  "   pullups are needed on Data_Out (pins 16,14,12,10).  "


sequential

receive delay 400n
vector cycle  500n

assign   VDD         to pins  22
assign   VSS         to pins  8


assign   A7_A0       to pins  7,6,5,21,1,2,3,4
assign   Data_In     to pins  15,13,11,9
assign   DI_3        to pins  15
assign   DI_2        to pins  13
assign   DI_1        to pins  11
assign   DI_0        to pins  9

assign   CS2_CS1     to pins  17,19
assign   WEbar       to pins  20
assign   OEbar       to pins  18
assign   Data_Out    to pins  16,14,12,10
assign   DO_3        to pins  16
assign   DO_2        to pins  14
assign   DO_1        to pins  12
assign   DO_0        to pins  10


family   CMOS

power          VDD,VSS

inputs         A7_A0,Data_In,CS2_CS1,WEbar,OEbar
inputs         DI_3, DI_2, DI_1, DI_0

outputs        Data_Out
outputs        DO_3, DO_2, DO_1, DO_0

disable        Data_Out  with  CS2_CS1 to "0X"
disable        Data_Out  with  CS2_CS1 to "X1"
disable        Data_Out  with  WEbar   to "0"
disable        Data_Out  with  OEbar   to "1"

when CS2_CS1 is "0X" inactive Data_Out
when CS2_CS1 is "X1" inactive Data_Out
when WEbar   is "1"   outputs Data_Out
when OEbar   is "1"  inactive Data_Out

trace DO_3 to  A7_A0,CS2_CS1,WEbar,OEbar,DI_3
trace DO_2 to  A7_A0,CS2_CS1,WEbar,OEbar,DI_2
trace DO_1 to  A7_A0,CS2_CS1,WEbar,OEbar,DI_1
trace DO_0 to  A7_A0,CS2_CS1,WEbar,OEbar,DI_0
!***************************************************************
!***************************************************************

vector   Initialize
   set   A7_A0       to "00000000"
   set   CS2_CS1     to "10"
   set   WEbar       to "1"
   set   OEbar       to "0"
   set   Data_In     to "0000"
end vector

vector   Keep_inputs
   set   A7_A0       to "kkkkkkkk"
   set   Data_In     to "kkkk"
   set   CS2_CS1     to "kk"
   set   OEbar       to "k"
   set   WEbar       to "k"
end vector

vector End_cycle
   set A7_A0         to "kkkkkkkk"
   set Data_In       to "kkkk"
   set CS2_CS1       to "kk"
   set OEbar         to "k"
   set WEbar         to "1"
end vector

vector Add_00000000
  initialize to Keep_inputs
  set WEbar to "1"
  set A7_A0 to "00000000"
end vector

vector Add_00000001
  initialize to Keep_inputs
  set WEbar to "1"
  set A7_A0 to "00000001"
end vector

vector Add_00000010
  initialize to Keep_inputs
  set WEbar to "1"
  set A7_A0 to "00000010"
end vector

vector Add_00000100
  initialize to Keep_inputs
  set WEbar to "1"
  set A7_A0 to "00000100"
end vector

vector Add_00001000
  initialize to Keep_inputs
  set WEbar to "1"
  set A7_A0 to "00001000"
end vector

vector Add_00010000
  initialize to Keep_inputs
  set WEbar to "1"
  set A7_A0 to "00010000"
end vector

vector Add_00100000
  initialize to Keep_inputs
  set WEbar to "1"
  set A7_A0 to "00100000"
end vector

vector Add_01000000
  initialize to Keep_inputs
  set WEbar to "1"
  set A7_A0 to "01000000"
end vector

vector Add_10000000
  initialize to Keep_inputs
  set WEbar to "1"
  set A7_A0 to "10000000"
end vector

vector Data_0101
  initialize to Keep_inputs
  set WEbar to "0"
  set Data_In to "0101"
end vector

vector Data_1010
  initialize to Keep_inputs
  set WEbar to "0"
  set Data_In to "1010"
end vector

vector Data_1111_CS1bar_false
  initialize to Keep_inputs
  set CS2_CS1   to "11"
  set WEbar to "0"
  set Data_In to "0000"
end vector

vector Data_1111_CS2_false
  initialize to Keep_inputs
  set CS2_CS1   to "00"
  set WEbar to "0"
  set Data_In to "0000"
end vector

vector Data_0000
  initialize to Keep_inputs
  set WEbar to "0"
  set Data_In to "0000"
end vector


! output vectors


vector Output_0101
  initialize to Keep_inputs
  set Data_Out to "0101"
end vector

vector Output_1010
  initialize to Keep_inputs
  set Data_Out to "1010"
end vector

vector Output_0000
  initialize to Keep_inputs
  set Data_Out to "0000"
end vector

vector Output_ZZZZ
  initialize to Keep_inputs
  set Data_Out to "1111"
end vector

vector CS1bar_true
   initialize to Keep_inputs
   set CS2_CS1 to "10"
end vector

vector CS1bar_false
   initialize to Keep_inputs
   set CS2_CS1 to "11"
end vector

vector CS2_true
   initialize to Keep_inputs
   set CS2_CS1 to "10"
end vector

vector CS2_false
   initialize to Keep_inputs
   set CS2_CS1 to "00"
end vector

vector OEbar_false
  initialize to Keep_inputs
  set OEbar to "1"
end vector

vector WEbar_false
  initialize to Keep_inputs
  set WEbar to "1"
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_DI_0
   set   A7_A0       to "00000000"
   set   CS2_CS1     to "10"
   set   WEbar       to "1"
   set   OEbar       to "0"
   set   DI_0        to "0"
end vector

vector   Initialize_DI_1
   set   A7_A0       to "00000000"
   set   CS2_CS1     to "10"
   set   WEbar       to "1"
   set   OEbar       to "0"
   set   DI_1        to "0"
end vector

vector   Initialize_DI_2
   set   A7_A0       to "00000000"
   set   CS2_CS1     to "10"
   set   WEbar       to "1"
   set   OEbar       to "0"
   set   DI_2        to "0"
end vector

vector   Initialize_DI_3
   set   A7_A0       to "00000000"
   set   CS2_CS1     to "10"
   set   WEbar       to "1"
   set   OEbar       to "0"
   set   DI_3        to "0"
end vector

vector   Keep_inputs_DI_0
   set   A7_A0       to "kkkkkkkk"
   set   DI_0        to "k"
   set   CS2_CS1     to "kk"
   set   OEbar       to "k"
   set   WEbar       to "k"
end vector

vector   Keep_inputs_DI_1
   set   A7_A0       to "kkkkkkkk"
   set   DI_1        to "k"
   set   CS2_CS1     to "kk"
   set   OEbar       to "k"
   set   WEbar       to "k"
end vector

vector   Keep_inputs_DI_2
   set   A7_A0       to "kkkkkkkk"
   set   DI_2        to "k"
   set   CS2_CS1     to "kk"
   set   OEbar       to "k"
   set   WEbar       to "k"
end vector

vector   Keep_inputs_DI_3
   set   A7_A0       to "kkkkkkkk"
   set   DI_3        to "k"
   set   CS2_CS1     to "kk"
   set   OEbar       to "k"
   set   WEbar       to "k"
end vector

vector End_cycle_DI_0
   set A7_A0         to "kkkkkkkk"
   set DI_0          to "k"
   set CS2_CS1       to "kk"
   set OEbar         to "k"
   set WEbar         to "1"
end vector

vector End_cycle_DI_1
   set A7_A0         to "kkkkkkkk"
   set DI_1          to "k"
   set CS2_CS1       to "kk"
   set OEbar         to "k"
   set WEbar         to "1"
end vector

vector End_cycle_DI_2
   set A7_A0         to "kkkkkkkk"
   set DI_2          to "k"
   set CS2_CS1       to "kk"
   set OEbar         to "k"
   set WEbar         to "1"
end vector

vector End_cycle_DI_3
   set A7_A0         to "kkkkkkkk"
   set DI_3          to "k"
   set CS2_CS1       to "kk"
   set OEbar         to "k"
   set WEbar         to "1"
end vector

vector Add_0_DI_0
  initialize to Keep_inputs_DI_0
  set WEbar          to "1"
  set A7_A0          to "00000000"
end vector

vector Add_0_DI_1
  initialize to Keep_inputs_DI_1
  set WEbar          to "1"
  set A7_A0          to "00000000"
end vector

vector Add_0_DI_2
  initialize to Keep_inputs_DI_2
  set WEbar          to "1"
  set A7_A0          to "00000000"
end vector

vector Add_0_DI_3
  initialize to Keep_inputs_DI_3
  set WEbar          to "1"
  set A7_A0          to "00000000"
end vector

vector Data_DI_0_0
  initialize to Keep_inputs_DI_0
  set WEbar          to "0"
  set DI_0           to "0"
end vector

vector Data_DI_0_1
  initialize to Keep_inputs_DI_0
  set WEbar          to "0"
  set DI_0           to "1"
end vector

vector Data_DI_1_0
  initialize to Keep_inputs_DI_1
  set WEbar          to "0"
  set DI_1           to "0"
end vector

vector Data_DI_1_1
  initialize to Keep_inputs_DI_1
  set WEbar          to "0"
  set DI_1           to "1"
end vector

vector Data_DI_2_0
  initialize to Keep_inputs_DI_2
  set WEbar          to "0"
  set DI_2           to "0"
end vector

vector Data_DI_2_1
  initialize to Keep_inputs_DI_2
  set WEbar          to "0"
  set DI_2           to "1"
end vector

vector Data_DI_3_0
  initialize to Keep_inputs_DI_3
  set WEbar          to "0"
  set DI_3           to "0"
end vector

vector Data_DI_3_1
  initialize to Keep_inputs_DI_3
  set WEbar          to "0"
  set DI_3           to "1"
end vector

vector Output_DO_0_0
  initialize to Keep_inputs_DI_0
  set DO_0           to "0"
end vector

vector Output_DO_0_1
  initialize to Keep_inputs_DI_0
  set DO_0           to "1"
end vector

vector Output_DO_1_0
  initialize to Keep_inputs_DI_1
  set DO_1           to "0"
end vector

vector Output_DO_1_1
  initialize to Keep_inputs_DI_1
  set DO_1           to "1"
end vector

vector Output_DO_2_0
  initialize to Keep_inputs_DI_2
  set DO_2           to "0"
end vector

vector Output_DO_2_1
  initialize to Keep_inputs_DI_2
  set DO_2           to "1"
end vector

vector Output_DO_3_0
  initialize to Keep_inputs_DI_3
  set DO_3           to "0"
end vector

vector Output_DO_3_1
  initialize to Keep_inputs_DI_3
  set DO_3           to "1"
end vector

!***************************************************************
!*******************  subroutine section  **********************

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

sub Read_cycle  (Add,Out)
   execute Add
   execute Out
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 (Out). This reference can be modified in the
!AT call statement.

sub  Write_cycle_Dx (Add_Dx, Data_Dx, End_cycle_Dx)
   execute Add_Dx
   execute Data_Dx
   execute End_cycle_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 Initialize_DI_0
   call Write_cycle_Dx (Add_0_DI_0, Data_DI_0_0, End_cycle_DI_0)
   call Read_cycle   (Add_0_DI_0, Output_DO_0_0)

   call Write_cycle_Dx (Add_0_DI_0, Data_DI_0_1, End_cycle_DI_0)
   call Read_cycle   (Add_0_DI_0, Output_DO_0_1)

end unit

unit   "awaretest D1 Test"

   execute Initialize_DI_1
   call Write_cycle_Dx (Add_0_DI_1, Data_DI_1_0, End_cycle_DI_1)
   call Read_cycle   (Add_0_DI_1, Output_DO_1_0)

   call Write_cycle_Dx (Add_0_DI_1, Data_DI_1_1, End_cycle_DI_1)
   call Read_cycle   (Add_0_DI_1, Output_DO_1_1)

end unit

unit   "awaretest D2 Test"

   execute Initialize_DI_2
   call Write_cycle_Dx (Add_0_DI_2, Data_DI_2_0, End_cycle_DI_2)
   call Read_cycle   (Add_0_DI_2, Output_DO_2_0)

   call Write_cycle_Dx (Add_0_DI_2, Data_DI_2_1, End_cycle_DI_2)
   call Read_cycle   (Add_0_DI_2, Output_DO_2_1)

end unit

unit   "awaretest D3 Test"

   execute Initialize_DI_3
   call Write_cycle_Dx (Add_0_DI_3, Data_DI_3_0, End_cycle_DI_3)
   call Read_cycle   (Add_0_DI_3, Output_DO_3_0)

   call Write_cycle_Dx (Add_0_DI_3, Data_DI_3_1, End_cycle_DI_3)
   call Read_cycle   (Add_0_DI_3, Output_DO_3_1)

end unit

unit  "unit1, Test Address and Data lines"
   execute Initialize
   call Write_cycle  (Add_00000000,Data_0101)
   call Write_cycle  (Add_00000001,Data_0101)
   call Write_cycle  (Add_00000010,Data_0101)
   call Write_cycle  (Add_00000100,Data_0101)
   call Write_cycle  (Add_00001000,Data_0101)
   call Write_cycle  (Add_00010000,Data_0101)
   call Write_cycle  (Add_00100000,Data_0101)
   call Write_cycle  (Add_01000000,Data_0101)
   call Write_cycle  (Add_10000000,Data_0101)

   call Read_cycle   (Add_00000000,Output_0101)
   call Write_cycle  (Add_00000000,Data_1010)
   call Read_cycle   (Add_00000001,Output_0101)
   call Write_cycle  (Add_00000001,Data_1010)
   call Read_cycle   (Add_00000010,Output_0101)
   call Write_cycle  (Add_00000010,Data_1010)
   call Read_cycle   (Add_00000100,Output_0101)
   call Write_cycle  (Add_00000100,Data_1010)
   call Read_cycle   (Add_00001000,Output_0101)
   call Write_cycle  (Add_00001000,Data_1010)
   call Read_cycle   (Add_00010000,Output_0101)
   call Write_cycle  (Add_00010000,Data_1010)
   call Read_cycle   (Add_00100000,Output_0101)
   call Write_cycle  (Add_00100000,Data_1010)
   call Read_cycle   (Add_01000000,Output_0101)
   call Write_cycle  (Add_01000000,Data_1010)
   call Read_cycle   (Add_10000000,Output_0101)
   call Write_cycle  (Add_10000000,Data_1010)

   call Read_cycle   (Add_00000000,Data_1010)
   call Read_cycle   (Add_00000001,Data_1010)
   call Read_cycle   (Add_00000010,Data_1010)
   call Read_cycle   (Add_00000100,Data_1010)
   call Read_cycle   (Add_00001000,Data_1010)
   call Read_cycle   (Add_00010000,Data_1010)
   call Read_cycle   (Add_00100000,Data_1010)
   call Read_cycle   (Add_01000000,Data_1010)
   call Read_cycle   (Add_10000000,Data_1010)

end unit


unit "unit2, test Chip Select 1 Bar"
   execute Initialize
   call Write_cycle (Add_00000000,Data_0000)
   call Read_cycle  (Add_00000000,Output_0000)
   execute CS1bar_false
   execute  Add_00000000
   execute  Data_1111_CS1bar_false
   execute  End_cycle
   execute CS1bar_true
   call Read_cycle  (Add_00000000,Output_0000)
end unit

unit "unit3, test Chip Select 2"
   execute Initialize
   call Write_cycle (Add_00000000,Data_0000)
   call Read_cycle  (Add_00000000,Output_0000)
   execute CS2_false
   execute  Add_00000000
   execute  Data_1111_CS2_false
   execute  End_cycle
   execute CS2_true
   call Read_cycle  (Add_00000000,Output_0000)
end unit

unit "unit 4, test Output Enable Bar"
   execute Initialize
   call Write_cycle  (Add_00000000,Data_0000)
   call Read_cycle   (Add_00000000,Output_0000)
   execute OEbar_false
   call Write_cycle  (Add_00000000,Data_0000)
   call Read_cycle   (Add_00000000,Output_ZZZZ)
end unit


!End of test
















