128 lines
4.5 KiB
TeX
128 lines
4.5 KiB
TeX
\subsubsection{Name}
|
|
|
|
Stratus -- Procedural design language based upon \emph{Python}
|
|
|
|
\subsubsection{Description}
|
|
|
|
\emph{Stratus} is a set of \emph{Python} methods/functions dedicated to procedural generation purposes. From a user point of view, \emph{Stratus} is a circuit's description language that allows \emph{Python} programming flow control, variable use, and specialized functions in order to handle vlsi objects.\\
|
|
|
|
\indent Based upon the \emph{Hurricane} data structures, the \emph{Stratus} language gives the user the ability to describe netlist and layout views.
|
|
|
|
\subsubsection{Creation of a cell}
|
|
|
|
A cell is a hierachical structural description of a circuit in terms of ports (I/Os), signals (nets) and instances.\\
|
|
|
|
\indent The creation of a cell is done by creating a new class, derivating for class \verb-Model-, with different methods :
|
|
|
|
\begin{itemize}
|
|
\item Method \verb-Interface- : Description of the external ports of the cell :
|
|
\begin{itemize}
|
|
\item SignalIn, SignalOut, ...
|
|
\end{itemize}
|
|
\item Method \verb-Netlist- : Description of the netlist of the cell :
|
|
\begin{itemize}
|
|
\item Inst, Signal
|
|
\end{itemize}
|
|
\item Method \verb-Layout- : Description of the layout of the cell :
|
|
\begin{itemize}
|
|
\item Place, PlaceTop, PlaceBottom, PlaceRight, PlaceLeft ...
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
\indent Two methods are provided :
|
|
\begin{itemize}
|
|
\item Method \verb-View- : Opens/Refreshes the editor in order to see the created layout
|
|
\item Method \verb-Save- : Saves the created cell
|
|
\begin{itemize}
|
|
\item no argument : creation of a netlist file (format file thanks to CRL\_OUT\_LO)
|
|
\item PHYSICAL : creation of a netlist file AND a layout file (format files thanks to CRL\_OUT\_LO and CRL\_OUT\_PH)
|
|
\item STRATUS : creation of a python/stratus file
|
|
\begin{itemize}
|
|
\item FileName : optionnal argument when using Save(STRATUS) in order to choose the name of the file to be generated
|
|
\item Be careful : if one wants to create a stratus file AND a netlist, always use Save(STRATUS) before Save() !
|
|
\end{itemize}
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
\subsubsection{Syntax}
|
|
|
|
A \emph{Stratus} file must have a .py extension and must begin as follow :
|
|
\begin{verbatim}
|
|
#!/usr/bin/env python
|
|
|
|
from stratus import *
|
|
\end{verbatim}
|
|
|
|
\indent The creation of a class is done as follow :
|
|
\begin{verbatim}
|
|
class myClass ( Model ) :
|
|
...
|
|
|
|
exemple = myClass ( name, param )
|
|
\end{verbatim}
|
|
|
|
\indent In order to execute a \emph{Stratus} file (named \verb-file- for example), one has two choices :
|
|
\begin{verbatim}
|
|
python file.py
|
|
\end{verbatim}
|
|
\indent Or :
|
|
\begin{verbatim}
|
|
chmod u+x file.py
|
|
./file.py
|
|
\end{verbatim}
|
|
|
|
\indent The names used in \emph{Stratus}, as arguments to \emph{Stratus} functions, should be alphanumerical, including the underscore. The arguments of \emph{Stratus} are case sensitive, so \textsc{VDD} is not equivalent to \textsc{vdd}.\\
|
|
|
|
\indent Vectorized connectors or signal can be used using the \textsc{[n:m]} construct.\\
|
|
|
|
\subsubsection{Syntax highlighting}
|
|
|
|
When using vi, it's possible to have the right syntax highlighting when using vi :
|
|
|
|
\begin{itemize}
|
|
\item Commands to do when you want to change once the coloration of your file :
|
|
\end{itemize}
|
|
\begin{small}
|
|
\begin{verbatim}
|
|
:syntax off
|
|
:source /asim/coriolis/share/etc/stratus.vim
|
|
\end{verbatim}
|
|
\end{small}
|
|
\begin{itemize}
|
|
\item Modification of your .vimrc in order to have the syntax highlighting each time you open a file :
|
|
\end{itemize}
|
|
\begin{small}
|
|
\begin{verbatim}
|
|
syntax off
|
|
autocmd BufRead,BufNewfile *.py so /asim/coriolis/share/etc/stratus.vim
|
|
syntax on
|
|
\end{verbatim}
|
|
\end{small}
|
|
|
|
\subsubsection{Environment variables}
|
|
|
|
\begin{itemize}
|
|
\item CRL\_IN\_LO, default value : \verb-def-
|
|
\item CRL\_OUT\_LO, default value : \verb-def-
|
|
\item CRL\_IN\_PH, default value : \verb-def-
|
|
\item CRL\_OUT\_PH, default value : \verb-def-
|
|
\item CRL\_CATA\_LIB, default value : \verb-.-
|
|
\item CRL\_CATAL\_NAME, default value : \verb-CATAL-
|
|
\end{itemize}
|
|
|
|
\begin{htmlonly}
|
|
|
|
\subsubsection{Example}
|
|
|
|
You can see a concrete example at : \hyperref[ref]{\emph{Example}}{}{Example}{secexample}
|
|
|
|
\subsubsection{See Also}
|
|
|
|
\hyperref[ref]{\emph{Netlist}}{}{Netlist}{secnetlist}
|
|
\hyperref[ref]{\emph{Layout}}{}{Layout}{seclayout}
|
|
\hyperref[ref]{\emph{Place and Route}}{}{Place and Route}{secroute}
|
|
\hyperref[ref]{\emph{Virtual libraty}}{}{Virtual library}{seclibrary}
|
|
\hyperref[ref]{\emph{Instanciation facilities}}{}{Instanciation facilities}{secfacilities}
|
|
|
|
\end{htmlonly}
|