!!!!    6    0    1  986755442  Va9c7                                         

! Device           : 43256
! Function         : 32K x 8-bit Static Mix-Mos RAM
! revision         : B.01.00
! safeguard        : high_out_cmos
! Modifications    : Modified for AwareTest xi
!
  warning           "This library has not been verified with hardware."

!NEC Electronics Inc. spec. sheet

sequential

assign        VCC               to pins 28
assign        GND               to pins 14

assign        Address           to pins 1,26,2,23,21,24
assign        Address           to pins 25,3,4,5,6,7,8,9,10
assign        Chip_select_bar   to pins 20
assign        Output_enable_bar to pins 22
assign        Write_enable_bar  to pins 27

assign        Data              to pins 19,18,17,16
assign        Data              to pins 15,13,12,11
assign        Data_D0           to pins 11   !AT Added for minimum pin test.
assign        Data_D1           to pins 12   !AT Added for minimum pin test.
assign        Data_D2           to pins 13   !AT Added for minimum pin test.
assign        Data_D3           to pins 15   !AT Added for minimum pin test.
assign        Data_D4           to pins 16   !AT Added for minimum pin test.
assign        Data_D5           to pins 17   !AT Added for minimum pin test.
assign        Data_D6           to pins 18   !AT Added for minimum pin test.
assign        Data_D7           to pins 19   !AT Added for minimum pin test.

assign        Disable_pins      to pins 20,22,27

family        TTL

power         VCC,GND

inputs        Address,Chip_select_bar,Output_enable_bar,Write_enable_bar
bidirectional Data
bidirectional  Data_D0, Data_D1, Data_D2, Data_D3 !AT Added for min. pin test.
bidirectional  Data_D4, Data_D5, Data_D6, Data_D7 !AT Added for min. pin test.

set load on groups Data      to pull up

!*********************  Disable Information    *****************************

disable Data with Disable_pins to "011"
disable Data with Disable_pins to "1XX"

!********************   Backtrace information    ***************************

when Disable_pins is "011"  inactive Data
when Disable_pins is "1XX"  inactive Data
when Disable_pins is "001"  outputs Data
when Disable_pins is "0X0"  inputs Data

trace Data to Address,Chip_select_bar
trace Data to Output_enable_bar,Write_enable_bar

warning "Needed to test Output_enable_bar pin in unit Test Output Enable."

!*******************************************************************
!*************              VECTOR SECTION          ****************
!*******************************************************************

vector Set_Values        !Set chip into a known state.
   set Address           to "000000000000000"
   set Chip_select_bar   to "1"
   set Output_enable_bar to "1"
   set Write_enable_bar  to "1"
end vector

vector Keep_Values       !Maintain values.
   set Address           to "kkkkkkkkkkkkkkk"
   set Chip_select_bar   to "k"
   set Output_enable_bar to "k"
   set Write_enable_bar  to "k"
end vector

!***********  Vectors that toggle the control pins. ********************

vector Chip_select_low
   initialize to Keep_Values
   set Chip_select_bar   to "0"
end vector

vector Chip_select_high
   initialize to Keep_Values
   set Chip_select_bar   to "1"
end vector

vector Output_enable_low
   initialize to Keep_Values
   set Output_enable_bar to "0"
end vector

vector Output_enable_high
   initialize to Keep_Values
   set Output_enable_bar to "1"
end vector

vector Write_enable_low
   initialize to Keep_Values
   set Write_enable_bar  to "0"
end vector

vector Write_enable_high
   initialize to Keep_Values
   set Write_enable_bar  to "1"
end vector

!*************   Vectors that address the RAM   ************************


vector Address_000000000000000
   initialize to Keep_Values
   set Address           to "000000000000000"
end vector

vector Address_000000000000001
   initialize to Keep_Values
   set Address           to "000000000000001"
end vector

vector Address_000000000000011
   initialize to Keep_Values
   set Address           to "000000000000011"
end vector

vector Address_000000000000111
   initialize to Keep_Values
   set Address           to "000000000000111"
end vector

vector Address_000000000001111
   initialize to Keep_Values
   set Address           to "000000000001111"
end vector

vector Address_000000000011111
   initialize to Keep_Values
   set Address           to "000000000011111"
end vector

vector Address_000000000111111
   initialize to Keep_Values
   set Address           to "000000000111111"
end vector

vector Address_000000001111111
   initialize to Keep_Values
   set Address           to "000000001111111"
end vector

vector Address_000000011111111
   initialize to Keep_Values
   set Address           to "000000011111111"
end vector

vector Address_000000111111111
   initialize to Keep_Values
   set Address           to "000000111111111"
end vector

vector Address_000001111111111
   initialize to Keep_Values
   set Address           to "000001111111111"
end vector

vector Address_000011111111111
   initialize to Keep_Values
   set Address           to "000011111111111"
end vector

vector Address_000111111111111
   initialize to Keep_Values
   set Address           to "000111111111111"
end vector

vector Address_001111111111111
   initialize to Keep_Values
   set Address           to "001111111111111"
end vector

vector Address_011111111111111
   initialize to Keep_Values
   set Address           to "011111111111111"
end vector

vector Address_111111111111111
   initialize to Keep_Values
   set Address           to "111111111111111"
end vector

vector Address_101010101010101
   initialize to Keep_Values
   set Address           to "101010101010101"
end vector

!************* Vectors that write data into the RAM.   *****************

vector Data_In_00000000
   initialize to Keep_Values
   drive Data
   set Data             to "00000000"
end vector

vector Data_In_00000001
   initialize to Keep_Values
   drive Data
   set Data             to "00000001"
end vector

vector Data_In_00000011
   initialize to Keep_Values
   drive Data
   set Data             to "00000011"
end vector

vector Data_In_00000111
   initialize to Keep_Values
   drive Data
   set Data             to "00000111"
end vector

vector Data_In_00001111
   initialize to Keep_Values
   drive Data
   set Data             to "00001111"
end vector

vector Data_In_00011111
   initialize to Keep_Values
   drive Data
   set Data             to "00011111"
end vector

vector Data_In_00111111
   initialize to Keep_Values
   drive Data
   set Data             to "00111111"
end vector

vector Data_In_01111111
   initialize to Keep_Values
   drive Data
   set Data             to "01111111"
end vector

vector Data_In_11111111
   initialize to Keep_Values
   drive Data
   set Data             to "11111111"
end vector

vector Data_In_11111110
   initialize to Keep_Values
   drive Data
   set Data             to "11111110"
end vector

vector Data_In_11111100
   initialize to Keep_Values
   drive Data
   set Data             to "11111100"
end vector

vector Data_In_11111000
   initialize to Keep_Values
   drive Data
   set Data             to "11111000"
end vector

vector Data_In_11110000
   initialize to Keep_Values
   drive Data
   set Data             to "11110000"
end vector

vector Data_In_11100000
   initialize to Keep_Values
   drive Data
   set Data             to "11100000"
end vector

vector Data_In_11000000
   initialize to Keep_Values
   drive Data
   set Data             to "11000000"
end vector

vector Data_In_10000000
   initialize to Keep_Values
   drive Data
   set Data             to "10000000"
end vector

vector Data_In_10101010
   initialize to Keep_Values
   drive Data
   set Data             to "10101010"
end vector

!*********    Vector that receive data from the RAM. *******************

vector Data_00000000
   initialize to Keep_Values
   receive Data
   set Data             to "00000000"
end vector

vector Data_00000001
   initialize to Keep_Values
   receive Data
   set Data             to "00000001"
end vector

vector Data_00000011
   initialize to Keep_Values
   receive Data
   set Data             to "00000011"
end vector

vector Data_00000111
   initialize to Keep_Values
   receive Data
   set Data             to "00000111"
end vector

vector Data_00001111
   initialize to Keep_Values
   receive Data
   set Data             to "00001111"
end vector

vector Data_00011111
   initialize to Keep_Values
   receive Data
   set Data             to "00011111"
end vector

vector Data_00111111
   initialize to Keep_Values
   receive Data
   set Data             to "00111111"
end vector

vector Data_01111111
   initialize to Keep_Values
   receive Data
   set Data             to "01111111"
end vector

vector Data_11111111
   initialize to Keep_Values
   receive Data
   set Data             to "11111111"
end vector

vector Data_11111110
   initialize to Keep_Values
   receive Data
   set Data             to "11111110"
end vector

vector Data_11111100
   initialize to Keep_Values
   receive Data
   set Data             to "11111100"
end vector

vector Data_11111000
   initialize to Keep_Values
   receive Data
   set Data             to "11111000"
end vector

vector Data_11110000
   initialize to Keep_Values
   receive Data
   set Data             to "11110000"
end vector

vector Data_11100000
   initialize to Keep_Values
   receive Data
   set Data             to "11100000"
end vector

vector Data_11000000
   initialize to Keep_Values
   receive Data
   set Data             to "11000000"
end vector

vector Data_10000000
   initialize to Keep_Values
   receive Data
   set Data             to "10000000"
end vector

vector Data_10101010
   initialize to Keep_Values
   receive Data
   set Data             to "10101010"
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
   initialize to Keep_Values
   drive Data_D0
   set Data_D0          to "0"
end vector

vector Data_In_D0_1
   initialize to Keep_Values
   drive Data_D0
   set Data_D0          to "1"
end vector

vector Data_In_D1_0
   initialize to Keep_Values
   drive Data_D1
   set Data_D1          to "0"
end vector

vector Data_In_D1_1
   initialize to Keep_Values
   drive Data_D1
   set Data_D1          to "1"
end vector

vector Data_In_D2_0
   initialize to Keep_Values
   drive Data_D2
   set Data_D2          to "0"
end vector

vector Data_In_D2_1
   initialize to Keep_Values
   drive Data_D2
   set Data_D2          to "1"
end vector

vector Data_In_D3_0
   initialize to Keep_Values
   drive Data_D3
   set Data_D3          to "0"
end vector

vector Data_In_D3_1
   initialize to Keep_Values
   drive Data_D3
   set Data_D3          to "1"
end vector

vector Data_In_D4_0
   initialize to Keep_Values
   drive Data_D4
   set Data_D4          to "0"
end vector

vector Data_In_D4_1
   initialize to Keep_Values
   drive Data_D4
   set Data_D4          to "1"
end vector

vector Data_In_D5_0
   initialize to Keep_Values
   drive Data_D5
   set Data_D5          to "0"
end vector

vector Data_In_D5_1
   initialize to Keep_Values
   drive Data_D5
   set Data_D5          to "1"
end vector

vector Data_In_D6_0
   initialize to Keep_Values
   drive Data_D6
   set Data_D6          to "0"
end vector

vector Data_In_D6_1
   initialize to Keep_Values
   drive Data_D6
   set Data_D6          to "1"
end vector

vector Data_In_D7_0
   initialize to Keep_Values
   drive Data_D7
   set Data_D7          to "0"
end vector

vector Data_In_D7_1
   initialize to Keep_Values
   drive Data_D7
   set Data_D7          to "1"
end vector

vector Data_D0_0
   initialize to Keep_Values
   receive Data_D0
   set Data_D0          to "0"
end vector

vector Data_D0_1
   initialize to Keep_Values
   receive Data_D0
   set Data_D0          to "1"
end vector

vector Data_D1_0
   initialize to Keep_Values
   receive Data_D1
   set Data_D1          to "0"
end vector

vector Data_D1_1
   initialize to Keep_Values
   receive Data_D1
   set Data_D1          to "1"
end vector

vector Data_D2_0
   initialize to Keep_Values
   receive Data_D2
   set Data_D2          to "0"
end vector

vector Data_D2_1
   initialize to Keep_Values
   receive Data_D2
   set Data_D2          to "1"
end vector

vector Data_D3_0
   initialize to Keep_Values
   receive Data_D3
   set Data_D3          to "0"
end vector

vector Data_D3_1
   initialize to Keep_Values
   receive Data_D3
   set Data_D3          to "1"
end vector

vector Data_D4_0
   initialize to Keep_Values
   receive Data_D4
   set Data_D4          to "0"
end vector

vector Data_D4_1
   initialize to Keep_Values
   receive Data_D4
   set Data_D4          to "1"
end vector

vector Data_D5_0
   initialize to Keep_Values
   receive Data_D5
   set Data_D5          to "0"
end vector

vector Data_D5_1
   initialize to Keep_Values
   receive Data_D5
   set Data_D5          to "1"
end vector

vector Data_D6_0
   initialize to Keep_Values
   receive Data_D6
   set Data_D6          to "0"
end vector

vector Data_D6_1
   initialize to Keep_Values
   receive Data_D6
   set Data_D6          to "1"
end vector

vector Data_D7_0
   initialize to Keep_Values
   receive Data_D7
   set Data_D7          to "0"
end vector

vector Data_D7_1
   initialize to Keep_Values
   receive Data_D7
   set Data_D7          to "1"
end vector

!*******************************************************************
!*************          SUBROUTINE SECTION          ****************
!*******************************************************************

sub Write (Add,Data)                   !Write data to the RAM.
   execute Add
   execute Chip_select_low
   execute Write_enable_low
   execute Data
   execute Write_enable_high
   execute Chip_select_high
end sub

sub Read (Add,Data)                    !Read data from the RAM.
   execute Add
   execute Chip_select_low
   execute Output_enable_low
   execute Data
   execute Output_enable_high
   execute Chip_select_high
end sub

!*******************************************************************
!*************               UNIT SECTION           ****************
!*******************************************************************

!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 Set_Values

   call Write(Address_000000000000000,Data_In_D0_0)
   call Read(Address_000000000000000,Data_D0_0)

   call Write(Address_000000000000000,Data_In_D0_1)
   call Read(Address_000000000000000,Data_D0_1)

end unit

unit   "awaretest D1 Test"

   execute Set_Values

   call Write(Address_000000000000000,Data_In_D1_0)
   call Read(Address_000000000000000,Data_D1_0)

   call Write(Address_000000000000000,Data_In_D1_1)
   call Read(Address_000000000000000,Data_D1_1)

end unit

unit   "awaretest D2 Test"

   execute Set_Values

   call Write(Address_000000000000000,Data_In_D2_0)
   call Read(Address_000000000000000,Data_D2_0)

   call Write(Address_000000000000000,Data_In_D2_1)
   call Read(Address_000000000000000,Data_D2_1)

end unit

unit   "awaretest D3 Test"

   execute Set_Values

   call Write(Address_000000000000000,Data_In_D3_0)
   call Read(Address_000000000000000,Data_D3_0)

   call Write(Address_000000000000000,Data_In_D3_1)
   call Read(Address_000000000000000,Data_D3_1)

end unit

unit   "awaretest D4 Test"

   execute Set_Values

   call Write(Address_000000000000000,Data_In_D4_0)
   call Read(Address_000000000000000,Data_D4_0)

   call Write(Address_000000000000000,Data_In_D4_1)
   call Read(Address_000000000000000,Data_D4_1)

end unit

unit   "awaretest D5 Test"

   execute Set_Values

   call Write(Address_000000000000000,Data_In_D5_0)
   call Read(Address_000000000000000,Data_D5_0)

   call Write(Address_000000000000000,Data_In_D5_1)
   call Read(Address_000000000000000,Data_D5_1)

end unit

unit   "awaretest D6 Test"

   execute Set_Values

   call Write(Address_000000000000000,Data_In_D6_0)
   call Read(Address_000000000000000,Data_D6_0)

   call Write(Address_000000000000000,Data_In_D6_1)
   call Read(Address_000000000000000,Data_D6_1)

end unit

unit   "awaretest D7 Test"

   execute Set_Values

   call Write(Address_000000000000000,Data_In_D7_0)
   call Read(Address_000000000000000,Data_D7_0)

   call Write(Address_000000000000000,Data_In_D7_1)
   call Read(Address_000000000000000,Data_D7_1)

end unit

unit "Test Ram"     !Test address and I/O pins using a graycode pattern
   execute Set_Values
   call Write(Address_000000000000000,Data_In_00000000)
   call Write(Address_000000000000001,Data_In_00000001)
   call Write(Address_000000000000011,Data_In_00000011)
   call Write(Address_000000000000111,Data_In_00000111)
   call Write(Address_000000000001111,Data_In_00001111)
   call Write(Address_000000000011111,Data_In_00011111)
   call Write(Address_000000000111111,Data_In_00111111)
   call Write(Address_000000001111111,Data_In_01111111)
   call Write(Address_000000011111111,Data_In_11111111)
   call Write(Address_000000111111111,Data_In_11111110)
   call Write(Address_000001111111111,Data_In_11111100)
   call Write(Address_000011111111111,Data_In_11111000)
   call Write(Address_000111111111111,Data_In_11110000)
   call Write(Address_001111111111111,Data_In_11100000)
   call Write(Address_011111111111111,Data_In_11000000)
   call Write(Address_111111111111111,Data_In_10000000)

   call Read(Address_000000000000000,Data_00000000)
   call Read(Address_000000000000001,Data_00000001)
   call Read(Address_000000000000011,Data_00000011)
   call Read(Address_000000000000111,Data_00000111)
   call Read(Address_000000000001111,Data_00001111)
   call Read(Address_000000000011111,Data_00011111)
   call Read(Address_000000000111111,Data_00111111)
   call Read(Address_000000001111111,Data_01111111)
   call Read(Address_000000011111111,Data_11111111)
   call Read(Address_000000111111111,Data_11111110)
   call Read(Address_000001111111111,Data_11111100)
   call Read(Address_000011111111111,Data_11111000)
   call Read(Address_000111111111111,Data_11110000)
   call Read(Address_001111111111111,Data_11100000)
   call Read(Address_011111111111111,Data_11000000)
   call Read(Address_111111111111111,Data_10000000)

end unit

!The following tests are to find stuck-at zero faults on the three
!chip enabling pins.  The tri-state Data pins are checked for their
!high impedance state in the unit "Test Output Enable."


unit "Test Write Enable"                !Write_enable_bar must be low
   execute Set_Values                   !in order to write to device.
   call Write(Address_101010101010101,Data_In_10101010)
   execute Address_101010101010101
   execute Chip_select_low
   execute Data_In_11111111
   execute Chip_select_high
   call Read(Address_101010101010101,Data_10101010)
end unit

unit "Test Output Enable"
   execute Set_Values
   call Write(Address_111111111111111,Data_In_00000000)
   execute Chip_select_low
   execute Output_enable_high
   execute Write_enable_high
   execute Data_11111111
   execute Chip_select_high
   execute Chip_select_low
   execute Output_enable_low
   execute Data_00000000
   execute Chip_select_high
   execute Output_enable_high
end unit


unit "Test Chip Select"
   execute Set_Values
   call Write(Address_101010101010101,Data_In_00000000)
   execute Address_101010101010101
   execute Chip_select_high
   execute Write_enable_low
   execute Data_In_11111111
   execute Write_enable_high
   execute Chip_select_high
   call Read(Address_101010101010101,Data_00000000)
end unit

!
!  End of test

