\subsubsection{Description} One can create a generator and instantiate it in another generator.\\ \indent To do that, the name given when instantiating the generator must have the form : "file\_name.class\_name".\\ \indent Note that if the two generators are not in the same directory, the directory of the generator to be instantiated has to be added in the CRL\_CATA\_LIB environment variable. \subsubsection{Example} \begin{itemize} \item File describing the generator which is going to instanciated later : \end{itemize} \begin{verbatim} #!/usr/bin/python from stratus import * class class_function ( Model ) : def Interface ( self ) : self.n = self._param['nbit'] self._A = LogicIn ( "a", self.n ) self._B = LogicIn ( "b", self.n ) self._C = LogicIn ( "c", self.n ) self._S = LogicOut ( "s", self.n ) self._vdd = VddIn ( "vdd" ) self._vss = VssIn ( "vss" ) def Netlist ( self ) : self._S <= ( self._A | self._B ) & self._C \end{verbatim} \begin{itemize} \item File instanciating the generator : \end{itemize} \begin{verbatim} #!/usr/bin/python from stratus import * class mycell ( Model ) : def Interface ( self ) : self._in1 = LogicIn ( "in1", 4 ) self._in2 = LogicIn ( "in2", 4 ) self._in3 = LogicIn ( "in3", 4 ) self._out = LogicOut ( "out", 4 ) self._vdd = VddIn ( "vdd" ) self._vss = VssIn ( "vss" ) def Netlist ( self ) : temp = Signal ( "temp", 4 ) Inst ( "myfunc.class_function" , param = { 'nbit' : 4 } , map = { 'a' : self._in1 , 'b' : self._in2 , 'c' : self._in3 , 's' : temp , 'vdd' : self._vdd , 'vss' : self._vss } ) self._out <= ~temp \end{verbatim} \subsubsection{Errors} Some errors may occur : \begin{itemize} \item \verb-[Stratus ERROR] Inst : the model ... does not exist.-\\\verb-Check CRL_CATA_LIB.-\\One has to check the environment variable because the model is not found. \end{itemize} \input{see_also}