The {\bf LTEST} system has been designed as a tool to help students in the {\em Digital
Testing and Testable Design} course. It's objectives are to introduce the
concepts of simulation and test generation with easily readable and understandable
software. The student can achieve a better understanding of the course material
with this system as it combines theoretical explanations along with software
used in the field of testing.

The system is a combination of three major building blocks, the circuit parser,
the test generator and the simulator. The circuit parser is responsible for
reading the circuit description and initiating most of the global data
structures. The test generator handles all fault collapsing and test generation
assignments. The simulator is responsible for both good circuit simulation and
fault simulation. All three blocks are further broken down into submodules to
achieve a highly modular design in which every module can be taken out and
replaced without disrupting the whole system.

Some basic design policies and the documentation format is presented here to
help the student understand the system better.

Procedures and functions communicate by global variables. There are three types
of global variable files, "h", "g" and "e". The "h" file contains all constant
and type definitions, the "g" file contains the structure declarations and the
"e" file contains external declarations for the structures declared in the "g"
file. The global variables shared by all modules are defined and declared in
the {\em global} group ({\em global.h, global.g, global.e}). Other groups 
include the {\em d\_alg}
group (D algorithm variables), {\em fc} group (fault collapsing variables) and 
{\em sim} group (simulation variables).

When describing the global variables, besides their purpose and structure, all procedures which read the variable and all procedures which 
assign values to the variable are listed. When describing function and procedures, all variables read by and all variables written to by the procedure are listed.
Also all functions called by and all functions calling the procedure are documented in the appendices.
Thus, a complete cross reference of function-variable and function-function
interaction is provided. 

Every function is essentially an implementation of an algorithm. The function
description is an explanation of its purpose and the step by step 
description of the algorithm it implements. Every step is assigned a number.
The algorithm also appears in the software and the code follows the algorithm
to the letter. The numbers representing the algorithm steps appear before each
line or group of lines implementing that particular step. 

This document proceeds as follows. In Section \ref{var} all global variables
are described. Section \ref{parser} describes the circuit parser. Section
\ref{testgen} describes the test generation routines, Section \ref{sim}
describes the good circuit simulator ans Section \ref{fsim} describes the fault
simulator. Section \ref{man} is the user manual. Appendix 
\ref{appgram} is
the circuit input grammar. Appendix \ref{appff} is the {\em function-function}
and {\em function-variable}
reference. For each function, the file it is in, all the functions it
calls, all the function that call it, all the variables it reads and all the
variables it assigns values to are listed. 
Appendix
\ref{appvf} is the {\em variable-function} reference. For each global variable
the file it is declared in, all functions reading the variable 
and all functions assigning values to the variable are listed.

