\newpage
\section{The WOL Decoder Generator} \index{decoder generator}

  A WOLCOMP module exists for generating decoders.  The user must specify
the number of decoded outputs (which must be even), the CIF layer they should
be on, and the pitch between them (minimum $36\lambda$).  The decoder
generator is accessed by ``perm''ing /LIB/WOLLIB/DECODER/DECODER, and
including the following import text in the WOLCOMP program composing
the user's chip:

{\tt
\begin{verbatim}
import 
$search '/LIB/WOLLIB/WOLCOMP/WOLCOMP'$     wolcomplib,
$search '/LIB/WOLLIB/WOLCOMP/WOLCOMPII'$ wolcompII,
$search '/LIB/WOLLIB/DECODER/DECODER'$ decoder;
\end{verbatim}}

The cell library of decoder cells is loaded by a call to
\begin{center}
  {\bf PROCEDURE load\_decodercells;  }
\end{center}

The actual decoder is generated by
\begin{center}
  {\bf
  PROCEDURE make\_decoder }(name : strg; rows, a, b : integer; ciflayer : strg);
\end{center}
where {\tt name} is the name of the cell that is to be the decoder,
{\tt a} and {\tt b} encode the pitch of the decoder outputs (i.e. 
outputs alternate between being {\tt a} apart and {\tt b} apart),
and {\tt ciflayer} is the layer of the outputs (valid choices are
PG, MF, and MS, for poly, metal1, and metal2).

A \putindex{multiplexer generator} is also available, with similar syntax:
\begin{center}
{\bf
  PROCEDURE make\_mux} (name : strg; rows, a, b : integer; ciflayer : strg);
\end{center}

