This directory contains several sub-directories, each containing one
of the functional blocks of the Am29C01.  Each block includes a WAVES
test bench and vectors, and may be simulated independently.  The
"out.dat" file in each block is the simulator output from the WAVES
test bench.  

Below is a brief description of each subdirectory.  An order of
analysis is at the end of this file.

AM29C01
=======
a structural instantiation of the various subcomponents listed below.

ALU
===
This block houses the 2901 alu.  It performs 8 functions as specified
by the control signals.

DECODER 
======= 
This block decodes the control lines for the alu source and the alu
destination lines.  The alu function is decoded within the alu.

LATCH
=====
Latches data coming out of RAM ports A and B.

LIB
===
Contains types and function declarations for the Am29C01 model.

QREG
====
This block is the model of the Q register.  The Q register can be a
source register or a destination register.

RAM
===
This block models the RAM.  A RAM location can only be written to as
specified by the B address.

RMUX
====
The RMUX is a two input multiplexer.  One input is DATA and the other
is from the RAM.  It's output is selected by a control line and sent
to the ALU.

SHIFTER
=======
This block is used for both the RAM and Qreg shifter.  Control lines
I6, I7, and I8 control the mode of operation (shift up, shift down,
don't shift).

SMUX
====
The SMUX is a three input multiplexer.  It's output is connected to the
ALU.

TS_BUFFER
=========
This is a simple model of a tri-state buffer connected to the Y
output.  When the buffer is enabled, Y is passed through, when
disabled...Y is high Z.

YMUX
====
A 2-1 multiplexer.  Selects which output (RAMA or F) will be connected
to the input of the tri-state buffer.  This value is then passed to Y.


******************************************************************************

NOTE:  to simulate the top-level block (in the Am29C01 subdirectory),
       only the <block>.vhd file in each subdirectory needs to be
       analyzed.  Analyze the other WAVES files only if you want to
       simulate each block independently. 


Order of Analysis:

Filename                                logical library
--------------------                    --------------------
lib/types.vhd                           AM29C01_PACKAGE
lib/functions.vhd                       AM29C01_PACKAGE

alu/waves_device_alu.vhd                ALU
LOCAL/waves_frames.vhd                  ALU
STANDARD/waves_objects.vhd              ALU
LOCAL/waves_utilities.vhd               ALU
alu/wgenerator_alu.vhd                  ALU
alu/alu.vhd                             ALU
alu/alu_TB.vhd                          ALU

decoder/waves_device_decoder.vhd        DECODER
LOCAL/waves_frames.vhd                  DECODER
STANDARD/waves_objects.vhd              DECODER
LOCAL/waves_utilities.vhd               DECODER
decoder/wgenerator_decoder.vhd          DECODER
decoder/decoder.vhd                     DECODER
decoder/decoder_TB.vhd                  DECODER

latch/waves_device_latch.vhd            LATCH
LOCAL/waves_frames.vhd                  LATCH
STANDARD/waves_objects.vhd              LATCH
LOCAL/waves_utilities.vhd               LATCH
latch/wgenerator_latch.vhd              LATCH
latch/latch.vhd                         LATCH
latch/latch_TB.vhd                      LATCH

qreg/waves_device_qreg.vhd              QREG
qreg/LOCAL/waves_frames.vhd             QREG
STANDARD/waves_objects.vhd              QREG
LOCAL/waves_utilities.vhd               QREG
qreg/wgenerator_qreg.vhd                QREG
qreg/qreg.vhd                           QREG
qreg/qreg_TB.vhd                        QREG

ram/waves_device_ram.vhd                RAM
LOCAL/waves_frames.vhd                  RAM
STANDARD/waves_objects.vhd              RAM
LOCAL/waves_utilities.vhd               RAM
ram/wgenerator_ram.vhd                  RAM
ram/ram.vhd                             RAM
ram/ram_TB.vhd                          RAM

rmux/waves_device_rmux.vhd              RMUX
LOCAL/waves_frames.vhd                  RMUX
STANDARD/waves_objects.vhd              RMUX
LOCAL/waves_utilities.vhd               RMUX
rmux/wgenerator_rmux.vhd                RMUX
rmux/rmux.vhd                           RMUX
rmux/rmux_TB.vhd                        RMUX

shifter/waves_device_shifter.vhd        SHIFTER
LOCAL/waves_frames.vhd                  SHIFTER
STANDARD/waves_objects.vhd              SHIFTER
LOCAL/waves_utilities.vhd               SHIFTER
shifter/wgenerator_shifter.vhd          SHIFTER
shifter/shifter.vhd                     SHIFTER
shifter/shifter_TB.vhd                  SHIFTER

smux/waves_device_smux.vhd              SMUX
LOCAL/waves_frames.vhd                  SMUX
STANDARD/waves_objects.vhd              SMUX
LOCAL/waves_utilities.vhd               SMUX
smux/wgenerator_smux.vhd                SMUX
smux/smux.vhd                           SMUX
smux/smux_TB.vhd                        SMUX

ts_buffer/waves_device_ts_buffer.vhd    TS_BUFFER
LOCAL/waves_frames.vhd                  TS_BUFFER
STANDARD/waves_objects.vhd              TS_BUFFER
LOCAL/waves_utilities.vhd               TS_BUFFER
ts_buffer/wgenerator_ts_buffer.vhd      TS_BUFFER
ts_buffer/ts_buffer.vhd                 TS_BUFFER
ts_buffer/ts_buffer_TB.vhd              TS_BUFFER

ymux/waves_device_ymux.vhd              YMUX
LOCAL/waves_frames.vhd                  YMUX
STANDARD/waves_objects.vhd              YMUX
LOCAL/waves_utilities.vhd               YMUX
ymux/wgenerator_ymux.vhd                YMUX
ymux/ymux.vhd                           YMUX
ymux/ymux_TB.vhd                        YMUX

Am29C01/waves_device_Am29C01.vhd        AM29C01
LOCAL/waves_frames.vhd                  AM29C01
STANDARD/waves_objects.vhd              AM29C01
LOCAL/waves_utilities.vhd               AM29C01
Am29C01/wgenerator_Am29C01.vhd          AM29C01
Am29C01/Am29C01.vhd                     AM29C01
Am29C01/Am29C01_TB.vhd                  AM29C01

