%------------------------------------------------------------------------------
% $Id$
%------------------------------------------------------------------------------

\Section{Fichier de configuration d'une instance}

\subSection{Description}
Ce fichier liste les paramètres et leur valeur afin de générer une instance. Ce fichier est utilisé en lecture par le générateur de \cpu et en écriture par l'outil de visualisation architecturale.

\subSection{Syntaxe}

\verbatiminput{\dirroot/syntax.cfg}

\begin{description}
\item[balise core :] {\it (Obligatoire et unique)} Balise englobante.
  \begin{description}
  \item[attribut name    :] {\it (Obligatoire)} Nom de l'instance.
  \item[balise parameter :] {\it (Nombre quelconque d'occurrences)} Un paramètre du générateur.
    \begin{description}
    \item [attribut name  : ] {\it (obligatoire)} Nom du paramètre.
    \item [attribut value : ] {\it (obligatoire)} Valeur de ce paramètre.
    \end{description}
  \item[balise link :] {\it (Nombre quelconque d'occurrences)} Lien entre deux composants du processeur.
    \begin{description}
    \item[attribut name        :] {\it (Obligatoire)} Nom du paramètre.
    \item[attribut src         :] {\it (Optionnel  )} Source du lien. Si cet attribut n'est pas présent, alors la source du lien est le composant dans lequel il est placé. Le numéro représente l'identifiant de la source. Si la source est un composant contenu dans un autre alors cet attribut prendra la liste de tous les identifiants séparés par des points permettant de cibler le bon composant. Par exemple pour le contexte 5 contenu dans le front end 3, l'attribut src prendra comme valeur : ``3.5''.
    \item[attribut dest        :] {\it (Obligatoire)} Destination du lien. La syntaxe est la même que pour la source du lien.
    \end{description}

  \item[balise component :] {\it (Nombre quelconque d'occurrences)} {\it component} est le nom générique de la balise. En réalité il regroupe tous les blocs internes du processeur. Le nom de la balise prend alors le nom du composant.
    \begin{description}
    \item[attribut id : ] {\it (Obligatoire)} Identifiant du paramètre.
    \item[balise component :] {\it (Nombre quelconque d'occurrences)} Entités internes au bloc courant.
    \item[balise parameter :] {\it (Nombre quelconque d'occurrences)} Un paramètre du composant courant.
    \item[balise link      :] {\it (Nombre quelconque d'occurrences)} Un Lien entre deux entités contenu dans le bloc courant.
    \item[balise timing    :] {\it (Nombre quelconque d'occurrences)} Seulement si la balise {\it component} englobante est {\it functionnal\_unit}. Il s'agit des informations temporelles des opérations pouvant être exécutées par l'unité fonctionnelle. Les opérations non citées ne sont pas implémentées par l'unité fonctionnelle.
      \begin{description}
      \item[attribut group     :] {\it (Obligatoire)} Groupe d'appartenance de l'opération.
      \item[attribut operation :] {\it (Optionnel  )} Numéro de l'opération. Si le champ opération n'est pas présent, alors les temps de latence et de delay sont appliquées à toutes les opérations.
      \item[attribut latence   :] {\it (Optionnel  )} Latence avant que le résultat soit produit. Par défaut, la latence est de 1 cycle.
      \item[attribut delay     :] {\it (Optionnel  )} Délai pendant lequel l'unité d'exécution est indisponible. Par défaut, le délai est de 1 cycle.
    \end{description}

    \end{description}
  \end{description}
\end{description}

Tous les paramètres {\it parameter} et {\it link} doit être présent dans le fichier de configuration du générateur.

\subSection{Paramètres}

Pour les paramètres, voir le fichier de configuration du générateur. Nous allons lister les balises {\it component}:

\begin{description}
\item[thread            :] Contexte matériel
  \begin{description}
  \item[group           :] Information sur les unités spéciales.
  \end{description}
\item[decod\_bloc       :] Unité de décodage.
\item[rename\_bloc      :] Unité de renommage.
\item[read\_bloc        :] Unité de lecture des opérandes.
\item[write\_bloc       :] Unité d'écriture des résultats.
\item[load\_store\_unit :] Unité de gestion des accès mémoires.
\item[functionnal\_unit :] Unité d'exécution.
\item[front\_end        :] Unité de chargement des instructions. Regroupe les contextes matériels et les unités de décodages.
  \begin{description}
  \item[predictor       :] Unité de prédiction.
  \end{description}
\item[ooo\_engine       :] Unité gestion du désordonnancement des instructions. Regroupes les unités de renommage.
\item[execute\_loop     :] Boucle d'exécution. Regroupe les unités de lecture et d'écriture des registres, ainsi que les unités d'exécution et de gestion des accès mémoires.
\end{description}

\subSection{Exemples}

\verbatiminput{\dirroot/example_1.cfg}
