source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_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: 17.4 KB
Line 
1/*
2 * $Id: Execution_unit_to_Write_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/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h"
9
10namespace morpheo                    {
11namespace behavioural {
12namespace core {
13namespace multi_execute_loop {
14namespace execute_loop {
15namespace network {
16namespace execution_unit_to_write_unit {
17
18
19#undef  FUNCTION
20#define FUNCTION "Execution_unit_to_Write_unit::Execution_unit_to_Write_unit"
21  Execution_unit_to_Write_unit::Execution_unit_to_Write_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::execution_unit_to_write_unit::Parameters * param,
32   morpheo::behavioural::Tusage_t usage
33   ):
34    _name              (name)
35    ,_param            (param)
36    ,_usage            (usage)
37  {
38    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,_("<%s> Begin"),_name.c_str());
39
40// #if DEBUG_Execution_unit_to_Write_unit == true
41//     log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
42
43//     std::cout << *param << std::endl;
44// #endif   
45
46    log_printf(INFO,Execution_unit_to_Write_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,Execution_unit_to_Write_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,Execution_unit_to_Write_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,Execution_unit_to_Write_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,Execution_unit_to_Write_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        for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
93          for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++)
94            {
95              if (_param->_have_port_context_id)
96              sensitive << (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [i][j]));
97              if (_param->_have_port_front_end_id)
98              sensitive << (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [i][j]));
99              if (_param->_have_port_ooo_engine_id)
100              sensitive << (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [i][j]));
101              if (_param->_have_port_rob_ptr  )
102              sensitive << (*(in_EXECUTE_UNIT_OUT_PACKET_ID     [i][j]));
103             
104              sensitive << (*(in_EXECUTE_UNIT_OUT_VAL           [i][j]))
105                      //<< (*(in_EXECUTE_UNIT_OUT_OPERATION     [i][j]))
106                      //<< (*(in_EXECUTE_UNIT_OUT_TYPE          [i][j]))
107                        << (*(in_EXECUTE_UNIT_OUT_CANCEL        [i][j]))
108                        << (*(in_EXECUTE_UNIT_OUT_WRITE_RD      [i][j]))
109                        << (*(in_EXECUTE_UNIT_OUT_NUM_REG_RD    [i][j]))
110                        << (*(in_EXECUTE_UNIT_OUT_DATA_RD       [i][j]))
111                        << (*(in_EXECUTE_UNIT_OUT_WRITE_RE      [i][j]))
112                        << (*(in_EXECUTE_UNIT_OUT_NUM_REG_RE    [i][j]))
113                        << (*(in_EXECUTE_UNIT_OUT_DATA_RE       [i][j]))
114                        << (*(in_EXECUTE_UNIT_OUT_EXCEPTION     [i][j]))
115                        << (*(in_EXECUTE_UNIT_OUT_NO_SEQUENCE   [i][j]))
116                        << (*(in_EXECUTE_UNIT_OUT_ADDRESS       [i][j]));
117            }
118        for (uint32_t i=0; i<_param->_nb_write_unit; i++)
119          sensitive << (*(in_WRITE_UNIT_IN_ACK [i]));
120
121# ifdef SYSTEMCASS_SPECIFIC
122        // List dependency information
123        for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
124          for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++)
125            {
126              (*(out_EXECUTE_UNIT_OUT_ACK [i][j])) (*(in_EXECUTE_UNIT_OUT_VAL           [i][j]));
127              if (_param->_have_port_context_id)
128              (*(out_EXECUTE_UNIT_OUT_ACK [i][j])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [i][j]));
129              if (_param->_have_port_front_end_id)
130              (*(out_EXECUTE_UNIT_OUT_ACK [i][j])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [i][j]));
131              if (_param->_have_port_ooo_engine_id)
132              (*(out_EXECUTE_UNIT_OUT_ACK [i][j])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [i][j]));
133
134              for (uint32_t x=0; x<_param->_nb_write_unit; x++)
135                (*(out_EXECUTE_UNIT_OUT_ACK [i][j])) (*(in_WRITE_UNIT_IN_ACK [x])); 
136            }
137
138        for (uint32_t i=0; i<_param->_nb_write_unit; i++)
139          {
140            (*(out_WRITE_UNIT_IN_VAL [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
141            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
142              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
143              {
144                (*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
145                if (_param->_have_port_context_id)
146                (*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
147                if (_param->_have_port_front_end_id)
148                (*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
149                if (_param->_have_port_ooo_engine_id)
150                (*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
151              }
152
153            if (_param->_have_port_context_id)
154              {
155            (*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
156            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
157              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
158              {
159                (*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
160                if (_param->_have_port_context_id)
161                (*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
162                if (_param->_have_port_front_end_id)
163                (*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
164                if (_param->_have_port_ooo_engine_id)
165                (*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
166              }
167              }
168            if (_param->_have_port_front_end_id)
169              {
170            (*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
171            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
172              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
173              {
174                (*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
175                if (_param->_have_port_context_id)
176                (*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
177                if (_param->_have_port_front_end_id)
178                (*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
179                if (_param->_have_port_ooo_engine_id)
180                (*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
181              }
182              }
183            if (_param->_have_port_ooo_engine_id)
184              {
185            (*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
186            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
187              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
188              {
189                (*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
190                if (_param->_have_port_context_id)
191                (*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
192                if (_param->_have_port_front_end_id)
193                (*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
194                if (_param->_have_port_ooo_engine_id)
195                (*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
196              }
197              }
198
199            if (_param->_have_port_rob_ptr  )
200              {
201            (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
202            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
203              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
204              {
205                (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_PACKET_ID [x][y]));
206                (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
207                if (_param->_have_port_context_id)
208                (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
209                if (_param->_have_port_front_end_id)
210                (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
211                if (_param->_have_port_ooo_engine_id)
212                (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
213              }
214              }
215
216//          (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
217//          for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
218//            for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
219//            {
220//              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_OPERATION [x][y]));
221//              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
222//              if (_param->_have_port_context_id)
223//              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
224//              if (_param->_have_port_front_end_id)
225//              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
226//              if (_param->_have_port_ooo_engine_id)
227//              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
228//            }
229
230//          (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
231//          for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
232//            for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
233//            {
234//              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_TYPE [x][y]));
235//              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
236//              if (_param->_have_port_context_id)
237//              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
238//              if (_param->_have_port_front_end_id)
239//              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
240//              if (_param->_have_port_ooo_engine_id)
241//              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
242//            }
243
244            (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
245            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
246              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
247              {
248                (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_WRITE_RD [x][y]));
249                (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
250                if (_param->_have_port_context_id)
251                (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
252                if (_param->_have_port_front_end_id)
253                (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
254                if (_param->_have_port_ooo_engine_id)
255                (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
256              }
257
258            (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
259            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
260              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
261              {
262                (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_NUM_REG_RD [x][y]));
263                (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
264                if (_param->_have_port_context_id)
265                (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
266                if (_param->_have_port_front_end_id)
267                (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
268                if (_param->_have_port_ooo_engine_id)
269                (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
270              }
271
272            (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
273            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
274              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
275              {
276                (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_DATA_RD [x][y]));
277                (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
278                if (_param->_have_port_context_id)
279                (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
280                if (_param->_have_port_front_end_id)
281                (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
282                if (_param->_have_port_ooo_engine_id)
283                (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
284              }
285
286            (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
287            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
288              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
289              {
290                (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_WRITE_RE [x][y]));
291                (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
292                if (_param->_have_port_context_id)
293                (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
294                if (_param->_have_port_front_end_id)
295                (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
296                if (_param->_have_port_ooo_engine_id)
297                (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
298              }
299
300            (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
301            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
302              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
303              {
304                (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_NUM_REG_RE [x][y]));
305                (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
306                if (_param->_have_port_context_id)
307                (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
308                if (_param->_have_port_front_end_id)
309                (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
310                if (_param->_have_port_ooo_engine_id)
311                (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
312              }
313
314            (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
315            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
316              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
317              {
318                (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_DATA_RE [x][y]));
319                (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
320                if (_param->_have_port_context_id)
321                (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
322                if (_param->_have_port_front_end_id)
323                (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
324                if (_param->_have_port_ooo_engine_id)
325                (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
326              }
327
328            (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
329            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
330              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
331              {
332                (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_EXCEPTION [x][y]));
333                (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
334                if (_param->_have_port_context_id)
335                (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
336                if (_param->_have_port_front_end_id)
337                (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
338                if (_param->_have_port_ooo_engine_id)
339                (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
340              }
341
342            (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
343            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
344              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
345              {
346                (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_NO_SEQUENCE [x][y]));
347                (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
348                if (_param->_have_port_context_id)
349                (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
350                if (_param->_have_port_front_end_id)
351                (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
352                if (_param->_have_port_ooo_engine_id)
353                (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
354              }
355
356            (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
357            for (uint32_t x=0; x<_param->_nb_execute_unit; x++)
358              for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++)
359              {
360                (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_ADDRESS [x][y]));
361                (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [x][y]));
362                if (_param->_have_port_context_id)
363                (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
364                if (_param->_have_port_front_end_id)
365                (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
366                if (_param->_have_port_ooo_engine_id)
367                (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
368              }
369          }
370# endif   
371       
372#endif
373      }
374    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,_("<%s> End"),_name.c_str());
375  };
376   
377#undef  FUNCTION
378#define FUNCTION "Execution_unit_to_Write_unit::~Execution_unit_to_Write_unit"
379  Execution_unit_to_Write_unit::~Execution_unit_to_Write_unit (void)
380  {
381    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,_("<%s> Begin"),_name.c_str());
382
383#ifdef STATISTICS
384    if (usage_is_set(_usage,USE_STATISTICS))
385      {
386        log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,_("<%s> Generate Statistics file"),_name.c_str());
387       
388        delete _stat;
389      }
390#endif
391
392    log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,_("<%s> Deallocation"),_name.c_str());
393    deallocation ();
394
395    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,_("<%s> End"),_name.c_str());
396  };
397
398}; // end namespace execution_unit_to_write_unit
399}; // end namespace network
400}; // end namespace execute_loop
401}; // end namespace multi_execute_loop
402}; // end namespace core
403
404}; // end namespace behavioural
405}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.