 \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}
