\input{packages.tex}
\newcounter{mypara}
\setcounter{mypara}{0}

\setcounter{secnumdepth}{4}

%Bibliography
\addbibresource{bibliographie.bib}

% Document
\begin{document}{

\sloppy
\input{titlepage.tex}
\setcounter{tocdepth}{4}
\setcounter{secnumdepth}{4}

% Table of contents
\tableofcontents

\newpage

% First chapter
\chapter{Modèles pour la simulation}

Ce cours s'intéresse aux différents modèles utilisés dans la simulation de circuits électroniques. On va s'intéresser aux trois modèles TLM, CABA et RTL.

\section{Motivations}

L'exemple des décodeurs TV HD est intéressant : créés en 200X, ce sont déjà des circuits assez grands et il faut de grandes équipes pour les concevoir. Les SoCs numériques modernes sont des architectures conjointes (on a des blocs numériques dédiés et des processeurs) et c'est la même chose avec les FPGA courants. Et on ne parle pas des téléphones.

Il faut une méthode pour les concevoir et les simuler de façon efficace.

\section{Flot de développement de niveau système}

\begin{itemize}
\item cahier des charges de l'application
\item modélisation du système
\item partitionnement logiciel/matériel
\item modélisations (matériel, interfaces, logiciel)
\item raffinement (matériel, interfaces, logiciel)
\item co-vérification : synthèse du matériel et compilation du logiciel
\item intégration système \newline
\end{itemize}

\section{Simulation lors de conceptions conjointes}

Lorsqu'on conçoit un système, il faut développer en parallèle la partie matérielle et la partie logicielle. Auparavant on utilisait en parallèle du FPGA et des compilateurs. Avec SystemC, on va pouvoir tout simuler (matériel et logiciel). Cela va permettre d'avoir un langage unique et donc d'éviter les erreurs de traduction.

\section{Précision de simulation de modèles}

Plus on est précis sur le temps et les cycles et plus le temps de simulation est très long.

Avec SystemC, on pourra choisir les niveaux de précision.

\section{Choisir un niveau d'abstraction}

Selon le niveau qu'on veut modéliser... et les langages qu'on maîtrise.

Les niveaux : 
\begin{itemize}
\item algorithmique ;
\item untimed functional (UTF) ;
\item timed functional (TF) ;
\item bus cycled accurate (BCA) ;
\item cycled accurate (CA) ;
\item transfert de registre (RTL). \newline
\end{itemize}

En SystemC, on peut tout faire.

\section{Pourquoi utiliser SystemC ?}

On veut modéliser le matériel et le logiciel en même temps. Les fonctionnalités : 
\begin{itemize}
\item horloges ;
\item vue du signal (GTKWave) ;
\item simulation basée sur le cycle (high-speed kernel) ;
\item niveaux d'abstraction multiples ;
\item protocoles de communication ;
\item support du débogage ;
\item vérifications d'erreur en run-time ;
\item support jusqu'au niveau RTL. \newline
\end{itemize}

C'est le fruit de la collaboration de plusieurs sociétés (Synopsys, Frontier Design, CoWare) puis géré par l'OSCI. Depuis 2011 c'est Accellera, à but non lucratif.

Le changement de niveau de précision est graduel (en utilisant des fonctions de plus en plus spécifiques).


%\begin{figure}[h!]
%  \center
%  \includegraphics{images/su.png}
%  \caption{Petite image}
%  \label{fig:schema1}
%\end{figure}
%
%\setstretch{1}
%\section{Une section}
%\setstretch{1.3}
%
%Blabla \newline
%Blablabla.
%
%\setstretch{1}
%\subsection{Une sous-section}
%\setstretch{1.3}
%
%Bla à propos de l'\textbf{bla important} dont le fonctionnement est schématisé dans la figure \ref{fig:schema1}.
%
%% Second chapter
%\chapter{Seconde chose à dire}
%
%A ce propos \textit{italique}.
%
%\begin{figure}[h!]
%  \center
%  \includegraphics[width=\linewidth]{images/su.png}
%  \caption{Image pleine page}
%  \label{fig:image_pleine}
%\end{figure}
%
%\setstretch{1}
%\section{Une section}
%\setstretch{1.3}
%
%Texte pour dire tout ça parceque oui. \newline
%
%Ceci ne veut pas dire cependant que :
%
%\begin{itemize}
%\item Élément 1
%
%\item Élément 2
%
%\item Élément 3
%
%\end{itemize}

\newpage

% Bibliography
\nocite{*}
\addcontentsline{toc}{chapter}{Bibliographie}
\printbibliography

\end{document}
