270 lines
8.7 KiB
TeX
270 lines
8.7 KiB
TeX
|
\documentclass[12pt]{article}
|
||
|
\usepackage[latin1]{inputenc}
|
||
|
\usepackage[T1]{fontenc}
|
||
|
\usepackage{palatino}
|
||
|
\usepackage{fancyhdr}
|
||
|
\usepackage{float}
|
||
|
\usepackage{subfigure}
|
||
|
\usepackage{wrapfig}
|
||
|
\usepackage[dvips]{graphics}
|
||
|
\usepackage{graphicx}
|
||
|
\usepackage{epsfig}
|
||
|
\usepackage{multicol}
|
||
|
\usepackage{url}
|
||
|
\usepackage{html}
|
||
|
\usepackage{color}
|
||
|
|
||
|
\definecolor{violet}{rgb}{0.5,0,0.5}
|
||
|
|
||
|
\setlength{\topmargin}{0cm}
|
||
|
\setlength{\headheight}{1cm}
|
||
|
\setlength{\textheight}{21cm}
|
||
|
\setlength{\textwidth}{16cm}
|
||
|
\setlength{\oddsidemargin}{0cm}
|
||
|
\setlength{\evensidemargin}{0cm}
|
||
|
\setlength{\columnsep}{0.125in}
|
||
|
\setlength{\columnseprule}{0.5pt}
|
||
|
\setlength{\footskip}{1cm}
|
||
|
\sloppy
|
||
|
|
||
|
%--------------------------------- page style --------------------------------
|
||
|
\pagestyle{fancy}
|
||
|
\rhead{}
|
||
|
\lhead{}
|
||
|
\rfoot{\thepage}
|
||
|
\lfoot{}
|
||
|
\cfoot{}
|
||
|
%---------------------------------- document ---------------------------------
|
||
|
\date {}
|
||
|
\title {Patterns Module User's Manual}
|
||
|
\author {Roselyne Chotin-Avot}
|
||
|
|
||
|
\begin{document}
|
||
|
|
||
|
\setlength{\footrulewidth}{0.6pt}
|
||
|
\maketitle
|
||
|
|
||
|
%%\begin{htmlonly}
|
||
|
%% \htmlrule
|
||
|
%% \noindent La version imprimable de ce document est disponible ici~: \\
|
||
|
%% \begin{center}
|
||
|
%% \hyperref[hyper]{http://asim.lip6.fr/~jpc/M1-C++/TME/6/TME6.pdf}{}{}
|
||
|
%% {http://asim.lip6.fr/~jpc/M1-C++/TME/6/TME6.pdf}
|
||
|
%% \end{center}
|
||
|
%%\end{htmlonly}
|
||
|
|
||
|
\tableofchildlinks
|
||
|
\htmlrule
|
||
|
|
||
|
\section{Description}
|
||
|
The patterns module of \emph{Stratus} is a set of \emph{Python} classes and
|
||
|
methods that allows a procedural description of input pattern file for the
|
||
|
logic simulator. The \emph{Stratus} \verb-Pattern- method produces a pattern
|
||
|
description file as output. The file generated by \verb-Pattern- method is in
|
||
|
pat format, so IT IS STRONGLY RECOMMENDED TO SEE pat(5) manual BEFORE TO USE
|
||
|
IT.
|
||
|
|
||
|
\section{Syntax}
|
||
|
From a user point of view, \verb-Pattern- method is a pattern description
|
||
|
language using all standard \emph{Python} facilities. Here follows the
|
||
|
description of the \verb-Pattern- method.\\
|
||
|
A pat format file can be divided in two parts : declaration and description
|
||
|
part.\\
|
||
|
The declaration part is the list of inputs, outputs, internal signals and
|
||
|
registers. Inputs are to be forced to a certain value and all the others are
|
||
|
to be observed during simulation.\\
|
||
|
The description part is a set of patterns, where each pattern defines the value
|
||
|
of inputs and outputs. The pattern number represents actually the absolute time
|
||
|
for the simulator.\\
|
||
|
Similarly, a \verb-Pattern- method can be divided in two parts : declaration
|
||
|
and description part. Methods related to the declaration must be called
|
||
|
before any function related to the description part.
|
||
|
|
||
|
\subsection{Declaration part}
|
||
|
The first thing you should do in this part is to instantiate the class
|
||
|
\verb-Patwrite- to have access to all patterns declaration and description
|
||
|
methods. The constructor of this class take as parameters the name of pattern
|
||
|
output file and the \emph{Stratus} cell that is described (see \verb-PatWrite-
|
||
|
\ref{patwrite}).\\
|
||
|
Then, this part allows you to declare the inputs, the outputs, and internal
|
||
|
observing points (see \verb-declar-\ref{declar} and \verb-declar_interface-
|
||
|
\ref{declar_interface}).
|
||
|
|
||
|
\subsection{Description part}
|
||
|
After all signals are declared, you can begin the description part (see
|
||
|
\verb-pattern_begin- \ref{pattern_begin}). In this part you have to define
|
||
|
input values which are to be applied to the inputs of the circuit or output
|
||
|
values which are to be compare with the values produced during the simulation.
|
||
|
(see \verb-affect- \ref{affect}, \verb-affect_any- \ref{affect_any},
|
||
|
\verb-affect_int- \ref{affect_int} and \verb-affect_fix- \ref{affect_fix}).
|
||
|
\verb-Pattern- method describes the stimulus by event : only signal transitions
|
||
|
are described. After each event there is a new input in the pattern file (see
|
||
|
\verb-addpat- \ref{addpat}). Last thing you should do in this part is to
|
||
|
generate the output file (see \verb-pattern_end- \ref{pattern_end}).
|
||
|
|
||
|
\section{Methods}
|
||
|
\subsection{PatWrite}
|
||
|
\label{patwrite}
|
||
|
This class is used to create patterns for \emph{Stratus} models. Currently
|
||
|
it only supports Alliance ".pat" pattern format. Patterns time stamps are in
|
||
|
the "absolute date" format, "relative date" isn't allowed. Legal time unit are
|
||
|
ps (default), ns, us and ms. The constructor takes as parameters the pattern
|
||
|
output filename and an optional reference to Stratus cell.
|
||
|
|
||
|
\subsection{declar}
|
||
|
\label{declar}
|
||
|
Adds a connector from a Stratus model to the pattern interface. Writes the
|
||
|
corresponding connector declaration in the pattern file with name, arity and
|
||
|
direction automatically extracted from the connector properties.\\
|
||
|
Supported Stratus connectors are:
|
||
|
\begin{itemize}
|
||
|
\item{SignalIn,}
|
||
|
\item{SignalOut (only supported if used as an output),}
|
||
|
\item{VddIn,}
|
||
|
\item{VssIn,}
|
||
|
\item{CkIn,}
|
||
|
\item{SignalInOut,}
|
||
|
\item{TriState (always an output),}
|
||
|
\item{Signals.}
|
||
|
\end{itemize}
|
||
|
|
||
|
\subsubsection{Parameters}
|
||
|
\begin{itemize}
|
||
|
\item{connector : can either be a reference to a stratus net or a string
|
||
|
containing the name of the stratus net.}
|
||
|
\item{format : optional format for the connectors values into the pattern file,
|
||
|
accepted values are :}
|
||
|
\begin{itemize}
|
||
|
\item{'B': binary (default),}
|
||
|
\item{'X': hexadecimal,}
|
||
|
\item{'O': octal.}
|
||
|
\end{itemize}
|
||
|
\end{itemize}
|
||
|
|
||
|
\subsection{declar\_interface}
|
||
|
\label{declar_interface}
|
||
|
Adds all the connectors from a Stratus model to the pattern interface. Write
|
||
|
the corresponding connector declaration in the pattern file with name, arity
|
||
|
and direction directly taken from the connector proprieties.\\
|
||
|
|
||
|
\subsubsection{Parameters}
|
||
|
\begin{itemize}
|
||
|
\item{cell : the tested Stratus model reference. Optional if a reference to the
|
||
|
tested Stratus model was given during instanciation\ref{patwrite}.}
|
||
|
\item{format : optional format for the connectors values into the pattern file,
|
||
|
accepted values are :}
|
||
|
\begin{itemize}
|
||
|
\item{'B': binary (default),}
|
||
|
\item{'X': hexadecimal,}
|
||
|
\item{'O': octal.}
|
||
|
\end{itemize}
|
||
|
\end{itemize}
|
||
|
|
||
|
\subsection{declar}
|
||
|
\label{declar}
|
||
|
Affect a string value to a connector.
|
||
|
|
||
|
\subsubsection{Parameters}
|
||
|
\begin{itemize}
|
||
|
\item{connector : \emph{Stratus} connector}
|
||
|
\item{value : string to affect to connector}
|
||
|
\end{itemize}
|
||
|
|
||
|
\subsection{affect\_int}
|
||
|
\label{affect_int}
|
||
|
Affect an integer (CA2) value to a connector. Convert the 2's complement value
|
||
|
to the corresponding binary value. The binary size is taken from the connector
|
||
|
arity. If the connector is an output, the binary value is preceded by "?".
|
||
|
|
||
|
\subsubsection{Parameters}
|
||
|
\begin{itemize}
|
||
|
\item{connector : \emph{Stratus} connector.}
|
||
|
\item{value : 2's complement value to affect to the connector.}
|
||
|
\end{itemize}
|
||
|
|
||
|
\subsection{affect\_fix}
|
||
|
\label{affect_fix}
|
||
|
Affect a fixed point value to a connector. Convert the floating point input
|
||
|
value to the corresponding fixed point value with
|
||
|
word\_length=connector.arity() and integer\_word\_length=iwl. If the connector
|
||
|
is an output, the binary value is preceded by "?".
|
||
|
|
||
|
\subsubsection{Parameters}
|
||
|
\begin{itemize}
|
||
|
\item{connector : \emph{Stratus} connector.}
|
||
|
\item{value : floating point value to convert and asign to connector.}
|
||
|
\item{iwl : integer word length}
|
||
|
\end{itemize}
|
||
|
|
||
|
\subsection{affect\_any}
|
||
|
\label{affect_any}
|
||
|
Disable comparison between this connector value and the one calculated during
|
||
|
simulation.
|
||
|
|
||
|
\subsubsection{Parameters}
|
||
|
\begin{itemize}
|
||
|
\item{connector : \emph{Stratus} connector.}
|
||
|
\end{itemize}
|
||
|
|
||
|
\subsection{addpat}
|
||
|
\label{addpat}
|
||
|
Adds a pattern in the pattern file.
|
||
|
|
||
|
\subsection{pattern\_begin}
|
||
|
\label{pattern_begin}
|
||
|
Mark the end of the interface declaration and the beginning of the test
|
||
|
vectors.
|
||
|
|
||
|
\subsection{pattern\_end}
|
||
|
\label{pattern_end}
|
||
|
Mark the end of the test vectors and of the patterns file.
|
||
|
|
||
|
\section{Example}
|
||
|
\verb-Pattern- method for an addaccu
|
||
|
\begin{verbatim}
|
||
|
def Pattern(self):
|
||
|
# initialisation
|
||
|
pat = PatWrite(self._name+'.pat',self)
|
||
|
|
||
|
# declaration of ports
|
||
|
pat.declar(self.ck, 'B')
|
||
|
pat.declar(self.load, 'B')
|
||
|
pat.declar(self.input, 'X')
|
||
|
pat.declar(self.output, 'X')
|
||
|
pat.declar(self.vdd, 'B')
|
||
|
pat.declar(self.vss, 'B')
|
||
|
|
||
|
# use of pat.declar_interface(self) has the same effect
|
||
|
|
||
|
# description beginning
|
||
|
pat.pattern_begin()
|
||
|
|
||
|
# affect vdd and vss values
|
||
|
pat.affect_int(self.vdd,1)
|
||
|
pat.affect_int(self.vss,0)
|
||
|
|
||
|
# first pattern : load an initial value
|
||
|
pat.affect_int(self.input,5)
|
||
|
pat.affect_int(self.load,1)
|
||
|
pat.affect_int(self.ck,0)
|
||
|
# add the pattern in the pattern file
|
||
|
pat.addpat()
|
||
|
# compute next event
|
||
|
pat.affect_int(self.ck,1)
|
||
|
pat.addpat()
|
||
|
|
||
|
# compute 22 cycle of accumulation
|
||
|
pat.affect_int(self.load,0)
|
||
|
for i in range(1,22):
|
||
|
pat.affect_int(self.ck,0)
|
||
|
pat.addpat()
|
||
|
pat.affect_int(self.ck,1)
|
||
|
pat.affect_int(self.output,i+5)
|
||
|
pat.addpat()
|
||
|
|
||
|
# end of the description
|
||
|
pat.pattern_end()
|
||
|
\end{verbatim}
|
||
|
|
||
|
\end{document}
|