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

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

1) Fix performance
2) add auto generation to SPECINT2000
3) add reset in genMoore and genMealy

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