Ignore:
Timestamp:
Oct 20, 2009, 8:52:15 PM (15 years ago)
Author:
rosiere
Message:

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src
Files:
8 edited

Legend:

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

    r88 r136  
    2626                          uint32_t   nb_gpr_write         ,
    2727                          uint32_t   nb_spr_write         ,
    28                           uint32_t * nb_inst_insert_rob   ,
    29                           uint32_t * nb_inst_retire_rob   ,
     28                          uint32_t   nb_inst_issue        ,
     29//                        uint32_t * nb_inst_insert_rob   ,
     30//                        uint32_t * nb_inst_retire_rob   ,
    3031                          bool       is_toplevel          )
    3132  {
     
    3738    _nb_gpr_write            = nb_gpr_write      ;
    3839    _nb_spr_write            = nb_spr_write      ;
    39     _nb_inst_insert_rob      = nb_inst_insert_rob;
    40     _nb_inst_retire_rob      = nb_inst_retire_rob;
     40    _nb_inst_issue           = nb_inst_issue     ;
     41//     _nb_inst_insert_rob      = nb_inst_insert_rob;
     42//     _nb_inst_retire_rob      = nb_inst_retire_rob;
    4143
    4244    test();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Parameters_print.cpp

    r81 r136  
    3434    xml.singleton_begin("nb_gpr_write     "); xml.attribut("value",toString(_nb_gpr_write     )); xml.singleton_end();
    3535    xml.singleton_begin("nb_spr_write     "); xml.attribut("value",toString(_nb_spr_write     )); xml.singleton_end();
     36    xml.singleton_begin("nb_inst_issue    "); xml.attribut("value",toString(_nb_inst_issue    )); xml.singleton_end();
    3637
    37     xml. balise_open("multi_ooo_engine");
    38     for (uint32_t i=0; i<_nb_ooo_engine; i++)
    39       {
    40         xml.  balise_open_begin("ooo_engine");
    41         xml.   attribut("id", toString(i));
    42         xml.  balise_open_end();
    43         xml.   singleton_begin("nb_inst_insert_rob "); xml.attribut("value",toString(_nb_inst_insert_rob  [i])); xml.singleton_end();
    44         xml.   singleton_begin("nb_inst_retire_rob "); xml.attribut("value",toString(_nb_inst_retire_rob  [i])); xml.singleton_end();
    45         xml.  balise_close();
    46       }
    47     xml. balise_close();
     38//     xml. balise_open("multi_ooo_engine");
     39//     for (uint32_t i=0; i<_nb_ooo_engine; i++)
     40//       {
     41//      xml.  balise_open_begin("ooo_engine");
     42//      xml.   attribut("id", toString(i));
     43//      xml.  balise_open_end();
     44//      xml.   singleton_begin("nb_inst_insert_rob "); xml.attribut("value",toString(_nb_inst_insert_rob  [i])); xml.singleton_end();
     45//      xml.   singleton_begin("nb_inst_retire_rob "); xml.attribut("value",toString(_nb_inst_retire_rob  [i])); xml.singleton_end();
     46//      xml.  balise_close();
     47//       }
     48//     xml. balise_close();
    4849    xml.balise_close();
    4950
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp

    r132 r136  
    3636    ,_usage            (usage)
    3737  {
    38     log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
     38    log_printf(FUNC,Register_unit_Glue,FUNCTION,_("<%s> Begin"),_name.c_str());
    3939
    4040// #if DEBUG_Register_unit_Glue == true
     
    4444// #endif   
    4545
    46     log_printf(INFO,Register_unit_Glue,FUNCTION,"Allocation");
     46    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Allocation"),_name.c_str());
    4747    allocation ();
    4848
     
    5050    if (usage_is_set(_usage,USE_STATISTICS))
    5151      {
    52         log_printf(INFO,Register_unit_Glue,FUNCTION,"Allocation of statistics");
     52        log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Allocation of statistics"),_name.c_str());
    5353       
    5454        // Allocation of statistics
     
    6161      {
    6262        // generate the vhdl
    63         log_printf(INFO,Register_unit_Glue,FUNCTION,"Generate the vhdl");
     63        log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Generate the vhdl"),_name.c_str());
    6464       
    6565        vhdl();
     
    7373        constant();
    7474#else
    75     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - constant");
     75    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - constant"),_name.c_str());
    7676
    7777    SC_METHOD (constant);
     
    8383#endif
    8484
    85     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - transition");
     85    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - transition"),_name.c_str());
    8686
    8787    SC_METHOD (transition);
     
    9393#endif   
    9494
    95     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_read");
     95    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_gpr_read"),_name.c_str());
    9696
    9797    SC_METHOD (genMealy_gpr_read);
     
    131131#endif   
    132132
    133     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_read_status");
     133    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_gpr_read_status"),_name.c_str());
    134134
    135135    SC_METHOD (genMealy_gpr_read_status);
     
    161161#endif   
    162162
    163     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_read_registerfile");
     163    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_gpr_read_registerfile"),_name.c_str());
    164164
    165165    SC_METHOD (genMealy_gpr_read_registerfile);
     
    191191#endif   
    192192
    193     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_write");
     193    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_gpr_write"),_name.c_str());
    194194
    195195    SC_METHOD (genMealy_gpr_write);
     
    222222#endif   
    223223
    224     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_write_status");
     224    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_gpr_write_status"),_name.c_str());
    225225
    226226    SC_METHOD (genMealy_gpr_write_status);
     
    252252#endif   
    253253
    254     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_write_registerfile");
     254    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_gpr_write_registerfile"),_name.c_str());
    255255
    256256    SC_METHOD (genMealy_gpr_write_registerfile);
     
    282282#endif   
    283283
    284     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_read");
     284    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_spr_read"),_name.c_str());
    285285
    286286    SC_METHOD (genMealy_spr_read);
     
    320320#endif   
    321321
    322     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_read_status");
     322    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_spr_read_status"),_name.c_str());
    323323
    324324    SC_METHOD (genMealy_spr_read_status);
     
    350350#endif   
    351351
    352     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_read_registerfile");
     352    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_spr_read_registerfile"),_name.c_str());
    353353
    354354    SC_METHOD (genMealy_spr_read_registerfile);
     
    380380#endif   
    381381
    382     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_write");
     382    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_spr_write"),_name.c_str());
    383383
    384384    SC_METHOD (genMealy_spr_write);
     
    411411#endif   
    412412
    413     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_write_status");
     413    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_spr_write_status"),_name.c_str());
    414414
    415415    SC_METHOD (genMealy_spr_write_status);
     
    441441#endif   
    442442
    443     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_write_registerfile");
     443    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_spr_write_registerfile"),_name.c_str());
    444444
    445445    SC_METHOD (genMealy_spr_write_registerfile);
     
    471471#endif   
    472472
    473     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_insert");
     473    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_insert"),_name.c_str());
    474474
    475475    SC_METHOD (genMealy_insert);
     
    477477//     sensitive << (*(in_CLOCK)).neg();
    478478    sensitive << (*(in_NRESET));
    479     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    480       {
    481         uint32_t x=_param->_nb_inst_insert_rob [i];
    482         for (uint32_t j=0; j<x; j++)
    483           sensitive << *( in_INSERT_ROB_VAL            [i][j])
    484                     << *( in_INSERT_ROB_RD_USE         [i][j])
    485                     << *( in_INSERT_ROB_RE_USE         [i][j])
    486                     << *( in_INSERT_ROB_GPR_STATUS_ACK [i][j])
    487                     << *( in_INSERT_ROB_SPR_STATUS_ACK [i][j]);
    488       }
    489 #ifdef SYSTEMCASS_SPECIFIC
    490     // List dependency information
    491     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    492       {
    493         uint32_t x=_param->_nb_inst_insert_rob [i];
    494         for (uint32_t j=0; j<x; j++)
    495           {
    496             (*(out_INSERT_ROB_ACK            [i][j]))(*( in_INSERT_ROB_GPR_STATUS_ACK [i][j]));
    497             (*(out_INSERT_ROB_ACK            [i][j]))(*( in_INSERT_ROB_SPR_STATUS_ACK [i][j]));
    498 
    499             (*(out_INSERT_ROB_GPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_VAL            [i][j]));
    500             (*(out_INSERT_ROB_GPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_RD_USE         [i][j]));
    501             (*(out_INSERT_ROB_GPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_SPR_STATUS_ACK [i][j]));
    502 
    503             (*(out_INSERT_ROB_SPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_VAL            [i][j]));
    504             (*(out_INSERT_ROB_SPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_RE_USE         [i][j]));
    505             (*(out_INSERT_ROB_SPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_GPR_STATUS_ACK [i][j]));
    506           }
    507       }
    508 #endif   
    509 
    510 //     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_retire");
     479    for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
     480      {
     481        sensitive << *( in_ISSUE_VAL            [i])
     482                  << *( in_ISSUE_RD_USE         [i])
     483                  << *( in_ISSUE_RE_USE         [i]);
     484
     485        if (_param->_have_port_ooo_engine_id == true)
     486        sensitive << *( in_ISSUE_OOO_ENGINE_ID [i]);
     487
     488        for (uint32_t j=0; j<_param->_nb_ooo_engine; ++j)
     489          sensitive << *( in_ISSUE_GPR_STATUS_ACK [j][i])
     490                    << *( in_ISSUE_SPR_STATUS_ACK [j][i]);
     491      }
     492
     493//     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     494//       {
     495//      uint32_t x=_param->_nb_inst_insert_rob [i];
     496//      for (uint32_t j=0; j<x; j++)
     497//        sensitive << *( in_INSERT_ROB_VAL            [i][j])
     498//                  << *( in_INSERT_ROB_RD_USE         [i][j])
     499//                  << *( in_INSERT_ROB_RE_USE         [i][j])
     500//                  << *( in_INSERT_ROB_GPR_STATUS_ACK [i][j])
     501//                  << *( in_INSERT_ROB_SPR_STATUS_ACK [i][j]);
     502//       }
     503#ifdef SYSTEMCASS_SPECIFIC
     504//     // List dependency information
     505//     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     506//       {
     507//      uint32_t x=_param->_nb_inst_insert_rob [i];
     508//      for (uint32_t j=0; j<x; j++)
     509//        {
     510//          (*(out_INSERT_ROB_ACK            [i][j]))(*( in_INSERT_ROB_GPR_STATUS_ACK [i][j]));
     511//          (*(out_INSERT_ROB_ACK            [i][j]))(*( in_INSERT_ROB_SPR_STATUS_ACK [i][j]));
     512
     513//          (*(out_INSERT_ROB_GPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_VAL            [i][j]));
     514//          (*(out_INSERT_ROB_GPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_RD_USE         [i][j]));
     515//          (*(out_INSERT_ROB_GPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_SPR_STATUS_ACK [i][j]));
     516
     517//          (*(out_INSERT_ROB_SPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_VAL            [i][j]));
     518//          (*(out_INSERT_ROB_SPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_RE_USE         [i][j]));
     519//          (*(out_INSERT_ROB_SPR_STATUS_VAL [i][j]))(*( in_INSERT_ROB_GPR_STATUS_ACK [i][j]));
     520//        }
     521//       }
     522#endif   
     523
     524//     log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Method - genMealy_retire"),_name.c_str());
    511525
    512526//     SC_METHOD (genMealy_retire);
     
    567581      }
    568582#endif
    569     log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
     583    log_printf(FUNC,Register_unit_Glue,FUNCTION,_("<%s> End"),_name.c_str());
    570584  };
    571585 
     
    574588  Register_unit_Glue::~Register_unit_Glue (void)
    575589  {
    576     log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
     590    log_printf(FUNC,Register_unit_Glue,FUNCTION,_("<%s> Begin"),_name.c_str());
    577591
    578592#ifdef STATISTICS
    579593    if (usage_is_set(_usage,USE_STATISTICS))
    580594      {
    581         log_printf(INFO,Register_unit_Glue,FUNCTION,"Generate Statistics file");
     595        log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Generate Statistics file"),_name.c_str());
    582596       
    583597        delete _stat;
     
    585599#endif
    586600
    587     log_printf(INFO,Register_unit_Glue,FUNCTION,"Deallocation");
     601    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Deallocation"),_name.c_str());
    588602    deallocation ();
    589603
    590     log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
     604    log_printf(FUNC,Register_unit_Glue,FUNCTION,_("<%s> End"),_name.c_str());
    591605  };
    592606
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_allocation.cpp

    r131 r136  
    177177    }
    178178
    179     // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    180     {
    181       ALLOC2_INTERFACE_BEGIN("insert_rob",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    182      
    183       _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL   ,VAL                   ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    184       _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK   ,ACK                   ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    185       _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE,"rd_use",Tcontrol_t, 1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    186       _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE,"re_use",Tcontrol_t, 1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    187 
    188       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    189     }
    190    
    191     {
    192       ALLOC2_INTERFACE_BEGIN("insert_rob_gpr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    193      
    194       _ALLOC2_VALACK_OUT(out_INSERT_ROB_GPR_STATUS_VAL ,VAL                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    195       _ALLOC2_VALACK_IN ( in_INSERT_ROB_GPR_STATUS_ACK ,ACK                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    196       _ALLOC2_SIGNAL_OUT(out_INSERT_ROB_GPR_STATUS_DATA,"data",Tgeneral_data_t,1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    197 
    198       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    199     }
    200    
    201     {
    202       ALLOC2_INTERFACE_BEGIN("insert_rob_spr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    203      
    204       _ALLOC2_VALACK_OUT(out_INSERT_ROB_SPR_STATUS_VAL ,VAL                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    205       _ALLOC2_VALACK_IN ( in_INSERT_ROB_SPR_STATUS_ACK ,ACK                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    206       _ALLOC2_SIGNAL_OUT(out_INSERT_ROB_SPR_STATUS_DATA,"data",Tspecial_data_t,1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    207 
    208       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
    209     }
     179    // ~~~~~[ Interface "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     180    {
     181      ALLOC1_INTERFACE_BEGIN("issue",IN,WEST,_("Interface to update status (insert)"),_param->_nb_inst_issue);
     182     
     183      ALLOC1_VALACK_IN ( in_ISSUE_VAL          ,VAL);
     184      ALLOC1_VALACK_OUT(out_ISSUE_ACK          ,ACK);
     185      ALLOC1_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t,_param->_size_ooo_engine_id);
     186      ALLOC1_SIGNAL_IN ( in_ISSUE_RD_USE       ,"rd_use"       ,Tcontrol_t, 1);
     187      ALLOC1_SIGNAL_IN ( in_ISSUE_RE_USE       ,"re_use"       ,Tcontrol_t, 1);
     188
     189      ALLOC1_INTERFACE_END(_param->_nb_inst_issue);
     190    }
     191   
     192    {
     193      ALLOC2_INTERFACE_BEGIN("issue_gpr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_issue);
     194     
     195      ALLOC2_VALACK_OUT(out_ISSUE_GPR_STATUS_VAL ,VAL                     );
     196      ALLOC2_VALACK_IN ( in_ISSUE_GPR_STATUS_ACK ,ACK                     );
     197      ALLOC2_SIGNAL_OUT(out_ISSUE_GPR_STATUS_DATA,"data",Tgeneral_data_t,1);
     198
     199      ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_issue);
     200    }
     201   
     202    {
     203      ALLOC2_INTERFACE_BEGIN("issue_spr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine, _param->_nb_inst_issue);
     204     
     205      ALLOC2_VALACK_OUT(out_ISSUE_SPR_STATUS_VAL ,VAL                     );
     206      ALLOC2_VALACK_IN ( in_ISSUE_SPR_STATUS_ACK ,ACK                     );
     207      ALLOC2_SIGNAL_OUT(out_ISSUE_SPR_STATUS_DATA,"data",Tspecial_data_t,1);
     208
     209      ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_issue);
     210    }
     211
     212//     // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     213//     {
     214//       ALLOC2_INTERFACE_BEGIN("insert_rob",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     215     
     216//       _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL   ,VAL                   ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     217//       _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK   ,ACK                   ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     218//       _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE,"rd_use",Tcontrol_t, 1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     219//       _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE,"re_use",Tcontrol_t, 1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     220
     221//       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     222//     }
     223   
     224//     {
     225//       ALLOC2_INTERFACE_BEGIN("insert_rob_gpr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     226     
     227//       _ALLOC2_VALACK_OUT(out_INSERT_ROB_GPR_STATUS_VAL ,VAL                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     228//       _ALLOC2_VALACK_IN ( in_INSERT_ROB_GPR_STATUS_ACK ,ACK                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     229//       _ALLOC2_SIGNAL_OUT(out_INSERT_ROB_GPR_STATUS_DATA,"data",Tgeneral_data_t,1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     230
     231//       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     232//     }
     233   
     234//     {
     235//       ALLOC2_INTERFACE_BEGIN("insert_rob_spr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     236     
     237//       _ALLOC2_VALACK_OUT(out_INSERT_ROB_SPR_STATUS_VAL ,VAL                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     238//       _ALLOC2_VALACK_IN ( in_INSERT_ROB_SPR_STATUS_ACK ,ACK                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     239//       _ALLOC2_SIGNAL_OUT(out_INSERT_ROB_SPR_STATUS_DATA,"data",Tspecial_data_t,1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     240
     241//       ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]);
     242//     }
    210243
    211244//     // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_constant.cpp

    r131 r136  
    3333          PORT_WRITE(out_SPR_WRITE_STATUS_DATA [i][j],1);
    3434       
    35         for (uint32_t j=0; j<_param->_nb_inst_insert_rob[i]; ++j)
    36           {
    37             PORT_WRITE(out_INSERT_ROB_GPR_STATUS_DATA [i][j],0);
    38             PORT_WRITE(out_INSERT_ROB_SPR_STATUS_DATA [i][j],0);
    39           }
     35//         for (uint32_t j=0; j<_param->_nb_inst_insert_rob[i]; ++j)
     36//           {
     37//             PORT_WRITE(out_INSERT_ROB_GPR_STATUS_DATA [i][j],0);
     38//             PORT_WRITE(out_INSERT_ROB_SPR_STATUS_DATA [i][j],0);
     39//           }
    4040      }
     41
     42    for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
     43      for (uint32_t j=0; j<_param->_nb_inst_issue; ++j)
     44        {
     45          PORT_WRITE(out_ISSUE_GPR_STATUS_DATA [i][j],0);
     46          PORT_WRITE(out_ISSUE_SPR_STATUS_DATA [i][j],0);
     47        }
    4148
    4249    log_end(Register_unit_Glue,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_deallocation.cpp

    r128 r136  
    8484    DELETE2_SIGNAL(out_SPR_WRITE_STATUS_DATA     ,_param->_nb_ooo_engine,_param->_nb_spr_write,1  );
    8585
    86     DELETE2_SIGNAL( in_INSERT_ROB_VAL            ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
    87     DELETE2_SIGNAL(out_INSERT_ROB_ACK            ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
    88     DELETE2_SIGNAL( in_INSERT_ROB_RD_USE         ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
    89     DELETE2_SIGNAL( in_INSERT_ROB_RE_USE         ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     86    DELETE1_SIGNAL( in_ISSUE_VAL                 ,_param->_nb_inst_issue,1);
     87    DELETE1_SIGNAL(out_ISSUE_ACK                 ,_param->_nb_inst_issue,1);
     88    DELETE1_SIGNAL( in_ISSUE_OOO_ENGINE_ID       ,_param->_nb_inst_issue,_param->_size_ooo_engine_id);
     89    DELETE1_SIGNAL( in_ISSUE_RD_USE              ,_param->_nb_inst_issue,1);
     90    DELETE1_SIGNAL( in_ISSUE_RE_USE              ,_param->_nb_inst_issue,1);
    9091
    91     DELETE2_SIGNAL(out_INSERT_ROB_GPR_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
    92     DELETE2_SIGNAL( in_INSERT_ROB_GPR_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
    93     DELETE2_SIGNAL(out_INSERT_ROB_GPR_STATUS_DATA,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     92    DELETE2_SIGNAL(out_ISSUE_GPR_STATUS_VAL      ,_param->_nb_ooo_engine,_param->_nb_inst_issue,1);
     93    DELETE2_SIGNAL( in_ISSUE_GPR_STATUS_ACK      ,_param->_nb_ooo_engine,_param->_nb_inst_issue,1);
     94    DELETE2_SIGNAL(out_ISSUE_GPR_STATUS_DATA     ,_param->_nb_ooo_engine,_param->_nb_inst_issue,1);
    9495
    95     DELETE2_SIGNAL(out_INSERT_ROB_SPR_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
    96     DELETE2_SIGNAL( in_INSERT_ROB_SPR_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
    97     DELETE2_SIGNAL(out_INSERT_ROB_SPR_STATUS_DATA,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     96    DELETE2_SIGNAL(out_ISSUE_SPR_STATUS_VAL      ,_param->_nb_ooo_engine,_param->_nb_inst_issue,1);
     97    DELETE2_SIGNAL( in_ISSUE_SPR_STATUS_ACK      ,_param->_nb_ooo_engine,_param->_nb_inst_issue,1);
     98    DELETE2_SIGNAL(out_ISSUE_SPR_STATUS_DATA     ,_param->_nb_ooo_engine,_param->_nb_inst_issue,1);
     99
     100//     DELETE2_SIGNAL( in_INSERT_ROB_VAL            ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     101//     DELETE2_SIGNAL(out_INSERT_ROB_ACK            ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     102//     DELETE2_SIGNAL( in_INSERT_ROB_RD_USE         ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     103//     DELETE2_SIGNAL( in_INSERT_ROB_RE_USE         ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     104
     105//     DELETE2_SIGNAL(out_INSERT_ROB_GPR_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     106//     DELETE2_SIGNAL( in_INSERT_ROB_GPR_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     107//     DELETE2_SIGNAL(out_INSERT_ROB_GPR_STATUS_DATA,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     108
     109//     DELETE2_SIGNAL(out_INSERT_ROB_SPR_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     110//     DELETE2_SIGNAL( in_INSERT_ROB_SPR_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
     111//     DELETE2_SIGNAL(out_INSERT_ROB_SPR_STATUS_DATA,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1);
    98112      }
    99113    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_insert.cpp

    r128 r136  
    2828    if (PORT_READ(in_NRESET))
    2929      {
    30     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    31       for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
    32         {
    33           Tcontrol_t val            = PORT_READ(in_INSERT_ROB_VAL [i][j]);
    34           Tcontrol_t gpr_use        = PORT_READ(in_INSERT_ROB_RD_USE [i][j]);
    35           Tcontrol_t spr_use        = PORT_READ(in_INSERT_ROB_RE_USE [i][j]);
    36           Tcontrol_t gpr_status_ack = PORT_READ(in_INSERT_ROB_GPR_STATUS_ACK [i][j]);
    37           Tcontrol_t spr_status_ack = PORT_READ(in_INSERT_ROB_SPR_STATUS_ACK [i][j]);
    38          
    39           Tcontrol_t ack            = (gpr_status_ack and
    40                                        spr_status_ack);     
    41           Tcontrol_t gpr_status_val = (val     and
    42                                        gpr_use and
    43                                        spr_status_ack);
    44           Tcontrol_t spr_status_val = (val     and
    45                                        spr_use and
    46                                        gpr_status_ack);
     30    for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
     31      {
     32        Tcontrol_t val            = PORT_READ(in_ISSUE_VAL    [i]);
     33        Tcontrol_t gpr_use        = PORT_READ(in_ISSUE_RD_USE [i]);
     34        Tcontrol_t spr_use        = PORT_READ(in_ISSUE_RE_USE [i]);
     35        Tcontext_t ooo_engine_id  = (_param->_have_port_ooo_engine_id)?PORT_READ(in_ISSUE_VAL [i]):0;
     36        Tcontrol_t gpr_status_ack = PORT_READ(in_ISSUE_GPR_STATUS_ACK [ooo_engine_id][i]);
     37        Tcontrol_t spr_status_ack = PORT_READ(in_ISSUE_SPR_STATUS_ACK [ooo_engine_id][i]);
    4738
    48           log_printf(TRACE,Register_unit_Glue,FUNCTION,"  * insert_rob [%d][%d]",i,j);
    49           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * val            (r) : %d",val           );
    50           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * ack            (w) : %d",ack           );
    51           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_use (rd)   (r) : %d",gpr_use       );
    52           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_status_val (w) : %d",gpr_status_val);
    53           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_status_ack (r) : %d",gpr_status_ack);
    54           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_use (re)   (r) : %d",spr_use       );
    55           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_status_val (w) : %d",spr_status_val);
    56           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_status_ack (r) : %d",spr_status_ack);
     39        Tcontrol_t ack            = (gpr_status_ack and
     40                                     spr_status_ack);       
     41        Tcontrol_t gpr_status_val = (val     and
     42                                     gpr_use and
     43                                     spr_status_ack);
     44        Tcontrol_t spr_status_val = (val     and
     45                                     spr_use and
     46                                     gpr_status_ack);
     47       
     48        log_printf(TRACE,Register_unit_Glue,FUNCTION,"  * issue [%d]",i);       
     49        log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * ooo_engine_id  (w) : %d",ooo_engine_id );
     50        log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * val            (r) : %d",val           );
     51        log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * ack            (w) : %d",ack           );
     52        log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_use (rd)   (r) : %d",gpr_use       );
     53        log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_status_val (w) : %d",gpr_status_val);
     54        log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_status_ack (r) : %d",gpr_status_ack);
     55        log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_use (re)   (r) : %d",spr_use       );
     56        log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_status_val (w) : %d",spr_status_val);
     57        log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_status_ack (r) : %d",spr_status_ack);
     58       
     59        PORT_WRITE(out_ISSUE_ACK                           [i], ack           );
     60        PORT_WRITE(out_ISSUE_GPR_STATUS_VAL [ooo_engine_id][i], gpr_status_val);
     61        PORT_WRITE(out_ISSUE_SPR_STATUS_VAL [ooo_engine_id][i], spr_status_val);
    5762
    58           PORT_WRITE(out_INSERT_ROB_ACK            [i][j], ack           );
    59           PORT_WRITE(out_INSERT_ROB_GPR_STATUS_VAL [i][j], gpr_status_val);
    60           PORT_WRITE(out_INSERT_ROB_SPR_STATUS_VAL [i][j], spr_status_val);
     63        for (uint32_t j=0; j<_param->_nb_ooo_engine; ++j)
     64          if (j!=ooo_engine_id)
     65            {
     66              PORT_WRITE(out_ISSUE_GPR_STATUS_VAL [j][i], 0);
     67              PORT_WRITE(out_ISSUE_SPR_STATUS_VAL [j][i], 0);
     68            }
    6169        }
    6270      }
    6371    else
    6472      {
    65         for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    66           for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
    67             {
    68               PORT_WRITE(out_INSERT_ROB_ACK            [i][j], 0);
    69               PORT_WRITE(out_INSERT_ROB_GPR_STATUS_VAL [i][j], 0);
    70               PORT_WRITE(out_INSERT_ROB_SPR_STATUS_VAL [i][j], 0);
    71             }
     73        for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
     74          {
     75            PORT_WRITE(out_ISSUE_ACK               [i], 0);
     76            for (uint32_t j=0; j<_param->_nb_ooo_engine; j++)
     77              {
     78            PORT_WRITE(out_ISSUE_GPR_STATUS_VAL [j][i], 0);
     79            PORT_WRITE(out_ISSUE_SPR_STATUS_VAL [j][i], 0);
     80              }
     81          }
    7282      }
     83
     84//     if (PORT_READ(in_NRESET))
     85//       {
     86//     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     87//       for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
     88//         {
     89//           Tcontrol_t val            = PORT_READ(in_INSERT_ROB_VAL [i][j]);
     90//           Tcontrol_t gpr_use        = PORT_READ(in_INSERT_ROB_RD_USE [i][j]);
     91//           Tcontrol_t spr_use        = PORT_READ(in_INSERT_ROB_RE_USE [i][j]);
     92//           Tcontrol_t gpr_status_ack = PORT_READ(in_INSERT_ROB_GPR_STATUS_ACK [i][j]);
     93//           Tcontrol_t spr_status_ack = PORT_READ(in_INSERT_ROB_SPR_STATUS_ACK [i][j]);
     94         
     95//           Tcontrol_t ack            = (gpr_status_ack and
     96//                                        spr_status_ack);         
     97//           Tcontrol_t gpr_status_val = (val     and
     98//                                        gpr_use and
     99//                                        spr_status_ack);
     100//           Tcontrol_t spr_status_val = (val     and
     101//                                        spr_use and
     102//                                        gpr_status_ack);
     103
     104//           log_printf(TRACE,Register_unit_Glue,FUNCTION,"  * insert_rob [%d][%d]",i,j);
     105//           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * val            (r) : %d",val           );
     106//           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * ack            (w) : %d",ack           );
     107//           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_use (rd)   (r) : %d",gpr_use       );
     108//           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_status_val (w) : %d",gpr_status_val);
     109//           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * gpr_status_ack (r) : %d",gpr_status_ack);
     110//           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_use (re)   (r) : %d",spr_use       );
     111//           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_status_val (w) : %d",spr_status_val);
     112//           log_printf(TRACE,Register_unit_Glue,FUNCTION,"    * spr_status_ack (r) : %d",spr_status_ack);
     113
     114//           PORT_WRITE(out_INSERT_ROB_ACK            [i][j], ack           );
     115//           PORT_WRITE(out_INSERT_ROB_GPR_STATUS_VAL [i][j], gpr_status_val);
     116//           PORT_WRITE(out_INSERT_ROB_SPR_STATUS_VAL [i][j], spr_status_val);
     117//         }
     118//       }
     119//     else
     120//       {
     121//         for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     122//           for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
     123//             {
     124//               PORT_WRITE(out_INSERT_ROB_ACK            [i][j], 0);
     125//               PORT_WRITE(out_INSERT_ROB_GPR_STATUS_VAL [i][j], 0);
     126//               PORT_WRITE(out_INSERT_ROB_SPR_STATUS_VAL [i][j], 0);
     127//             }
     128//       }
    73129
    74130    log_end(Register_unit_Glue,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_vhdl_body.cpp

    r88 r136  
    245245
    246246    //-----------------------------------
    247     // INSERT_ROB
     247    // ISSUE
    248248    //-----------------------------------
    249249
    250250    vhdl->set_body ("");
    251251    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    252       {
    253         uint32_t x=_param->_nb_inst_insert_rob [i];
    254         for (uint32_t j=0; j<x; j++)
    255           {
    256             vhdl->set_body ("out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK <=");
    257             vhdl->set_body ("\tin_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK and");
    258             vhdl->set_body ("\tin_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK;");
    259 
    260             vhdl->set_body ("out_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <=");
    261             vhdl->set_body ("\tin_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL            and");
    262             vhdl->set_body ("\tin_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE         and");
    263             vhdl->set_body ("\tin_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK;");
    264 
    265             vhdl->set_body ("out_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <=");
    266             vhdl->set_body ("\tin_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL            and");
    267             vhdl->set_body ("\tin_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE         and");
    268             vhdl->set_body ("\tin_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK;");
    269           }
    270       }
    271 
    272     //-----------------------------------
    273     // RETIRE_ROB
    274     //-----------------------------------
    275     vhdl->set_body ("");
    276     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
    277       {
    278         uint32_t x=_param->_nb_inst_retire_rob [i];
    279         for (uint32_t j=0; j<x; j++)
    280           {
    281             vhdl->set_body ("out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK <=");
    282             vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
    283             vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK and");
    284             vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
    285             vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK;");
    286 
    287             vhdl->set_body ("out_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL <=");
    288             vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL                and");
    289             vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE         and");
    290             vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK and");
    291             vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
    292             vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK;");
    293 
    294             vhdl->set_body ("out_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL <=");
    295             vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL                and");
    296             vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE         and");
    297             vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
    298             vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
    299             vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK;");
    300 
    301             vhdl->set_body ("out_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL <=");
    302             vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL                and");
    303             vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE         and");
    304             vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
    305             vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK and");
    306             vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK;");
    307 
    308             vhdl->set_body ("out_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL <=");
    309             vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL                and");
    310             vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE         and");
    311             vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
    312             vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK and");
    313             vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK;");
    314           }
    315       }
     252      for (uint32_t j=0; j<_param->_nb_inst_issue; j++)
     253        {
     254          vhdl->set_body ("out_ISSUE_"+toString(j)+"_ACK <=");
     255          vhdl->set_body ("\tin_ISSUE_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK and");
     256          vhdl->set_body ("\tin_ISSUE_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
     257          if (_param->_have_port_ooo_engine_id)
     258            {
     259          vhdl->set_body ("when out_ISSUE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i));
     260          vhdl->set_body ("else '0'");   
     261            }
     262          vhdl->set_body (";");   
     263         
     264
     265          vhdl->set_body ("out_ISSUE_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <=");
     266          vhdl->set_body ("\tin_ISSUE_"+toString(j)+"_VAL            and");
     267          vhdl->set_body ("\tin_ISSUE_"+toString(j)+"_RD_USE         and");
     268          vhdl->set_body ("\tin_ISSUE_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
     269          if (_param->_have_port_ooo_engine_id)
     270            {
     271          vhdl->set_body ("when out_ISSUE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i));
     272          vhdl->set_body ("else '0'");   
     273            }
     274          vhdl->set_body (";");   
     275         
     276          vhdl->set_body ("out_ISSUE_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <=");
     277          vhdl->set_body ("\tin_ISSUE_"+toString(j)+"_VAL            and");
     278          vhdl->set_body ("\tin_ISSUE_"+toString(j)+"_RE_USE         and");
     279          vhdl->set_body ("\tin_ISSUE_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK");
     280          if (_param->_have_port_ooo_engine_id)
     281            {
     282          vhdl->set_body ("when out_ISSUE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i));
     283          vhdl->set_body ("else '0'");   
     284            }
     285          vhdl->set_body (";");   
     286        }
     287   
     288//     //-----------------------------------
     289//     // INSERT_ROB
     290//     //-----------------------------------
     291
     292//     vhdl->set_body ("");
     293//     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     294//       {
     295//      uint32_t x=_param->_nb_inst_insert_rob [i];
     296//      for (uint32_t j=0; j<x; j++)
     297//        {
     298//          vhdl->set_body ("out_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_ACK <=");
     299//          vhdl->set_body ("\tin_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK and");
     300//          vhdl->set_body ("\tin_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK;");
     301
     302//          vhdl->set_body ("out_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <=");
     303//          vhdl->set_body ("\tin_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL            and");
     304//          vhdl->set_body ("\tin_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RD_USE         and");
     305//          vhdl->set_body ("\tin_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK;");
     306
     307//          vhdl->set_body ("out_INSERT_ROB_SPR_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <=");
     308//          vhdl->set_body ("\tin_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_VAL            and");
     309//          vhdl->set_body ("\tin_INSERT_ROB_"+toString(i)+"_"+toString(j)+"_RE_USE         and");
     310//          vhdl->set_body ("\tin_INSERT_ROB_GPR_STATUS_"+toString(i)+"_"+toString(j)+"_ACK;");
     311//        }
     312//       }
     313
     314//     //-----------------------------------
     315//     // RETIRE_ROB
     316//     //-----------------------------------
     317//     vhdl->set_body ("");
     318//     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
     319//       {
     320//      uint32_t x=_param->_nb_inst_retire_rob [i];
     321//      for (uint32_t j=0; j<x; j++)
     322//        {
     323//          vhdl->set_body ("out_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_ACK <=");
     324//          vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
     325//          vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK and");
     326//          vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
     327//          vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK;");
     328
     329//          vhdl->set_body ("out_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL <=");
     330//          vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL                and");
     331//          vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_OLD_USE         and");
     332//          vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK and");
     333//          vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
     334//          vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK;");
     335
     336//          vhdl->set_body ("out_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL <=");
     337//          vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL                and");
     338//          vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RD_NEW_USE         and");
     339//          vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
     340//          vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
     341//          vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK;");
     342
     343//          vhdl->set_body ("out_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_VAL <=");
     344//          vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL                and");
     345//          vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_OLD_USE         and");
     346//          vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
     347//          vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK and");
     348//          vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK;");
     349
     350//          vhdl->set_body ("out_RETIRE_ROB_SPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_VAL <=");
     351//          vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_VAL                and");
     352//          vhdl->set_body ("\tin_RETIRE_ROB_"+toString(i)+"_"+toString(j)+"_RE_NEW_USE         and");
     353//          vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK and");
     354//          vhdl->set_body ("\tin_RETIRE_ROB_GPR_STATUS_NEW_"+toString(i)+"_"+toString(j)+"_ACK and");
     355//          vhdl->set_body ("\tin_RETIRE_ROB_SPR_STATUS_OLD_"+toString(i)+"_"+toString(j)+"_ACK;");
     356//        }
     357//       }
    316358
    317359    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
Note: See TracChangeset for help on using the changeset viewer.