!!!!    6    0    1  991697858  Vd998                                         

!  $Log: <@(#) A.10.00  New library.> $

!-----------------------------------------------------------------------
!  Copyright (c) Hewlett-Packard Co. 1996
!
!  All Rights Reserved.  Reproduction, adaptation, or translation
!  without prior written permission is prohibited, except as allowed
!  under the copyright laws.
!
!-----------------------------------------------------------------------
!
! Device           : 74f777
! Function         : Triple bidirectional latched bus transceiver
! revision         : B.01.00
! safeguard        : hi_oc_fttl
! Modifications    : Modified for AwareTest xi
!
  warning           "This library has not been verified with hardware."

! Manufacturer  : PHILIPS
! Package       : 20-Pin DIP
! Test Platform : HP3070
!
!-----------------------------------------------------------------------
!
! Additional Information.
!
!       1.     Chip Marking: 74F777N
!                            FWR0583
!                            9609nA
!
!       2.     Ordering Information:
!                       Part Number         Package
!
!                       N74F777F            20-Pin DIP
!                       N74F777A            20-Pin PLCC
!
!------------------------------------------------------------------------------

sequential

vector cycle 500n
receive delay 400n

assign   VCC            to pins  20, 19
assign   GND            to pins  10, 14, 18

assign   LEbar_I        to pins   3,  2,  1
assign   OEA_I          to pins   8,  6,  4
assign   OEBbar_I       to pins  11, 12, 13

assign   DataA_B        to pins   9,  7,  5
assign   D0a_b          to pins   5            !AT Added for minimum pin test.
assign   D1a_b          to pins   7            !AT Added for minimum pin test.
assign   D2a_b          to pins   9            !AT Added for minimum pin test.

assign   DataB_B        to pins  15, 16, 17
assign   D0b_b          to pins  17            !AT Added for minimum pin test.
assign   D1b_b          to pins  16            !AT Added for minimum pin test.
assign   D2b_b          to pins  15            !AT Added for minimum pin test.

assign   Disable1_pins  to pins   4,  6,  8
assign   Disable2_pins  to pins  11, 12, 13

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

family   TTL

power    VCC, GND

inputs   LEbar_I, OEA_I, OEBbar_I

bidirectional  DataA_B, DataB_B
bidirectional  D0a_b, D1a_b, D2a_b       !AT Added for minimum pin test.
bidirectional  D0b_b, D1b_b, D2b_b       !AT Added for minimum pin test.

set load on groups DataA_B, DataB_B to pull up

disable  DataA_B                with  Disable1_pins to "000"
disable  DataB_B                with  Disable2_pins to "111"

!
!-----------------------------------------------------------------------
!

vector  Initialize_Inputs
   receive  DataA_B
   receive  DataB_B
   set   DataA_B        to "xxx"
   set   DataB_B        to "xxx"
   set   LEbar_I        to "111"
   set   OEA_I          to "000"
   set   OEBbar_I       to "111"
end vector

vector  Keep
   drive DataA_B
   receive  DataB_B
   set   DataA_B        to "kkk"
   set   DataB_B        to "xxx"

   set   LEbar_I        to "kkk"
   set   OEA_I          to "kkk"
   set   OEBbar_I       to "kkk"
end vector

vector  Keep_receivA
   receive  DataA_B
   drive DataB_B
   set   DataA_B        to "xxx"
   set   DataB_B        to "kkk"

   set   LEbar_I        to "kkk"
   set   OEA_I          to "kkk"
   set   OEBbar_I       to "kkk"
end vector

vector  LEbar_I_000
   initialize           to Keep
   set   LEbar_I        to "000"
end vector

vector  LEbar_I_010
   initialize           to Keep
   set   LEbar_I        to "010"
end vector

vector  LEbar_I_101
   initialize           to Keep
   set   LEbar_I        to "101"
end vector

vector  LEbar_I_111
   initialize           to Keep
   set   LEbar_I        to "111"
end vector

vector  LEbar_I_000_B
   initialize           to Keep_receivA
   set   LEbar_I        to "000"
end vector

vector  LEbar_I_111_B
   initialize           to Keep_receivA
   set   LEbar_I        to "111"
end vector

vector  OEA_I_000
   initialize           to Keep_receivA
   set   OEA_I          to "000"
end vector

vector  OEA_I_010
   initialize           to Keep_receivA
   set   OEA_I          to "010"
end vector

vector  OEA_I_101
   initialize           to Keep_receivA
   set   OEA_I          to "101"
end vector

vector  OEA_I_111
   initialize           to Keep_receivA
   set   OEA_I          to "111"
end vector

vector  OEBbar_I_000
   initialize           to Keep
   set   OEBbar_I       to "000"
end vector

vector  OEBbar_I_010
   initialize           to Keep
   set   OEBbar_I       to "010"
end vector

vector  OEBbar_I_101
   initialize           to Keep
   set   OEBbar_I       to "101"
end vector

vector  OEBbar_I_111
   initialize           to Keep
   set   OEBbar_I       to "111"
end vector

vector  DataA_B_000_D
   initialize           to Keep
   drive DataA_B
   set   DataA_B        to "000"
end vector

vector  DataA_B_010_D
   initialize           to Keep
   drive DataA_B
   set   DataA_B        to "010"
end vector

vector  DataA_B_101_D
   initialize           to Keep
   drive DataA_B
   set   DataA_B        to "101"
end vector

vector  DataA_B_111_D
   initialize           to Keep
   drive DataA_B
   set   DataA_B        to "111"
end vector

vector  DataB_B_000_D
   initialize           to Keep_receivA
   drive DataB_B
   set   DataB_B        to "000"
end vector

vector  DataB_B_010_D
   initialize           to Keep_receivA
   drive DataB_B
   set   DataB_B        to "010"
end vector

vector  DataB_B_101_D
   initialize           to Keep_receivA
   drive DataB_B
   set   DataB_B        to "101"
end vector

vector  DataA_B_010_R
   initialize           to Keep_receivA
   receive  DataA_B
   set   DataA_B        to "010"
end vector

vector  DataA_B_101_R
   initialize           to Keep_receivA
   receive  DataA_B
   set   DataA_B        to "101"
end vector

vector  DataB_B_000_R
   initialize           to Keep_receivA
   receive  DataA_B
   set   DataB_B        to "000"
end vector

vector  DataB_B_010_R
   initialize           to Keep
   receive  DataB_B
   set   DataB_B        to "010"
end vector

vector  DataB_B_101_R
   initialize           to Keep
   receive  DataB_B
   set   DataB_B        to "101"
end vector

vector  DataB_B_111_R
   initialize           to Keep
   receive  DataB_B
   set   DataB_B        to "111"
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_Inputs_D0
   receive  D0a_b
   receive  D0b_b
   set   D0a_b          to "x"
   set   D0b_b          to "x"
   set   LEbar_I        to "111"
   set   OEA_I          to "000"
   set   OEBbar_I       to "111"
end vector

vector  Initialize_Inputs_D1
   receive  D1a_b
   receive  D1b_b
   set   D1a_b          to "x"
   set   D1b_b          to "x"
   set   LEbar_I        to "111"
   set   OEA_I          to "000"
   set   OEBbar_I       to "111"
end vector

vector  Initialize_Inputs_D2
   receive  D2a_b
   receive  D2b_b
   set   D2a_b          to "x"
   set   D2b_b          to "x"
   set   LEbar_I        to "111"
   set   OEA_I          to "000"
   set   OEBbar_I       to "111"
end vector

vector  Keep_D0
   drive D0a_b
   receive  D0b_b
   set   D0a_b          to "k"
   set   D0b_b          to "x"

   set   LEbar_I        to "kkk"
   set   OEA_I          to "kkk"
   set   OEBbar_I       to "kkk"
end vector

vector  Keep_D1
   drive D1a_b
   receive  D1b_b
   set   D1a_b          to "k"
   set   D1b_b          to "x"

   set   LEbar_I        to "kkk"
   set   OEA_I          to "kkk"
   set   OEBbar_I       to "kkk"
end vector

vector  Keep_D2
   drive D2a_b
   receive  D2b_b
   set   D2a_b          to "k"
   set   D2b_b          to "x"

   set   LEbar_I        to "kkk"
   set   OEA_I          to "kkk"
   set   OEBbar_I       to "kkk"
end vector

vector  Keep_receiveA_D0
   receive  D0a_b
   drive D0b_b
   set   D0a_b          to "x"
   set   D0b_b          to "k"

   set   LEbar_I        to "kkk"
   set   OEA_I          to "kkk"
   set   OEBbar_I       to "kkk"
end vector

vector  Keep_receiveA_D1
   receive  D1a_b
   drive D1b_b
   set   D1a_b          to "x"
   set   D1b_b          to "k"

   set   LEbar_I        to "kkk"
   set   OEA_I          to "kkk"
   set   OEBbar_I       to "kkk"
end vector

vector  Keep_receiveA_D2
   receive  D2a_b
   drive D2b_b
   set   D2a_b          to "x"
   set   D2b_b          to "k"

   set   LEbar_I        to "kkk"
   set   OEA_I          to "kkk"
   set   OEBbar_I       to "kkk"
end vector

vector  LEbar_I_000_D0
   initialize           to Keep_D0
   set   LEbar_I        to "000"
end vector

vector  LEbar_I_111_D0
   initialize           to Keep_D0
   set   LEbar_I        to "111"
end vector

vector  LEbar_I_000_D1
   initialize           to Keep_D1
   set   LEbar_I        to "000"
end vector

vector  LEbar_I_111_D1
   initialize           to Keep_D1
   set   LEbar_I        to "111"
end vector

vector  LEbar_I_000_D2
   initialize           to Keep_D2
   set   LEbar_I        to "000"
end vector

vector  LEbar_I_111_D2
   initialize           to Keep_D2
   set   LEbar_I        to "111"
end vector

vector  LEbar_I_000_B_D0
   initialize           to Keep_receiveA_D0
   set   LEbar_I        to "000"
end vector

vector  LEbar_I_111_B_D0
   initialize           to Keep_receiveA_D0
   set   LEbar_I        to "111"
end vector

vector  LEbar_I_000_B_D1
   initialize           to Keep_receiveA_D1
   set   LEbar_I        to "000"
end vector

vector  LEbar_I_111_B_D1
   initialize           to Keep_receiveA_D1
   set   LEbar_I        to "111"
end vector

vector  LEbar_I_000_B_D2
   initialize           to Keep_receiveA_D2
   set   LEbar_I        to "000"
end vector

vector  LEbar_I_111_B_D2
   initialize           to Keep_receiveA_D2
   set   LEbar_I        to "111"
end vector

vector  OEA_I_000_D0
   initialize           to Keep_receiveA_D0
   set   OEA_I          to "000"
end vector

vector  OEA_I_111_D0
   initialize           to Keep_receiveA_D0
   set   OEA_I          to "111"
end vector

vector  OEA_I_000_D1
   initialize           to Keep_receiveA_D1
   set   OEA_I          to "000"
end vector

vector  OEA_I_111_D1
   initialize           to Keep_receiveA_D1
   set   OEA_I          to "111"
end vector

vector  OEA_I_000_D2
   initialize           to Keep_receiveA_D2
   set   OEA_I          to "000"
end vector

vector  OEA_I_111_D2
   initialize           to Keep_receiveA_D2
   set   OEA_I          to "111"
end vector

vector  OEBbar_I_000_D0
   initialize           to Keep_D0
   set   OEBbar_I       to "000"
end vector

vector  OEBbar_I_111_D0
   initialize           to Keep_D0
   set   OEBbar_I       to "111"
end vector

vector  OEBbar_I_000_D1
   initialize           to Keep_D1
   set   OEBbar_I       to "000"
end vector

vector  OEBbar_I_111_D1
   initialize           to Keep_D1
   set   OEBbar_I       to "111"
end vector

vector  OEBbar_I_000_D2
   initialize           to Keep_D2
   set   OEBbar_I       to "000"
end vector

vector  OEBbar_I_111_D2
   initialize           to Keep_D2
   set   OEBbar_I       to "111"
end vector

vector  D0a_b_0_D
   initialize           to Keep_D0
   drive D0a_b
   set   D0a_b          to "0"
end vector

vector  D0a_b_1_D
   initialize           to Keep_D0
   drive D0a_b
   set   D0a_b          to "1"
end vector

vector  D1a_b_0_D
   initialize           to Keep_D1
   drive D1a_b
   set   D1a_b          to "0"
end vector

vector  D1a_b_1_D
   initialize           to Keep_D1
   drive D1a_b
   set   D1a_b          to "1"
end vector

vector  D2a_b_0_D
   initialize           to Keep_D2
   drive D2a_b
   set   D2a_b          to "0"
end vector

vector  D2a_b_1_D
   initialize           to Keep_D2
   drive D2a_b
   set   D2a_b          to "1"
end vector

vector  D0b_b_0_D
   initialize           to Keep_receiveA_D0
   drive D0b_b
   set   D0b_b          to "0"
end vector

vector  D0b_b_1_D
   initialize           to Keep_receiveA_D0
   drive D0b_b
   set   D0b_b          to "1"
end vector

vector  D1b_b_0_D
   initialize           to Keep_receiveA_D1
   drive D1b_b
   set   D1b_b          to "0"
end vector

vector  D1b_b_1_D
   initialize           to Keep_receiveA_D1
   drive D1b_b
   set   D1b_b          to "1"
end vector

vector  D2b_b_0_D
   initialize           to Keep_receiveA_D2
   drive D2b_b
   set   D2b_b          to "0"
end vector

vector  D2b_b_1_D
   initialize           to Keep_receiveA_D2
   drive D2b_b
   set   D2b_b          to "1"
end vector

vector  D0a_b_0_R
   initialize           to Keep_receiveA_D0
   receive  D0a_b
   set   D0a_b          to "0"
end vector

vector  D0a_b_1_R
   initialize           to Keep_receiveA_D0
   receive  D0a_b
   set   D0a_b          to "1"
end vector

vector  D1a_b_0_R
   initialize           to Keep_receiveA_D1
   receive  D1a_b
   set   D1a_b          to "0"
end vector

vector  D1a_b_1_R
   initialize           to Keep_receiveA_D1
   receive  D1a_b
   set   D1a_b          to "1"
end vector

vector  D2a_b_0_R
   initialize           to Keep_receiveA_D2
   receive  D2a_b
   set   D2a_b          to "0"
end vector

vector  D2a_b_1_R
   initialize           to Keep_receiveA_D2
   receive  D2a_b
   set   D2a_b          to "1"
end vector

vector  D0b_b_0_R
   initialize           to Keep_D0
   receive  D0b_b
   set   D0b_b          to "0"
end vector

vector  D0b_b_1_R
   initialize           to Keep_D0
   receive  D0b_b
   set   D0b_b          to "1"
end vector

vector  D1b_b_0_R
   initialize           to Keep_D1
   receive  D1b_b
   set   D1b_b          to "0"
end vector

vector  D1b_b_1_R
   initialize           to Keep_D1
   receive  D1b_b
   set   D1b_b          to "1"
end vector

vector  D2b_b_0_R
   initialize           to Keep_D2
   receive  D2b_b
   set   D2b_b          to "0"
end vector

vector  D2b_b_1_R
   initialize           to Keep_D2
   receive  D2b_b
   set   D2b_b          to "1"
end vector

!
!-----------------------------------------------------------------------
!

!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 D0a_b to D0b_b Test"
   execute  Initialize_inputs_D0
   execute  D0a_b_0_D
   execute  LEbar_I_000_D0
   execute  LEbar_I_111_D0
   execute  OEBbar_I_000_D0
   execute  D0b_b_0_R
   execute  OEBbar_I_111_D0

   execute  D0a_b_1_D
   execute  LEbar_I_000_D0
   execute  LEbar_I_111_D0
   execute  OEBbar_I_000_D0
   execute  D0b_b_1_R
   execute  OEBbar_I_111_D0
end unit

unit "awaretest D1a_b to D1b_b Test"
   execute  Initialize_inputs_D1
   execute  D1a_b_0_D
   execute  LEbar_I_000_D1
   execute  LEbar_I_111_D1
   execute  OEBbar_I_000_D1
   execute  D1b_b_0_R
   execute  OEBbar_I_111_D1

   execute  D1a_b_1_D
   execute  LEbar_I_000_D1
   execute  LEbar_I_111_D1
   execute  OEBbar_I_000_D1
   execute  D1b_b_1_R
   execute  OEBbar_I_111_D1
end unit

unit "awaretest D2a_b to D2b_b Test"
   execute  Initialize_inputs_D2
   execute  D2a_b_0_D
   execute  LEbar_I_000_D2
   execute  LEbar_I_111_D2
   execute  OEBbar_I_000_D2
   execute  D2b_b_0_R
   execute  OEBbar_I_111_D2

   execute  D2a_b_1_D
   execute  LEbar_I_000_D2
   execute  LEbar_I_111_D2
   execute  OEBbar_I_000_D2
   execute  D2b_b_1_R
   execute  OEBbar_I_111_D2
end unit

unit "awaretest D0b_b to D0a_b Test"
   execute  Initialize_inputs_D0
   execute  D0b_b_0_D
   execute  LEbar_I_000_B_D0
   execute  LEbar_I_111_B_D0
   execute  OEA_I_111_D0
   execute  D0a_b_0_R
   execute  OEA_I_000_D0

   execute  D0b_b_1_D
   execute  LEbar_I_000_B_D0
   execute  LEbar_I_111_B_D0
   execute  OEA_I_111_D0
   execute  D0a_b_1_R
   execute  OEA_I_000_D0
end unit

unit "awaretest D1b_b to D1a_b Test"
   execute  Initialize_inputs_D1
   execute  D1b_b_0_D
   execute  LEbar_I_000_B_D1
   execute  LEbar_I_111_B_D1
   execute  OEA_I_111_D1
   execute  D1a_b_0_R
   execute  OEA_I_000_D1

   execute  D1b_b_1_D
   execute  LEbar_I_000_B_D1
   execute  LEbar_I_111_B_D1
   execute  OEA_I_111_D1
   execute  D1a_b_1_R
   execute  OEA_I_000_D1
end unit

unit "awaretest D2b_b to D2a_b Test"
   execute  Initialize_inputs_D2
   execute  D2b_b_0_D
   execute  LEbar_I_000_B_D2
   execute  LEbar_I_111_B_D2
   execute  OEA_I_111_D2
   execute  D2a_b_0_R
   execute  OEA_I_000_D2

   execute  D2b_b_1_D
   execute  LEbar_I_000_B_D2
   execute  LEbar_I_111_B_D2
   execute  OEA_I_111_D2
   execute  D2a_b_1_R
   execute  OEA_I_000_D2
end unit

!*********************************************************************
!TO TEST DATA LINES
!
! 1. Drive A0-A2 lines
! 2. Enable latch inputs
! 3. Enable outputs B0-B2 and check them.
! 4. Drive B0-B2 lines
! 5. Enable latch inputs
! 6. Enable outputs A0-A2 and check them.
!********************************************************************
unit  "Test1 : Data lines"
   execute  Initialize_inputs
   execute  DataA_B_101_D
   execute  LEbar_I_000
   execute  LEbar_I_111
   execute  OEBbar_I_000
   execute  DataB_B_101_R
   execute  OEBbar_I_111

   execute  DataA_B_010_D
   execute  LEbar_I_000
   execute  LEbar_I_111
   execute  OEBbar_I_000
   execute  DataB_B_010_R
   execute  OEBbar_I_111

   execute  DataB_B_101_D
   execute  LEbar_I_000_B
   execute  LEbar_I_111_B
   execute  OEA_I_111
   execute  DataA_B_101_R
   execute  OEA_I_000

   execute  DataB_B_010_D
   execute  LEbar_I_000_B
   execute  LEbar_I_111_B
   execute  OEA_I_111
   execute  DataA_B_010_R
   execute  OEA_I_000
end unit
!*****************************************************************************
! TO TEST OUTPUT ENABLE LINES OF A0-A2, B0-B2
!
! 1. Drive A0-A2 to low and lacth them.
! 2. Enable each B0-B2 lines and check them for low.
! 3. Drive B0-B2 to low and lacth them.
! 4. Enable each A0-A2 lines and check them for low.
!*****************************************************************************
unit  "Test2 : OE lines"
   execute  Initialize_inputs
   execute  DataA_B_000_D
   execute  LEbar_I_000
   execute  LEbar_I_111
   execute  OEBbar_I_101
   execute  DataB_B_101_R
   execute  OEBbar_I_111

   execute  DataA_B_000_D
   execute  LEbar_I_000
   execute  LEbar_I_111
   execute  OEBbar_I_010
   execute  DataB_B_010_R
   execute  OEBbar_I_111

   execute  DataB_B_000_D
   execute  LEbar_I_000_B
   execute  LEbar_I_111_B
   execute  OEA_I_010
   execute  DataA_B_101_R
   execute  OEA_I_000

   execute  DataB_B_000_D
   execute  LEbar_I_000_B
   execute  LEbar_I_111_B
   execute  OEA_I_101
   execute  DataA_B_010_R
   execute  OEA_I_000
end unit
!******************************************************************************
! TO TEST LE* LINES
!
! 1. Drive A0-A2 lines low & check them on B0-B2 lines.
! 2. Drive each A0-A2 line & lacth them.
! 3. Check on B0-B2 lines respectively.
!******************************************************************************
unit  "Test3 : LE lines"
   execute  Initialize_inputs
   execute  DataA_B_000_D
   execute  LEbar_I_000
   execute  LEbar_I_111
   execute  OEBbar_I_000
   execute  DataB_B_000_R
   execute  OEBbar_I_111

   execute  DataA_B_111_D
   execute  LEbar_I_101
   execute  LEbar_I_111
   execute  OEBbar_I_010
   execute  DataB_B_010_R
   execute  OEBbar_I_111

   execute  DataA_B_101_D
   execute  LEbar_I_010
   execute  LEbar_I_111
   execute  OEBbar_I_000
   execute  DataB_B_111_R
   execute  OEBbar_I_111

end unit

!
!  End of test
!
