source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit.cpp @ 77

Last change on this file since 77 was 77, checked in by rosiere, 16 years ago
  • Add two component :
    • network between read unit and execute unit
    • network between execute unit and write unit
  • remove parameters "nb_operation" and "nb_type"
  • in write_queue add the special case : load_speculative
File size: 18.4 KB
Line 
1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h"
9
10namespace morpheo                    {
11namespace behavioural {
12namespace core {
13namespace multi_execute_loop {
14namespace execute_loop {
15namespace network {
16namespace read_unit_to_execution_unit {
17
18
19#undef  FUNCTION
20#define FUNCTION "Read_unit_to_Execution_unit::Read_unit_to_Execution_unit"
21  Read_unit_to_Execution_unit::Read_unit_to_Execution_unit
22  (
23#ifdef SYSTEMC
24   sc_module_name name,
25#else
26   string name,
27#endif
28#ifdef STATISTICS
29   morpheo::behavioural::Parameters_Statistics * param_statistics,
30#endif
31   morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters * param,
32   morpheo::behavioural::Tusage_t usage
33   ):
34    _name              (name)
35    ,_param            (param)
36    ,_usage            (usage)
37  {
38    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
39
40    log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Allocation");
41
42    allocation (
43#ifdef STATISTICS
44                param_statistics
45#endif
46                );
47
48#ifdef STATISTICS
49    if (_usage & USE_STATISTICS)
50      { 
51        log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Allocation of statistics");
52
53        statistics_declaration(param_statistics);
54      }
55#endif
56
57#ifdef VHDL
58    if (_usage & USE_VHDL)
59      {
60        // generate the vhdl
61        log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Generate the vhdl");
62       
63        vhdl();
64      }
65#endif
66
67#ifdef SYSTEMC
68    if (_usage & USE_SYSTEMC)
69      {
70        log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Method - transition");
71
72        SC_METHOD (transition);
73        dont_initialize ();
74        sensitive << (*(in_CLOCK)).pos();
75       
76# ifdef SYSTEMCASS_SPECIFIC
77        // List dependency information
78# endif   
79
80        log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Method - genMealy");
81
82        SC_METHOD (genMealy);
83        dont_initialize ();
84        sensitive << (*(in_CLOCK)).neg();
85
86        for (uint32_t i=0; i<_param->_nb_read_unit; i++)
87          {
88            sensitive << (*(in_READ_UNIT_OUT_VAL                   [i]))
89                      << (*(in_READ_UNIT_OUT_OPERATION             [i]))
90                      << (*(in_READ_UNIT_OUT_TYPE                  [i]))
91                      << (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i]))
92                      << (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE  [i]))
93                      << (*(in_READ_UNIT_OUT_HAS_IMMEDIAT          [i]))
94                      << (*(in_READ_UNIT_OUT_IMMEDIAT              [i]))
95                      << (*(in_READ_UNIT_OUT_DATA_RA               [i]))
96                      << (*(in_READ_UNIT_OUT_DATA_RB               [i]))
97                      << (*(in_READ_UNIT_OUT_DATA_RC               [i]))
98                      << (*(in_READ_UNIT_OUT_WRITE_RD              [i]))
99                      << (*(in_READ_UNIT_OUT_NUM_REG_RD            [i]))
100                      << (*(in_READ_UNIT_OUT_WRITE_RE              [i]))
101                      << (*(in_READ_UNIT_OUT_NUM_REG_RE            [i]));
102
103            if (_param->_have_port_context_id)
104            sensitive  << (*(in_READ_UNIT_OUT_CONTEXT_ID            [i]));
105            if (_param->_have_port_front_end_id)
106            sensitive  << (*(in_READ_UNIT_OUT_FRONT_END_ID          [i]));
107            if (_param->_have_port_ooo_engine_id)
108            sensitive  << (*(in_READ_UNIT_OUT_OOO_ENGINE_ID         [i]));
109            if (_param->_have_port_packet_id)
110            sensitive  << (*(in_READ_UNIT_OUT_PACKET_ID             [i]));
111          }
112       
113        for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
114          sensitive << (*(in_EXECUTE_UNIT_IN_ACK                 [i]));
115       
116# ifdef SYSTEMCASS_SPECIFIC
117        // List dependency information
118        for (uint32_t i=0; i<_param->_nb_read_unit; i++)
119          {
120            (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_VAL           [i]));
121            (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_TYPE          [i]));
122            if (_param->_have_port_context_id)
123            (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [i]));
124            if (_param->_have_port_front_end_id)
125            (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [i]));
126            if (_param->_have_port_ooo_engine_id)
127            (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [i]));
128
129            for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
130              (*(out_READ_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_IN_ACK [j]));
131          }
132
133        for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
134          {
135            (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
136
137            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
138              {
139                (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
140                (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
141                if (_param->_have_port_context_id)
142                (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
143                if (_param->_have_port_front_end_id)
144                (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
145                if (_param->_have_port_ooo_engine_id)
146                (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
147              }
148
149            if (_param->_have_port_context_id)
150              {
151            (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
152
153            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
154              {
155                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
156                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
157                if (_param->_have_port_context_id)
158                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
159                if (_param->_have_port_front_end_id)
160                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
161                if (_param->_have_port_ooo_engine_id)
162                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
163              }
164              }
165
166            if (_param->_have_port_front_end_id)
167              {
168            (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
169
170            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
171              {
172                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
173                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
174                if (_param->_have_port_context_id)
175                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
176                if (_param->_have_port_front_end_id)
177                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
178                if (_param->_have_port_ooo_engine_id)
179                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
180              }
181              }
182
183            if (_param->_have_port_ooo_engine_id)
184              {
185            (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
186
187            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
188              {
189                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
190                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
191                if (_param->_have_port_context_id)
192                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
193                if (_param->_have_port_front_end_id)
194                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
195                if (_param->_have_port_ooo_engine_id)
196                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
197              }
198              }
199
200            if (_param->_have_port_packet_id)
201              {
202            (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
203
204            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
205              {
206                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_PACKET_ID     [j]));
207                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
208                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
209                if (_param->_have_port_context_id)
210                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
211                if (_param->_have_port_front_end_id)
212                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
213                if (_param->_have_port_ooo_engine_id)
214                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
215              }
216              }
217
218            (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
219
220            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
221              {
222                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_OPERATION     [j]));
223                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
224                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
225                if (_param->_have_port_context_id)
226                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
227                if (_param->_have_port_front_end_id)
228                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
229                if (_param->_have_port_ooo_engine_id)
230                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
231              }
232
233            (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
234
235            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
236              {
237                (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
238                (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
239                if (_param->_have_port_context_id)
240                (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
241                if (_param->_have_port_front_end_id)
242                (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
243                if (_param->_have_port_ooo_engine_id)
244                (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
245              }
246
247            (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
248
249            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
250              {
251                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [j]));
252                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_VAL                   [j]));
253                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_TYPE                  [j]));
254                if (_param->_have_port_context_id)
255                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID            [j]));
256                if (_param->_have_port_front_end_id)
257                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID          [j]));
258                if (_param->_have_port_ooo_engine_id)
259                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
260              }
261
262            (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
263
264            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
265              {
266                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [j]));
267                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_VAL                  [j]));
268                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_TYPE                 [j]));
269                if (_param->_have_port_context_id)
270                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID           [j]));
271                if (_param->_have_port_front_end_id)
272                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID         [j]));
273                if (_param->_have_port_ooo_engine_id)
274                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID        [j]));
275              }
276
277            (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
278
279            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
280              {
281                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_HAS_IMMEDIAT  [j]));
282                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
283                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
284                if (_param->_have_port_context_id)
285                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
286                if (_param->_have_port_front_end_id)
287                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
288                if (_param->_have_port_ooo_engine_id)
289                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
290              }
291
292            (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
293
294            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
295              {
296                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_IMMEDIAT      [j]));
297                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
298                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
299                if (_param->_have_port_context_id)
300                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
301                if (_param->_have_port_front_end_id)
302                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
303                if (_param->_have_port_ooo_engine_id)
304                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
305              }
306
307            (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
308
309            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
310              {
311                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_DATA_RA       [j]));
312                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
313                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
314                if (_param->_have_port_context_id)
315                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
316                if (_param->_have_port_front_end_id)
317                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
318                if (_param->_have_port_ooo_engine_id)
319                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
320              }
321
322            (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
323
324            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
325              {
326                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_DATA_RB       [j]));
327                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
328                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
329                if (_param->_have_port_context_id)
330                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
331                if (_param->_have_port_front_end_id)
332                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
333                if (_param->_have_port_ooo_engine_id)
334                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
335              }
336
337            (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
338
339            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
340              {
341                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_DATA_RC       [j]));
342                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
343                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
344                if (_param->_have_port_context_id)
345                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
346                if (_param->_have_port_front_end_id)
347                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
348                if (_param->_have_port_ooo_engine_id)
349                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
350              }
351
352            (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
353
354            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
355              {
356                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_WRITE_RD      [j]));
357                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
358                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
359                if (_param->_have_port_context_id)
360                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
361                if (_param->_have_port_front_end_id)
362                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
363                if (_param->_have_port_ooo_engine_id)
364                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
365              }
366
367            (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
368
369            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
370              {
371                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_NUM_REG_RD    [j]));
372                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
373                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
374                if (_param->_have_port_context_id)
375                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
376                if (_param->_have_port_front_end_id)
377                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
378                if (_param->_have_port_ooo_engine_id)
379                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
380              }
381
382            (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
383
384            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
385              {
386                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_WRITE_RE      [j]));
387                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
388                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
389                if (_param->_have_port_context_id)
390                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
391                if (_param->_have_port_front_end_id)
392                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
393                if (_param->_have_port_ooo_engine_id)
394                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
395              }
396
397            (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
398
399            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
400              {
401                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_NUM_REG_RE    [j]));
402                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
403                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
404                if (_param->_have_port_context_id)
405                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
406                if (_param->_have_port_front_end_id)
407                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
408                if (_param->_have_port_ooo_engine_id)
409                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
410              }
411          }
412# endif   
413       
414#endif
415      }
416    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
417  };
418   
419#undef  FUNCTION
420#define FUNCTION "Read_unit_to_Execution_unit::~Read_unit_to_Execution_unit"
421  Read_unit_to_Execution_unit::~Read_unit_to_Execution_unit (void)
422  {
423    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
424
425#ifdef STATISTICS
426    if (_usage & USE_STATISTICS)
427      {
428        log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Generate Statistics file");
429       
430        delete _stat;
431      }
432#endif
433
434    log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Deallocation");
435    deallocation ();
436
437    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
438  };
439
440}; // end namespace read_unit_to_execution_unit
441}; // end namespace network
442}; // end namespace execute_loop
443}; // end namespace multi_execute_loop
444}; // end namespace core
445
446}; // end namespace behavioural
447}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.