source: sources/doc/SystemCASS.tex @ 27

Last change on this file since 27 was 27, checked in by buchmann, 15 years ago

SystemCASS now uses autoconf/automake to build the API. Regression tests still
use the old Makefiles.
(thanks to Nicolas Pouillon)

The library directory no longer is "lib-arch-system". The directory now is "lib-linux". Everyone needs to pay attention about SYSTEMCASS environment variable.

Changes:

  • system header includes
  • Add includes to config.h (generated by autoconf/automake)
  • test:
    • linux preprocessor macro instead of _WIN32
    • CONFIG_DEBUG instead of DEBUG

Removes:

  • Makefile
  • guess_endianness.cc
  • guess_os.sh
  • assert.h (we now use standard assert.h)
  • Options.def
File size: 7.0 KB
Line 
1%%%%%%%%%%
2%
3%$Log: SystemCASS.tex,v $
4%Revision 1.3  2005/03/25 14:33:01  buchmann
5%Typo :
6%-  dependAncy -> dependEncy
7%
8%sc_initialize :
9%-  Use a hash table to speed up elaboration step. (x40 faster)
10%
11%Tracing :
12%-  check for modification BEFORE building bit string.
13%-  use sprintf instead std string concatenation.
14%
15%Revision 1.2  2005/02/22 11:36:58  buchmann
16%Generate correctly documentations.
17%Add special flag to disable PAT tracing support.
18%
19%Revision 1.1  2005/01/20 09:15:12  buchmann
20%add following functions to sc_uint classes :
21%- operator []
22%- range (left,right)
23%
24%support to port dependency declarations.
25%print used precompiled options in verbose mode.
26%use pedantic flag.
27%add some rules to generate documentations.
28%
29%
30%
31%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32\documentclass{report}
33\usepackage[latin1]{inputenc}
34\usepackage[T1]{fontenc}
35\usepackage{a4wide}
36\usepackage{charter}
37\usepackage{helvet}
38\usepackage{graphicx}
39\usepackage{amsmath}
40\usepackage{moreverb}
41\usepackage{longtable}
42\usepackage{calc}
43\usepackage{alltt}
44\usepackage{makeidx}
45\usepackage{xspace}
46\renewcommand{\rmdefault}{phv}
47\renewcommand{\sfdefault}{phv}
48\renewcommand{\ttdefault}{pcr}
49\newcommand{\SYSTEMCASS}{\textsc{SystemCASS}\xspace}
50\newcommand{\SYSTEMC}{\textsc{SystemC}\xspace}
51\newcommand{\SOCLIB}{\textsc{SoCLIB}\xspace}
52
53\ifx\pdfoutput\undefined
54\else
55    \pdfpagewidth  21.0cm
56    \pdfpageheight 29.7cm
57\fi
58\usepackage{hyperref}
59
60\voffset   -1in
61\hoffset   -1in
62\headheight 0pt
63\headsep    0pt
64\topmargin     25mm
65\oddsidemargin 29mm
66
67\textwidth     150mm
68\textheight    240mm
69\flushbottom
70\sloppy
71
72\tabcolsep 4pt
73\makeatletter
74\renewcommand{\section}
75   {\@startsection
76   {section}%
77   {1}%
78   {0mm}%
79   {-.5\baselineskip}%
80   {0.5\baselineskip}%
81   {\newpage\flushleft\normalfont\Large\scshape}}
82
83\renewcommand{\subsection}
84   {\@startsection
85   {subsection}%
86   {1}%
87   {0mm}%
88   {-.5\baselineskip}%
89   {0.5\baselineskip}%
90   {\flushleft\normalfont\large\scshape}}
91
92\renewcommand{\@seccntformat}[1]{{\csname the#1\endcsname}.\hspace{0.25em}}
93\makeatother
94\renewcommand{\thesection}{\arabic{section}}
95
96\renewcommand{\listinglabel}[1]{\rlap{\footnotesize\rmfamily\the#1}\hskip2em}
97
98%%%%%%%%%%%%%%%%
99%
100%%%%%%%%%%%%%%%%%%%%%%%%%%%
101\begin{document}
102\thispagestyle{empty}
103~\vfill
104\begin{center}
105{\LARGE SystemCASS\\ SystemC Cycle Accurate System Simulator\\}
106\vfill
107\vfill
108%{\Large Documentation by Richard \textsc{Buchmann}}
109\vfill
110
111{\Large \today}
112
113\end{center}
114~\vfill
115
116%%%%%%%%%%
117%
118%%%%%%%%%%%%%%%%%%%%%%%%%
119\section{\SYSTEMCASS Overview}
120\label{SystemCass-overview}
121
122\SYSTEMCASS is a simulator that executes models described in \textbf{SystemC}.
123Its goal is to provide cycle precise simulation of systems build with
124hardware and software components, in order to evaluate performances
125for \emph{i.e.} hardware/software partitioning, system validation, early
126software development.
127
128An example of system is present Figure~\ref{system}.
129
130\begin{figure}[hbtp]\center\leavevmode
131\includegraphics[width=.7\textwidth,angle=270]{SystemeType}
132\caption{Typical embedded system build around VCI interfaces.}
133\label{system}
134\end{figure}
135
136The simulator simulates a \textbf{SystemC} netlist of predefined and/or
137user defined components.
138The components used to validate the methodology\cite{iceec04-buch} are a part of \SOCLIB library.
139Those models are VCI, bit and cycle accurate using the finite state machine with datapath modeling (Figure~\ref{Automate}).
140
141\begin{figure}[hbtp]\center\leavevmode
142\includegraphics[width=.6\linewidth]{Automate}
143\caption{Finite State Machine Modeling}
144\label{Automate}
145\end{figure}
146
147SystemCASS is a SystemC subset including~:
148\begin{itemize}
149\item
150core class~: sc\_module, sc\_signal, sc\_in, sc\_out, sc\_inout...
151\item
152core functions~: sc\_start, sc\_stop, sc\_simulation\_time...
153\item
154basic data types~: sc\_i[u]nt, sc\_big[u]int...
155\end{itemize}
156
157But SystemCASS doesn't include standard channels,
158methodology-specific channels (master/slave library, verification library)
159and elementary channels (timer, mutex, semaphore, fifo, etc.).
160
161This cycle accurate engine gives higher simulation speed
162more suitable for embedded software development,
163and architectural exploration.
164
165%%%%%%%%%%
166%
167%%%%%%%%%%%%%%%%%%%%%%%%%
168\section{Installation}
169
170Set \textbf{SYSTEMC} environment variable to the \textbf{SystemCASS} base directory.\\
171Change the current directory to \textbf{\$(SYSTEMC)/src}.\\
172Run the Makefile.\\
173
174The distribution is as follow~:
175\begin{itemize} \itemsep=-0.8ex
176\item
177\emph{src}~:
178Source files
179\item
180\emph{includes}~:
181Header files
182\item
183\emph{lib-linux}~:
184Debug and optimized libraries for linux distribution
185\item
186\emph{docs}~:
187Documentation
188\item
189\emph{examples}~:
190
191\begin{itemize} \itemsep=-0.8ex
192\item
193\emph{soclib\_date04}~:
194An hardware timer raises some interruptions on 4 Mips R3000 periodically.
195Whenever an interruption occurs, the application running on each CPU prints a "hello" message to its own output window.
196\item
197\emph{soclib\_spg}~:
198An specific hardware configures a DMA. The DMA copies some data into the
199a simple RAM component.
200\end{itemize}
201
202\end{itemize}
203
204%%%%%%%%%%%%%%%%%%%%%%%
205%
206%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ù
207\section{Simulator Execution}
208\label{debbuger-usage}
209To use SystemCASS simulator, you just need to include the SystemCASS headers
210and link to SystemCASS library.
211
212To debug, two ways are available~:
213\begin{itemize}
214\item
215link to the debug library and use a debugger.
216\item
217generate a trace file by using dedicated functions and use a VCD viewer.
218\end{itemize}
219
220%%%%%%%%%%
221%
222%%%%%%%%%%%%%%%%%%%%%%%%%
223
224\section{Simulator Compilation}
225
226Some macro definitions are available
227to accelerate the simulation,
228to check the netlist, variable dependancies, the scheduling
229to help on debugging
230and so on.
231
232You need to modify the Options.def file and rebuild the libraries.
233
234\subsection{Scheduling}
235
236The best performance you can reach using \SYSTEMCASS is obtained by using
237static scheduling.
238
239\SYSTEMCASS has two ways to compute the scheduling~:
240
241\begin{itemize}
242\item
243from the static sensitivity list (default)~:
244\SYSTEMC compatibility is good
245\item
246from the port dependency graph\cite{date04-mouchard} (USE\_PORT\_DEPENDENCY defined)~:
247The component designer need to declare the port dependancies in the
248constructor.
249The signal dependency graph is complete and then it has no cycle.
250At initialization step, the engine checks sensitivity list coherence.\\
251\it{Syntax~: outPort(inPort);}\\
252DUMP\_COMBINATIONAL\_LIST2DOT definition generates some DOT files to check
253dependancies.
254\end{itemize}
255
256The generated scheduling is written in code-XXX.cc file.
257KEEP\_GENERATED\_CODE definition allows to keep the file after simulation execution.\\
258
259PRINT\_SCHEDULE definition prints the scheduling at execution time.\\
260DUMP\_SCHEDULE\_STATS prints some miscellanous statistics.\\
261NO\_STATIC\_SCHEDULE disables the static scheduling.
262
263%%%%%%%%%%%%%%%
264%\part{Creating new components for \SYSTEMCASS}
265%%%%%%%%%%%%%%%
266
267%\section{Component description}
268
269%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
270\bibliography{./SystemCASS}
271\bibliographystyle{unsrt}
272\end{document}
273
Note: See TracBrowser for help on using the repository browser.