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

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

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

  • Property svn:keywords set to Id
File size: 21.4 KB
Line 
1/*
2 * $Id: Read_unit_to_Execution_unit.cpp 136 2009-10-20 18:52:15Z rosiere $
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,_("<%s> Begin"),_name.c_str());
39
40// #if DEBUG_Read_unit_to_Execution_unit == true
41//     log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
42
43//     std::cout << *param << std::endl;
44// #endif   
45
46    log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Allocation"),_name.c_str());
47
48    allocation (
49#ifdef STATISTICS
50                param_statistics
51#endif
52                );
53
54#ifdef STATISTICS
55    if (usage_is_set(_usage,USE_STATISTICS))
56      { 
57        log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Allocation of statistics"),_name.c_str());
58
59        statistics_declaration(param_statistics);
60      }
61#endif
62
63#ifdef VHDL
64    if (usage_is_set(_usage,USE_VHDL))
65      {
66        // generate the vhdl
67        log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Generate the vhdl"),_name.c_str());
68       
69        vhdl();
70      }
71#endif
72
73#ifdef SYSTEMC
74    if (usage_is_set(_usage,USE_SYSTEMC))
75      {
76        log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Method - transition"),_name.c_str());
77
78        SC_METHOD (transition);
79        dont_initialize ();
80        sensitive << (*(in_CLOCK)).pos();
81       
82# ifdef SYSTEMCASS_SPECIFIC
83        // List dependency information
84# endif   
85
86        log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Method - genMealy"),_name.c_str());
87
88        SC_METHOD (genMealy);
89        dont_initialize ();
90        sensitive << (*(in_CLOCK)).neg()
91                  << (*(in_NRESET));
92
93        for (uint32_t i=0; i<_param->_nb_read_unit; i++)
94          for (uint32_t j=0; j<_param->_nb_read_unit_port[i]; j++)
95            {
96              sensitive << (*(in_READ_UNIT_OUT_VAL                   [i][j]))
97                        << (*(in_READ_UNIT_OUT_OPERATION             [i][j]))
98                        << (*(in_READ_UNIT_OUT_TYPE                  [i][j]))
99                        << (*(in_READ_UNIT_OUT_CANCEL                [i][j]))
100                        << (*(in_READ_UNIT_OUT_HAS_IMMEDIAT          [i][j]))
101                        << (*(in_READ_UNIT_OUT_IMMEDIAT              [i][j]))
102                        << (*(in_READ_UNIT_OUT_DATA_RA               [i][j]))
103                        << (*(in_READ_UNIT_OUT_DATA_RB               [i][j]))
104                        << (*(in_READ_UNIT_OUT_DATA_RC               [i][j]))
105                        << (*(in_READ_UNIT_OUT_WRITE_RD              [i][j]))
106                        << (*(in_READ_UNIT_OUT_NUM_REG_RD            [i][j]))
107                        << (*(in_READ_UNIT_OUT_WRITE_RE              [i][j]))
108                        << (*(in_READ_UNIT_OUT_NUM_REG_RE            [i][j]))
109                        << (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i][j]))
110                        << (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_READ  [i][j]))
111                        << (*(in_READ_UNIT_OUT_STORE_QUEUE_EMPTY     [i][j]));
112
113              if (_param->_have_port_load_queue_ptr)
114              sensitive  << (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE  [i][j]));
115              if (_param->_have_port_context_id)
116              sensitive  << (*(in_READ_UNIT_OUT_CONTEXT_ID            [i][j]));
117              if (_param->_have_port_front_end_id)
118              sensitive  << (*(in_READ_UNIT_OUT_FRONT_END_ID          [i][j]));
119              if (_param->_have_port_ooo_engine_id)
120              sensitive  << (*(in_READ_UNIT_OUT_OOO_ENGINE_ID         [i][j]));
121              if (_param->_have_port_rob_ptr  )
122              sensitive  << (*(in_READ_UNIT_OUT_PACKET_ID             [i][j]));
123            }
124       
125        for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
126          for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++)
127            sensitive << (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
128       
129# ifdef SYSTEMCASS_SPECIFIC
130        // List dependency information
131        for (uint32_t i=0; i<_param->_nb_read_unit; i++)
132          for (uint32_t j=0; j<_param->_nb_read_unit_port[i]; j++)
133          {
134            (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_VAL           [i][j]));
135            (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_TYPE          [i][j]));
136            if (_param->_have_port_context_id)
137            (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [i][j]));
138            if (_param->_have_port_front_end_id)
139            (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [i][j]));
140            if (_param->_have_port_ooo_engine_id)
141            (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [i][j]));
142
143            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
144              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
145              (*(out_READ_UNIT_OUT_ACK [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [x][y]));
146          }
147
148        for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
149          for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++)
150          {
151            (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
152
153            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
154              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
155              {
156                (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
157                (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
158                if (_param->_have_port_context_id)
159                (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
160                if (_param->_have_port_front_end_id)
161                (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
162                if (_param->_have_port_ooo_engine_id)
163                (*(out_EXECUTE_UNIT_IN_VAL [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
164              }
165
166            if (_param->_have_port_context_id)
167              {
168            (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
169
170            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
171              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
172              {
173                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
174                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
175                if (_param->_have_port_context_id)
176                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
177                if (_param->_have_port_front_end_id)
178                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
179                if (_param->_have_port_ooo_engine_id)
180                (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
181              }
182              }
183
184            if (_param->_have_port_front_end_id)
185              {
186            (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
187
188            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
189              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
190              {
191                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
192                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
193                if (_param->_have_port_context_id)
194                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
195                if (_param->_have_port_front_end_id)
196                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
197                if (_param->_have_port_ooo_engine_id)
198                (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
199              }
200              }
201
202            if (_param->_have_port_ooo_engine_id)
203              {
204            (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
205
206            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
207              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
208              {
209                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
210                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
211                if (_param->_have_port_context_id)
212                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
213                if (_param->_have_port_front_end_id)
214                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
215                if (_param->_have_port_ooo_engine_id)
216                (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
217              }
218              }
219
220            if (_param->_have_port_rob_ptr  )
221              {
222            (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
223
224            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
225              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
226              {
227                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_PACKET_ID     [x][y]));
228                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
229                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
230                if (_param->_have_port_context_id)
231                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
232                if (_param->_have_port_front_end_id)
233                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
234                if (_param->_have_port_ooo_engine_id)
235                (*(out_EXECUTE_UNIT_IN_PACKET_ID [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
236              }
237              }
238
239            (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
240
241            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
242              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
243              {
244                (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_OPERATION     [x][y]));
245                (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
246                (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
247                if (_param->_have_port_context_id)
248                (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
249                if (_param->_have_port_front_end_id)
250                (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
251                if (_param->_have_port_ooo_engine_id)
252                (*(out_EXECUTE_UNIT_IN_OPERATION [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
253              }
254
255            (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
256
257            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
258              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
259              {
260                (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
261                (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
262                if (_param->_have_port_context_id)
263                (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
264                if (_param->_have_port_front_end_id)
265                (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
266                if (_param->_have_port_ooo_engine_id)
267                (*(out_EXECUTE_UNIT_IN_TYPE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
268              }
269
270            (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
271
272            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
273              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
274              {
275                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [x][y]));
276                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_VAL                   [x][y]));
277                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_TYPE                  [x][y]));
278                if (_param->_have_port_context_id)
279                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID            [x][y]));
280                if (_param->_have_port_front_end_id)
281                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID          [x][y]));
282                if (_param->_have_port_ooo_engine_id)
283                (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
284              }
285
286            if (_param->_have_port_load_queue_ptr)
287              {
288            (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
289
290            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
291              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
292              {
293                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [x][y]));
294                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_VAL                  [x][y]));
295                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_TYPE                 [x][y]));
296                if (_param->_have_port_context_id)
297                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID           [x][y]));
298                if (_param->_have_port_front_end_id)
299                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID         [x][y]));
300                if (_param->_have_port_ooo_engine_id)
301                (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID        [x][y]));
302              }
303              }
304           
305            (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
306
307            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
308              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
309              {
310                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_HAS_IMMEDIAT  [x][y]));
311                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
312                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
313                if (_param->_have_port_context_id)
314                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
315                if (_param->_have_port_front_end_id)
316                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
317                if (_param->_have_port_ooo_engine_id)
318                (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
319              }
320
321            (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
322
323            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
324              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
325              {
326                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_IMMEDIAT      [x][y]));
327                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
328                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
329                if (_param->_have_port_context_id)
330                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
331                if (_param->_have_port_front_end_id)
332                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
333                if (_param->_have_port_ooo_engine_id)
334                (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
335              }
336
337            (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
338
339            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
340              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
341              {
342                (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_DATA_RA       [x][y]));
343                (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
344                (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
345                if (_param->_have_port_context_id)
346                (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
347                if (_param->_have_port_front_end_id)
348                (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
349                if (_param->_have_port_ooo_engine_id)
350                (*(out_EXECUTE_UNIT_IN_DATA_RA [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
351              }
352
353            (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
354
355            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
356              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
357              {
358                (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_DATA_RB       [x][y]));
359                (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
360                (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
361                if (_param->_have_port_context_id)
362                (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
363                if (_param->_have_port_front_end_id)
364                (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
365                if (_param->_have_port_ooo_engine_id)
366                (*(out_EXECUTE_UNIT_IN_DATA_RB [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
367              }
368
369            (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
370
371            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
372              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
373              {
374                (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_DATA_RC       [x][y]));
375                (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
376                (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
377                if (_param->_have_port_context_id)
378                (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
379                if (_param->_have_port_front_end_id)
380                (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
381                if (_param->_have_port_ooo_engine_id)
382                (*(out_EXECUTE_UNIT_IN_DATA_RC [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
383              }
384
385            (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
386
387            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
388              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
389              {
390                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_WRITE_RD      [x][y]));
391                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
392                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
393                if (_param->_have_port_context_id)
394                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
395                if (_param->_have_port_front_end_id)
396                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
397                if (_param->_have_port_ooo_engine_id)
398                (*(out_EXECUTE_UNIT_IN_WRITE_RD [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
399              }
400           
401            (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
402
403            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
404              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
405              {
406                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_NUM_REG_RD    [x][y]));
407                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
408                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
409                if (_param->_have_port_context_id)
410                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
411                if (_param->_have_port_front_end_id)
412                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
413                if (_param->_have_port_ooo_engine_id)
414                (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
415              }
416
417            (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
418
419            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
420              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
421              {
422                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_WRITE_RE      [x][y]));
423                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
424                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
425                if (_param->_have_port_context_id)
426                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
427                if (_param->_have_port_front_end_id)
428                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
429                if (_param->_have_port_ooo_engine_id)
430                (*(out_EXECUTE_UNIT_IN_WRITE_RE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
431              }
432
433            (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_EXECUTE_UNIT_IN_ACK [i][j]));
434
435            for (uint32_t x=0; x<_param->_nb_read_unit; x++)
436              for (uint32_t y=0; y<_param->_nb_read_unit_port[x]; y++)
437              {
438                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_NUM_REG_RE    [x][y]));
439                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_VAL           [x][y]));
440                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_TYPE          [x][y]));
441                if (_param->_have_port_context_id)
442                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [x][y]));
443                if (_param->_have_port_front_end_id)
444                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [x][y]));
445                if (_param->_have_port_ooo_engine_id)
446                (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [x][y]));
447              }
448          }
449# endif   
450       
451#endif
452      }
453    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,_("<%s> End"),_name.c_str());
454  };
455   
456#undef  FUNCTION
457#define FUNCTION "Read_unit_to_Execution_unit::~Read_unit_to_Execution_unit"
458  Read_unit_to_Execution_unit::~Read_unit_to_Execution_unit (void)
459  {
460    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Begin"),_name.c_str());
461
462#ifdef STATISTICS
463    if (usage_is_set(_usage,USE_STATISTICS))
464      {
465        log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Generate Statistics file"),_name.c_str());
466       
467        delete _stat;
468      }
469#endif
470
471    log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,_("<%s> Deallocation"),_name.c_str());
472    deallocation ();
473
474    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,_("<%s> End"),_name.c_str());
475  };
476
477}; // end namespace read_unit_to_execution_unit
478}; // end namespace network
479}; // end namespace execute_loop
480}; // end namespace multi_execute_loop
481}; // end namespace core
482
483}; // end namespace behavioural
484}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.