coriolis/stratus1/doc/stratus/man_arithmetic.tex

78 lines
2.4 KiB
TeX

\subsubsection{Description}
Most common arithmetic operators can be instantiated without the \verb-Inst- constructor.
\subsubsection{List}
Arithmetical operators are listed below :
\begin{itemize}
\item \verb-Addition- : \verb-q <= i0 + i1-
\item \verb-Substraction- : \verb-q <= i0- - \verb-i1-
\item \verb-Multiplication- : \verb-q <= i0 * i1-
\item \verb-Division- : \verb-q <= i0 / i1-
\end{itemize}
\subsubsection{Generators to instantiate}
One can choose the generator to be used. Some methods are applied to the cell and set the generator used when using overloard.
\indent Methods are :
\begin{itemize}
\item \verb-SetAdd- (for addition and substraction)
\item \verb-SetMult-
\item \verb-SetDiv-
\end{itemize}
\indent The generators used by default are :
\begin{itemize}
\item \verb-Addition- : Slansky adder
\item \verb-Substraction- : Slansky adder + inversor + cin = '1'
\item \verb-Multiplication- : CA2 multiplier (signed, modified booth/Wallace tree)
\item \verb-Division- : not available yet
\end{itemize}
\subsubsection{Example}
\begin{verbatim}
class essai ( Model ) :
def Interface ( self ) :
self.A = SignalIn ( "a", 4 )
self.B = SignalIn ( "b", 4 )
self.S = SignalOut ( "s", 4 )
self.T = SignalOut ( "t", 8 )
self.vdd = VddIn ( "vdd" )
self.vss = VssIn ( "vss" )
def Netlist ( self ) :
self.S <= self.A + self.B
self.T <= self.A * self.B
\end{verbatim}
\subsubsection{Errors}
Some errors may occur :
\begin{itemize}
\item \verb-[Stratus ERROR] + : the nets must have the same lenght.-\\When one uses arithmetic expressions, one has to check that the sizes of both nets are equivalent.
\item \verb-[Stratus ERROR] : there is no alim.-\\The cell being created does not have the alimentation nets. The instanciation is impossible.
\end{itemize}
\begin{htmlonly}
\subsubsection{See Also}
\hyperref[ref]{\emph{Introduction}}{}{Introduction}{secintroduction}
\hyperref[ref]{\emph{Netlist}}{}{Netlist}{secnetlist}
\hyperref[ref]{\emph{Instanciation of a multiplexor}}{}{Multiplexor}{secmux}
\hyperref[ref]{\emph{Instanciation of a shifter}}{}{Shifter}{secshift}
\hyperref[ref]{\emph{Instanciation of a register}}{}{Reg}{secreg}
\hyperref[ref]{\emph{Instanciation of constants}}{}{Constant}{secconstant}
\hyperref[ref]{\emph{Boolean operations}}{}{Boolean}{secbool}
\hyperref[ref]{\emph{Comparison operations}}{}{Comparison}{seccomp}
\end{htmlonly}