120 lines
3.9 KiB
TeX
120 lines
3.9 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 :
|
|
|
|
\begin{itemize}
|
|
\item Method \verb-Interface-
|
|
\begin{itemize}
|
|
\item LogicIn
|
|
\item LogicOut
|
|
\item LogicInOut
|
|
\item TriState
|
|
\item VddIn
|
|
\item VssIn
|
|
\end{itemize}
|
|
\item Method \verb-Netlist-
|
|
\begin{itemize}
|
|
\item Signal
|
|
\item Inst
|
|
\item Facilities : \&, |, +, Mux, Shift, Eq/Ne ...
|
|
\end{itemize}
|
|
\item Method \verb-Layout-
|
|
\begin{itemize}
|
|
\item Place, PlaceTop, PlaceBottom, PlaceRight, PlaceLeft
|
|
\item SetRefIns
|
|
\item DefAb, ResizeAb
|
|
\item PlaceCentric
|
|
\item PlaceGlue, FillCell
|
|
\item PadNorth, PadSouth, PadEast, PadWest
|
|
\item AlimVerticalRail, AlimHorizontalRail
|
|
\item AlimConnectors
|
|
\item PowerRing
|
|
\item RouteCk
|
|
\end{itemize}
|
|
\item Method \verb-Pattern-
|
|
\item Method \verb-View-
|
|
\item Method \verb-Save-
|
|
\end{itemize}
|
|
|
|
\subsubsection{Syntax highlighting}
|
|
|
|
This chapter describes what to do 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}
|
|
|
|
\subsubsection{Syntax}
|
|
|
|
A \emph{Stratus} file must have a .py extension and must begin as follow :
|
|
\begin{verbatim}
|
|
#!/usr/bin/python
|
|
|
|
from stratus import *
|
|
\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{Example}
|
|
|
|
You can see a concrete example at : \hyperref[ref]{\emph{A concrete example}}{}{Example}{secexample}
|
|
|
|
\subsubsection{See Also}
|
|
|
|
\hyperref[ref]{\emph{Model}}{}{Model}{secmodel}
|
|
\hyperref[ref]{\emph{Param}}{}{Param}{secparam}
|
|
\hyperref[ref]{\emph{Example}}{}{Example}{secexample}
|
|
\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{Facilities}}{}{Facilities}{secfacilities}
|