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