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 @ 78

Last change on this file since 78 was 78, checked in by rosiere, 16 years ago

Add :

  • Execute_loop (must be test systemC)
  • Prediction
    • Direction : predifined scheme
    • Branch Target Buffer
  • iFetch_unit
    • ifetch_queue
    • pc management
  • Decod_unit
    • coming soon : support for custom operation
  • Rename_unit
    • RAT
    • Free_list
    • Dependence RAW check
    • Load store unit pointer
  • New Environnement (hierarchy_memory will remove in a next version)


Modif :

  • Manage Custom Operation
  • All component in execute_loop to use the new statistics management

Not Finish :

  • Return Address Stack
  • Environnement
File size: 18.6 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_HAS_IMMEDIAT          [i]))
92                      << (*(in_READ_UNIT_OUT_IMMEDIAT              [i]))
93                      << (*(in_READ_UNIT_OUT_DATA_RA               [i]))
94                      << (*(in_READ_UNIT_OUT_DATA_RB               [i]))
95                      << (*(in_READ_UNIT_OUT_DATA_RC               [i]))
96                      << (*(in_READ_UNIT_OUT_WRITE_RD              [i]))
97                      << (*(in_READ_UNIT_OUT_NUM_REG_RD            [i]))
98                      << (*(in_READ_UNIT_OUT_WRITE_RE              [i]))
99                      << (*(in_READ_UNIT_OUT_NUM_REG_RE            [i]))
100                      << (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i]));
101
102            if (_param->_have_port_load_queue_ptr)
103            sensitive  << (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE  [i]));
104            if (_param->_have_port_context_id)
105            sensitive  << (*(in_READ_UNIT_OUT_CONTEXT_ID            [i]));
106            if (_param->_have_port_front_end_id)
107            sensitive  << (*(in_READ_UNIT_OUT_FRONT_END_ID          [i]));
108            if (_param->_have_port_ooo_engine_id)
109            sensitive  << (*(in_READ_UNIT_OUT_OOO_ENGINE_ID         [i]));
110            if (_param->_have_port_packet_id)
111            sensitive  << (*(in_READ_UNIT_OUT_PACKET_ID             [i]));
112          }
113       
114        for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
115          sensitive << (*(in_EXECUTE_UNIT_IN_ACK                 [i]));
116       
117# ifdef SYSTEMCASS_SPECIFIC
118        // List dependency information
119        for (uint32_t i=0; i<_param->_nb_read_unit; i++)
120          {
121            (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_VAL           [i]));
122            (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_TYPE          [i]));
123            if (_param->_have_port_context_id)
124            (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [i]));
125            if (_param->_have_port_front_end_id)
126            (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [i]));
127            if (_param->_have_port_ooo_engine_id)
128            (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [i]));
129
130            for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
131              (*(out_READ_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_IN_ACK [j]));
132          }
133
134        for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
135          {
136            (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
137
138            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
139              {
140                (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
141                (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
142                if (_param->_have_port_context_id)
143                (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
144                if (_param->_have_port_front_end_id)
145                (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
146                if (_param->_have_port_ooo_engine_id)
147                (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
148              }
149
150            if (_param->_have_port_context_id)
151              {
152            (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
153
154            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
155              {
156                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
157                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
158                if (_param->_have_port_context_id)
159                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
160                if (_param->_have_port_front_end_id)
161                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
162                if (_param->_have_port_ooo_engine_id)
163                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
164              }
165              }
166
167            if (_param->_have_port_front_end_id)
168              {
169            (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
170
171            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
172              {
173                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
174                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
175                if (_param->_have_port_context_id)
176                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
177                if (_param->_have_port_front_end_id)
178                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
179                if (_param->_have_port_ooo_engine_id)
180                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
181              }
182              }
183
184            if (_param->_have_port_ooo_engine_id)
185              {
186            (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
187
188            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
189              {
190                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
191                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
192                if (_param->_have_port_context_id)
193                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
194                if (_param->_have_port_front_end_id)
195                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
196                if (_param->_have_port_ooo_engine_id)
197                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
198              }
199              }
200
201            if (_param->_have_port_packet_id)
202              {
203            (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
204
205            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
206              {
207                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_PACKET_ID     [j]));
208                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
209                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
210                if (_param->_have_port_context_id)
211                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
212                if (_param->_have_port_front_end_id)
213                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
214                if (_param->_have_port_ooo_engine_id)
215                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
216              }
217              }
218
219            (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
220
221            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
222              {
223                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_OPERATION     [j]));
224                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
225                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
226                if (_param->_have_port_context_id)
227                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
228                if (_param->_have_port_front_end_id)
229                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
230                if (_param->_have_port_ooo_engine_id)
231                (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
232              }
233
234            (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
235
236            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
237              {
238                (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
239                (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
240                if (_param->_have_port_context_id)
241                (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
242                if (_param->_have_port_front_end_id)
243                (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
244                if (_param->_have_port_ooo_engine_id)
245                (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
246              }
247
248            (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
249
250            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
251              {
252                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [j]));
253                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_VAL                   [j]));
254                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_TYPE                  [j]));
255                if (_param->_have_port_context_id)
256                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID            [j]));
257                if (_param->_have_port_front_end_id)
258                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID          [j]));
259                if (_param->_have_port_ooo_engine_id)
260                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
261              }
262
263            if (_param->_have_port_load_queue_ptr)
264              {
265            (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
266
267            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
268              {
269                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [j]));
270                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_VAL                  [j]));
271                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_TYPE                 [j]));
272                if (_param->_have_port_context_id)
273                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID           [j]));
274                if (_param->_have_port_front_end_id)
275                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID         [j]));
276                if (_param->_have_port_ooo_engine_id)
277                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID        [j]));
278              }
279              }
280           
281            (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
282
283            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
284              {
285                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_HAS_IMMEDIAT  [j]));
286                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
287                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
288                if (_param->_have_port_context_id)
289                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
290                if (_param->_have_port_front_end_id)
291                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
292                if (_param->_have_port_ooo_engine_id)
293                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
294              }
295
296            (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
297
298            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
299              {
300                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_IMMEDIAT      [j]));
301                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
302                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
303                if (_param->_have_port_context_id)
304                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
305                if (_param->_have_port_front_end_id)
306                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
307                if (_param->_have_port_ooo_engine_id)
308                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
309              }
310
311            (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
312
313            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
314              {
315                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_DATA_RA       [j]));
316                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
317                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
318                if (_param->_have_port_context_id)
319                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
320                if (_param->_have_port_front_end_id)
321                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
322                if (_param->_have_port_ooo_engine_id)
323                (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
324              }
325
326            (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
327
328            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
329              {
330                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_DATA_RB       [j]));
331                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
332                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
333                if (_param->_have_port_context_id)
334                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
335                if (_param->_have_port_front_end_id)
336                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
337                if (_param->_have_port_ooo_engine_id)
338                (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
339              }
340
341            (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
342
343            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
344              {
345                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_DATA_RC       [j]));
346                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
347                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
348                if (_param->_have_port_context_id)
349                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
350                if (_param->_have_port_front_end_id)
351                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
352                if (_param->_have_port_ooo_engine_id)
353                (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
354              }
355
356            (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
357
358            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
359              {
360                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_WRITE_RD      [j]));
361                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
362                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
363                if (_param->_have_port_context_id)
364                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
365                if (_param->_have_port_front_end_id)
366                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
367                if (_param->_have_port_ooo_engine_id)
368                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
369              }
370           
371            (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
372
373            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
374              {
375                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_NUM_REG_RD    [j]));
376                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
377                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
378                if (_param->_have_port_context_id)
379                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
380                if (_param->_have_port_front_end_id)
381                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
382                if (_param->_have_port_ooo_engine_id)
383                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
384              }
385
386            (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
387
388            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
389              {
390                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_WRITE_RE      [j]));
391                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
392                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
393                if (_param->_have_port_context_id)
394                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
395                if (_param->_have_port_front_end_id)
396                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
397                if (_param->_have_port_ooo_engine_id)
398                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
399              }
400
401            (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
402
403            for (uint32_t j=0; j<_param->_nb_read_unit; j++)
404              {
405                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_NUM_REG_RE    [j]));
406                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
407                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
408                if (_param->_have_port_context_id)
409                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
410                if (_param->_have_port_front_end_id)
411                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
412                if (_param->_have_port_ooo_engine_id)
413                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
414              }
415          }
416# endif   
417       
418#endif
419      }
420    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
421  };
422   
423#undef  FUNCTION
424#define FUNCTION "Read_unit_to_Execution_unit::~Read_unit_to_Execution_unit"
425  Read_unit_to_Execution_unit::~Read_unit_to_Execution_unit (void)
426  {
427    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
428
429#ifdef STATISTICS
430    if (_usage & USE_STATISTICS)
431      {
432        log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Generate Statistics file");
433       
434        delete _stat;
435      }
436#endif
437
438    log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Deallocation");
439    deallocation ();
440
441    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
442  };
443
444}; // end namespace read_unit_to_execution_unit
445}; // end namespace network
446}; // end namespace execute_loop
447}; // end namespace multi_execute_loop
448}; // end namespace core
449
450}; // end namespace behavioural
451}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.