Ignore:
Timestamp:
Dec 10, 2008, 7:31:39 PM (15 years ago)
Author:
rosiere
Message:

Almost complete design
with Test and test platform

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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

    r81 r88  
    3838    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
    3939
     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
    4046    log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Allocation");
    4147
     
    4753
    4854#ifdef STATISTICS
    49     if (_usage & USE_STATISTICS)
     55    if (usage_is_set(_usage,USE_STATISTICS))
    5056      {
    5157        log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Allocation of statistics");
     
    5662
    5763#ifdef VHDL
    58     if (_usage & USE_VHDL)
     64    if (usage_is_set(_usage,USE_VHDL))
    5965      {
    6066        // generate the vhdl
     
    6672
    6773#ifdef SYSTEMC
    68     if (_usage & USE_SYSTEMC)
     74    if (usage_is_set(_usage,USE_SYSTEMC))
    6975      {
    7076        log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Method - transition");
     
    8490        sensitive << (*(in_CLOCK)).pos();
    8591        for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
    86           {
    87             if (_param->_have_port_context_id)
    88             sensitive << (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [i]));
    89             if (_param->_have_port_front_end_id)
    90             sensitive << (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [i]));
    91             if (_param->_have_port_ooo_engine_id)
    92             sensitive << (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [i]));
    93             if (_param->_have_port_packet_id)
    94             sensitive << (*(in_EXECUTE_UNIT_OUT_PACKET_ID     [i]));
    95 
    96             sensitive << (*(in_EXECUTE_UNIT_OUT_VAL           [i]))
    97                     //<< (*(in_EXECUTE_UNIT_OUT_OPERATION     [i]))
    98                     //<< (*(in_EXECUTE_UNIT_OUT_TYPE          [i]))
    99                       << (*(in_EXECUTE_UNIT_OUT_WRITE_RD      [i]))
    100                       << (*(in_EXECUTE_UNIT_OUT_NUM_REG_RD    [i]))
    101                       << (*(in_EXECUTE_UNIT_OUT_DATA_RD       [i]))
    102                       << (*(in_EXECUTE_UNIT_OUT_WRITE_RE      [i]))
    103                       << (*(in_EXECUTE_UNIT_OUT_NUM_REG_RE    [i]))
    104                       << (*(in_EXECUTE_UNIT_OUT_DATA_RE       [i]))
    105                       << (*(in_EXECUTE_UNIT_OUT_EXCEPTION     [i]))
    106                       << (*(in_EXECUTE_UNIT_OUT_NO_SEQUENCE   [i]))
    107                       << (*(in_EXECUTE_UNIT_OUT_ADDRESS       [i]));
    108           }
     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            }
    109116        for (uint32_t i=0; i<_param->_nb_write_unit; i++)
    110117          sensitive << (*(in_WRITE_UNIT_IN_ACK [i]));
     
    113120        // List dependency information
    114121        for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
    115           {
    116             (*(out_EXECUTE_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [i]));
    117             if (_param->_have_port_context_id)
    118             (*(out_EXECUTE_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [i]));
    119             if (_param->_have_port_front_end_id)
    120             (*(out_EXECUTE_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [i]));
    121             if (_param->_have_port_ooo_engine_id)
    122             (*(out_EXECUTE_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [i]));
    123 
    124             for (uint32_t j=0; j<_param->_nb_write_unit; j++)
    125               (*(out_EXECUTE_UNIT_OUT_ACK [i])) (*(in_WRITE_UNIT_IN_ACK [j]));
    126           }
     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            }
    127135
    128136        for (uint32_t i=0; i<_param->_nb_write_unit; i++)
    129137          {
    130138            (*(out_WRITE_UNIT_IN_VAL [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    131             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    132               {
    133                 (*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    134                 if (_param->_have_port_context_id)
    135                 (*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    136                 if (_param->_have_port_front_end_id)
    137                 (*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    138                 if (_param->_have_port_ooo_engine_id)
    139                 (*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    140149              }
    141150
     
    143152              {
    144153            (*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    145             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    146               {
    147                 (*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    148                 if (_param->_have_port_context_id)
    149                 (*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    150                 if (_param->_have_port_front_end_id)
    151                 (*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    152                 if (_param->_have_port_ooo_engine_id)
    153                 (*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    154164              }
    155165              }
     
    157167              {
    158168            (*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    159             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    160               {
    161                 (*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    162                 if (_param->_have_port_context_id)
    163                 (*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    164                 if (_param->_have_port_front_end_id)
    165                 (*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    166                 if (_param->_have_port_ooo_engine_id)
    167                 (*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    168179              }
    169180              }
     
    171182              {
    172183            (*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    173             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    174               {
    175                 (*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    176                 if (_param->_have_port_context_id)
    177                 (*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    178                 if (_param->_have_port_front_end_id)
    179                 (*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    180                 if (_param->_have_port_ooo_engine_id)
    181                 (*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
    182               }
    183               }
    184 
    185             if (_param->_have_port_packet_id)
     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  )
    186198              {
    187199            (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    188             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    189               {
    190                 (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_PACKET_ID [j]));
    191                 (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    192                 if (_param->_have_port_context_id)
    193                 (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    194                 if (_param->_have_port_front_end_id)
    195                 (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    196                 if (_param->_have_port_ooo_engine_id)
    197                 (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    198211              }
    199212              }
    200213
    201214//          (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    202 //          for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
     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++)
    203217//            {
    204 //              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_OPERATION [j]));
    205 //              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
     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]));
    206220//              if (_param->_have_port_context_id)
    207 //              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
     221//              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
    208222//              if (_param->_have_port_front_end_id)
    209 //              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
     223//              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
    210224//              if (_param->_have_port_ooo_engine_id)
    211 //              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     225//              (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
    212226//            }
    213227
    214228//          (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    215 //          for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
     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++)
    216231//            {
    217 //              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_TYPE [j]));
    218 //              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
     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]));
    219234//              if (_param->_have_port_context_id)
    220 //              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
     235//              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [x][y]));
    221236//              if (_param->_have_port_front_end_id)
    222 //              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
     237//              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [x][y]));
    223238//              if (_param->_have_port_ooo_engine_id)
    224 //              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     239//              (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [x][y]));
    225240//            }
    226241
    227242            (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    228             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    229               {
    230                 (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_WRITE_RD [j]));
    231                 (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    232                 if (_param->_have_port_context_id)
    233                 (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    234                 if (_param->_have_port_front_end_id)
    235                 (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    236                 if (_param->_have_port_ooo_engine_id)
    237                 (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    238254              }
    239255
    240256            (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    241             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    242               {
    243                 (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_NUM_REG_RD [j]));
    244                 (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    245                 if (_param->_have_port_context_id)
    246                 (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    247                 if (_param->_have_port_front_end_id)
    248                 (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    249                 if (_param->_have_port_ooo_engine_id)
    250                 (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    251268              }
    252269
    253270            (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    254             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    255               {
    256                 (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_DATA_RD [j]));
    257                 (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    258                 if (_param->_have_port_context_id)
    259                 (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    260                 if (_param->_have_port_front_end_id)
    261                 (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    262                 if (_param->_have_port_ooo_engine_id)
    263                 (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    264282              }
    265283
    266284            (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    267             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    268               {
    269                 (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_WRITE_RE [j]));
    270                 (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    271                 if (_param->_have_port_context_id)
    272                 (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    273                 if (_param->_have_port_front_end_id)
    274                 (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    275                 if (_param->_have_port_ooo_engine_id)
    276                 (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    277296              }
    278297
    279298            (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    280             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    281               {
    282                 (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_NUM_REG_RE [j]));
    283                 (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    284                 if (_param->_have_port_context_id)
    285                 (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    286                 if (_param->_have_port_front_end_id)
    287                 (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    288                 if (_param->_have_port_ooo_engine_id)
    289                 (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    290310              }
    291311
    292312            (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    293             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    294               {
    295                 (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_DATA_RE [j]));
    296                 (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    297                 if (_param->_have_port_context_id)
    298                 (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    299                 if (_param->_have_port_front_end_id)
    300                 (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    301                 if (_param->_have_port_ooo_engine_id)
    302                 (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    303324              }
    304325
    305326            (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    306             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    307               {
    308                 (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_EXCEPTION [j]));
    309                 (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    310                 if (_param->_have_port_context_id)
    311                 (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    312                 if (_param->_have_port_front_end_id)
    313                 (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    314                 if (_param->_have_port_ooo_engine_id)
    315                 (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    316338              }
    317339
    318340            (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    319             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    320               {
    321                 (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_NO_SEQUENCE [j]));
    322                 (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    323                 if (_param->_have_port_context_id)
    324                 (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    325                 if (_param->_have_port_front_end_id)
    326                 (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    327                 if (_param->_have_port_ooo_engine_id)
    328                 (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
     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]));
    329352              }
    330353
    331354            (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_WRITE_UNIT_IN_ACK [i]));
    332             for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
    333               {
    334                 (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_ADDRESS [j]));
    335                 (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
    336                 if (_param->_have_port_context_id)
    337                 (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
    338                 if (_param->_have_port_front_end_id)
    339                 (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
    340                 if (_param->_have_port_ooo_engine_id)
    341                 (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
    342               }
    343 
     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              }
    344367          }
    345368# endif   
     
    357380
    358381#ifdef STATISTICS
    359     if (_usage & USE_STATISTICS)
     382    if (usage_is_set(_usage,USE_STATISTICS))
    360383      {
    361384        log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Generate Statistics file");
Note: See TracChangeset for help on using the changeset viewer.