Ignore:
Timestamp:
Dec 4, 2007, 1:26:55 PM (17 years ago)
Author:
rosiere
Message:

register_unit_glue : separation des fonctions - evite les cycles dans le graph de dependances des ports i/o

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp

    r60 r61  
    6666    PORT_WRITE(out_CONST_1 ,1);
    6767
    68 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    69 
    7068    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - transition");
    7169
     
    7371    dont_initialize ();
    7472    sensitive_pos << *(in_CLOCK);
    75 //#endif
    7673
    7774#ifdef SYSTEMCASS_SPECIFIC
     
    8380    SC_METHOD (genMealy_gpr_read);
    8481    dont_initialize ();
    85     sensitive_neg << *(in_CLOCK);
     82//     sensitive_neg << *(in_CLOCK);
    8683    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
    8784      {
    88         sensitive << *(in_GPR_READ_VAL           [j]);
    8985        if (_param->_have_port_ooo_engine_id == true)
    9086          sensitive << *(in_GPR_READ_OOO_ENGINE_ID [j]);
     
    9692                    << *(in_GPR_READ_STATUS_DATA_VAL   [i][j]);
    9793      }
    98 //#endif
    9994
    10095#ifdef SYSTEMCASS_SPECIFIC
     
    114109            (*(out_GPR_READ_DATA                 [j])) (*( in_GPR_READ_REGISTERFILE_DATA [i][j]));
    115110            (*(out_GPR_READ_DATA_VAL             [j])) (*( in_GPR_READ_STATUS_DATA_VAL   [i][j]));     
    116 
     111          }
     112      }
     113#endif   
     114
     115    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_read_status");
     116
     117    SC_METHOD (genMealy_gpr_read_status);
     118    dont_initialize ();
     119//     sensitive_neg << *(in_CLOCK);
     120    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
     121      {
     122        sensitive << *(in_GPR_READ_VAL           [j]);
     123        if (_param->_have_port_ooo_engine_id == true)
     124          sensitive << *(in_GPR_READ_OOO_ENGINE_ID [j]);
     125
     126        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     127          sensitive << *(in_GPR_READ_REGISTERFILE_ACK  [i][j]);
     128      }
     129
     130#ifdef SYSTEMCASS_SPECIFIC
     131    // List dependency information
     132    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
     133      {
     134        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     135          {
     136            (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_VAL                  [j]));
     137            (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_REGISTERFILE_ACK  [i][j]));
     138            if (_param->_have_port_ooo_engine_id == true)
     139            (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_OOO_ENGINE_ID        [j]));
     140          }
     141      }
     142#endif   
     143
     144    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_read_registerfile");
     145
     146    SC_METHOD (genMealy_gpr_read_registerfile);
     147    dont_initialize ();
     148//     sensitive_neg << *(in_CLOCK);
     149    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
     150      {
     151        sensitive << *(in_GPR_READ_VAL           [j]);
     152        if (_param->_have_port_ooo_engine_id == true)
     153          sensitive << *(in_GPR_READ_OOO_ENGINE_ID [j]);
     154
     155        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     156          sensitive << *(in_GPR_READ_STATUS_ACK        [i][j]);
     157      }
     158
     159#ifdef SYSTEMCASS_SPECIFIC
     160    // List dependency information
     161    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
     162      {
     163        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     164          {
    117165            (*(out_GPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_GPR_READ_VAL                  [j]));
    118166            (*(out_GPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_GPR_READ_STATUS_ACK        [i][j]));
    119167            if (_param->_have_port_ooo_engine_id == true)
    120168            (*(out_GPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_GPR_READ_OOO_ENGINE_ID        [j]));
    121 
    122             (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_VAL                  [j]));
    123             (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_REGISTERFILE_ACK  [i][j]));
    124             if (_param->_have_port_ooo_engine_id == true)
    125             (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_OOO_ENGINE_ID        [j]));
    126169          }
    127170      }
     
    132175    SC_METHOD (genMealy_gpr_write);
    133176    dont_initialize ();
    134     sensitive_neg << *(in_CLOCK);
     177//     sensitive_neg << *(in_CLOCK);
    135178    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
    136179      {
    137         sensitive << *(in_GPR_WRITE_VAL           [j]);
    138180        if (_param->_have_port_ooo_engine_id == true)
    139181          sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [j]);
     
    143185                    << *(in_GPR_WRITE_STATUS_ACK        [i][j]);
    144186      }
    145 //#endif
    146187
    147188#ifdef SYSTEMCASS_SPECIFIC
     
    156197            (*(out_GPR_WRITE_ACK                  [j])) (*( in_GPR_WRITE_REGISTERFILE_ACK  [i][j]));
    157198            (*(out_GPR_WRITE_ACK                  [j])) (*( in_GPR_WRITE_STATUS_ACK        [i][j]));
    158 
     199          }
     200      }
     201#endif   
     202
     203    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_write_status");
     204
     205    SC_METHOD (genMealy_gpr_write_status);
     206    dont_initialize ();
     207//     sensitive_neg << *(in_CLOCK);
     208    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
     209      {
     210        sensitive << *(in_GPR_WRITE_VAL           [j]);
     211        if (_param->_have_port_ooo_engine_id == true)
     212          sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [j]);
     213
     214        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     215          sensitive << *(in_GPR_WRITE_REGISTERFILE_ACK  [i][j]);
     216      }
     217
     218#ifdef SYSTEMCASS_SPECIFIC
     219    // List dependency information
     220    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
     221      {
     222        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     223          {
     224            (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_VAL                  [j]));
     225            (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_REGISTERFILE_ACK  [i][j]));
     226            if (_param->_have_port_ooo_engine_id == true)
     227            (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_OOO_ENGINE_ID        [j]));
     228          }
     229      }
     230#endif   
     231
     232    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_write_registerfile");
     233
     234    SC_METHOD (genMealy_gpr_write_registerfile);
     235    dont_initialize ();
     236//     sensitive_neg << *(in_CLOCK);
     237    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
     238      {
     239        sensitive << *(in_GPR_WRITE_VAL           [j]);
     240        if (_param->_have_port_ooo_engine_id == true)
     241          sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [j]);
     242
     243        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     244          sensitive << *(in_GPR_WRITE_STATUS_ACK        [i][j]);
     245      }
     246
     247#ifdef SYSTEMCASS_SPECIFIC
     248    // List dependency information
     249    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
     250      {
     251        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     252          {
    159253            (*(out_GPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_GPR_WRITE_VAL                  [j]));
    160254            (*(out_GPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_GPR_WRITE_STATUS_ACK        [i][j]));
    161255            if (_param->_have_port_ooo_engine_id == true)
    162256            (*(out_GPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_GPR_WRITE_OOO_ENGINE_ID        [j]));
    163            
    164             (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_VAL                  [j]));
    165             (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_REGISTERFILE_ACK  [i][j]));
    166             if (_param->_have_port_ooo_engine_id == true)
    167             (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_OOO_ENGINE_ID        [j]));
    168           }
    169       }
    170 #endif   
    171 
    172 //     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_write_status");
    173 
    174 //     SC_METHOD (genMealy_gpr_write_status);
    175 //     dont_initialize ();
    176 //     sensitive_neg << *(in_CLOCK);
    177 //     for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
    178 //       {
    179 //      sensitive << *(in_GPR_WRITE_VAL           [j]);
    180 //      if (_param->_have_port_ooo_engine_id == true)
    181 //        sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [j]);
    182 
    183 //      for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    184 //        sensitive << *(in_GPR_WRITE_REGISTERFILE_ACK  [i][j]);
    185 //       }
    186 // //#endif
    187 
    188 // #ifdef SYSTEMCASS_SPECIFIC
    189 //     // List dependency information
    190 //     for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
    191 //       {
    192 //      for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    193 //        {
    194 //          (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_VAL                  [j]));
    195 //          (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_REGISTERFILE_ACK  [i][j]));
    196 //          if (_param->_have_port_ooo_engine_id == true)
    197 //          (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_OOO_ENGINE_ID        [j]));
    198 //        }
    199 //       }
    200 // #endif   
     257          }
     258      }
     259#endif   
    201260
    202261    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_read");
     
    204263    SC_METHOD (genMealy_spr_read);
    205264    dont_initialize ();
    206     sensitive_neg << *(in_CLOCK);
     265//     sensitive_neg << *(in_CLOCK);
    207266    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
    208267      {
    209         sensitive << *(in_SPR_READ_VAL           [j]);
    210268        if (_param->_have_port_ooo_engine_id == true)
    211269          sensitive << *(in_SPR_READ_OOO_ENGINE_ID [j]);
     
    217275                    << *(in_SPR_READ_STATUS_DATA_VAL   [i][j]);
    218276      }
    219 //#endif
    220277
    221278#ifdef SYSTEMCASS_SPECIFIC
     
    235292            (*(out_SPR_READ_DATA                 [j])) (*( in_SPR_READ_REGISTERFILE_DATA [i][j]));
    236293            (*(out_SPR_READ_DATA_VAL             [j])) (*( in_SPR_READ_STATUS_DATA_VAL   [i][j]));     
    237 
     294          }
     295      }
     296#endif   
     297
     298    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_read_status");
     299
     300    SC_METHOD (genMealy_spr_read_status);
     301    dont_initialize ();
     302//     sensitive_neg << *(in_CLOCK);
     303    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
     304      {
     305        sensitive << *(in_SPR_READ_VAL           [j]);
     306        if (_param->_have_port_ooo_engine_id == true)
     307          sensitive << *(in_SPR_READ_OOO_ENGINE_ID [j]);
     308
     309        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     310          sensitive << *(in_SPR_READ_REGISTERFILE_ACK  [i][j]);
     311      }
     312
     313#ifdef SYSTEMCASS_SPECIFIC
     314    // List dependency information
     315    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
     316      {
     317        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     318          {
     319            (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_VAL                  [j]));
     320            (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_REGISTERFILE_ACK  [i][j]));
     321            if (_param->_have_port_ooo_engine_id == true)
     322            (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_OOO_ENGINE_ID        [j]));
     323          }
     324      }
     325#endif   
     326
     327    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_read_registerfile");
     328
     329    SC_METHOD (genMealy_spr_read_registerfile);
     330    dont_initialize ();
     331//     sensitive_neg << *(in_CLOCK);
     332    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
     333      {
     334        sensitive << *(in_SPR_READ_VAL           [j]);
     335        if (_param->_have_port_ooo_engine_id == true)
     336          sensitive << *(in_SPR_READ_OOO_ENGINE_ID [j]);
     337
     338        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     339          sensitive << *(in_SPR_READ_STATUS_ACK        [i][j]);
     340      }
     341
     342#ifdef SYSTEMCASS_SPECIFIC
     343    // List dependency information
     344    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
     345      {
     346        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     347          {
    238348            (*(out_SPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_SPR_READ_VAL                  [j]));
    239349            (*(out_SPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_SPR_READ_STATUS_ACK        [i][j]));
    240350            if (_param->_have_port_ooo_engine_id == true)
    241351            (*(out_SPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_SPR_READ_OOO_ENGINE_ID        [j]));
    242            
    243             (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_VAL                  [j]));
    244             (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_REGISTERFILE_ACK  [i][j]));
    245             if (_param->_have_port_ooo_engine_id == true)
    246             (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_OOO_ENGINE_ID        [j]));
    247352          }
    248353      }
     
    253358    SC_METHOD (genMealy_spr_write);
    254359    dont_initialize ();
    255     sensitive_neg << *(in_CLOCK);
     360//     sensitive_neg << *(in_CLOCK);
    256361    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
    257362      {
    258         sensitive << *(in_SPR_WRITE_VAL           [j]);
    259363        if (_param->_have_port_ooo_engine_id == true)
    260364          sensitive << *(in_SPR_WRITE_OOO_ENGINE_ID [j]);
     
    264368                    << *(in_SPR_WRITE_STATUS_ACK        [i][j]);
    265369      }
    266 //#endif
    267370
    268371#ifdef SYSTEMCASS_SPECIFIC
     
    277380            (*(out_SPR_WRITE_ACK                  [j])) (*( in_SPR_WRITE_REGISTERFILE_ACK  [i][j]));
    278381            (*(out_SPR_WRITE_ACK                  [j])) (*( in_SPR_WRITE_STATUS_ACK        [i][j]));
    279 
     382          }
     383      }
     384#endif   
     385
     386    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_write_status");
     387
     388    SC_METHOD (genMealy_spr_write_status);
     389    dont_initialize ();
     390//     sensitive_neg << *(in_CLOCK);
     391    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
     392      {
     393        sensitive << *(in_SPR_WRITE_VAL           [j]);
     394        if (_param->_have_port_ooo_engine_id == true)
     395          sensitive << *(in_SPR_WRITE_OOO_ENGINE_ID [j]);
     396
     397        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     398          sensitive << *(in_SPR_WRITE_REGISTERFILE_ACK  [i][j]);
     399      }
     400
     401#ifdef SYSTEMCASS_SPECIFIC
     402    // List dependency information
     403    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
     404      {
     405        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     406          {
     407            (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_VAL                  [j]));
     408            (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_REGISTERFILE_ACK  [i][j]));
     409            if (_param->_have_port_ooo_engine_id == true)
     410            (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_OOO_ENGINE_ID        [j]));
     411          }
     412      }
     413#endif   
     414
     415    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_write_registerfile");
     416
     417    SC_METHOD (genMealy_spr_write_registerfile);
     418    dont_initialize ();
     419//     sensitive_neg << *(in_CLOCK);
     420    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
     421      {
     422        sensitive << *(in_SPR_WRITE_VAL           [j]);
     423        if (_param->_have_port_ooo_engine_id == true)
     424          sensitive << *(in_SPR_WRITE_OOO_ENGINE_ID [j]);
     425
     426        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     427          sensitive << *(in_SPR_WRITE_STATUS_ACK        [i][j]);
     428      }
     429
     430#ifdef SYSTEMCASS_SPECIFIC
     431    // List dependency information
     432    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
     433      {
     434        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     435          {
    280436            (*(out_SPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_SPR_WRITE_VAL                  [j]));
    281437            (*(out_SPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_SPR_WRITE_STATUS_ACK        [i][j]));
    282438            if (_param->_have_port_ooo_engine_id == true)
    283439            (*(out_SPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_SPR_WRITE_OOO_ENGINE_ID        [j]));
    284            
    285             (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_VAL                  [j]));
    286             (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_REGISTERFILE_ACK  [i][j]));
    287             if (_param->_have_port_ooo_engine_id == true)
    288             (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_OOO_ENGINE_ID        [j]));
    289440          }
    290441      }
     
    295446    SC_METHOD (genMealy_insert);
    296447    dont_initialize ();
    297     sensitive_neg << *(in_CLOCK);
     448//     sensitive_neg << *(in_CLOCK);
    298449    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    299450      {
     
    331482    SC_METHOD (genMealy_retire);
    332483    dont_initialize ();
    333     sensitive_neg << *(in_CLOCK);
     484//     sensitive_neg << *(in_CLOCK);
    334485    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    335486      {
     
    416567}; // end namespace behavioural
    417568}; // end namespace morpheo             
     569
     570
     571
Note: See TracChangeset for help on using the changeset viewer.