source: trunk/IPs/systemC/processor/Morpheo/Documentation/doc/document-morpheo-vhdl_generation/tex/document-morpheo-vhdl_generation-fr-04_vhdl_structural.tex @ 113

Last change on this file since 113 was 113, checked in by rosiere, 15 years ago

1) Add modelsim simulation systemC
2) Modelsim cosimulation systemC / VHDL is not finish !!!! (cf execute_queue and write_unit)
3) Add multi architecture
5) Add template for comparator, multiplier and divider
6) Change Message
Warning) Various test macro have change, many selftest can't compile

  • Property svn:keywords set to Id
File size: 4.7 KB
Line 
1%------------------------------------------------------------------------------
2% $Id: document-morpheo-vhdl_generation-fr-04_vhdl_structural.tex 113 2009-04-14 18:39:12Z rosiere $
3%------------------------------------------------------------------------------
4
5\Section{VHDL : structurelle}\label{vhdl_structural}
6
7%\subSection{Description du fichier {\it Component\_vhdl.cpp}}
8Les modèles systemC structurels sont des modèles qui instancient d'autres modèles. Il n'y a pas de description comportementale. Ces modèles sont générés automatiquement.
9Par contre, les modèles systemC comportementaux peuvent être décrit par un modèle VHDL mixte (incluant une description comportementale et des instances d'autre composant).
10
11Les modèles génériques sont dans le répertoire {\it IPs/systemC/processor/Morpheo/Behavioural/Generic}.
12
13Pour la suite, nous allons supposer l'instanciation d'une FIFO.
14
15\subSection{Ajout d'une instance}
16
17\begin{enumerate}
18\item Dans le fichier Component.h : inclure la définition de la classe désirée.
19\lstparam{C++}
20\begin{lstlisting}
21#include "Behavioural/Generic/Queue/include/Queue.h"
22\end{lstlisting}
23
24\item Dans le fichier Component.h : déclaré les paramètres et le component
25\lstparam{C++}
26\begin{lstlisting}
27  morpheo::behavioural::generic::queue::Parameters * _param_queue;
28  morpheo::behavioural::generic::queue::Queue      * _component_queue;
29\end{lstlisting}
30
31\item Dans le fichier Component\_allocation.cpp : creer les paramètres du modèle.
32\lstparam{C++}
33\begin{lstlisting}
34  _param_queue = new morpheo::behavioural::generic::queue::Parameters
35      (16, //size_queue
36       32);//size_data
37\end{lstlisting}
38\item Dans le fichier Component\_allocation.cpp : creer le modèle
39\lstparam{C++}
40\begin{lstlisting}
41    std::string queue_name = _name + "_queue";
42
43    _component_queue = new morpheo::behavioural::generic::queue::Queue
44      (queue_name.c_str() // nom du modèle
45#ifdef STATISTICS
46       ,NULL              // Pas paramètres pour les statistiques
47#endif
48       ,_param_queue      // Paramètres de la file
49       ,USE_VHDL);        // Utilisation du modèle VHDL
50\end{lstlisting}
51\item Dans le fichier Component\_allocation.cpp : inclure le modèle dans la liste des composants internes
52\lstparam{C++}
53\begin{lstlisting}
54    _component->set_component(_component_queue->_component
55#ifdef POSITION
56                              , 20, 20, 20, 20   
57                              // Coordonée pour l'outil de visualisation
58#endif
59                              , INSTANCE_LIBRARY
60                              // Instancier uniquement les librairies
61                              );
62\end{lstlisting}
63\item Dans le fichier Makefile.deps : ajouter les dépendances du modèle.
64\lstparam{make}
65\begin{lstlisting}
66# Inclure les dépendances
67ifndef Queue
68include  $(DIR_MORPHEO)/Behavioural/Generic/Queue/Makefile.deps
69endif
70
71# Inclure les librairies
72Component_LIBRARY       = -lComponent     \
73                          $(Queue_LIBRARY)
74
75# Les chemins vers les librairies
76Component_DIR_LIBRARY   = -L$(Component_DIR)/lib  \
77                          $(Queue_DIR_LIBRARY)
78
79# Construction de la librairie ``Component''
80Component_library       :
81                        @\
82                        $(MAKE) Queue_library; \
83                        $(MAKE) --directory=$(Component_DIR) --makefile=Makefile;
84
85# Effacement des fichiers générés
86Component_library_clean :
87                        @\
88                        $(MAKE) Queue_library_clean; \
89                        $(MAKE) --directory=$(Component_DIR) --makefile=Makefile clean;
90\end{lstlisting}
91\item Dans le fichier Component\_deallocation.cpp : détruire les modèles et leurs paramètres.
92\lstparam{C++}
93\begin{lstlisting}
94  delete _component_queue;
95  delete _param_queue;
96\end{lstlisting}
97\end{enumerate}
98
99\subSection{Instanciation}
100L'instanciation ce fait comme avec des composants VHDL classiques :
101\lstparam{C++}
102\begin{lstlisting}
103    vhdl->set_comment(0,"");
104    vhdl->set_comment(0,"-----------------------------------");
105    vhdl->set_comment(0,"-- Instance queue                  ");
106    vhdl->set_comment(0,"-----------------------------------");
107    vhdl->set_comment(0,"");
108
109    vhdl->set_body   (0,"instance_"+_name+"_queue : "+_name+"_queue");
110    vhdl->set_body   (0,"port map (");
111    vhdl->set_body   (1,"  in_CLOCK       \t=>\t      in_CLOCK ");
112    vhdl->set_body   (1,", in_NRESET      \t=>\t      in_NRESET");
113    vhdl->set_body   (1,", in_INSERT_VAL  \t=>\tinternal_QUEUE_INSERT_VAL");
114    vhdl->set_body   (1,",out_INSERT_ACK  \t=>\tinternal_QUEUE_INSERT_ACK");
115    vhdl->set_body   (1,", in_INSERT_DATA \t=>\tinternal_QUEUE_INSERT_DATA");
116    vhdl->set_body   (1,",out_RETIRE_VAL  \t=>\tinternal_QUEUE_RETIRE_VAL");
117    vhdl->set_body   (1,", in_RETIRE_ACK  \t=>\tinternal_QUEUE_RETIRE_ACK");
118    vhdl->set_body   (1,",out_RETIRE_DATA \t=>\tinternal_QUEUE_RETIRE_DATA");
119    vhdl->set_body   (0,");");
120\end{lstlisting}
121
Note: See TracBrowser for help on using the repository browser.