%------------------------------------------------------------------------------
% $Id: document-morpheo-vhdl_generation-fr-03_vhdl_body.tex 113 2009-04-14 18:39:12Z rosiere $
%------------------------------------------------------------------------------

\Section{VHDL : comportement}\label{vhdl_body}

\subSection{Description du fichier {\it Component\_vhdl\_body.cpp}}

Le comportement du composant est défini dans le fichier  {\it Component\_vhdl\_body.cpp}.

Il n'y a pas de fonction aidant à l'écriture du Vhdl.
La méthode {\it set\_body} permet de définir une ligne de code VHDL. Un retour à la ligne est automatiquement inséré. Le premier argument est pour l'indentation.
\lstparam{C++}
\begin{lstlisting}
void set_body (uint32_t    depth,
               std::string text );
void set_body (std::string text );
\end{lstlisting}

Pour les commentaires, il y a la fonction {\it set\_comment}.
\lstparam{C++}
\begin{lstlisting}
void set_comment (uint32_t    depth,
                  std::string text );
void set_comment (std::string text );
\end{lstlisting}

\subSection{Description du fichier {\it Component\_vhdl.cpp}}
Nous allons décrire ici le fichier {\it Component\_vhdl.cpp}.

\lstparam{C++}
\begin{lstlisting}[caption={Component\_vhdl.cpp}, label=component_vhdl.cpp]
  void component::vhdl (void)
  {
    Vhdl * vhdl = new Vhdl (_name);

    _interfaces->set_port(vhdl);
    _component->vhdl_instance(vhdl);

    vhdl_declaration (vhdl);
    vhdl_body        (vhdl);

    vhdl->generate_file();

    delete vhdl;
  };
\end{lstlisting}


La première étape est d'éditer le fichier {\it Component\_vhdl.cpp}. Le listing \ref{component_vhdl.cpp} représente le contenu de ce fichier. 
\begin{itemize}
\item Ligne 3 : Déclaration et construction de la variable {\it vhdl} qui est du  type {\it Vhdl}.
\item Ligne 5 : Ajout dans le modèle VHDL des interfaces présentes dans le modèle SystemC. (cf fichiers Component.h).
\item Ligne 6 : Ajout dans le modèle VHDL des composants internes  dans le modèle SystemC. (cf fichiers Component.h et Component\_allocation.cpp).
\item Ligne 8 : Ajout dans le modèle VHDL des déclarations définit dans le fichiers Component\_vhdl\_declaration.cpp (cf section \ref{vhdl_declaration}).
\item Ligne 9 : Ajout dans le modèle VHDL de la description comportemental définit dans le fichiers Component\_vhdl\_body.cpp (cf section \ref{vhdl_body}).
\item Ligne 11 : Génération des fichiers VHDL. Le nom du fichier est construit à partir du nom fourni lors de la construction de la variable {\it vhdl}.
\item Ligne 13 : Destruction de l'objet. 
\end{itemize}
