Ignore:
Timestamp:
Mar 18, 2009, 11:36:26 PM (15 years ago)
Author:
rosiere
Message:

1) Stat_list : fix retire old and new register bug
2) Stat_list : remove read_counter and valid flag, because validation of destination is in retire step (not in commit step)
3) Model : add class Model (cf Morpheo.sim)
4) Allocation : alloc_interface_begin and alloc_interface_end to delete temporary array.
5) Script : add distexe.sh
6) Add Comparator, Multiplier, Divider. But this component are not implemented
7) Software : add Dhrystone

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine
Files:
79 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/SelfTest/src/test.cpp

    r110 r112  
    153153  ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_NO_SEQUENCE    ,"out_BRANCH_COMPLETE_NO_SEQUENCE    ",Tcontrol_t        ,_param->_nb_inst_branch_complete);
    154154  ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION," in_BRANCH_COMPLETE_MISS_PREDICTION",Tcontrol_t        ,_param->_nb_inst_branch_complete);
    155   ALLOC_SC_SIGNAL (out_UPDATE_VAL                      ,"out_UPDATE_VAL                      ",Tcontrol_t        );
    156   ALLOC_SC_SIGNAL ( in_UPDATE_ACK                      ," in_UPDATE_ACK                      ",Tcontrol_t        );
    157   ALLOC_SC_SIGNAL (out_UPDATE_CONTEXT_ID               ,"out_UPDATE_CONTEXT_ID               ",Tcontext_t        );
    158   ALLOC_SC_SIGNAL (out_UPDATE_FRONT_END_ID             ,"out_UPDATE_FRONT_END_ID             ",Tcontext_t        );
    159   ALLOC_SC_SIGNAL (out_UPDATE_DEPTH                    ,"out_UPDATE_DEPTH                    ",Tdepth_t          );
    160   ALLOC_SC_SIGNAL (out_UPDATE_TYPE                     ,"out_UPDATE_TYPE                     ",Tevent_type_t     );
    161   ALLOC_SC_SIGNAL (out_UPDATE_IS_DELAY_SLOT            ,"out_UPDATE_IS_DELAY_SLOT            ",Tcontrol_t        );
    162   ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS                  ,"out_UPDATE_ADDRESS                  ",Taddress_t        );
    163   ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EPCR_VAL         ,"out_UPDATE_ADDRESS_EPCR_VAL         ",Tcontrol_t        );
    164   ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EPCR             ,"out_UPDATE_ADDRESS_EPCR             ",Taddress_t        );
    165   ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EEAR_VAL         ,"out_UPDATE_ADDRESS_EEAR_VAL         ",Tcontrol_t        );
    166   ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EEAR             ,"out_UPDATE_ADDRESS_EEAR             ",Tgeneral_data_t   );
     155  ALLOC0_SC_SIGNAL(out_UPDATE_VAL                      ,"out_UPDATE_VAL                      ",Tcontrol_t        );
     156  ALLOC0_SC_SIGNAL( in_UPDATE_ACK                      ," in_UPDATE_ACK                      ",Tcontrol_t        );
     157  ALLOC0_SC_SIGNAL(out_UPDATE_CONTEXT_ID               ,"out_UPDATE_CONTEXT_ID               ",Tcontext_t        );
     158  ALLOC0_SC_SIGNAL(out_UPDATE_FRONT_END_ID             ,"out_UPDATE_FRONT_END_ID             ",Tcontext_t        );
     159  ALLOC0_SC_SIGNAL(out_UPDATE_DEPTH                    ,"out_UPDATE_DEPTH                    ",Tdepth_t          );
     160  ALLOC0_SC_SIGNAL(out_UPDATE_TYPE                     ,"out_UPDATE_TYPE                     ",Tevent_type_t     );
     161  ALLOC0_SC_SIGNAL(out_UPDATE_IS_DELAY_SLOT            ,"out_UPDATE_IS_DELAY_SLOT            ",Tcontrol_t        );
     162  ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS                  ,"out_UPDATE_ADDRESS                  ",Taddress_t        );
     163  ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL         ,"out_UPDATE_ADDRESS_EPCR_VAL         ",Tcontrol_t        );
     164  ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR             ,"out_UPDATE_ADDRESS_EPCR             ",Taddress_t        );
     165  ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL         ,"out_UPDATE_ADDRESS_EEAR_VAL         ",Tcontrol_t        );
     166  ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR             ,"out_UPDATE_ADDRESS_EEAR             ",Tgeneral_data_t   );
    167167
    168168  ALLOC2_SC_SIGNAL( in_EVENT_VAL             ," in_EVENT_VAL             ",Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]);
     
    304304  INSTANCE1_SC_SIGNAL(_Commit_unit,out_BRANCH_COMPLETE_NO_SEQUENCE    ,_param->_nb_inst_branch_complete);
    305305  INSTANCE1_SC_SIGNAL(_Commit_unit, in_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete);
    306   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_VAL                      );
    307   INSTANCE_SC_SIGNAL (_Commit_unit, in_UPDATE_ACK                      );
     306  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_VAL                      );
     307  INSTANCE0_SC_SIGNAL(_Commit_unit, in_UPDATE_ACK                      );
    308308  if (_param->_have_port_context_id)
    309   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_CONTEXT_ID               );
     309  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_CONTEXT_ID               );
    310310  if (_param->_have_port_front_end_id)
    311   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_FRONT_END_ID             );
     311  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_FRONT_END_ID             );
    312312  if (_param->_have_port_depth)
    313   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_DEPTH                    );
    314   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_TYPE                     );
    315   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_IS_DELAY_SLOT            );
    316   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_ADDRESS                  );
    317   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_ADDRESS_EPCR_VAL         );
    318   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_ADDRESS_EPCR             );
    319   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_ADDRESS_EEAR_VAL         );
    320   INSTANCE_SC_SIGNAL (_Commit_unit,out_UPDATE_ADDRESS_EEAR             );
     313  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_DEPTH                    );
     314  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_TYPE                     );
     315  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_IS_DELAY_SLOT            );
     316  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS                  );
     317  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EPCR_VAL         );
     318  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EPCR             );
     319  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EEAR_VAL         );
     320  INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EEAR             );
    321321
    322322  INSTANCE2_SC_SIGNAL(_Commit_unit, in_EVENT_VAL                       ,_param->_nb_front_end, _param->_nb_context[it1]);
     
    708708  DELETE1_SC_SIGNAL(out_BRANCH_COMPLETE_NO_SEQUENCE    ,_param->_nb_inst_branch_complete);
    709709  DELETE1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete);
    710   DELETE_SC_SIGNAL (out_UPDATE_VAL                      );
    711   DELETE_SC_SIGNAL ( in_UPDATE_ACK                      );
    712   DELETE_SC_SIGNAL (out_UPDATE_CONTEXT_ID               );
    713   DELETE_SC_SIGNAL (out_UPDATE_FRONT_END_ID             );
    714   DELETE_SC_SIGNAL (out_UPDATE_DEPTH                    );
    715   DELETE_SC_SIGNAL (out_UPDATE_TYPE                     );
    716   DELETE_SC_SIGNAL (out_UPDATE_IS_DELAY_SLOT            );
    717   DELETE_SC_SIGNAL (out_UPDATE_ADDRESS                  );
    718   DELETE_SC_SIGNAL (out_UPDATE_ADDRESS_EPCR_VAL         );
    719   DELETE_SC_SIGNAL (out_UPDATE_ADDRESS_EPCR             );
    720   DELETE_SC_SIGNAL (out_UPDATE_ADDRESS_EEAR_VAL         );
    721   DELETE_SC_SIGNAL (out_UPDATE_ADDRESS_EEAR             );
     710  DELETE0_SC_SIGNAL(out_UPDATE_VAL                      );
     711  DELETE0_SC_SIGNAL( in_UPDATE_ACK                      );
     712  DELETE0_SC_SIGNAL(out_UPDATE_CONTEXT_ID               );
     713  DELETE0_SC_SIGNAL(out_UPDATE_FRONT_END_ID             );
     714  DELETE0_SC_SIGNAL(out_UPDATE_DEPTH                    );
     715  DELETE0_SC_SIGNAL(out_UPDATE_TYPE                     );
     716  DELETE0_SC_SIGNAL(out_UPDATE_IS_DELAY_SLOT            );
     717  DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS                  );
     718  DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL         );
     719  DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR             );
     720  DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL         );
     721  DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR             );
    722722
    723723  DELETE2_SC_SIGNAL( in_EVENT_VAL                       ,_param->_nb_front_end, _param->_nb_context[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h

    r111 r112  
    238238  private   : Tevent_state_t               ** reg_EVENT_STATE                      ;//[nb_front_end][nb_context]
    239239  private   : bool                         ** reg_EVENT_FLUSH                      ;//[nb_front_end][nb_context]
     240  private   : bool                         ** reg_EVENT_STOP                       ;//[nb_front_end][nb_context]
    240241
    241242//private   : Taddress_t                   ** reg_PC_PREVIOUS                      ;//[nb_front_end][nb_context]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Types.h

    r111 r112  
    3535      ROB_STORE_HEAD_KO              , //
    3636      ROB_OTHER_WAIT_END             , //
    37       ROB_MISS_WAIT_END              , //
     37
     38      ROB_EVENT_WAIT_END             , //
     39
    3840      ROB_END_OK_SPECULATIVE         , //
    3941      ROB_END_OK                     , //
     
    4951      ROB_END_EXCEPTION_UPDATE       , //
    5052      ROB_END_EXCEPTION                //
     53
    5154    } rob_state_t;
    5255
     
    121124      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_HEAD_KO              : return "ROB_STORE_HEAD_KO"               ; break;
    122125      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_OTHER_WAIT_END             : return "ROB_OTHER_WAIT_END"              ; break;
    123       case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_MISS_WAIT_END              : return "ROB_MISS_WAIT_END"               ; break;
     126      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_EVENT_WAIT_END             : return "ROB_EVENT_WAIT_END"              ; break;
    124127      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK_SPECULATIVE         : return "ROB_END_OK_SPECULATIVE"          ; break;
    125128      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK                     : return "ROB_END_OK"                      ; break;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit.cpp

    r110 r112  
    118118# ifdef SYSTEMCASS_SPECIFIC
    119119        // List dependency information
    120         for (uint32_t i=0; i<_param->_nb_rename_unit; i++)
    121           for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++)
    122             for (uint32_t x=0; x<_param->_nb_rename_unit; x++)
    123               for (uint32_t y=0; y<_param->_nb_inst_insert[x]; y++)
    124                 {
    125                   (*(out_INSERT_ACK       [i][j])) (*(in_INSERT_VAL [x][y]));
    126                   if (_param->_have_port_rob_ptr)
    127                   (*(out_INSERT_PACKET_ID [i][j])) (*(in_INSERT_VAL [x][y]));
    128                 }
     120//      for (uint32_t i=0; i<_param->_nb_rename_unit; i++)
     121//        for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++)
     122//          for (uint32_t x=0; x<_param->_nb_rename_unit; x++)
     123//            for (uint32_t y=0; y<_param->_nb_inst_insert[x]; y++)
     124//              {
     125//                (*(out_INSERT_ACK       [i][j])) (*(in_INSERT_VAL [x][y]));
     126//                if (_param->_have_port_rob_ptr)
     127//                (*(out_INSERT_PACKET_ID [i][j])) (*(in_INSERT_VAL [x][y]));
     128//              }
    129129# endif   
    130130
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp

    r111 r112  
    5858    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("insert", IN, SOUTH, _("Interface with rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     60      ALLOC2_INTERFACE_BEGIN("insert", IN, SOUTH, _("Interface with rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    6161
    6262      _ALLOC2_VALACK_IN ( in_INSERT_VAL                     ,VAL,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     
    9696      _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_OLD      ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    9797      _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_NEW      ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     98
     99      ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    98100    }
    99101
    100102    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    101103    {
    102       ALLOC2_INTERFACE("retire",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     104      ALLOC2_INTERFACE_BEGIN("retire",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    103105     
    104106      _ALLOC2_VALACK_OUT(out_RETIRE_VAL                     ,VAL,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     
    125127      _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RE_PHY_OLD      ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    126128      _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RE_PHY_NEW      ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     129
     130      ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    127131    }
    128132
    129133    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    130134    {
    131       ALLOC2_INTERFACE("retire_event",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_front_end,_param->_nb_context[it1]);
     135      ALLOC2_INTERFACE_BEGIN("retire_event",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_front_end,_param->_nb_context[it1]);
    132136   
    133137      _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_VAL               ,VAL,_param->_nb_front_end,_param->_nb_context[it1]);
    134138      _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_ACK               ,ACK,_param->_nb_front_end,_param->_nb_context[it1]);
    135139      _ALLOC2_SIGNAL_OUT(out_RETIRE_EVENT_STATE             ,"state"                ,Tevent_state_t    ,_param->_size_event_state           ,_param->_nb_front_end,_param->_nb_context[it1]);
     140
     141      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    136142    }
    137143
    138144    // ~~~~~[ Interface : "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    139145    {
    140       ALLOC1_INTERFACE("commit",IN,EAST,_("End of execute."),_param->_nb_inst_commit);
     146      ALLOC1_INTERFACE_BEGIN("commit",IN,EAST,_("End of execute."),_param->_nb_inst_commit);
    141147
    142148      ALLOC1_VALACK_IN ( in_COMMIT_VAL               ,VAL);
     
    152158//    ALLOC1_SIGNAL_OUT(out_COMMIT_NUM_REG_RD        ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register+_param->_size_rename_unit_id);
    153159      ALLOC1_SIGNAL_OUT(out_COMMIT_NUM_REG_RD        ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register);
     160
     161      ALLOC1_INTERFACE_END(_param->_nb_inst_commit);
    154162    }
    155163
    156164    // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    157165    {
    158       ALLOC1_INTERFACE("reexecute",OUT,EAST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_reexecute);
     166      ALLOC1_INTERFACE_BEGIN("reexecute",OUT,EAST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_reexecute);
    159167
    160168      ALLOC1_VALACK_OUT(out_REEXECUTE_VAL                  ,VAL);
     
    166174      ALLOC1_SIGNAL_OUT(out_REEXECUTE_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type);
    167175      ALLOC1_SIGNAL_OUT(out_REEXECUTE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
     176
     177      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    168178    }
    169179
    170180    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    171181    {
    172       ALLOC1_INTERFACE("branch_complete",OUT,WEST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_branch_complete);
     182      ALLOC1_INTERFACE_BEGIN("branch_complete",OUT,WEST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_branch_complete);
    173183
    174184      ALLOC1_VALACK_OUT(out_BRANCH_COMPLETE_VAL            ,VAL);
     
    181191      ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_NO_SEQUENCE    ,"no_sequence"    ,Tcontrol_t         ,1);
    182192      ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_MISS_PREDICTION,"miss_prediction",Tcontrol_t         ,1);
     193
     194      ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete);
    183195    }
    184196
    185197    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    186198    {
    187       ALLOC_INTERFACE("update", OUT, WEST,_("Interface with to Context State."));
    188 
    189       ALLOC_VALACK_OUT(out_UPDATE_VAL                      ,VAL);
    190       ALLOC_VALACK_IN ( in_UPDATE_ACK                      ,ACK);
    191       ALLOC_SIGNAL_OUT(out_UPDATE_CONTEXT_ID               ,"context_id"      ,Tcontext_t         ,_param->_size_context_id);
    192       ALLOC_SIGNAL_OUT(out_UPDATE_FRONT_END_ID             ,"front_end_id"    ,Tcontext_t         ,_param->_size_front_end_id);
    193       ALLOC_SIGNAL_OUT(out_UPDATE_DEPTH                    ,"depth"           ,Tdepth_t           ,_param->_size_depth    );
    194       ALLOC_SIGNAL_OUT(out_UPDATE_TYPE                     ,"type"            ,Tevent_type_t      ,_param->_size_event_type);
    195       ALLOC_SIGNAL_OUT(out_UPDATE_IS_DELAY_SLOT            ,"is_delay_slot"   ,Tcontrol_t         ,1);
    196       ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS                  ,"address"         ,Taddress_t         ,_param->_size_instruction_address);
    197       ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR_VAL         ,"address_epcr_val",Tcontrol_t         ,1);
    198       ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR             ,"address_epcr"    ,Taddress_t         ,_param->_size_instruction_address);
    199       ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR_VAL         ,"address_eear_val",Tcontrol_t         ,1);
    200       ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR             ,"address_eear"    ,Tgeneral_data_t    ,_param->_size_general_data);
     199      ALLOC0_INTERFACE_BEGIN("update", OUT, WEST,_("Interface with to Context State."));
     200
     201      ALLOC0_VALACK_OUT(out_UPDATE_VAL                      ,VAL);
     202      ALLOC0_VALACK_IN ( in_UPDATE_ACK                      ,ACK);
     203      ALLOC0_SIGNAL_OUT(out_UPDATE_CONTEXT_ID               ,"context_id"      ,Tcontext_t         ,_param->_size_context_id);
     204      ALLOC0_SIGNAL_OUT(out_UPDATE_FRONT_END_ID             ,"front_end_id"    ,Tcontext_t         ,_param->_size_front_end_id);
     205      ALLOC0_SIGNAL_OUT(out_UPDATE_DEPTH                    ,"depth"           ,Tdepth_t           ,_param->_size_depth    );
     206      ALLOC0_SIGNAL_OUT(out_UPDATE_TYPE                     ,"type"            ,Tevent_type_t      ,_param->_size_event_type);
     207      ALLOC0_SIGNAL_OUT(out_UPDATE_IS_DELAY_SLOT            ,"is_delay_slot"   ,Tcontrol_t         ,1);
     208      ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS                  ,"address"         ,Taddress_t         ,_param->_size_instruction_address);
     209      ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR_VAL         ,"address_epcr_val",Tcontrol_t         ,1);
     210      ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR             ,"address_epcr"    ,Taddress_t         ,_param->_size_instruction_address);
     211      ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR_VAL         ,"address_eear_val",Tcontrol_t         ,1);
     212      ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR             ,"address_eear"    ,Tgeneral_data_t    ,_param->_size_general_data);
     213
     214      ALLOC0_INTERFACE_END();
    201215    }
    202216
    203217    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    204218    {
    205       ALLOC2_INTERFACE("event",IN,WEST,_("Interface with Context State (event)."),_param->_nb_front_end, _param->_nb_context[it1]);
     219      ALLOC2_INTERFACE_BEGIN("event",IN,WEST,_("Interface with Context State (event)."),_param->_nb_front_end, _param->_nb_context[it1]);
    206220
    207221      _ALLOC2_VALACK_IN ( in_EVENT_VAL             , VAL                                                           ,_param->_nb_front_end, _param->_nb_context[it1]);
     
    211225      _ALLOC2_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL,"ADDRESS_NEXT_VAL",Tcontrol_t,1                                ,_param->_nb_front_end, _param->_nb_context[it1]);
    212226      _ALLOC2_SIGNAL_IN ( in_EVENT_IS_DS_TAKE      ,"IS_DS_TAKE"      ,Tcontrol_t,1                                ,_param->_nb_front_end, _param->_nb_context[it1]);
     227
     228      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    213229    } 
    214230
    215231    // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    216232    {
    217       ALLOC2_INTERFACE("nb_inst",OUT,WEST,_("Interface with Context State (synchronization)."),_param->_nb_front_end, _param->_nb_context[it1]);
     233      ALLOC2_INTERFACE_BEGIN("nb_inst",OUT,WEST,_("Interface with Context State (synchronization)."),_param->_nb_front_end, _param->_nb_context[it1]);
    218234
    219235      _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_ALL             ,"commit_all",Tcounter_t         ,_param->_size_nb_inst_commit,_param->_nb_front_end, _param->_nb_context[it1]);
    220236      _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_MEM             ,"commit_mem",Tcounter_t         ,_param->_size_nb_inst_commit,_param->_nb_front_end, _param->_nb_context[it1]);
    221237      _ALLOC2_SIGNAL_IN ( in_NB_INST_DECOD_ALL              ,"decod_all" ,Tcounter_t         ,_param->_size_nb_inst_decod ,_param->_nb_front_end, _param->_nb_context[it1]);
     238
     239      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    222240    }
    223241
    224242    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    225243    {
    226       ALLOC2_INTERFACE("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]);
     244      ALLOC2_INTERFACE_BEGIN("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]);
    227245
    228246      _ALLOC2_SIGNAL_IN ( in_DEPTH_MIN                     ,"min"      ,Tdepth_t           ,_param->_size_depth,_param->_nb_front_end, _param->_nb_context[it1]);
    229247      _ALLOC2_SIGNAL_IN ( in_DEPTH_MAX                     ,"max"      ,Tdepth_t           ,_param->_size_depth,_param->_nb_front_end, _param->_nb_context[it1]);
    230248      _ALLOC2_SIGNAL_IN ( in_DEPTH_FULL                    ,"full"     ,Tcontrol_t         ,1                  ,_param->_nb_front_end, _param->_nb_context[it1]);
     249
     250      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    231251    }
    232252
     
    234254    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    235255    {
    236       ALLOC2_INTERFACE("spr_read",IN ,EAST,_("Interface with special register file (read)."),_param->_nb_front_end, _param->_nb_context[it1]);
     256      ALLOC2_INTERFACE_BEGIN("spr_read",IN ,EAST,_("Interface with special register file (read)."),_param->_nb_front_end, _param->_nb_context[it1]);
    237257
    238258      _ALLOC2_SIGNAL_IN ( in_SPR_READ_SR_OVE                ,"sr_ove"    ,Tcontrol_t         ,1,_param->_nb_front_end, _param->_nb_context[it1]);
     259
     260      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    239261    }
    240262
    241263    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    242264    {
    243       ALLOC2_INTERFACE("spr_write",OUT,EAST,_("Interface with special register file (write)."),_param->_nb_front_end, _param->_nb_context[it1]);
     265      ALLOC2_INTERFACE_BEGIN("spr_write",OUT,EAST,_("Interface with special register file (write)."),_param->_nb_front_end, _param->_nb_context[it1]);
    244266
    245267      _ALLOC2_VALACK_OUT(out_SPR_WRITE_VAL                    ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     
    251273      _ALLOC2_SIGNAL_OUT(out_SPR_WRITE_SR_OV_VAL              ,"sr_ov_val"   ,Tcontrol_t         ,1                         ,_param->_nb_front_end, _param->_nb_context[it1]);
    252274      _ALLOC2_SIGNAL_OUT(out_SPR_WRITE_SR_OV                  ,"sr_ov"       ,Tcontrol_t         ,1                         ,_param->_nb_front_end, _param->_nb_context[it1]);
     275
     276      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    253277    }
    254278
     
    289313    ALLOC2(reg_EVENT_STATE          ,Tevent_state_t,_param->_nb_front_end,_param->_nb_context [it1]);
    290314    ALLOC2(reg_EVENT_FLUSH          ,bool          ,_param->_nb_front_end,_param->_nb_context [it1]);
     315    ALLOC2(reg_EVENT_STOP           ,bool          ,_param->_nb_front_end,_param->_nb_context [it1]);
    291316
    292317//  ALLOC2(reg_PC_PREVIOUS          ,Taddress_t    ,_param->_nb_front_end,_param->_nb_context [it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_deallocation.cpp

    r111 r112  
    124124        DELETE1_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete,1);
    125125
    126         DELETE_SIGNAL (out_UPDATE_VAL                      ,1                         );
    127         DELETE_SIGNAL ( in_UPDATE_ACK                      ,1                         );
    128         DELETE_SIGNAL (out_UPDATE_CONTEXT_ID               ,_param->_size_context_id  );
    129         DELETE_SIGNAL (out_UPDATE_FRONT_END_ID             ,_param->_size_front_end_id);
    130         DELETE_SIGNAL (out_UPDATE_DEPTH                    ,_param->_size_depth       );
    131         DELETE_SIGNAL (out_UPDATE_TYPE                     ,_param->_size_event_type  );
    132         DELETE_SIGNAL (out_UPDATE_IS_DELAY_SLOT            ,1                         );
    133         DELETE_SIGNAL (out_UPDATE_ADDRESS                  ,_param->_size_instruction_address     );
    134         DELETE_SIGNAL (out_UPDATE_ADDRESS_EPCR_VAL         ,1                         );
    135         DELETE_SIGNAL (out_UPDATE_ADDRESS_EPCR             ,_param->_size_instruction_address     );
    136         DELETE_SIGNAL (out_UPDATE_ADDRESS_EEAR_VAL         ,1                         );
    137         DELETE_SIGNAL (out_UPDATE_ADDRESS_EEAR             ,_param->_size_instruction_address     );
     126        DELETE0_SIGNAL(out_UPDATE_VAL                      ,1                         );
     127        DELETE0_SIGNAL( in_UPDATE_ACK                      ,1                         );
     128        DELETE0_SIGNAL(out_UPDATE_CONTEXT_ID               ,_param->_size_context_id  );
     129        DELETE0_SIGNAL(out_UPDATE_FRONT_END_ID             ,_param->_size_front_end_id);
     130        DELETE0_SIGNAL(out_UPDATE_DEPTH                    ,_param->_size_depth       );
     131        DELETE0_SIGNAL(out_UPDATE_TYPE                     ,_param->_size_event_type  );
     132        DELETE0_SIGNAL(out_UPDATE_IS_DELAY_SLOT            ,1                         );
     133        DELETE0_SIGNAL(out_UPDATE_ADDRESS                  ,_param->_size_instruction_address     );
     134        DELETE0_SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL         ,1                         );
     135        DELETE0_SIGNAL(out_UPDATE_ADDRESS_EPCR             ,_param->_size_instruction_address     );
     136        DELETE0_SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL         ,1                         );
     137        DELETE0_SIGNAL(out_UPDATE_ADDRESS_EEAR             ,_param->_size_instruction_address     );
    138138
    139139        DELETE2_SIGNAL( in_EVENT_VAL                       ,_param->_nb_front_end, _param->_nb_context[it1],1                    );
     
    194194        DELETE2(reg_EVENT_STATE          ,_param->_nb_front_end,_param->_nb_context [it1]);
    195195        DELETE2(reg_EVENT_FLUSH          ,_param->_nb_front_end,_param->_nb_context [it1]);
     196        DELETE2(reg_EVENT_STOP           ,_param->_nb_front_end,_param->_nb_context [it1]);
    196197//      DELETE2(reg_PC_PREVIOUS          ,_param->_nb_front_end,_param->_nb_context [it1]);
    197198        DELETE2(reg_PC_CURRENT           ,_param->_nb_front_end,_param->_nb_context [it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_insert.cpp

    r100 r112  
    3030#endif
    3131    bool       can_rename_select [_param->_nb_rename_unit];
    32    
    33     // Initialisation
     32    bool       event_stop;
     33   
     34//     Initialisation
     35    event_stop = false; // one signal for all context.
     36    for (uint32_t i=0; i<_param->_nb_front_end; ++i)
     37      for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
     38        event_stop |= reg_EVENT_STOP [i][j];
    3439    for (uint32_t i=0; i<_param->_nb_bank; i++)
    3540      {
     
    5257//     log_printf(TRACE,Commit_unit,FUNCTION,"  * reg_NUM_BANK_TAIL : %d",reg_NUM_BANK_TAIL);
    5358
    54     std::list<generic::priority::select_t> * select_insert = _priority_insert ->select(); // same select for all insert
    55     std::list<generic::priority::select_t>::iterator it=select_insert ->begin();
    56 
    57     // Scan all bank ...
    58     for (uint32_t i=0; i<_param->_nb_bank; i++)
     59    if (not event_stop)
    5960      {
    60         // compute the bank number (num_bank_tail is the older write slot)
    61         uint32_t num_bank = (reg_NUM_BANK_TAIL+i)%_param->_nb_bank;
    62 
    63 //      log_printf(TRACE,Commit_unit,FUNCTION,"  * BANK : %d", num_bank);
    64 //      log_printf(TRACE,Commit_unit,FUNCTION,"    * val  : %d", internal_BANK_INSERT_VAL [num_bank]);
    65 //      log_printf(TRACE,Commit_unit,FUNCTION,"    * full : %d", bank_full [num_bank]);
    66 
    67         // Scan all insert interface to find a valid transaction
    68         while (it!=select_insert ->end())
    69           {
    70             uint32_t num_rename_unit = it->grp;
    71             uint32_t num_inst_insert = it->elt;
    72 
    73             it++;
    74 
    75             log_printf(TRACE,Commit_unit,FUNCTION,"  * INSERT [%d][%d]", num_rename_unit,num_inst_insert);
    76 //          log_printf(TRACE,Commit_unit,FUNCTION,"    * INSERT_VAL        : %d", PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert]));
    77             log_printf(TRACE,Commit_unit,FUNCTION,"    * can_rename_select : %d", can_rename_select [num_rename_unit]);
    78 
    79             // Test if have instruction
    80             //   -> rename_unit_glue test the in-order insert !!!!!
    81             if (can_rename_select [num_rename_unit] // and
    82 //              PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert])
    83                 )
    84               {
    85                 log_printf(TRACE,Commit_unit,FUNCTION,"      * have instruction");
    86                 log_printf(TRACE,Commit_unit,FUNCTION,"      * bank_full : %d",bank_full [num_bank]);
    87 
    88                 // test if bank is not busy (full or previous access)
    89                 if (not bank_full [num_bank])
    90                   {
    91                     // find !!!
    92                     insert_ack       [num_rename_unit][num_inst_insert] = true;
    93 
    94                     Tpacket_t packet_id = ((num_bank << _param->_shift_num_bank) | reg_BANK_PTR [num_bank]);
    95 
     61        std::list<generic::priority::select_t> * select_insert = _priority_insert ->select(); // same select for all insert
     62        std::list<generic::priority::select_t>::iterator it=select_insert ->begin();
     63       
     64        // Scan all bank ...
     65        for (uint32_t i=0; i<_param->_nb_bank; i++)
     66          {
     67            // compute the bank number (num_bank_tail is the older write slot)
     68            uint32_t num_bank = (reg_NUM_BANK_TAIL+i)%_param->_nb_bank;
     69     
     70//          log_printf(TRACE,Commit_unit,FUNCTION,"  * BANK : %d", num_bank);
     71//          log_printf(TRACE,Commit_unit,FUNCTION,"    * val  : %d", internal_BANK_INSERT_VAL [num_bank]);
     72//          log_printf(TRACE,Commit_unit,FUNCTION,"    * full : %d", bank_full [num_bank]);
     73     
     74            // Scan all insert interface to find a valid transaction
     75            while (it!=select_insert ->end())
     76              {
     77                uint32_t num_rename_unit = it->grp;
     78                uint32_t num_inst_insert = it->elt;
     79     
     80                it++;
     81     
     82                log_printf(TRACE,Commit_unit,FUNCTION,"  * INSERT [%d][%d]", num_rename_unit,num_inst_insert);
     83//                  log_printf(TRACE,Commit_unit,FUNCTION,"    * INSERT_VAL        : %d", PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert]));
     84                log_printf(TRACE,Commit_unit,FUNCTION,"    * can_rename_select : %d", can_rename_select [num_rename_unit]);
     85     
     86                // Test if have instruction
     87                //   -> rename_unit_glue test the in-order insert !!!!!
     88                if (can_rename_select [num_rename_unit] // and
     89//              PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert])
     90                    )
     91                  {
     92                    log_printf(TRACE,Commit_unit,FUNCTION,"      * have instruction");
     93                    log_printf(TRACE,Commit_unit,FUNCTION,"      * bank_full : %d",bank_full [num_bank]);
     94                   
     95                    // test if bank is not busy (full or previous access)
     96                    if (not bank_full [num_bank])
     97                      {
     98                        // find !!!
     99                        insert_ack       [num_rename_unit][num_inst_insert] = true;
     100                       
     101                        Tpacket_t packet_id = ((num_bank << _param->_shift_num_bank) | reg_BANK_PTR [num_bank]);
     102                       
    96103#ifdef SYSTEMC_VHDL_COMPATIBILITY
    97                     insert_packet_id [num_rename_unit][num_inst_insert] = packet_id;
     104                        insert_packet_id [num_rename_unit][num_inst_insert] = packet_id;
    98105#else
    99                     if (_param->_have_port_rob_ptr  )
    100                     PORT_WRITE(out_INSERT_PACKET_ID [num_rename_unit][num_inst_insert],packet_id);
     106                        if (_param->_have_port_rob_ptr  )
     107                        PORT_WRITE(out_INSERT_PACKET_ID [num_rename_unit][num_inst_insert],packet_id);
    101108#endif
    102                     internal_BANK_INSERT_VAL             [num_bank] = true;
    103                     internal_BANK_INSERT_NUM_RENAME_UNIT [num_bank] = num_rename_unit;
    104                     internal_BANK_INSERT_NUM_INST        [num_bank] = num_inst_insert;
    105                    
    106                     break;
    107                   }
    108               }
     109                        internal_BANK_INSERT_VAL             [num_bank] = true;
     110                        internal_BANK_INSERT_NUM_RENAME_UNIT [num_bank] = num_rename_unit;
     111                        internal_BANK_INSERT_NUM_INST        [num_bank] = num_inst_insert;
     112                       
     113                        break;
     114                      }
     115                  }
    109116               
    110             // is a valid instruction, but it's not send at a bank
    111             //  ... invalid this rename_unit (because, insert in_order)
    112             can_rename_select [num_rename_unit] = false;
    113           }
     117                // is a valid instruction, but it's not send at a bank
     118                //  ... invalid this rename_unit (because, insert in_order)
     119                can_rename_select [num_rename_unit] = false;
     120              }
     121          }
    114122      }
    115123   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_retire.cpp

    r110 r112  
    7676                PORT_READ(in_RETIRE_ACK [x][y])) // not busy
    7777              {
    78                 rob_state_t state = entry->state;
    79                
    80                 if ((state == ROB_END_OK         ) or
    81                     (state == ROB_END_KO         ) or
    82                     (state == ROB_END_BRANCH_MISS) or
    83                     (state == ROB_END_LOAD_MISS  ) or
    84                     (state == ROB_END_MISS       )//  or
    85 //                  (state == ROB_END_EXCEPTION)
    86                     )
    87                   {
    88                     Tcontext_t         front_end_id   = entry->front_end_id;
    89                     Tcontext_t         context_id     = entry->context_id; 
    90                     Tcontrol_t         write_re       = entry->write_re;
    91                     Tspecial_address_t num_reg_re_log = entry->num_reg_re_log;
    92 
    93                     // if state is ok, when write flags in the SR regsiters
    94                     bool spr_write_ack = true;
    95 
    96                     // Write in SR the good flag
    97                     if ((state == ROB_END_OK  ) and write_re)
    98                       // ROB_END_BRANCH_MISS is a valid branch instruction but don't modify RE
    99                       {
    100                         spr_write_ack = PORT_READ(in_SPR_WRITE_ACK [front_end_id][context_id]);
    101 
    102                         // retire_ack is set !!!
    103                         spr_write_val       [front_end_id][context_id] = 1;
    104 
    105                         Tspecial_data_t flags = entry->flags;
    106 
    107                         switch (num_reg_re_log)
    108                           {
    109                           case SPR_LOGIC_SR_F     :
    110                             {
    111                               spr_write_sr_f_val  [front_end_id][context_id] = 1;
    112                               spr_write_sr_f      [front_end_id][context_id] = (flags & FLAG_F )!=0;
    113 
    114                               break;
    115                             }
    116                           case SPR_LOGIC_SR_CY_OV :
    117                             {
    118                               spr_write_sr_cy_val [front_end_id][context_id] = 1;
    119                               spr_write_sr_ov_val [front_end_id][context_id] = 1;       
    120                               spr_write_sr_cy     [front_end_id][context_id] = (flags & FLAG_CY)!=0;
    121                               spr_write_sr_ov     [front_end_id][context_id] = (flags & FLAG_OV)!=0;
    122                        
    123                               break;
    124                             }
    125                           default :
    126                             {
     78                rob_state_t state        = entry->state;
     79                  if ((state == ROB_END_OK         ) or
     80                      (state == ROB_END_KO         ) or
     81                      (state == ROB_END_BRANCH_MISS) or
     82                      (state == ROB_END_LOAD_MISS  ) or
     83                      (state == ROB_END_MISS       )//  or
     84//                    (state == ROB_END_EXCEPTION)
     85                      )
     86                    {
     87                      Tcontrol_t         write_re       = entry->write_re;
     88                      Tspecial_address_t num_reg_re_log = entry->num_reg_re_log;
     89                      Tcontext_t         front_end_id   = entry->front_end_id;
     90                      Tcontext_t         context_id     = entry->context_id; 
     91                     
     92                      // if state is ok, when write flags in the SR regsiters
     93                      bool spr_write_ack = true;
     94                     
     95                      // Write in SR the good flag
     96                      if ((state == ROB_END_OK  ) and write_re)
     97                        // ROB_END_BRANCH_MISS is a valid branch instruction but don't modify RE
     98                        {
     99                          spr_write_ack = PORT_READ(in_SPR_WRITE_ACK [front_end_id][context_id]);
     100                         
     101                          // retire_ack is set !!!
     102                          spr_write_val       [front_end_id][context_id] = 1;
     103                         
     104                          Tspecial_data_t flags = entry->flags;
     105                         
     106                          switch (num_reg_re_log)
     107                            {
     108                            case SPR_LOGIC_SR_F     :
     109                              {
     110                                spr_write_sr_f_val  [front_end_id][context_id] = 1;
     111                                spr_write_sr_f      [front_end_id][context_id] = (flags & FLAG_F )!=0;
     112                               
     113                                break;
     114                              }
     115                            case SPR_LOGIC_SR_CY_OV :
     116                              {
     117                                spr_write_sr_cy_val [front_end_id][context_id] = 1;
     118                                spr_write_sr_ov_val [front_end_id][context_id] = 1;     
     119                                spr_write_sr_cy     [front_end_id][context_id] = (flags & FLAG_CY)!=0;
     120                                spr_write_sr_ov     [front_end_id][context_id] = (flags & FLAG_OV)!=0;
     121                               
     122                                break;
     123                              }
     124                            default :
     125                              {
    127126#ifdef DEBUG_TEST
    128                               throw ERRORMORPHEO(FUNCTION,_("Invalid num_reg_re_log.\n"));
     127                                throw ERRORMORPHEO(FUNCTION,_("Invalid num_reg_re_log.\n"));
    129128#endif
    130                             }
    131                           }
    132                       }
    133 
    134                     // find an instruction can be retire, and in order
    135 
    136                     if (spr_write_ack)
    137                       {
    138                         retire_val [x][y] = 1;
    139                         num_inst_retire [x] ++;
    140                         internal_BANK_RETIRE_VAL [num_bank] = true;
    141                       }
    142 
    143                     internal_BANK_RETIRE_NUM_RENAME_UNIT [num_bank] = x;
    144                     internal_BANK_RETIRE_NUM_INST        [num_bank] = y;
    145 
    146                     if (_param->_have_port_front_end_id)
    147                     PORT_WRITE(out_RETIRE_FRONT_END_ID          [x][y], front_end_id                );
    148                     if (_param->_have_port_context_id)
    149                     PORT_WRITE(out_RETIRE_CONTEXT_ID            [x][y], context_id                  );
    150 //                  PORT_WRITE(out_RETIRE_RENAME_UNIT_ID        [x][y], entry->rename_unit_id       );
    151                     PORT_WRITE(out_RETIRE_USE_STORE_QUEUE       [x][y], entry->use_store_queue      );
    152                     PORT_WRITE(out_RETIRE_USE_LOAD_QUEUE        [x][y], entry->use_load_queue       );
    153                     PORT_WRITE(out_RETIRE_STORE_QUEUE_PTR_WRITE [x][y], entry->store_queue_ptr_write);
    154                     if (_param->_have_port_load_queue_ptr)
    155                     PORT_WRITE(out_RETIRE_LOAD_QUEUE_PTR_WRITE  [x][y], entry->load_queue_ptr_write );
    156                     PORT_WRITE(out_RETIRE_READ_RA               [x][y], entry->read_ra              );
    157                     PORT_WRITE(out_RETIRE_NUM_REG_RA_PHY        [x][y], entry->num_reg_ra_phy       );
    158                     PORT_WRITE(out_RETIRE_READ_RB               [x][y], entry->read_rb              );
    159                     PORT_WRITE(out_RETIRE_NUM_REG_RB_PHY        [x][y], entry->num_reg_rb_phy       );
    160                     PORT_WRITE(out_RETIRE_READ_RC               [x][y], entry->read_rc              );
    161                     PORT_WRITE(out_RETIRE_NUM_REG_RC_PHY        [x][y], entry->num_reg_rc_phy       );
    162                     PORT_WRITE(out_RETIRE_WRITE_RD              [x][y], entry->write_rd             );
    163                     PORT_WRITE(out_RETIRE_NUM_REG_RD_LOG        [x][y], entry->num_reg_rd_log       );
    164                     PORT_WRITE(out_RETIRE_NUM_REG_RD_PHY_OLD    [x][y], entry->num_reg_rd_phy_old   );
    165                     PORT_WRITE(out_RETIRE_NUM_REG_RD_PHY_NEW    [x][y], entry->num_reg_rd_phy_new   );
    166                     PORT_WRITE(out_RETIRE_WRITE_RE              [x][y], write_re                    );
    167                     PORT_WRITE(out_RETIRE_NUM_REG_RE_LOG        [x][y], num_reg_re_log              );
    168                     PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_OLD    [x][y], entry->num_reg_re_phy_old   );
    169                     PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_NEW    [x][y], entry->num_reg_re_phy_new   );
    170 
    171                     // Event -> rob must be manage this event
    172                     if ((state == ROB_END_BRANCH_MISS) or
    173                         (state == ROB_END_LOAD_MISS))
    174                       can_retire [x] = false;
    175                   }
     129                              }
     130                            }
     131                        }
     132                     
     133                      // find an instruction can be retire, and in order
     134                     
     135                      if (spr_write_ack)
     136                        {
     137                          retire_val [x][y] = 1;
     138                          num_inst_retire [x] ++;
     139                          internal_BANK_RETIRE_VAL [num_bank] = true;
     140                        }
     141                     
     142                      internal_BANK_RETIRE_NUM_RENAME_UNIT [num_bank] = x;
     143                      internal_BANK_RETIRE_NUM_INST        [num_bank] = y;
     144                     
     145                      if (_param->_have_port_front_end_id)
     146                      PORT_WRITE(out_RETIRE_FRONT_END_ID          [x][y], front_end_id                );
     147                      if (_param->_have_port_context_id)
     148                      PORT_WRITE(out_RETIRE_CONTEXT_ID            [x][y], context_id                  );
     149//                    PORT_WRITE(out_RETIRE_RENAME_UNIT_ID        [x][y], entry->rename_unit_id       );
     150                      PORT_WRITE(out_RETIRE_USE_STORE_QUEUE       [x][y], entry->use_store_queue      );
     151                      PORT_WRITE(out_RETIRE_USE_LOAD_QUEUE        [x][y], entry->use_load_queue       );
     152                      PORT_WRITE(out_RETIRE_STORE_QUEUE_PTR_WRITE [x][y], entry->store_queue_ptr_write);
     153                      if (_param->_have_port_load_queue_ptr)
     154                      PORT_WRITE(out_RETIRE_LOAD_QUEUE_PTR_WRITE  [x][y], entry->load_queue_ptr_write );
     155                      PORT_WRITE(out_RETIRE_READ_RA               [x][y], entry->read_ra              );
     156                      PORT_WRITE(out_RETIRE_NUM_REG_RA_PHY        [x][y], entry->num_reg_ra_phy       );
     157                      PORT_WRITE(out_RETIRE_READ_RB               [x][y], entry->read_rb              );
     158                      PORT_WRITE(out_RETIRE_NUM_REG_RB_PHY        [x][y], entry->num_reg_rb_phy       );
     159                      PORT_WRITE(out_RETIRE_READ_RC               [x][y], entry->read_rc              );
     160                      PORT_WRITE(out_RETIRE_NUM_REG_RC_PHY        [x][y], entry->num_reg_rc_phy       );
     161                      PORT_WRITE(out_RETIRE_WRITE_RD              [x][y], entry->write_rd             );
     162                      PORT_WRITE(out_RETIRE_NUM_REG_RD_LOG        [x][y], entry->num_reg_rd_log       );
     163                      PORT_WRITE(out_RETIRE_NUM_REG_RD_PHY_OLD    [x][y], entry->num_reg_rd_phy_old   );
     164                      PORT_WRITE(out_RETIRE_NUM_REG_RD_PHY_NEW    [x][y], entry->num_reg_rd_phy_new   );
     165                      PORT_WRITE(out_RETIRE_WRITE_RE              [x][y], write_re                    );
     166                      PORT_WRITE(out_RETIRE_NUM_REG_RE_LOG        [x][y], num_reg_re_log              );
     167                      PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_OLD    [x][y], entry->num_reg_re_phy_old   );
     168                      PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_NEW    [x][y], entry->num_reg_re_phy_new   );
     169
     170                      // Event -> rob must be manage this event
     171                      if ((state == ROB_END_BRANCH_MISS) or
     172                          (state == ROB_END_LOAD_MISS))
     173                        can_retire [x] = false;
     174                    }
    176175              }
    177176
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp

    r111 r112  
    4949              reg_EVENT_STATE           [i][j] = EVENT_STATE_NO_EVENT;
    5050              reg_EVENT_FLUSH           [i][j] = false;
     51              reg_EVENT_STOP            [i][j] = false;
    5152
    5253//            reg_PC_PREVIOUS           [i][j] = (0x100-4)>>2;
     
    9091                      reg_EVENT_STATE [i][j] = EVENT_STATE_END;
    9192                      reg_EVENT_FLUSH [i][j] = false;
     93                      //reg_EVENT_STOP  [i][j] = false;
    9294                    }
    9395                  break;
     
    324326                      case ROB_BRANCH_WAIT_END : {state = (have_exception)?ROB_END_EXCEPTION_WAIT_HEAD:ROB_BRANCH_COMPLETE; break;}
    325327                        // Store KO
    326                       case ROB_MISS_WAIT_END   : {state = ROB_END_KO_SPECULATIVE; break;}
     328                      case ROB_EVENT_WAIT_END  : {state = ROB_END_KO_SPECULATIVE; break;}
    327329                        // Store OK, Load and other instruction
    328330                      case ROB_OTHER_WAIT_END  : {state = (have_exception)?ROB_END_EXCEPTION_WAIT_HEAD:((have_miss_speculation)?ROB_END_LOAD_MISS_SPECULATIVE:ROB_END_OK_SPECULATIVE); break;}
     
    333335                        }
    334336                      }
     337
     338                    if ((have_exception or have_miss_speculation) and
     339                        (reg_EVENT_FLUSH [entry->front_end_id][entry->context_id] == 0))
     340                      reg_EVENT_STOP [entry->front_end_id][entry->context_id] = true;
    335341
    336342                    // update Re Order Buffer
     
    364370               
    365371                log_printf(TRACE,Commit_unit,FUNCTION,"  * RETIRE            [%d][%d]",x,y);
     372                log_printf(TRACE,Commit_unit,FUNCTION,"    * num_bank     : %d",num_bank     );
    366373               
    367374#ifdef DEBUG_TEST
     
    381388                log_printf(TRACE,Commit_unit,FUNCTION,"    * front_end_id : %d",front_end_id );
    382389                log_printf(TRACE,Commit_unit,FUNCTION,"    * context_id   : %d",context_id   );
     390                log_printf(TRACE,Commit_unit,FUNCTION,"    * rob_ptr      : %d",((num_bank << _param->_shift_num_bank) | entry->ptr));
    383391                log_printf(TRACE,Commit_unit,FUNCTION,"    * num_thread   : %d",num_thread   );
    384392                log_printf(TRACE,Commit_unit,FUNCTION,"    * type         : %s",toString(type).c_str());
     
    406414//                     throw ERRORMORPHEO(FUNCTION,toString(_("Retire : Instruction's address_next (%.8x) is different of commit_unit's address_next (%.8x)"),entry->address_next,reg_PC_NEXT [front_end_id][context_id]));
    407415                  }
    408                
     416
    409417                if ((state == ROB_END_BRANCH_MISS) or
    410418                    (state == ROB_END_LOAD_MISS))
    411                   {
    412                     reg_EVENT_STATE [front_end_id][context_id] = EVENT_STATE_EVENT;
    413                     reg_EVENT_FLUSH [front_end_id][context_id] = true;
    414                   }
     419                    {
     420                      reg_EVENT_STATE [front_end_id][context_id] = EVENT_STATE_EVENT;
     421                      reg_EVENT_FLUSH [front_end_id][context_id] = true;
     422                      reg_EVENT_STOP  [front_end_id][context_id] = false;
     423                    }
    415424               
    416425#if defined(DEBUG) and defined(DEBUG_Commit_unit) and (DEBUG_Commit_unit == true)
     
    475484              {
    476485              case ROB_STORE_HEAD_OK : {state = ROB_OTHER_WAIT_END; break; }
    477               case ROB_STORE_HEAD_KO : {state = ROB_MISS_WAIT_END ; break; }
     486              case ROB_STORE_HEAD_KO : {state = ROB_EVENT_WAIT_END; break; }
    478487              default : {throw ERRORMORPHEO(FUNCTION,_("Reexecute : invalid state value.\n"));}
    479488              }
     
    500509                throw ERRORMORPHEO(FUNCTION,_("Branch_complete : Invalid state value.\n"));
    501510#endif
    502 
    503               entry->state = (PORT_READ(in_BRANCH_COMPLETE_MISS_PREDICTION [i]))?ROB_END_BRANCH_MISS_SPECULATIVE:ROB_END_OK_SPECULATIVE;
     511              Tcontrol_t miss = PORT_READ(in_BRANCH_COMPLETE_MISS_PREDICTION [i]);
     512             
     513              entry->state = (miss)?ROB_END_BRANCH_MISS_SPECULATIVE:ROB_END_OK_SPECULATIVE;
     514             
     515              if (miss and (reg_EVENT_FLUSH [entry->front_end_id][entry->context_id] == 0))
     516                reg_EVENT_STOP [entry->front_end_id][entry->context_id] = true;
     517
     518
    504519//               entry->state = ROB_END_OK_SPECULATIVE;
    505520            }
     
    612627                  switch (state)
    613628                    {
    614                     case ROB_BRANCH_WAIT_END             : {state = ROB_MISS_WAIT_END; break;}
    615                     case ROB_BRANCH_COMPLETE             : {state = ROB_END_MISS     ; break;}
     629                    case ROB_BRANCH_WAIT_END             : {state = ROB_EVENT_WAIT_END; break;}
     630                    case ROB_BRANCH_COMPLETE             : {state = ROB_END_MISS      ; break;}
    616631                    case ROB_END_BRANCH_MISS             :
    617                     case ROB_END_BRANCH_MISS_SPECULATIVE : {state = ROB_END_MISS     ; break;}
     632                    case ROB_END_BRANCH_MISS_SPECULATIVE : {state = ROB_END_MISS      ; break;}
    618633                    case ROB_END_LOAD_MISS_UPDATE        :
    619634                    case ROB_END_LOAD_MISS               :
    620                     case ROB_END_LOAD_MISS_SPECULATIVE   : {state = ROB_END_MISS     ; break;}
    621                     case ROB_STORE_WAIT_HEAD_OK          : {state = ROB_STORE_HEAD_KO; break;}
     635                    case ROB_END_LOAD_MISS_SPECULATIVE   : {state = ROB_END_MISS      ; break;}
     636                    case ROB_STORE_WAIT_HEAD_OK          : {state = ROB_STORE_HEAD_KO ; break;}
    622637                  //case ROB_STORE_WAIT_HEAD_KO          : {state = ; break;}
    623                     case ROB_OTHER_WAIT_END              : {state = ROB_MISS_WAIT_END; break;}
     638                    case ROB_OTHER_WAIT_END              : {state = ROB_EVENT_WAIT_END; break;}
    624639                    case ROB_END_OK                      :
    625                     case ROB_END_OK_SPECULATIVE          : {state = ROB_END_MISS     ; break;}
     640                    case ROB_END_OK_SPECULATIVE          : {state = ROB_END_MISS      ; break;}
    626641                    case ROB_END_KO                      :
    627                     case ROB_END_KO_SPECULATIVE          : {state = ROB_END_MISS     ; break;}
     642                    case ROB_END_KO_SPECULATIVE          : {state = ROB_END_MISS      ; break;}
    628643                    case ROB_END_EXCEPTION_UPDATE        :
    629644                    case ROB_END_EXCEPTION               :
    630                     case ROB_END_EXCEPTION_WAIT_HEAD     : {state = ROB_END_MISS     ; break;}
     645                    case ROB_END_EXCEPTION_WAIT_HEAD     : {state = ROB_END_MISS      ; break;}
    631646                                                         
    632647                      // don't change                   
    633648                    case ROB_STORE_HEAD_KO               : {break;}
    634                     case ROB_MISS_WAIT_END               : {break;}
     649                    case ROB_EVENT_WAIT_END              : {break;}
    635650                    case ROB_END_MISS                    : {break;}
    636651                                                         
     
    671686                    case ROB_STORE_WAIT_HEAD_OK      : {state = ROB_STORE_HEAD_OK;        break;}
    672687                    case ROB_END_EXCEPTION_WAIT_HEAD : {state = ROB_END_EXCEPTION_UPDATE; break;}
    673                     default : {break;} // else, no change
     688                    default : {break;} // else, no change
    674689                    }
    675690                }
     
    701716            log_printf(TRACE,Commit_unit,FUNCTION,"      * EVENT_STATE  : %s",toString(reg_EVENT_STATE [i][j]).c_str());
    702717            log_printf(TRACE,Commit_unit,FUNCTION,"      * EVENT_FLUSH  : %d",reg_EVENT_FLUSH [i][j]);
     718            log_printf(TRACE,Commit_unit,FUNCTION,"      * EVENT_STOP   : %d",reg_EVENT_STOP  [i][j]);
    703719            log_printf(TRACE,Commit_unit,FUNCTION,"      * NB_INST_ALL  : %d",reg_NB_INST_COMMIT_ALL[i][j]);
    704720            log_printf(TRACE,Commit_unit,FUNCTION,"      * NB_INST_MEM  : %d",reg_NB_INST_COMMIT_MEM[i][j]);
     
    784800//            or (entry->state == ROB_STORE_HEAD_KO              )
    785801//            or (entry->state == ROB_OTHER_WAIT_END             )
    786 //            or (entry->state == ROB_MISS_WAIT_END              )
     802//            or (entry->state == ROB_EVENT_WAIT_END             )
    787803//            or (entry->state == ROB_END_OK_SPECULATIVE         )
    788804              or (entry->state == ROB_END_OK                     )
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_allocation.cpp

    r111 r112  
    5959    // ~~~~~[ Interface : "issue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC2_INTERFACE("issue_in", IN, WEST, _("Rename_out / Insert Rob interface"),_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
     61      ALLOC2_INTERFACE_BEGIN("issue_in", IN, WEST, _("Rename_out / Insert Rob interface"),_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
    6262   
    6363      _ALLOC2_VALACK_IN ( in_ISSUE_IN_VAL                  ,VAL,_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
     
    8282      _ALLOC2_SIGNAL_IN ( in_ISSUE_IN_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             ,_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
    8383      _ALLOC2_SIGNAL_IN ( in_ISSUE_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register,_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
     84
     85      ALLOC2_INTERFACE_END(_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);
    8486    }
    8587
    8688    // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8789    {
    88       ALLOC1_INTERFACE("reexecute", IN, NORTH, _("Instruction reexecute (store head/ spr access)"),_param->_nb_inst_reexecute);
     90      ALLOC1_INTERFACE_BEGIN("reexecute", IN, NORTH, _("Instruction reexecute (store head/ spr access)"),_param->_nb_inst_reexecute);
    8991     
    9092      ALLOC1_VALACK_IN ( in_REEXECUTE_VAL                  ,VAL);
     
    109111      ALLOC1_SIGNAL_IN ( in_REEXECUTE_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             );
    110112      ALLOC1_SIGNAL_IN ( in_REEXECUTE_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     113
     114      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    111115    }
    112116
    113117    // ~~~~~[ Interface : "issue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    114118    {
    115       ALLOC1_INTERFACE("issue_out",OUT, EAST, _("Go to issue network"),_param->_nb_inst_issue);
     119      ALLOC1_INTERFACE_BEGIN("issue_out",OUT, EAST, _("Go to issue network"),_param->_nb_inst_issue);
    116120     
    117121      ALLOC1_VALACK_OUT(out_ISSUE_OUT_VAL                  ,VAL);
     
    136140      ALLOC1_SIGNAL_OUT(out_ISSUE_OUT_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             );
    137141      ALLOC1_SIGNAL_OUT(out_ISSUE_OUT_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     142
     143      ALLOC1_INTERFACE_END(_param->_nb_inst_issue);
    138144    }
    139145
     
    141147      {
    142148    // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    143     _issue_queue     = new std::list<entry_t*> [_param->_nb_bank];
     149    ALLOC1(_issue_queue                     ,std::list<entry_t*>,_param->_nb_bank);
    144150
    145151    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_deallocation.cpp

    r111 r112  
    9595
    9696        // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    97         delete [] _issue_queue;
     97        DELETE1(_issue_queue                     ,_param->_nb_bank);
    9898       
    9999        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_allocation.cpp

    r97 r112  
    5858    // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("rename",IN, SOUTH,_("rename's interface"),_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     60      ALLOC2_INTERFACE_BEGIN("rename",IN, SOUTH,_("rename's interface"),_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6161     
    6262      _ALLOC2_SIGNAL_IN ( in_RENAME_FRONT_END_ID                          ,"FRONT_END_ID"                          ,Tcontext_t         ,_param->_size_front_end_id    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6363      _ALLOC2_SIGNAL_OUT(out_RENAME_RENAME_UNIT_FRONT_END_ID              ,"RENAME_UNIT_FRONT_END_ID"              ,Tcontext_t         ,_param->_size_front_end_id    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     64
     65      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6466    }
    6567   
    6668    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6769    {
    68       ALLOC1_INTERFACE("insert",OUT, WEST,_("insert's interface"),_param->_sum_inst_insert);
     70      ALLOC1_INTERFACE_BEGIN("insert",OUT, WEST,_("insert's interface"),_param->_sum_inst_insert);
    6971
    7072      ALLOC1_SIGNAL_OUT (out_INSERT_VAL                                   ,"VAL"                                   ,Tcontrol_t         ,1                             );
     
    7476      ALLOC1_SIGNAL_OUT (out_INSERT_RE_USE                                ,"RE_USE"                                ,Tcontrol_t         ,1                             );
    7577      ALLOC1_SIGNAL_OUT (out_INSERT_RE_NUM_REG                            ,"RE_NUM_REG"                            ,Tspecial_address_t ,_param->_size_special_register);
    76     }
    77 
    78     {
    79       ALLOC2_INTERFACE("insert",IN, EAST,_("insert's interface"),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     78
     79      ALLOC1_INTERFACE_END(_param->_sum_inst_insert);
     80    }
     81
     82    {
     83      ALLOC2_INTERFACE_BEGIN("insert",IN, EAST,_("insert's interface"),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    8084
    8185      _ALLOC2_SIGNAL_IN ( in_INSERT_RENAME_UNIT_VAL                       ,"RENAME_UNIT_VAL"                       ,Tcontrol_t         ,1                             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     
    146150      _ALLOC2_SIGNAL_OUT(out_INSERT_ISSUE_QUEUE_WRITE_RE                  ,"ISSUE_QUEUE_WRITE_RE"                  ,Tcontrol_t         ,1                             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    147151      _ALLOC2_SIGNAL_OUT(out_INSERT_ISSUE_QUEUE_NUM_REG_RE                ,"ISSUE_QUEUE_NUM_REG_RE"                ,Tspecial_address_t ,_param->_size_special_register,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     152
     153      ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    148154    }
    149155
    150156//     // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    151157//     {
    152 //       ALLOC1_INTERFACE("retire",OUT, WEST,_("retire's interface"),_param->_sum_inst_retire);
     158//       ALLOC1_INTERFACE_BEGIN("retire",OUT, WEST,_("retire's interface"),_param->_sum_inst_retire);
    153159     
    154160//       ALLOC1_SIGNAL_OUT (out_RETIRE_VAL                                   ,"VAL"                                   ,Tcontrol_t         ,1                             );
     
    162168//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_USE                            ,"RE_NEW_USE"                            ,Tcontrol_t         ,1                             );
    163169//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_NUM_REG                        ,"RE_NEW_NUM_REG"                        ,Tspecial_address_t ,_param->_size_special_register);
     170
     171//       ALLOC1_INTERFACE_END(_param->_sum_inst_retire);
    164172//     }
    165173
    166174//     {
    167 //       ALLOC2_INTERFACE("retire",IN, EAST,_("retire's interface"),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     175//       ALLOC2_INTERFACE_BEGIN("retire",IN, EAST,_("retire's interface"),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    168176
    169177//       _ALLOC2_SIGNAL_OUT(out_RETIRE_RENAME_UNIT_VAL                       ,"RENAME_UNIT_VAL"                       ,Tcontrol_t         ,1                             ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     
    188196//       _ALLOC2_SIGNAL_IN ( in_RETIRE_COMMIT_UNIT_NUM_REG_RE_PHY_NEW        ,"COMMIT_UNIT_NUM_REG_RE_PHY_NEW"        ,Tspecial_address_t ,_param->_size_special_register,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    189197//       _ALLOC2_SIGNAL_IN ( in_RETIRE_COMMIT_UNIT_EVENT_STATE               ,"COMMIT_UNIT_EVENT_STATE"               ,Tevent_state_t     ,_param->_size_event_state     ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     198
     199//       ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    190200//     }
    191201
    192202    // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    193203    {
    194       ALLOC2_INTERFACE("spr",IN, NORTH,_("spr's interface"),_param->_nb_front_end,_param->_nb_context[it1]);
     204      ALLOC2_INTERFACE_BEGIN("spr",IN, NORTH,_("spr's interface"),_param->_nb_front_end,_param->_nb_context[it1]);
    195205
    196206      _ALLOC2_SIGNAL_OUT(out_SPR_SR_IEE                                   ,"SR_IEE"                                ,Tcontrol_t         ,1                             ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    199209      _ALLOC2_SIGNAL_OUT(out_SPR_COMMIT_UNIT_SR_OVE                       ,"COMMIT_UNIT_SR_OVE"                    ,Tcontrol_t         ,1                             ,_param->_nb_front_end,_param->_nb_context[it1]);
    200210      _ALLOC2_SIGNAL_IN ( in_SPR_SPECIAL_REGISTER_UNIT_SR                 ,"SPECIAL_REGISTER_UNIT_SR"              ,Tspr_t             ,_param->_size_spr             ,_param->_nb_front_end,_param->_nb_context[it1]);
     211
     212      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    201213    }
    202214
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_allocation.cpp

    r97 r112  
    5858    // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("execute_loop", IN, EAST, _("Instruction executed from execute_loop"),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     60      ALLOC2_INTERFACE_BEGIN("execute_loop", IN, EAST, _("Instruction executed from execute_loop"),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    6161
    6262      _ALLOC2_VALACK_IN ( in_EXECUTE_LOOP_VAL                     ,VAL,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     
    7272      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS                 ,"address"     ,Taddress_t         ,_param->_size_instruction_address,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    7373      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_DATA                    ,"data"        ,Tgeneral_data_t    ,_param->_size_general_data,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     74
     75      ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    7476    }
    7577
    7678    // ~~~~~[ Interface "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7779    {
    78       ALLOC1_INTERFACE("commit",OUT,WEST, _("Instruction executed to Re Order Buffer"),_param->_nb_inst_commit);
     80      ALLOC1_INTERFACE_BEGIN("commit",OUT,WEST, _("Instruction executed to Re Order Buffer"),_param->_nb_inst_commit);
    7981
    8082      ALLOC1_VALACK_OUT(out_COMMIT_VAL                           ,VAL);
     
    9193      ALLOC1_SIGNAL_OUT(out_COMMIT_ADDRESS                       ,"address"     ,Taddress_t         ,_param->_size_instruction_address);
    9294      ALLOC1_SIGNAL_IN ( in_COMMIT_NUM_REG_RD                    ,"num_reg_rd"  ,Tgeneral_address_t ,_param->_size_general_register);
     95
     96      ALLOC1_INTERFACE_END(_param->_nb_inst_commit);
    9397    }
    9498
    9599    // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    96100    {
    97       ALLOC1_INTERFACE("spr",OUT,EAST, _("Access to Special Register"), _param->_nb_inst_reexecute);
     101      ALLOC1_INTERFACE_BEGIN("spr",OUT,EAST, _("Access to Special Register"), _param->_nb_inst_reexecute);
    98102
    99103      ALLOC1_VALACK_OUT(out_SPR_VAL                              ,VAL);
     
    107111      ALLOC1_SIGNAL_IN ( in_SPR_RDATA                            ,"rdata"       ,Tspr_t             ,_param->_size_spr);
    108112      ALLOC1_SIGNAL_IN ( in_SPR_INVALID                          ,"invalid"     ,Tcontrol_t         ,1);
     113
     114      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    109115    }
    110116
    111117    // ~~~~~[ Interface : "reexecute_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    112118    {
    113       ALLOC1_INTERFACE("reexecute_rob", IN,EAST, _("Instruction reexecuted by the Re Order Buffer (Store head)"), _param->_nb_inst_reexecute);
     119      ALLOC1_INTERFACE_BEGIN("reexecute_rob", IN,EAST, _("Instruction reexecuted by the Re Order Buffer (Store head)"), _param->_nb_inst_reexecute);
    114120
    115121      ALLOC1_VALACK_IN ( in_REEXECUTE_ROB_VAL                    ,VAL);
     
    121127      ALLOC1_SIGNAL_IN ( in_REEXECUTE_ROB_TYPE                   ,"type"                 ,Ttype_t            ,_param->_size_type);
    122128      ALLOC1_SIGNAL_IN ( in_REEXECUTE_ROB_STORE_QUEUE_PTR_WRITE  ,"store_queue_ptr_write",Tlsq_ptr_t         ,_param->_size_store_queue_ptr);
     129
     130      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    123131    }
    124132
    125133    // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    126134    {
    127       ALLOC1_INTERFACE("reexecute",OUT,SOUTH, _("Instruction reexecute, send at the issue_queue"), _param->_nb_inst_reexecute);
     135      ALLOC1_INTERFACE_BEGIN("reexecute",OUT,SOUTH, _("Instruction reexecute, send at the issue_queue"), _param->_nb_inst_reexecute);
    128136
    129137      ALLOC1_VALACK_OUT(out_REEXECUTE_VAL                  ,VAL);
    130138      ALLOC1_VALACK_IN ( in_REEXECUTE_ACK                  ,ACK);
    131       ALLOC1_SIGNAL_OUT(out_REEXECUTE_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id         );
    132       ALLOC1_SIGNAL_OUT(out_REEXECUTE_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id       );
    133       ALLOC1_SIGNAL_OUT(out_REEXECUTE_PACKET_ID            ,"packet_id"            ,Tpacket_t         ,_param->_size_rob_ptr            );
    134       ALLOC1_SIGNAL_OUT(out_REEXECUTE_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation          );
    135       ALLOC1_SIGNAL_OUT(out_REEXECUTE_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type               );
    136       ALLOC1_SIGNAL_OUT(out_REEXECUTE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr    );
    137       ALLOC1_SIGNAL_OUT(out_REEXECUTE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr     );
    138       ALLOC1_SIGNAL_OUT(out_REEXECUTE_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                                );
    139       ALLOC1_SIGNAL_OUT(out_REEXECUTE_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data       );
    140       ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1                                );
    141       ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RA           ,"num_reg_ra"           ,Tgeneral_address_t,_param->_size_general_register   );
    142       ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1                                );
    143       ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RB           ,"num_reg_rb"           ,Tgeneral_address_t,_param->_size_general_register   );
    144       ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1                                );
    145       ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RC           ,"num_reg_rc"           ,Tspecial_address_t,_param->_size_special_register   );
    146       ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                                );
    147       ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register   );
    148       ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                                );
    149       ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register   );
     139      ALLOC1_SIGNAL_OUT(out_REEXECUTE_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id      );
     140      ALLOC1_SIGNAL_OUT(out_REEXECUTE_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id    );
     141      ALLOC1_SIGNAL_OUT(out_REEXECUTE_PACKET_ID            ,"packet_id"            ,Tpacket_t         ,_param->_size_rob_ptr         );
     142      ALLOC1_SIGNAL_OUT(out_REEXECUTE_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation       );
     143      ALLOC1_SIGNAL_OUT(out_REEXECUTE_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type            );
     144      ALLOC1_SIGNAL_OUT(out_REEXECUTE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr );
     145      ALLOC1_SIGNAL_OUT(out_REEXECUTE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr  );
     146      ALLOC1_SIGNAL_OUT(out_REEXECUTE_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                             );
     147      ALLOC1_SIGNAL_OUT(out_REEXECUTE_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data    );
     148      ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1                             );
     149      ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RA           ,"num_reg_ra"           ,Tgeneral_address_t,_param->_size_general_register);
     150      ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1                             );
     151      ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RB           ,"num_reg_rb"           ,Tgeneral_address_t,_param->_size_general_register);
     152      ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1                             );
     153      ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RC           ,"num_reg_rc"           ,Tspecial_address_t,_param->_size_special_register);
     154      ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                             );
     155      ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register);
     156      ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             );
     157      ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
     158
     159      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    150160    }
    151161
     
    153163      {
    154164    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    155     _reexecute_queue = new std::list<entry_t *> [_param->_nb_bank];
     165    ALLOC1(_reexecute_queue         ,std::list<entry_t *>,_param->_nb_bank);
    156166
    157167    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    158     internal_QUEUE_PUSH             = new Tcontrol_t [_param->_nb_bank];
    159     internal_QUEUE_NUM_EXECUTE_LOOP = new uint32_t   [_param->_nb_bank];
    160     internal_QUEUE_NUM_INST_EXECUTE = new uint32_t   [_param->_nb_bank];
    161     internal_QUEUE_NUM_INST_COMMIT  = new uint32_t   [_param->_nb_bank];
    162     internal_QUEUE_INFO             = new info_t     [_param->_nb_bank];
    163     internal_SPR_VAL                = new Tcontrol_t [_param->_nb_inst_reexecute];
    164     internal_REEXECUTE_ROB_ACK      = new Tcontrol_t [_param->_nb_inst_reexecute];
    165     internal_REEXECUTE_VAL          = new Tcontrol_t [_param->_nb_inst_reexecute];
     168    ALLOC1(internal_QUEUE_PUSH             ,Tcontrol_t,_param->_nb_bank);
     169    ALLOC1(internal_QUEUE_NUM_EXECUTE_LOOP ,uint32_t  ,_param->_nb_bank);
     170    ALLOC1(internal_QUEUE_NUM_INST_EXECUTE ,uint32_t  ,_param->_nb_bank);
     171    ALLOC1(internal_QUEUE_NUM_INST_COMMIT  ,uint32_t  ,_param->_nb_bank);
     172    ALLOC1(internal_QUEUE_INFO             ,info_t    ,_param->_nb_bank);
     173    ALLOC1(internal_SPR_VAL                ,Tcontrol_t,_param->_nb_inst_reexecute);
     174    ALLOC1(internal_REEXECUTE_ROB_ACK      ,Tcontrol_t,_param->_nb_inst_reexecute);
     175    ALLOC1(internal_REEXECUTE_VAL          ,Tcontrol_t,_param->_nb_inst_reexecute);
    166176#ifdef STATISTICS
    167     internal_COMMIT_VAL             = new Tcontrol_t [_param->_nb_inst_commit];
     177    ALLOC1(internal_COMMIT_VAL             ,Tcontrol_t,_param->_nb_inst_commit);
    168178#endif
    169179      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_deallocation.cpp

    r88 r112  
    105105              delete entry;
    106106            }
    107         delete [] _reexecute_queue;
     107        DELETE1(_reexecute_queue                ,_param->_nb_bank);
    108108       
    109109        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    110         delete [] internal_QUEUE_PUSH            ;
    111         delete [] internal_QUEUE_NUM_EXECUTE_LOOP;
    112         delete [] internal_QUEUE_NUM_INST_EXECUTE;
    113         delete [] internal_QUEUE_NUM_INST_COMMIT ;
    114         delete [] internal_QUEUE_INFO            ;
    115         delete [] internal_SPR_VAL               ;
    116         delete [] internal_REEXECUTE_ROB_ACK     ;
    117         delete [] internal_REEXECUTE_VAL         ;
     110        DELETE1(internal_QUEUE_PUSH             ,_param->_nb_bank);
     111        DELETE1(internal_QUEUE_NUM_EXECUTE_LOOP ,_param->_nb_bank);
     112        DELETE1(internal_QUEUE_NUM_INST_EXECUTE ,_param->_nb_bank);
     113        DELETE1(internal_QUEUE_NUM_INST_COMMIT  ,_param->_nb_bank);
     114        DELETE1(internal_QUEUE_INFO             ,_param->_nb_bank);
     115        DELETE1(internal_SPR_VAL                ,_param->_nb_inst_reexecute);
     116        DELETE1(internal_REEXECUTE_ROB_ACK      ,_param->_nb_inst_reexecute);
     117        DELETE1(internal_REEXECUTE_VAL          ,_param->_nb_inst_reexecute);
    118118#ifdef STATISTICS
    119         delete [] internal_COMMIT_VAL            ;
     119        DELETE1(internal_COMMIT_VAL             ,_param->_nb_inst_commit);
    120120#endif
    121121      }
    122 
     122       
    123123    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    124124   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_allocation.cpp

    r97 r112  
    5858    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC1_INTERFACE("insert", IN, EAST, "insert to the re order buffer an instruction", _param->_nb_inst_insert);
     60      ALLOC1_INTERFACE_BEGIN("insert", IN, EAST, _("insert to the re order buffer an instruction"), _param->_nb_inst_insert);
    6161
    6262      ALLOC1_VALACK_IN ( in_INSERT_VAL                  ,VAL);
     
    6868      ALLOC1_SIGNAL_OUT(out_INSERT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t  ,_param->_size_store_queue_ptr);
    6969      ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t  ,_param->_size_load_queue_ptr );
     70
     71      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    7072    }
    7173   
    7274    // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7375    {
    74       ALLOC1_INTERFACE("retire", IN, EAST, "retire from the re order buffer an instruction", _param->_nb_inst_retire);
     76      ALLOC1_INTERFACE_BEGIN("retire", IN, EAST, _("retire from the re order buffer an instruction"), _param->_nb_inst_retire);
    7577
    7678      ALLOC1_VALACK_IN ( in_RETIRE_VAL                  ,VAL);
     
    8486      ALLOC1_SIGNAL_IN ( in_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t  ,_param->_size_store_queue_ptr);
    8587      ALLOC1_SIGNAL_IN ( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t  ,_param->_size_load_queue_ptr );
     88
     89      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    8690    }
    8791
    8892    if (usage_is_set(_usage,USE_SYSTEMC))
    8993      {
    90     reg_STORE_QUEUE_PTR_WRITE     = new Tlsq_ptr_t      [_param->_nb_load_store_queue];
    91     reg_STORE_QUEUE_USE           = new bool *          [_param->_nb_load_store_queue];
    92     reg_STORE_QUEUE_NB_USE        = new Tlsq_ptr_t      [_param->_nb_load_store_queue];
    93     reg_LOAD_QUEUE_PTR_WRITE      = new Tlsq_ptr_t      [_param->_nb_load_store_queue];
    94     reg_LOAD_QUEUE_USE            = new bool *          [_param->_nb_load_store_queue];
    95    
    96     for (uint32_t i=0; i<_param->_nb_load_store_queue; i++)
    97       {
    98         reg_STORE_QUEUE_USE [i] = new bool [_param->_size_store_queue [i]];
    99         reg_LOAD_QUEUE_USE  [i] = new bool [_param->_size_load_queue  [i]];
    100       }
     94    ALLOC1(reg_STORE_QUEUE_PTR_WRITE     ,Tlsq_ptr_t     ,_param->_nb_load_store_queue);
     95    ALLOC2(reg_STORE_QUEUE_USE           ,bool           ,_param->_nb_load_store_queue,_param->_size_store_queue [it1]);
     96    ALLOC1(reg_STORE_QUEUE_NB_USE        ,Tlsq_ptr_t     ,_param->_nb_load_store_queue);
     97    ALLOC1(reg_LOAD_QUEUE_PTR_WRITE      ,Tlsq_ptr_t     ,_param->_nb_load_store_queue);
     98    ALLOC2(reg_LOAD_QUEUE_USE            ,bool           ,_param->_nb_load_store_queue,_param->_size_load_queue  [it1]);
    10199
    102     internal_INSERT_ACK           = new Tcontrol_t      [_param->_nb_inst_insert];
    103     internal_INSERT_OPERATION_USE = new operation_use_t [_param->_nb_inst_insert];
    104     internal_INSERT_LSQ           = new uint32_t        [_param->_nb_inst_insert];
    105     internal_INSERT_PTR           = new Tlsq_ptr_t      [_param->_nb_inst_insert];
     100    ALLOC1(internal_INSERT_ACK           ,Tcontrol_t     ,_param->_nb_inst_insert);
     101    ALLOC1(internal_INSERT_OPERATION_USE ,operation_use_t,_param->_nb_inst_insert);
     102    ALLOC1(internal_INSERT_LSQ           ,uint32_t       ,_param->_nb_inst_insert);
     103    ALLOC1(internal_INSERT_PTR           ,Tlsq_ptr_t     ,_param->_nb_inst_insert);
    106104
    107     internal_RETIRE_ACK           = new Tcontrol_t      [_param->_nb_inst_retire];
    108     internal_RETIRE_OPERATION_USE = new operation_use_t [_param->_nb_inst_retire];
    109     internal_RETIRE_LSQ           = new uint32_t        [_param->_nb_inst_retire];
    110     internal_RETIRE_PTR           = new Tlsq_ptr_t      [_param->_nb_inst_retire];
     105    ALLOC1(internal_RETIRE_ACK           ,Tcontrol_t     ,_param->_nb_inst_retire);
     106    ALLOC1(internal_RETIRE_OPERATION_USE ,operation_use_t,_param->_nb_inst_retire);
     107    ALLOC1(internal_RETIRE_LSQ           ,uint32_t       ,_param->_nb_inst_retire);
     108    ALLOC1(internal_RETIRE_PTR           ,Tlsq_ptr_t     ,_param->_nb_inst_retire);
    111109      }
    112110    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/include/Load_Store_pointer_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2829        delete    in_NRESET;
    2930
    30         // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    31         delete []  in_INSERT_VAL                  ;
    32         delete [] out_INSERT_ACK                  ;
    33         if (_param->_have_port_front_end_id)
    34         delete []  in_INSERT_FRONT_END_ID         ;
    35         if (_param->_have_port_context_id)
    36         delete []  in_INSERT_CONTEXT_ID           ;
    37         delete []  in_INSERT_TYPE                 ;
    38         delete []  in_INSERT_OPERATION            ;
    39         delete [] out_INSERT_STORE_QUEUE_PTR_WRITE;
    40         if (_param->_have_port_load_queue_ptr)
    41         delete [] out_INSERT_LOAD_QUEUE_PTR_WRITE ;
    42        
    43         // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    44         delete []  in_RETIRE_VAL                  ;
    45         delete [] out_RETIRE_ACK                  ;
    46         if (_param->_have_port_front_end_id)
    47         delete []  in_RETIRE_FRONT_END_ID         ;
    48         if (_param->_have_port_context_id)
    49         delete []  in_RETIRE_CONTEXT_ID           ;
    50 //      delete []  in_RETIRE_TYPE                 ;
    51 //      delete []  in_RETIRE_OPERATION            ;
    52         delete []  in_RETIRE_USE_STORE_QUEUE      ;
    53         delete []  in_RETIRE_USE_LOAD_QUEUE       ;
    54         delete []  in_RETIRE_STORE_QUEUE_PTR_WRITE;
    55         if (_param->_have_port_load_queue_ptr)
    56         delete []  in_RETIRE_LOAD_QUEUE_PTR_WRITE ;
     31        DELETE1_SIGNAL( in_INSERT_VAL                  ,_param->_nb_inst_insert,1);
     32        DELETE1_SIGNAL(out_INSERT_ACK                  ,_param->_nb_inst_insert,1);
     33        DELETE1_SIGNAL( in_INSERT_FRONT_END_ID         ,_param->_nb_inst_insert,_param->_size_front_end_id   );
     34        DELETE1_SIGNAL( in_INSERT_CONTEXT_ID           ,_param->_nb_inst_insert,_param->_size_context_id     );
     35        DELETE1_SIGNAL( in_INSERT_TYPE                 ,_param->_nb_inst_insert,_param->_size_type           );
     36        DELETE1_SIGNAL( in_INSERT_OPERATION            ,_param->_nb_inst_insert,_param->_size_operation      );
     37        DELETE1_SIGNAL(out_INSERT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_insert,_param->_size_store_queue_ptr);
     38        DELETE1_SIGNAL(out_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_insert,_param->_size_load_queue_ptr );
    5739
    58         delete [] reg_STORE_QUEUE_PTR_WRITE    ;
    59         delete [] reg_STORE_QUEUE_USE          ;
    60         delete [] reg_STORE_QUEUE_NB_USE       ;
    61         delete [] reg_LOAD_QUEUE_PTR_WRITE     ;
    62         delete [] reg_LOAD_QUEUE_USE           ;
    63         delete [] internal_INSERT_ACK          ;
    64         delete [] internal_INSERT_OPERATION_USE;
    65         delete [] internal_INSERT_LSQ          ;
    66         delete [] internal_INSERT_PTR          ;
    67         delete [] internal_RETIRE_ACK          ;
    68         delete [] internal_RETIRE_OPERATION_USE;
    69         delete [] internal_RETIRE_LSQ          ;
    70         delete [] internal_RETIRE_PTR          ;
     40        DELETE1_SIGNAL( in_RETIRE_VAL                  ,_param->_nb_inst_retire,1);
     41        DELETE1_SIGNAL(out_RETIRE_ACK                  ,_param->_nb_inst_retire,1);
     42        DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID         ,_param->_nb_inst_retire,_param->_size_front_end_id   );
     43        DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID           ,_param->_nb_inst_retire,_param->_size_context_id     );
     44//      DELETE1_SIGNAL( in_RETIRE_TYPE                 ,_param->_nb_inst_retire,_param->_size_type           );
     45//      DELETE1_SIGNAL( in_RETIRE_OPERATION            ,_param->_nb_inst_retire,_param->_size_operation      );
     46        DELETE1_SIGNAL( in_RETIRE_USE_STORE_QUEUE      ,_param->_nb_inst_retire,1);
     47        DELETE1_SIGNAL( in_RETIRE_USE_LOAD_QUEUE       ,_param->_nb_inst_retire,1);
     48        DELETE1_SIGNAL( in_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr);
     49        DELETE1_SIGNAL( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr );
     50
     51        DELETE1(reg_STORE_QUEUE_PTR_WRITE     ,_param->_nb_load_store_queue);
     52        DELETE2(reg_STORE_QUEUE_USE           ,_param->_nb_load_store_queue,_param->_size_store_queue [it1]);
     53        DELETE1(reg_STORE_QUEUE_NB_USE        ,_param->_nb_load_store_queue);
     54        DELETE1(reg_LOAD_QUEUE_PTR_WRITE      ,_param->_nb_load_store_queue);
     55        DELETE2(reg_LOAD_QUEUE_USE            ,_param->_nb_load_store_queue,_param->_size_load_queue  [it1]);
     56       
     57        DELETE1(internal_INSERT_ACK           ,_param->_nb_inst_insert);
     58        DELETE1(internal_INSERT_OPERATION_USE ,_param->_nb_inst_insert);
     59        DELETE1(internal_INSERT_LSQ           ,_param->_nb_inst_insert);
     60        DELETE1(internal_INSERT_PTR           ,_param->_nb_inst_insert);
     61       
     62        DELETE1(internal_RETIRE_ACK           ,_param->_nb_inst_retire);
     63        DELETE1(internal_RETIRE_OPERATION_USE ,_param->_nb_inst_retire);
     64        DELETE1(internal_RETIRE_LSQ           ,_param->_nb_inst_retire);
     65        DELETE1(internal_RETIRE_PTR           ,_param->_nb_inst_retire);
    7166      }
    7267
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_allocation.cpp

    r88 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    5858    // ~~~~~[ Interface "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959     {
    60        ALLOC1_INTERFACE("rename_in", IN, EAST, "Registers before near dependency checking", _param->_nb_inst_insert);
     60       ALLOC1_INTERFACE_BEGIN("rename_in", IN, EAST, _("Registers before near dependency checking"), _param->_nb_inst_insert);
    6161       
    62 //        ALLOC1_VALACK_IN ( in_RENAME_IN_VAL               ,VAL);
    63 //        ALLOC1_VALACK_OUT(out_RENAME_IN_ACK               ,ACK);
     62//     ALLOC1_VALACK_IN ( in_RENAME_IN_VAL               ,VAL);
     63//     ALLOC1_VALACK_OUT(out_RENAME_IN_ACK               ,ACK);
    6464       ALLOC1_SIGNAL_IN ( in_RENAME_IN_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id          );
    6565       ALLOC1_SIGNAL_IN ( in_RENAME_IN_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id            );
     
    8181       ALLOC1_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register      );
    8282       ALLOC1_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
     83
     84       ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    8385     }
    8486
    8587    // ~~~~~[ Interface "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8688     {
    87        ALLOC1_INTERFACE("rename_out", OUT, WEST, "Registers after near dependency checking", _param->_nb_inst_insert);
     89       ALLOC1_INTERFACE_BEGIN("rename_out", OUT, WEST, _("Registers after near dependency checking"), _param->_nb_inst_insert);
    8890       
    89 //        ALLOC1_VALACK_OUT(out_RENAME_OUT_VAL               ,VAL);
    90 //        ALLOC1_VALACK_IN ( in_RENAME_OUT_ACK               ,ACK);
     91//     ALLOC1_VALACK_OUT(out_RENAME_OUT_VAL               ,VAL);
     92//     ALLOC1_VALACK_IN ( in_RENAME_OUT_ACK               ,ACK);
    9193       ALLOC1_SIGNAL_OUT(out_RENAME_OUT_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id          );
    9294       ALLOC1_SIGNAL_OUT(out_RENAME_OUT_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id            );
     
    108110       ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register      );
    109111       ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
     112
     113       ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    110114     }
    111115
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/include/Dependency_checking_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete     in_NRESET;
    3031
    31 //      delete []  in_RENAME_IN_VAL                ;
    32 //      delete [] out_RENAME_IN_ACK                ;
    33         if (_param->_have_port_front_end_id)
    34         delete []  in_RENAME_IN_FRONT_END_ID       ;
    35         if (_param->_have_port_context_id)
    36         delete []  in_RENAME_IN_CONTEXT_ID         ;
    37         delete []  in_RENAME_IN_READ_RA            ;
    38         delete []  in_RENAME_IN_NUM_REG_RA_LOG     ;
    39         delete []  in_RENAME_IN_NUM_REG_RA_PHY     ;
    40         delete []  in_RENAME_IN_READ_RB            ;
    41         delete []  in_RENAME_IN_NUM_REG_RB_LOG     ;
    42         delete []  in_RENAME_IN_NUM_REG_RB_PHY     ;
    43         delete []  in_RENAME_IN_READ_RC            ;
    44         delete []  in_RENAME_IN_NUM_REG_RC_LOG     ;
    45         delete []  in_RENAME_IN_NUM_REG_RC_PHY     ;
    46         delete []  in_RENAME_IN_WRITE_RD           ;
    47         delete []  in_RENAME_IN_NUM_REG_RD_LOG     ;
    48         delete []  in_RENAME_IN_NUM_REG_RD_PHY_OLD ;
    49         delete []  in_RENAME_IN_NUM_REG_RD_PHY_NEW ;
    50         delete []  in_RENAME_IN_WRITE_RE           ;
    51         delete []  in_RENAME_IN_NUM_REG_RE_LOG     ;
    52         delete []  in_RENAME_IN_NUM_REG_RE_PHY_OLD ;
    53         delete []  in_RENAME_IN_NUM_REG_RE_PHY_NEW ;
     32//      DELETE1_SIGNAL( in_RENAME_IN_VAL                ,_param->_nb_inst_insert,1);
     33//      DELETE1_SIGNAL(out_RENAME_IN_ACK                ,_param->_nb_inst_insert,1);
     34        DELETE1_SIGNAL( in_RENAME_IN_FRONT_END_ID       ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     35        DELETE1_SIGNAL( in_RENAME_IN_CONTEXT_ID         ,_param->_nb_inst_insert,_param->_size_context_id            );
     36        DELETE1_SIGNAL( in_RENAME_IN_READ_RA            ,_param->_nb_inst_insert,1                                   );
     37        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RA_LOG     ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     38        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RA_PHY     ,_param->_nb_inst_insert,_param->_size_general_register      );
     39        DELETE1_SIGNAL( in_RENAME_IN_READ_RB            ,_param->_nb_inst_insert,1                                   );
     40        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RB_LOG     ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     41        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RB_PHY     ,_param->_nb_inst_insert,_param->_size_general_register      );
     42        DELETE1_SIGNAL( in_RENAME_IN_READ_RC            ,_param->_nb_inst_insert,1                                   );
     43        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RC_LOG     ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     44        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RC_PHY     ,_param->_nb_inst_insert,_param->_size_special_register      );
     45        DELETE1_SIGNAL( in_RENAME_IN_WRITE_RD           ,_param->_nb_inst_insert,1                                   );
     46        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_LOG     ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     47        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_PHY_OLD ,_param->_nb_inst_insert,_param->_size_general_register      );
     48        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_PHY_NEW ,_param->_nb_inst_insert,_param->_size_general_register      );
     49        DELETE1_SIGNAL( in_RENAME_IN_WRITE_RE           ,_param->_nb_inst_insert,1                                   );
     50        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_LOG     ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     51        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_PHY_OLD ,_param->_nb_inst_insert,_param->_size_special_register      );
     52        DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_PHY_NEW ,_param->_nb_inst_insert,_param->_size_special_register      );
    5453
    55 //      delete [] out_RENAME_OUT_VAL               ;
    56 //      delete []  in_RENAME_OUT_ACK               ;
    57         if (_param->_have_port_front_end_id)
    58         delete [] out_RENAME_OUT_FRONT_END_ID      ;
    59         if (_param->_have_port_context_id)
    60         delete [] out_RENAME_OUT_CONTEXT_ID        ;
    61         delete [] out_RENAME_OUT_READ_RA           ;
    62         delete [] out_RENAME_OUT_NUM_REG_RA_LOG    ;
    63         delete [] out_RENAME_OUT_NUM_REG_RA_PHY    ;
    64         delete [] out_RENAME_OUT_READ_RB           ;
    65         delete [] out_RENAME_OUT_NUM_REG_RB_LOG    ;
    66         delete [] out_RENAME_OUT_NUM_REG_RB_PHY    ;
    67         delete [] out_RENAME_OUT_READ_RC           ;
    68         delete [] out_RENAME_OUT_NUM_REG_RC_LOG    ;
    69         delete [] out_RENAME_OUT_NUM_REG_RC_PHY    ;
    70         delete [] out_RENAME_OUT_WRITE_RD          ;
    71         delete [] out_RENAME_OUT_NUM_REG_RD_LOG    ;
    72         delete [] out_RENAME_OUT_NUM_REG_RD_PHY_OLD;
    73         delete [] out_RENAME_OUT_NUM_REG_RD_PHY_NEW;
    74         delete [] out_RENAME_OUT_WRITE_RE          ;
    75         delete [] out_RENAME_OUT_NUM_REG_RE_LOG    ;
    76         delete [] out_RENAME_OUT_NUM_REG_RE_PHY_OLD;
    77         delete [] out_RENAME_OUT_NUM_REG_RE_PHY_NEW;
     54//      DELETE1_SIGNAL(out_RENAME_OUT_VAL               ,_param->_nb_inst_insert,1);
     55//      DELETE1_SIGNAL( in_RENAME_OUT_ACK               ,_param->_nb_inst_insert,1);
     56        DELETE1_SIGNAL(out_RENAME_OUT_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     57        DELETE1_SIGNAL(out_RENAME_OUT_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id            );
     58        DELETE1_SIGNAL(out_RENAME_OUT_READ_RA           ,_param->_nb_inst_insert,1                                   );
     59        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RA_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     60        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     61        DELETE1_SIGNAL(out_RENAME_OUT_READ_RB           ,_param->_nb_inst_insert,1                                   );
     62        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RB_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     63        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     64        DELETE1_SIGNAL(out_RENAME_OUT_READ_RC           ,_param->_nb_inst_insert,1                                   );
     65        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RC_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     66        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register      );
     67        DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RD          ,_param->_nb_inst_insert,1                                   );
     68        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     69        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register      );
     70        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register      );
     71        DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RE          ,_param->_nb_inst_insert,1                                   );
     72        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     73        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register      );
     74        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register      );
    7875      }
    7976    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_allocation.cpp

    r109 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    5858    // ~~~~~[ interface : "pop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959     {
    60        ALLOC1_INTERFACE("pop", IN, NORTH, "New destination register", _param->_nb_pop);
     60       ALLOC1_INTERFACE_BEGIN("pop", IN, NORTH, _("New destination register"), _param->_nb_pop);
    6161
    6262       ALLOC1_VALACK_IN ( in_POP_VAL        ,VAL);
     
    6666       ALLOC1_SIGNAL_IN ( in_POP_SPR_VAL    ,"spr_val"    ,Tcontrol_t        ,1                             );
    6767       ALLOC1_SIGNAL_OUT(out_POP_SPR_NUM_REG,"spr_num_reg",Tspecial_address_t,_param->_size_special_register);
     68
     69       ALLOC1_INTERFACE_END(_param->_nb_pop);
    6870     }
    6971
    7072    // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7173     {
    72        ALLOC1_INTERFACE("push_gpr", IN, NORTH, "General register free", _param->_nb_push);
     74       ALLOC1_INTERFACE_BEGIN("push_gpr", IN, NORTH, _("General register free"), _param->_nb_push);
    7375
    7476       ALLOC1_VALACK_IN ( in_PUSH_GPR_VAL    ,VAL);
    7577       ALLOC1_VALACK_OUT(out_PUSH_GPR_ACK    ,ACK);
    7678       ALLOC1_SIGNAL_IN ( in_PUSH_GPR_NUM_REG,"num_reg",Tgeneral_address_t,_param->_size_general_register);
     79
     80       ALLOC1_INTERFACE_END(_param->_nb_push);
    7781     }
    7882
    7983    // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8084     {
    81        ALLOC1_INTERFACE("push_spr", IN, NORTH, "General register free", _param->_nb_push);
     85       ALLOC1_INTERFACE_BEGIN("push_spr", IN, NORTH, _("General register free"), _param->_nb_push);
    8286
    8387       ALLOC1_VALACK_IN ( in_PUSH_SPR_VAL    ,VAL);
    8488       ALLOC1_VALACK_OUT(out_PUSH_SPR_ACK    ,ACK);
    8589       ALLOC1_SIGNAL_IN ( in_PUSH_SPR_NUM_REG,"num_reg",Tspecial_address_t,_param->_size_special_register);
     90
     91       ALLOC1_INTERFACE_END(_param->_nb_push);
    8692     }
    8793
    8894     if (usage_is_set(_usage,USE_SYSTEMC))
    8995       {
    90      _gpr_list = new std::list<uint32_t> [_param->_nb_bank];
    91      _spr_list = new std::list<uint32_t> [_param->_nb_bank];
     96     ALLOC1(_gpr_list,std::list<uint32_t>,_param->_nb_bank);
     97     ALLOC1(_spr_list,std::list<uint32_t>,_param->_nb_bank);
    9298
    93      internal_POP_ACK       = new Tcontrol_t [_param->_nb_pop];
    94      internal_POP_GPR_BANK  = new uint32_t   [_param->_nb_pop];
    95      internal_POP_SPR_BANK  = new uint32_t   [_param->_nb_pop];
     99     ALLOC1(internal_POP_ACK      ,Tcontrol_t,_param->_nb_pop);
     100     ALLOC1(internal_POP_GPR_BANK ,uint32_t  ,_param->_nb_pop);
     101     ALLOC1(internal_POP_SPR_BANK ,uint32_t  ,_param->_nb_pop);
    96102
    97      internal_PUSH_GPR_ACK  = new Tcontrol_t [_param->_nb_push];
    98      internal_PUSH_SPR_ACK  = new Tcontrol_t [_param->_nb_push];
    99      internal_PUSH_GPR_BANK = new uint32_t   [_param->_nb_push];
    100      internal_PUSH_SPR_BANK = new uint32_t   [_param->_nb_push];
     103     ALLOC1(internal_PUSH_GPR_ACK ,Tcontrol_t,_param->_nb_push);
     104     ALLOC1(internal_PUSH_SPR_ACK ,Tcontrol_t,_param->_nb_push);
     105     ALLOC1(internal_PUSH_GPR_BANK,uint32_t  ,_param->_nb_push);
     106     ALLOC1(internal_PUSH_SPR_BANK,uint32_t  ,_param->_nb_push);
    101107       }
     108
    102109    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    103110    _priority_gpr = new generic::priority::Priority (_name+"_priority_gpr",
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_deallocation.cpp

    r109 r112  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete    in_NRESET;
    3031
    31         delete []  in_POP_VAL        ;
    32         delete [] out_POP_ACK        ;
    33         delete []  in_POP_GPR_VAL    ;
    34         delete [] out_POP_GPR_NUM_REG;
    35         delete []  in_POP_SPR_VAL    ;
    36         delete [] out_POP_SPR_NUM_REG;
     32        DELETE1_SIGNAL( in_POP_VAL         ,_param->_nb_pop,1);
     33        DELETE1_SIGNAL(out_POP_ACK         ,_param->_nb_pop,1);
     34        DELETE1_SIGNAL( in_POP_GPR_VAL     ,_param->_nb_pop,1                             );
     35        DELETE1_SIGNAL(out_POP_GPR_NUM_REG ,_param->_nb_pop,_param->_size_general_register);
     36        DELETE1_SIGNAL( in_POP_SPR_VAL     ,_param->_nb_pop,1                             );
     37        DELETE1_SIGNAL(out_POP_SPR_NUM_REG ,_param->_nb_pop,_param->_size_special_register);
    3738
    38         delete []  in_PUSH_GPR_VAL    ;
    39         delete [] out_PUSH_GPR_ACK    ;
    40         delete []  in_PUSH_GPR_NUM_REG;
     39        DELETE1_SIGNAL( in_PUSH_GPR_VAL    ,_param->_nb_push,1);
     40        DELETE1_SIGNAL(out_PUSH_GPR_ACK    ,_param->_nb_push,1);
     41        DELETE1_SIGNAL( in_PUSH_GPR_NUM_REG,_param->_nb_push,_param->_size_general_register);
    4142
    42         delete []  in_PUSH_SPR_VAL    ;
    43         delete [] out_PUSH_SPR_ACK    ;
    44         delete []  in_PUSH_SPR_NUM_REG;
     43        DELETE1_SIGNAL( in_PUSH_SPR_VAL    ,_param->_nb_push,1);
     44        DELETE1_SIGNAL(out_PUSH_SPR_ACK    ,_param->_nb_push,1);
     45        DELETE1_SIGNAL( in_PUSH_SPR_NUM_REG,_param->_nb_push,_param->_size_special_register);
    4546
    46         delete [] _gpr_list;
    47         delete [] _spr_list;
    48        
    49         delete [] internal_POP_ACK     ;
    50         delete [] internal_POP_GPR_BANK;
    51         delete [] internal_POP_SPR_BANK;
    52        
    53         delete [] internal_PUSH_GPR_ACK ;
    54         delete [] internal_PUSH_SPR_ACK ;
    55         delete [] internal_PUSH_GPR_BANK;
    56         delete [] internal_PUSH_SPR_BANK;
     47        DELETE1(_gpr_list             ,_param->_nb_bank);
     48        DELETE1(_spr_list             ,_param->_nb_bank);
     49
     50        DELETE1(internal_POP_ACK      ,_param->_nb_pop);
     51        DELETE1(internal_POP_GPR_BANK ,_param->_nb_pop);
     52        DELETE1(internal_POP_SPR_BANK ,_param->_nb_pop);
     53
     54        DELETE1(internal_PUSH_GPR_ACK ,_param->_nb_push);
     55        DELETE1(internal_PUSH_SPR_ACK ,_param->_nb_push);
     56        DELETE1(internal_PUSH_GPR_BANK,_param->_nb_push);
     57        DELETE1(internal_PUSH_SPR_BANK,_param->_nb_push);
    5758      }
    5859
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp

    r110 r112  
    5151
    5252#ifdef STATISTICS
    53               (*_stat_nb_inst_pop) ++;
     53              if (usage_is_set(_usage,USE_STATISTICS))
     54                (*_stat_nb_inst_pop) ++;
    5455#endif
    5556
     
    5758                {
    5859#ifdef STATISTICS
    59                   (*_stat_nb_inst_pop_gpr) ++;
     60                  if (usage_is_set(_usage,USE_STATISTICS))
     61                    (*_stat_nb_inst_pop_gpr) ++;
    6062#endif
    6163                  _gpr_list [internal_POP_GPR_BANK[i]].pop_front();
     
    6567                {
    6668#ifdef STATISTICS
    67                   (*_stat_nb_inst_pop_spr) ++;
     69                  if (usage_is_set(_usage,USE_STATISTICS))
     70                    (*_stat_nb_inst_pop_spr) ++;
    6871#endif
    6972                  _spr_list [internal_POP_SPR_BANK[i]].pop_front();
     
    8285
    8386#ifdef STATISTICS
    84               (*_stat_nb_inst_push_gpr) ++;
     87              if (usage_is_set(_usage,USE_STATISTICS))
     88                (*_stat_nb_inst_push_gpr) ++;
    8589#endif
    8690
     
    98102
    99103#ifdef STATISTICS
    100               (*_stat_nb_inst_push_spr) ++;
     104              if (usage_is_set(_usage,USE_STATISTICS))
     105                (*_stat_nb_inst_push_spr) ++;
    101106#endif
    102107
     
    105110
    106111#ifdef STATISTICS
    107           for (uint32_t i=0; i<_param->_nb_bank; ++i)
    108             {
     112        if (usage_is_set(_usage,USE_STATISTICS))
     113          for (uint32_t i=0; i<_param->_nb_bank; ++i)
     114            {
     115             
    109116              (*(_stat_bank_gpr_nb_elt [i])) += _gpr_list[i].size();
    110117              (*(_stat_bank_spr_nb_elt [i])) += _spr_list[i].size();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/test.cpp

    r106 r112  
    8989  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,"out_RETIRE_RESTORE_RD_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
    9090  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,"out_RETIRE_RESTORE_RE_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
     91  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE           ,"out_RETIRE_RESTORE           ",Tcontrol_t        ,_param->_nb_inst_retire);
    9192
    9293  ALLOC2_SC_SIGNAL( in_RETIRE_EVENT_VAL         ," in_RETIRE_EVENT_VAL         ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    147148  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
    148149  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire);
     150  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE           ,_param->_nb_inst_retire);
    149151
    150152  INSTANCE2_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_EVENT_VAL         ,_param->_nb_front_end, _param->_nb_context[it1]);
     
    540542  delete [] out_RETIRE_RESTORE_RD_PHY_OLD;
    541543  delete [] out_RETIRE_RESTORE_RE_PHY_OLD;
     544  delete [] out_RETIRE_RESTORE           ;
    542545
    543546  DELETE2_SC_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h

    r104 r112  
    104104  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
    105105  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
     106  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE           ;//[nb_inst_retire]
    106107
    107108    // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    126127  private   : bool                        *** internal_rat_gpr_update_table;         //[nb_front_end][nb_context][nb_general_register_logic]
    127128  private   : bool                        *** internal_rat_spr_update_table;         //[nb_front_end][nb_context][nb_special_register_logic]
     129  public    : Tcontrol_t                    * internal_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
     130  public    : Tcontrol_t                    * internal_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
     131
    128132#endif
    129133
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_allocation.cpp

    r104 r112  
    5959    // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC1_INTERFACE("rename",IN,EAST,"Input to rename source logical register", _param->_nb_inst_insert);
     61      ALLOC1_INTERFACE_BEGIN("rename",IN,EAST,_("Input to rename source logical register"), _param->_nb_inst_insert);
    6262
    6363      ALLOC1_VALACK_IN ( in_RENAME_VAL               , VAL);
     
    7575      ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register);
    7676      ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
     77
     78      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    7779    }
    7880   
    7981    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8082    {
    81       ALLOC1_INTERFACE("insert",IN,NORTH,"Input to rename destination logical register", _param->_nb_inst_insert);
     83      ALLOC1_INTERFACE_BEGIN("insert",IN,NORTH,_("Input to rename destination logical register"), _param->_nb_inst_insert);
    8284     
    8385      ALLOC1_VALACK_IN ( in_INSERT_VAL           ,VAL);
     
    9193      ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RD_PHY,"num_reg_rd_phy",Tgeneral_address_t,_param->_size_general_register);
    9294      ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY,"num_reg_re_phy",Tspecial_address_t,_param->_size_special_register);
     95
     96      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    9397    }
    9498   
    9599    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    96100    {
    97       ALLOC1_INTERFACE("retire",IN,NORTH,"Input to update on event", _param->_nb_inst_retire);
     101      ALLOC1_INTERFACE_BEGIN("retire",IN,NORTH,_("Input to update on event"), _param->_nb_inst_retire);
    98102
    99103      ALLOC1_VALACK_IN ( in_RETIRE_VAL               ,VAL);
     
    109113      ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t        ,1);
    110114      ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RE_PHY_OLD,"restore_re_phy_old",Tcontrol_t        ,1);
     115      ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE           ,"restore"           ,Tcontrol_t        ,1);
     116
     117      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    111118    }
    112119
    113120    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    114121    {
    115       ALLOC2_INTERFACE("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
     122      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
    116123
    117124      _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL        ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
    118125      _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK        ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
    119126      _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE      ,"state"             ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     127
     128      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    120129    }
    121130
     
    127136    ALLOC2(internal_RETIRE_EVENT_ACK ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]);
    128137
    129     rat_gpr                       = new Tgeneral_address_t ** [_param->_nb_front_end];
    130     rat_spr                       = new Tspecial_address_t ** [_param->_nb_front_end];
    131     rat_gpr_update_table          = new bool               ** [_param->_nb_front_end];
    132     rat_spr_update_table          = new bool               ** [_param->_nb_front_end];
    133     internal_rat_gpr_update_table = new bool               ** [_param->_nb_front_end];
    134     internal_rat_spr_update_table = new bool               ** [_param->_nb_front_end];
     138    ALLOC3(rat_gpr                      ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     139    ALLOC3(rat_spr                      ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     140    ALLOC3(rat_gpr_update_table         ,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     141    ALLOC3(rat_spr_update_table         ,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     142    ALLOC3(internal_rat_gpr_update_table,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     143    ALLOC3(internal_rat_spr_update_table,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    135144
    136     for (uint32_t i=0; i<_param->_nb_front_end; i++)
    137       {
    138         rat_gpr                       [i] = new Tgeneral_address_t * [_param->_nb_context[i]];
    139         rat_spr                       [i] = new Tspecial_address_t * [_param->_nb_context[i]];
    140         rat_gpr_update_table          [i] = new bool               * [_param->_nb_context[i]];
    141         rat_spr_update_table          [i] = new bool               * [_param->_nb_context[i]];
    142         internal_rat_gpr_update_table [i] = new bool               * [_param->_nb_context[i]];
    143         internal_rat_spr_update_table [i] = new bool               * [_param->_nb_context[i]];
    144 
    145         for (uint32_t j=0; j<_param->_nb_context[i]; j++)
    146           {
    147             rat_gpr                       [i][j] = new Tgeneral_address_t [_param->_nb_general_register_logic];
    148             rat_spr                       [i][j] = new Tspecial_address_t [_param->_nb_special_register_logic];
    149             rat_gpr_update_table          [i][j] = new bool               [_param->_nb_general_register_logic];
    150             rat_spr_update_table          [i][j] = new bool               [_param->_nb_special_register_logic];
    151             internal_rat_gpr_update_table [i][j] = new bool               [_param->_nb_general_register_logic];
    152             internal_rat_spr_update_table [i][j] = new bool               [_param->_nb_special_register_logic];
    153           }
    154       }
     145    ALLOC1(internal_RETIRE_RESTORE_RD_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire);
     146    ALLOC1(internal_RETIRE_RESTORE_RE_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire);
    155147      }
    156148
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_deallocation.cpp

    r104 r112  
    3030        delete     in_NRESET;
    3131
    32         delete []  in_RENAME_VAL             ;
    33         delete [] out_RENAME_ACK             ;
    34         if (_param->_have_port_front_end_id)
    35         delete []  in_RENAME_FRONT_END_ID    ;
    36         if (_param->_have_port_context_id)
    37         delete []  in_RENAME_CONTEXT_ID      ;
    38         delete []  in_RENAME_NUM_REG_RA_LOG  ;
    39         delete []  in_RENAME_NUM_REG_RB_LOG  ;
    40         delete []  in_RENAME_NUM_REG_RC_LOG  ;
    41         delete []  in_RENAME_NUM_REG_RD_LOG  ;
    42         delete []  in_RENAME_NUM_REG_RE_LOG  ;
    43         delete [] out_RENAME_NUM_REG_RA_PHY  ;
    44         delete [] out_RENAME_NUM_REG_RB_PHY  ;
    45         delete [] out_RENAME_NUM_REG_RC_PHY  ;
    46         delete [] out_RENAME_NUM_REG_RD_PHY_OLD;
    47         delete [] out_RENAME_NUM_REG_RE_PHY_OLD;
     32        DELETE1_SIGNAL( in_RENAME_VAL               ,_param->_nb_inst_insert,1);
     33        DELETE1_SIGNAL(out_RENAME_ACK               ,_param->_nb_inst_insert,1);
     34        DELETE1_SIGNAL( in_RENAME_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id);
     35        DELETE1_SIGNAL( in_RENAME_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id  );
     36        DELETE1_SIGNAL( in_RENAME_NUM_REG_RA_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     37        DELETE1_SIGNAL( in_RENAME_NUM_REG_RB_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     38        DELETE1_SIGNAL( in_RENAME_NUM_REG_RC_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     39        DELETE1_SIGNAL( in_RENAME_NUM_REG_RD_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     40        DELETE1_SIGNAL( in_RENAME_NUM_REG_RE_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     41        DELETE1_SIGNAL(out_RENAME_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register);
     42        DELETE1_SIGNAL(out_RENAME_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register);
     43        DELETE1_SIGNAL(out_RENAME_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register);
     44        DELETE1_SIGNAL(out_RENAME_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register);
     45        DELETE1_SIGNAL(out_RENAME_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register);
    4846
    49         delete []  in_INSERT_VAL             ;
    50         delete [] out_INSERT_ACK             ;
    51 //      if (_param->_have_port_front_end_id)
    52 //      delete []  in_INSERT_FRONT_END_ID    ;
    53 //      if (_param->_have_port_context_id)
    54 //      delete []  in_INSERT_CONTEXT_ID      ;
    55         delete []  in_INSERT_WRITE_RD        ;
    56         delete []  in_INSERT_WRITE_RE        ;
    57         delete []  in_INSERT_NUM_REG_RD_LOG  ;
    58         delete []  in_INSERT_NUM_REG_RE_LOG  ;
    59         delete []  in_INSERT_NUM_REG_RD_PHY  ;
    60         delete []  in_INSERT_NUM_REG_RE_PHY  ;
     47        DELETE1_SIGNAL( in_INSERT_VAL           ,_param->_nb_inst_insert,1);
     48        DELETE1_SIGNAL(out_INSERT_ACK           ,_param->_nb_inst_insert,1);
     49//      DELETE1_SIGNAL( in_INSERT_FRONT_END_ID  ,_param->_nb_inst_insert,_param->_size_front_end_id);
     50//      DELETE1_SIGNAL( in_INSERT_CONTEXT_ID    ,_param->_nb_inst_insert,_param->_size_context_id  );
     51        DELETE1_SIGNAL( in_INSERT_WRITE_RD      ,_param->_nb_inst_insert,1);
     52        DELETE1_SIGNAL( in_INSERT_WRITE_RE      ,_param->_nb_inst_insert,1);
     53        DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     54        DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic);
     55        DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_PHY,_param->_nb_inst_insert,_param->_size_general_register);
     56        DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_PHY,_param->_nb_inst_insert,_param->_size_special_register);
    6157
    62         delete []  in_RETIRE_VAL               ;
    63         delete [] out_RETIRE_ACK               ;
    64         if (_param->_have_port_front_end_id)
    65         delete []  in_RETIRE_FRONT_END_ID      ;
    66         if (_param->_have_port_context_id)
    67         delete []  in_RETIRE_CONTEXT_ID        ;
    68         delete []  in_RETIRE_WRITE_RD          ;
    69         delete []  in_RETIRE_WRITE_RE          ;
    70         delete []  in_RETIRE_NUM_REG_RD_LOG    ;
    71         delete []  in_RETIRE_NUM_REG_RE_LOG    ;
    72         delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    73         delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    74         delete [] out_RETIRE_RESTORE_RD_PHY_OLD;
    75         delete [] out_RETIRE_RESTORE_RE_PHY_OLD;
     58        DELETE1_SIGNAL( in_RETIRE_VAL               ,_param->_nb_inst_retire,1);
     59        DELETE1_SIGNAL(out_RETIRE_ACK               ,_param->_nb_inst_retire,1);
     60        DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID      ,_param->_nb_inst_retire,_param->_size_front_end_id);
     61        DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID        ,_param->_nb_inst_retire,_param->_size_context_id  );
     62        DELETE1_SIGNAL( in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire,1);
     63        DELETE1_SIGNAL( in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire,1);
     64        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_LOG    ,_param->_nb_inst_retire,_param->_size_general_register_logic);
     65        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_LOG    ,_param->_nb_inst_retire,_param->_size_special_register_logic);
     66        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register);
     67        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register);
     68        DELETE1_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire,1);
     69        DELETE1_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire,1);
     70        DELETE1_SIGNAL(out_RETIRE_RESTORE           ,_param->_nb_inst_retire,1);
     71
     72        DELETE2_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     73        DELETE2_SIGNAL(out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     74        DELETE2_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
    7675
    7776        DELETE1(internal_RENAME_ACK                    ,_param->_nb_inst_insert);
     
    8079        DELETE2(internal_RETIRE_EVENT_ACK              ,_param->_nb_front_end,_param->_nb_context[it1]);
    8180
    82         DELETE2_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
    83         DELETE2_SIGNAL(out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1],1);
    84         DELETE2_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
     81        DELETE3(rat_gpr                      ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     82        DELETE3(rat_spr                      ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     83        DELETE3(rat_gpr_update_table         ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     84        DELETE3(rat_spr_update_table         ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     85        DELETE3(internal_rat_gpr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     86        DELETE3(internal_rat_spr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    8587       
    86         delete [] rat_gpr             ;
    87         delete [] rat_spr             ;
    88         delete [] rat_gpr_update_table;
    89         delete [] rat_spr_update_table;
    90         delete [] internal_rat_gpr_update_table;
    91         delete [] internal_rat_spr_update_table;
     88        DELETE1(internal_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
     89        DELETE1(internal_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire);
    9290      }
    9391
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_retire.cpp

    r106 r112  
    3131        {
    3232          // An event occure
    33           bool no_event = not (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) and (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) == EVENT_STATE_EVENT));
     33          // bool event = (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) != EVENT_STATE_NO_EVENT);
     34          bool reset_update_table = (PORT_READ(in_RETIRE_EVENT_VAL [i][j]) and // always ack
     35                                     (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) == EVENT_STATE_EVENT));
     36
     37          // not event -> update_table == 1 -> always update
     38          // event     -> update_table and not reset
    3439          for (uint32_t k=0; k<_param->_nb_general_register_logic; ++k)
    35             internal_rat_gpr_update_table [i][j][k] = rat_gpr_update_table [i][j][k] and no_event;
     40            internal_rat_gpr_update_table [i][j][k] = // not event or
     41                                                      (rat_gpr_update_table [i][j][k] and not reset_update_table);
    3642          for (uint32_t k=0; k<_param->_nb_special_register_logic; ++k)
    37             internal_rat_spr_update_table [i][j][k] = rat_spr_update_table [i][j][k] and no_event;
     43            internal_rat_spr_update_table [i][j][k] = // not event or
     44                                                      (rat_spr_update_table [i][j][k] and not reset_update_table);
    3845        }
    3946
     
    5057        Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RETIRE_FRONT_END_ID [i]):0;
    5158        Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RETIRE_CONTEXT_ID   [i]):0;
     59        Tcontrol_t restore      = (PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]) != EVENT_STATE_NO_EVENT);
    5260
    5361        // Test if event -> need restore ?
    54         if (PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]) != EVENT_STATE_NO_EVENT)
     62        if (restore)
    5563          {
    5664            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * Have event");
     
    8290            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * restore_re_phy_old   : %d",retire_restore_re_phy_old);
    8391          }
     92
     93        internal_RETIRE_RESTORE_RD_PHY_OLD[i] = retire_restore_rd_phy_old;
     94        internal_RETIRE_RESTORE_RE_PHY_OLD[i] = retire_restore_re_phy_old;
    8495             
    85         PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD[i], retire_restore_rd_phy_old);
    86         PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD[i], retire_restore_re_phy_old);
     96        PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD[i], internal_RETIRE_RESTORE_RD_PHY_OLD[i]);
     97        PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD[i], internal_RETIRE_RESTORE_RE_PHY_OLD[i]);
     98        PORT_WRITE(out_RETIRE_RESTORE           [i], restore);
    8799      }
    88100
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_transition.cpp

    r106 r112  
    125125              log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * event_state  : %d",event_state);
    126126
    127               if (event_state != EVENT_STATE_NO_EVENT)
    128                 {
     127//            if (event_state != EVENT_STATE_NO_EVENT)
     128//              {
    129129                  // Test if write and have not a previous update
    130130                  if (PORT_READ(in_RETIRE_WRITE_RD [i]) == 1)
    131131                    {
    132132                      Tgeneral_address_t rd_log = PORT_READ(in_RETIRE_NUM_REG_RD_LOG [i]);
    133                      
     133                     
    134134                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * retire RD");
    135135                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * rd_log       : %d",rd_log);
    136136                     
    137 //                    if (RETIRE_RESTORE_RD_PHY_OLD [i])
    138                       if (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0)
     137// #ifdef DEBUG_TEST
     138//                       if (not (internal_RETIRE_RESTORE_RD_PHY_OLD [i] and ( (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0)) and (event_state != EVENT_STATE_NO_EVENT)))
     139//                         throw ERRORMORPHEO(FUNCTION,toString(_("restore_rd_phy_old [%d] = %d, but rat_gpr_update_table[%d][%d][%d] = %d\n"),
     140//                                                              i,internal_RETIRE_RESTORE_RD_PHY_OLD [i],
     141//                                                              front_end_id,context_id,rd_log,rat_gpr_update_table [front_end_id][context_id][rd_log]));
     142// #endif
     143
     144                      if (internal_RETIRE_RESTORE_RD_PHY_OLD [i])
     145//                    if (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0)
    139146                        {                     
    140147                          rat_gpr              [front_end_id][context_id][rd_log] = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]);
     
    150157                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * re_log       : %d",re_log);
    151158
    152 //                    if (RETIRE_RESTORE_RE_PHY_OLD [i])
    153                       if (rat_spr_update_table [front_end_id][context_id][re_log] == 0)
     159// #ifdef DEBUG_TEST
     160//                       if (not (internal_RETIRE_RESTORE_RE_PHY_OLD [i] and ((rat_spr_update_table [front_end_id][context_id][re_log] == 0) and (event_state != EVENT_STATE_NO_EVENT))))
     161//                         throw ERRORMORPHEO(FUNCTION,toString(_("restore_re_phy_old [%d] = %d, but rat_spr_update_table[%d][%d][%d] = %d\n"),
     162//                                                              i,internal_RETIRE_RESTORE_RE_PHY_OLD [i],
     163//                                                              front_end_id,context_id,re_log,rat_spr_update_table [front_end_id][context_id][re_log]));
     164// #endif
     165
     166                      if (internal_RETIRE_RESTORE_RE_PHY_OLD [i])
     167//                    if (rat_spr_update_table [front_end_id][context_id][re_log] == 0)
    154168                        {                     
    155169                          rat_spr              [front_end_id][context_id][re_log] = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);
     
    157171                        }
    158172                    }
    159                 }
     173//              }
    160174            }
    161175      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp

    r110 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    5959    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC1_INTERFACE("insert",OUT, EAST, "insert's interface", _param->_nb_inst_insert);
     61      ALLOC1_INTERFACE_BEGIN("insert",OUT, EAST, _("insert's interface"), _param->_nb_inst_insert);
    6262     
    6363      ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_VAL        ,"rename_val"        ,Tcontrol_t,1);
     
    122122      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD                    ,"NUM_REG_RE_PHY_OLD"                    ,Tspecial_address_t,_param->_size_special_register      );
    123123      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW                    ,"NUM_REG_RE_PHY_NEW"                    ,Tspecial_address_t,_param->_size_special_register      );
     124
     125      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    124126    }
    125127
    126128    // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    127129    {
    128       ALLOC1_INTERFACE("retire", IN, WEST, "retire's interface", _param->_nb_inst_retire);
     130      ALLOC1_INTERFACE_BEGIN("retire", IN, WEST, _("retire's interface"), _param->_nb_inst_retire);
    129131     
    130132      ALLOC1_SIGNAL_IN ( in_RETIRE_VAL          ,"val"          ,Tcontrol_t,1);
     
    134136      ALLOC1_SIGNAL_OUT(out_RETIRE_STAT_LIST_VAL,"stat_list_val",Tcontrol_t,1);
    135137      ALLOC1_SIGNAL_IN ( in_RETIRE_STAT_LIST_ACK,"stat_list_ack",Tcontrol_t,1);
     138
     139      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    136140    }
    137141
    138142#ifdef STATISTICS
    139     ALLOC1(internal_INSERT_RENAME_ACK, Tcontrol_t,_param->_nb_inst_insert);
     143    if (usage_is_set(_usage,USE_SYSTEMC))
     144      ALLOC1(internal_INSERT_RENAME_ACK, Tcontrol_t,_param->_nb_inst_insert);
    140145#endif
    141146
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-min.cfg

    r88 r112  
    881       1       *4      #nb_reg_free       
    991       1       *2      #nb_bank           
    10 1       1       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1.cfg

    r88 r112  
    881       4       *4      #nb_reg_free       
    998       8       *2      #nb_bank           
    10 1       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1a.cfg

    r88 r112  
    881       4       *4      #nb_reg_free       
    998       8       *2      #nb_bank           
    10 1       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4a.cfg

    r88 r112  
    11114       4       *4      #nb_reg_free       
    12128       8       *2      #nb_bank           
    13 2       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4b.cfg

    r88 r112  
    884       4       *4      #nb_reg_free       
    998       8       *2      #nb_bank           
    10 2       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4c.cfg

    r88 r112  
    994       4       *4      #nb_reg_free       
    10108       8       *2      #nb_bank           
    11 2       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4d.cfg

    r88 r112  
    994       4       *4      #nb_reg_free       
    10108       8       *2      #nb_bank           
    11 2       2       *2      #size_read_counter 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/main.cpp

    r88 r112  
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 8
     10#define NB_PARAMS 7
    1111
    1212void usage (int argc, char * argv[])
     
    2222  err (_(" * nb_reg_free                        (uint32_t)\n"));
    2323  err (_(" * nb_bank                            (uint32_t)\n"));
    24   err (_(" * size_read_counter                  (uint32_t)\n"));
     24//   err (_(" * size_read_counter                  (uint32_t)\n"));
    2525
    2626  exit (1);
     
    5151  uint32_t   _nb_reg_free         = atoi(argv[x++]);
    5252  uint32_t   _nb_bank             = atoi(argv[x++]);
    53   uint32_t   _size_read_counter   = atoi(argv[x++]);
     53//   uint32_t   _size_read_counter   = atoi(argv[x++]);
    5454
    5555  int _return = EXIT_SUCCESS;
     
    6565         _nb_reg_free           ,
    6666         _nb_bank               ,
    67          _size_read_counter     ,
     67//       _size_read_counter     ,
    6868         true //is_toplevel
    6969         );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_mono_thread.cfg

    r81 r112  
    881       4       *2      #_nb_reg_free           
    994       4       *2      #_nb_bank               
    10 2       2       +1      #_size_counter
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_multi_thread.cfg

    r81 r112  
    994       4       *2      #_nb_reg_free           
    10104       8       *2      #_nb_bank               
    11 2       4       *2      #_size_counter
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/main.cpp

    r88 r112  
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 8
     10#define NB_PARAMS 7
    1111
    1212void usage (int argc, char * argv[])
     
    2222  err (_(" * nb_reg_free                        (uint32_t)\n"));
    2323  err (_(" * nb_bank                            (uint32_t)\n"));
    24   err (_(" * size_counter                       (uint32_t)\n"));
    2524
    2625  exit (1);
     
    5554  uint32_t   _nb_reg_free           = atoi(argv[x++]);
    5655  uint32_t   _nb_bank               = atoi(argv[x++]);
    57   uint32_t   _size_counter          = atoi(argv[x++]);
    5856
    5957  try
     
    6866         _nb_reg_free           ,
    6967         _nb_bank               ,
    70          _size_counter          ,
    7168         true //is_toplevel
    7269         );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/test.cpp

    r88 r112  
    7575  ALLOC1_SC_SIGNAL( in_RETIRE_VAL               ," in_RETIRE_VAL               ",Tcontrol_t        ,_param->_nb_inst_retire);
    7676  ALLOC1_SC_SIGNAL(out_RETIRE_ACK               ,"out_RETIRE_ACK               ",Tcontrol_t        ,_param->_nb_inst_retire);
     77  ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE           ," in_RETIRE_RESTORE           ",Tcontrol_t        ,_param->_nb_inst_retire);
    7778  ALLOC1_SC_SIGNAL( in_RETIRE_READ_RA           ," in_RETIRE_READ_RA           ",Tcontrol_t        ,_param->_nb_inst_retire);
    7879  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RA_PHY    ," in_RETIRE_NUM_REG_RA_PHY    ",Tgeneral_address_t,_param->_nb_inst_retire);
     
    121122  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_VAL               ,_param->_nb_inst_retire);
    122123  INSTANCE1_SC_SIGNAL(_Stat_List_unit,out_RETIRE_ACK               ,_param->_nb_inst_retire);
     124  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE           ,_param->_nb_inst_retire);
    123125  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_READ_RA           ,_param->_nb_inst_retire);
    124126  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RA_PHY    ,_param->_nb_inst_retire);
     
    234236                  TEST(bool, true,((gpr_status[reg]._is_free  == 0) and
    235237                                   (gpr_status[reg]._is_link  == 0) and
    236                                    (gpr_status[reg]._is_valid == 1) and
    237                                    (gpr_status[reg]._counter  == 0)));
     238                                   (gpr_status[reg]._is_valid == 1)//  and
     239//                                 (gpr_status[reg]._counter  == 0)
     240                                   ));
    238241
    239242                  gpr_status[reg]._is_free = 1;
     
    254257                  TEST(bool, true,((spr_status[reg]._is_free  == 0) and
    255258                                   (spr_status[reg]._is_link  == 0) and
    256                                    (spr_status[reg]._is_valid == 1) and
    257                                    (spr_status[reg]._counter  == 0)));
     259                                   (spr_status[reg]._is_valid == 1)//  and
     260//                                 (spr_status[reg]._counter  == 0)
     261                                   ));
    258262
    259263                  spr_status[reg]._is_free = 1;
     
    301305              Tspecial_address_t re       = (it_spr != free_list_spr.end())?*it_spr:0;
    302306
    303               Tcontrol_t         read_ra  = (gpr_status_insert[ra]._is_link) and (gpr_status_insert[ra]._counter < _param->_max_reader);
    304               Tcontrol_t         read_rb  = (gpr_status_insert[rb]._is_link) and (gpr_status_insert[rb]._counter < _param->_max_reader);
    305               Tcontrol_t         read_rc  = (spr_status_insert[rc]._is_link) and (spr_status_insert[rc]._counter < _param->_max_reader);
     307              Tcontrol_t         read_ra  = (gpr_status_insert[ra]._is_link); // and (gpr_status_insert[ra]._counter < _param->_max_reader);
     308              Tcontrol_t         read_rb  = (gpr_status_insert[rb]._is_link); // and (gpr_status_insert[rb]._counter < _param->_max_reader);
     309              Tcontrol_t         read_rc  = (spr_status_insert[rc]._is_link); // and (spr_status_insert[rc]._counter < _param->_max_reader);
    306310              Tcontrol_t         write_rd = (it_gpr != free_list_gpr.end());
    307311              Tcontrol_t         write_re = (it_spr != free_list_spr.end());
     
    341345              Tspecial_address_t re_new   = (rand()%(_param->_nb_special_register  ))  ;
    342346
    343               Tcontrol_t         read_ra  = (gpr_status_retire[ra]._is_link) and (gpr_status_retire[ra]._counter > 0);
    344               Tcontrol_t         read_rb  = (gpr_status_retire[rb]._is_link) and (gpr_status_retire[rb]._counter > 0);
    345               Tcontrol_t         read_rc  = (spr_status_retire[rc]._is_link) and (spr_status_retire[rc]._counter > 0);
     347              Tcontrol_t         read_ra  = (gpr_status_retire[ra]._is_link); // and (gpr_status_retire[ra]._counter > 0);
     348              Tcontrol_t         read_rb  = (gpr_status_retire[rb]._is_link); // and (gpr_status_retire[rb]._counter > 0);
     349              Tcontrol_t         read_rc  = (spr_status_retire[rc]._is_link); // and (spr_status_retire[rc]._counter > 0);
    346350              Tcontrol_t         write_rd = (    (gpr_status_retire[rd_old]._is_link ) and
    347351                                                 (gpr_status_retire[rd_old]._is_valid) and
     
    355359              in_RETIRE_VAL                [i]->write((rand()%100) < percent_transaction_retire);
    356360              in_RETIRE_READ_RA            [i]->write(read_ra );
    357               in_RETIRE_NUM_REG_RA_PHY     [i]->write(ra);
     361              in_RETIRE_RESTORE            [i]->write(0);
     362              in_RETIRE_NUM_REG_RA_PHY     [i]->write(ra);
    358363              in_RETIRE_READ_RB            [i]->write(read_rb );
    359364              in_RETIRE_NUM_REG_RB_PHY     [i]->write(rb);
     
    502507            if (in_RETIRE_VAL [i]->read() and out_RETIRE_ACK [i]->read())
    503508              {
     509                Tcontrol_t         restore        = in_RETIRE_RESTORE            [i]->read();
    504510                Tcontrol_t         read_ra        = in_RETIRE_READ_RA            [i]->read();
    505511                Tgeneral_address_t ra             = in_RETIRE_NUM_REG_RA_PHY     [i]->read();
     
    518524
    519525                LABEL("RETIRE [%d] - Accepted",i);
     526                LABEL(" * restore          : %d",restore);
    520527                LABEL(" * read_ra          : %d",read_ra );
    521528                LABEL(" * reg_ra           : %d",ra      );
     
    575582                if (write_rd)
    576583                  {
    577                     if (restore_rd_old)
     584                    if (restore)
    578585                      {
    579                         gpr_status[rd_old]._is_link  = 1;
    580                         gpr_status[rd_new]._is_link  = 0;
    581                         gpr_status[rd_new]._is_valid = 1;
     586                        if (restore_rd_old)
     587                          {
     588                            gpr_status[rd_old]._is_link  = 1;
     589                            gpr_status[rd_new]._is_link  = 0;
     590                            gpr_status[rd_new]._is_valid = 1;
     591                          }
     592                        else
     593                          {
     594                            gpr_status[rd_old]._is_link  = 0;
     595                            gpr_status[rd_new]._is_link  = 0;
     596                            gpr_status[rd_new]._is_valid = 1;
     597                          }
    582598                      }
    583599                    else
     
    586602                        gpr_status[rd_new]._is_valid = 1;
    587603                      }
     604
    588605                  }
    589606                if (write_re)
     
    619636                  TEST(bool, true,((gpr_status[reg]._is_free  == 0) and
    620637                                   (gpr_status[reg]._is_link  == 0) and
    621                                    (gpr_status[reg]._is_valid == 1) and
    622                                    (gpr_status[reg]._counter  == 0)));
     638                                   (gpr_status[reg]._is_valid == 1)//  and
     639//                                 (gpr_status[reg]._counter  == 0)
     640                                   ));
    623641
    624642                  gpr_status[reg]._is_free = 1;
     
    639657                  TEST(bool, true,((spr_status[reg]._is_free  == 0) and
    640658                                   (spr_status[reg]._is_link  == 0) and
    641                                    (spr_status[reg]._is_valid == 1) and
    642                                    (spr_status[reg]._counter  == 0)));
     659                                   (spr_status[reg]._is_valid == 1)//  and
     660//                                 (spr_status[reg]._counter  == 0)
     661                                   ));
    643662
    644663                  spr_status[reg]._is_free = 1;
     
    678697  delete []  in_RETIRE_VAL               ;
    679698  delete [] out_RETIRE_ACK               ;
     699  delete []  in_RETIRE_RESTORE           ;
    680700  delete []  in_RETIRE_READ_RA           ;
    681701  delete []  in_RETIRE_NUM_REG_RA_PHY    ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h

    r88 r112  
    3434  public : uint32_t   _nb_reg_free           ;
    3535  public : uint32_t   _nb_bank               ;
    36   public : uint32_t   _size_counter          ;
     36//public : uint32_t   _size_counter          ;
    3737
    3838//public : uint32_t   _size_general_register ;
    3939//public : uint32_t   _size_special_register ;
    4040                     
    41   public : uint32_t   _max_reader            ;
     41//public : uint32_t   _max_reader            ;
    4242  public : uint32_t   _nb_gpr_use_init       ;
    4343  public : uint32_t   _nb_spr_use_init       ;
     
    6363                        uint32_t   nb_reg_free           ,
    6464                        uint32_t   nb_bank               ,
    65                         uint32_t   size_counter          ,
     65//                      uint32_t   size_counter          ,
    6666                        bool       is_toplevel=false
    6767                        );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h

    r88 r112  
    7979  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_VAL               ;//[nb_inst_retire]
    8080  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_ACK               ;//[nb_inst_retire]
     81  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE           ;//[nb_inst_retire]
    8182  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RA           ;//[nb_inst_retire]
    8283  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RA_PHY    ;//[nb_inst_retire]
     
    110111  private   : stat_list_entry_t            ** spr_stat_list; //[nb_bank][nb_general_register_by_bank]
    111112
     113  private   : uint32_t                        reg_GPR_PTR_FREE;
     114  private   : uint32_t                        reg_SPR_PTR_FREE;
     115
    112116    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    113   private   : uint32_t                        internal_GPR_PTR_FREE;
    114   private   : uint32_t                        internal_SPR_PTR_FREE;
    115 
    116117  private   : Tcontrol_t                    * internal_INSERT_ACK       ;//[nb_inst_insert]
    117118  private   : Tcontrol_t                    * internal_RETIRE_ACK       ;//[nb_inst_retire]
     
    154155  public  : void        transition                (void);
    155156  public  : void        genMoore                  (void);
    156   public  : void        genMealy                  (void);
     157//public  : void        genMealy                  (void);
    157158#endif                                         
    158159
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h

    r88 r112  
    2525  public : bool     _is_free ; // set = is present in free list
    2626  public : bool     _is_link ; // set = is present in rat
    27   public : bool     _is_valid; // set = an instruction have write in this register
    28   public : uint32_t _counter ; // number of register that must read this register
     27//public : bool     _is_valid; // set = an instruction have write in this register
     28//public : uint32_t _counter ; // number of register that must read this register
    2929
    3030  public :  stat_list_entry_t (void) {};
     
    3535      _is_free  = 0;
    3636      _is_link  = is_link;
    37       _is_valid = 1;
    38       _counter  = 0;
     37//    _is_valid = 1;
     38//    _counter  = 0;
    3939    }
    4040
    41   public : void insert_read (void)
    42     {
    43       _counter ++;
    44     }
     41//   public : void insert_read (void)
     42//     {
     43//    _counter ++;
     44//     }
     45
    4546  public : void insert_write (void)
    4647    {
    4748      _is_free  = 0;
    4849      _is_link  = 1;
    49       _is_valid = 0;
     50//    _is_valid = 0;
    5051    }
    5152
    52   public : void retire_read (void)
     53//   public : void retire_read (void)
     54//     {
     55//    _counter --;
     56//     }
     57
     58  public : void retire_write_old (bool restore, bool restore_old)
    5359    {
    54       _counter --;
     60      // restore restore_old is_link
     61      // 0       x           0       - normal case : unallocate
     62      // 1       0           0       - event and previous update
     63      // 1       1           1       - event and first update
     64     
     65      _is_link = restore and restore_old;
    5566    }
    5667
    57   public : void retire_write_old (bool restore_old)
     68  public : void retire_write_new (bool restore, bool restore_old)
    5869    {
    59       if (not restore_old)
    60         {
    61           _is_link  = 0;
    62         }
    63       // else nothing
    64     }
     70      // restore restore_old is_link
     71      // 0       x           1       - normal case : allocate
     72      // 1       x           0       - event, need restore oldest register
    6573
    66   public : void retire_write_new (bool restore_old)
    67     {
    68       if (restore_old)
    69         {
    70           _is_link  = 0;
    71         }
     74      if (restore)
     75        _is_link = 0;
    7276
    7377      // in all case
    74       _is_valid = 1;
     78//    _is_valid = 1;
    7579    }
    7680
     
    8084    }
    8185
    82   public : bool can_insert_read (uint32_t max_reader)
    83     {
    84       return ((_counter+1) < max_reader);
    85     }
     86//   public : bool can_insert_read (uint32_t max_reader)
     87//     {
     88//    return ((_counter+1) < max_reader);
     89//     }
    8690
    8791  public : bool can_free (void)
    8892    {
    8993      return ((_is_free  == 0) and
    90               (_is_link  == 0) and
    91 //            (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
    92               (_counter  == 0));
     94              (_is_link  == 0) // and
     95//            (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
     96//            (_counter  == 0)
     97              );
    9398    }
    9499
     
    97102    {
    98103      output << x._is_free  << " "
    99              << x._is_link  << " "
    100              << x._is_valid << " "
    101              << x._counter;
     104             << x._is_link  // << " "
     105//           << x._is_valid  << " "
     106//              << x._counter
     107        ;
    102108     
    103109      return output;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters.cpp

    r88 r112  
    2929                          uint32_t   nb_reg_free           ,
    3030                          uint32_t   nb_bank               ,
    31                           uint32_t   size_counter          ,
     31//                        uint32_t   size_counter          ,
    3232                          bool       is_toplevel)
    3333  {
     
    4242    _nb_reg_free            = nb_reg_free        ;
    4343    _nb_bank                = nb_bank            ;
    44     _size_counter           = size_counter       ;
     44//  _size_counter           = size_counter       ;
    4545
    46     _max_reader             = 1<<size_counter;
     46//  _max_reader             = 1<<size_counter;
    4747
    4848    uint32_t nb_thread = 0;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters_print.cpp

    r81 r112  
    3535    xml.singleton_begin("nb_reg_free        "); xml.attribut("value",toString(_nb_reg_free        )); xml.singleton_end();
    3636    xml.singleton_begin("nb_bank            "); xml.attribut("value",toString(_nb_bank            )); xml.singleton_end();
    37     xml.singleton_begin("size_counter       "); xml.attribut("value",toString(_size_counter       )); xml.singleton_end();
     37//     xml.singleton_begin("size_counter       "); xml.attribut("value",toString(_size_counter       )); xml.singleton_end();
    3838
    3939    for (uint32_t i=0;i<_nb_front_end; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit.cpp

    r88 r112  
    7575      {
    7676        // Constant
     77        for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     78          {
     79            internal_INSERT_ACK[i] = 1;
     80            PORT_WRITE(out_INSERT_ACK[i], internal_INSERT_ACK[i]);
     81          }
    7782        for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
    7883          {
     
    101106# endif   
    102107
    103         log_printf(INFO,Stat_List_unit,FUNCTION,"Method - genMealy");
     108//      log_printf(INFO,Stat_List_unit,FUNCTION,"Method - genMealy");
    104109
    105         SC_METHOD (genMealy);
    106         dont_initialize ();
    107         sensitive << (*(in_CLOCK)).neg(); // need internal register
    108         for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    109           sensitive << (*(in_INSERT_READ_RA        [i]))
    110                     << (*(in_INSERT_NUM_REG_RA_PHY [i]))
    111                     << (*(in_INSERT_READ_RB        [i]))
    112                     << (*(in_INSERT_NUM_REG_RB_PHY [i]))
    113                     << (*(in_INSERT_READ_RC        [i]))
    114                     << (*(in_INSERT_NUM_REG_RC_PHY [i]));
     110//      SC_METHOD (genMealy);
     111//      dont_initialize ();
     112//      sensitive << (*(in_CLOCK)).neg(); // need internal register
     113//      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     114//        sensitive << (*(in_INSERT_READ_RA        [i]))
     115//                  << (*(in_INSERT_NUM_REG_RA_PHY [i]))
     116//                  << (*(in_INSERT_READ_RB        [i]))
     117//                  << (*(in_INSERT_NUM_REG_RB_PHY [i]))
     118//                  << (*(in_INSERT_READ_RC        [i]))
     119//                  << (*(in_INSERT_NUM_REG_RC_PHY [i]));
    115120
    116 # ifdef SYSTEMCASS_SPECIFIC
    117         // List dependency information
     121// # ifdef SYSTEMCASS_SPECIFIC
     122//      // List dependency information
    118123
    119         for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    120           {
    121             (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RA        [i]));
    122             (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RA_PHY [i]));
    123             (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RB        [i]));
    124             (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RB_PHY [i]));
    125             (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RC        [i]));
    126             (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RC_PHY [i]));
    127           }
    128 # endif   
     124//      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     125//        {
     126//          (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RA        [i]));
     127//          (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RA_PHY [i]));
     128//          (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RB        [i]));
     129//          (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RB_PHY [i]));
     130//          (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RC        [i]));
     131//          (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RC_PHY [i]));
     132//        }
     133// # endif   
    129134       
    130135#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_allocation.cpp

    r88 r112  
    4949                                                         ,IN
    5050                                                         ,SOUTH,
    51                                                          "Generalist interface"
     51                                                         _("Generalist interface")
    5252#endif
    5353                                                         );
     
    5858     // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959     {
    60        ALLOC1_INTERFACE("insert",IN,SOUTH,"Insert a renaming result",_param->_nb_inst_insert);
     60       ALLOC1_INTERFACE_BEGIN("insert",IN,SOUTH,_("Insert a renaming result"),_param->_nb_inst_insert);
    6161
    6262       ALLOC1_VALACK_IN ( in_INSERT_VAL               ,VAL);
     
    7272       ALLOC1_SIGNAL_IN ( in_INSERT_WRITE_RE          ,"write_re"          ,Tcontrol_t        ,1                             );
    7373       ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register);
     74
     75       ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    7476     }
    7577
    7678     // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7779     {
    78        ALLOC1_INTERFACE("retire",IN,NORTH,"Retire a renaming result",_param->_nb_inst_retire);
     80       ALLOC1_INTERFACE_BEGIN("retire",IN,NORTH,_("Retire a renaming result"),_param->_nb_inst_retire);
    7981
    8082       ALLOC1_VALACK_IN ( in_RETIRE_VAL               ,VAL);
    8183       ALLOC1_VALACK_OUT(out_RETIRE_ACK               ,ACK);
     84       ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE           ,"restore"           ,Tcontrol_t        ,1                             );
    8285       ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RA           ,"read_ra"           ,Tcontrol_t        ,1                             );
    8386       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RA_PHY    ,"num_reg_ra_phy"    ,Tgeneral_address_t,_param->_size_general_register);
     
    9497       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
    9598       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register);
     99
     100       ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    96101     }
    97102
    98103     // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    99104     {
    100        ALLOC1_INTERFACE("push_gpr",OUT,SOUTH,"Free a general register",_param->_nb_reg_free);
     105       ALLOC1_INTERFACE_BEGIN("push_gpr",OUT,SOUTH,_("Free a general register"),_param->_nb_reg_free);
    101106
    102107       ALLOC1_VALACK_OUT(out_PUSH_GPR_VAL    ,VAL);
    103108       ALLOC1_VALACK_IN ( in_PUSH_GPR_ACK    ,ACK);
    104109       ALLOC1_SIGNAL_OUT(out_PUSH_GPR_NUM_REG,"num_reg",Tgeneral_address_t,_param->_size_general_register);
     110
     111       ALLOC1_INTERFACE_END(_param->_nb_reg_free);
    105112     }
    106113
    107114     // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    108115     {
    109        ALLOC1_INTERFACE("push_spr",OUT,SOUTH,"Free a special register",_param->_nb_reg_free);
     116       ALLOC1_INTERFACE_BEGIN("push_spr",OUT,SOUTH,_("Free a special register"),_param->_nb_reg_free);
    110117
    111118       ALLOC1_VALACK_OUT(out_PUSH_SPR_VAL    ,VAL);
    112119       ALLOC1_VALACK_IN ( in_PUSH_SPR_ACK    ,ACK);
    113120       ALLOC1_SIGNAL_OUT(out_PUSH_SPR_NUM_REG,"num_reg",Tspecial_address_t,_param->_size_special_register);
     121
     122       ALLOC1_INTERFACE_END(_param->_nb_reg_free);
    114123     }
    115124
     
    117126    if (usage_is_set(_usage,USE_SYSTEMC))
    118127      {
    119      gpr_stat_list = new stat_list_entry_t * [_param->_nb_bank];
    120      spr_stat_list = new stat_list_entry_t * [_param->_nb_bank];
    121 
    122      for (uint32_t i=0; i<_param->_nb_bank; i++)
    123        {
    124          gpr_stat_list [i] = new stat_list_entry_t [_param->_nb_general_register_by_bank];
    125          spr_stat_list [i] = new stat_list_entry_t [_param->_nb_special_register_by_bank];
    126        }       
    127 
    128      internal_INSERT_ACK        = new Tcontrol_t [_param->_nb_inst_insert];
    129      internal_RETIRE_ACK        = new Tcontrol_t [_param->_nb_inst_retire];
    130      internal_PUSH_GPR_VAL      = new Tcontrol_t [_param->_nb_reg_free];
    131      internal_PUSH_GPR_NUM_BANK = new uint32_t   [_param->_nb_reg_free];
    132      internal_PUSH_SPR_VAL      = new Tcontrol_t [_param->_nb_reg_free];
    133      internal_PUSH_SPR_NUM_BANK = new uint32_t   [_param->_nb_reg_free];
     128     ALLOC2(gpr_stat_list,stat_list_entry_t,_param->_nb_bank,_param->_nb_general_register_by_bank);
     129     ALLOC2(spr_stat_list,stat_list_entry_t,_param->_nb_bank,_param->_nb_special_register_by_bank);
     130     ALLOC1(internal_INSERT_ACK       ,Tcontrol_t,_param->_nb_inst_insert);
     131     ALLOC1(internal_RETIRE_ACK       ,Tcontrol_t,_param->_nb_inst_retire);
     132     ALLOC1(internal_PUSH_GPR_VAL     ,Tcontrol_t,_param->_nb_reg_free);
     133     ALLOC1(internal_PUSH_GPR_NUM_BANK,uint32_t  ,_param->_nb_reg_free);
     134     ALLOC1(internal_PUSH_SPR_VAL     ,Tcontrol_t,_param->_nb_reg_free);
     135     ALLOC1(internal_PUSH_SPR_NUM_BANK,uint32_t  ,_param->_nb_reg_free);
    134136      }
    135137
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_deallocation.cpp

    r88 r112  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2930        delete     in_NRESET;
    3031
    31         delete []  in_INSERT_VAL               ;
    32         delete [] out_INSERT_ACK               ;
    33         delete []  in_INSERT_READ_RA           ;
    34         delete []  in_INSERT_NUM_REG_RA_PHY    ;
    35         delete []  in_INSERT_READ_RB           ;
    36         delete []  in_INSERT_NUM_REG_RB_PHY    ;
    37         delete []  in_INSERT_READ_RC           ;
    38         delete []  in_INSERT_NUM_REG_RC_PHY    ;
    39         delete []  in_INSERT_WRITE_RD          ;
    40         delete []  in_INSERT_NUM_REG_RD_PHY_NEW;
    41         delete []  in_INSERT_WRITE_RE          ;
    42         delete []  in_INSERT_NUM_REG_RE_PHY_NEW;
     32        DELETE1_SIGNAL( in_INSERT_VAL               ,_param->_nb_inst_insert,1);
     33        DELETE1_SIGNAL(out_INSERT_ACK               ,_param->_nb_inst_insert,1);
     34        DELETE1_SIGNAL( in_INSERT_READ_RA           ,_param->_nb_inst_insert,1                             );
     35        DELETE1_SIGNAL( in_INSERT_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register);
     36        DELETE1_SIGNAL( in_INSERT_READ_RB           ,_param->_nb_inst_insert,1                             );
     37        DELETE1_SIGNAL( in_INSERT_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register);
     38        DELETE1_SIGNAL( in_INSERT_READ_RC           ,_param->_nb_inst_insert,1                             );
     39        DELETE1_SIGNAL( in_INSERT_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register);
     40        DELETE1_SIGNAL( in_INSERT_WRITE_RD          ,_param->_nb_inst_insert,1                             );
     41        DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register);
     42        DELETE1_SIGNAL( in_INSERT_WRITE_RE          ,_param->_nb_inst_insert,1                             );
     43        DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register);
    4344
    44         delete []  in_RETIRE_VAL               ;
    45         delete [] out_RETIRE_ACK               ;
    46         delete []  in_RETIRE_READ_RA           ;
    47         delete []  in_RETIRE_NUM_REG_RA_PHY    ;
    48         delete []  in_RETIRE_READ_RB           ;
    49         delete []  in_RETIRE_NUM_REG_RB_PHY    ;
    50         delete []  in_RETIRE_READ_RC           ;
    51         delete []  in_RETIRE_NUM_REG_RC_PHY    ;
    52         delete []  in_RETIRE_WRITE_RD          ;
    53         delete []  in_RETIRE_RESTORE_RD_PHY_OLD;
    54         delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    55         delete []  in_RETIRE_NUM_REG_RD_PHY_NEW;
    56         delete []  in_RETIRE_WRITE_RE          ;
    57         delete []  in_RETIRE_RESTORE_RE_PHY_OLD;
    58         delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    59         delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
     45        DELETE1_SIGNAL( in_RETIRE_VAL               ,_param->_nb_inst_retire,1);
     46        DELETE1_SIGNAL(out_RETIRE_ACK               ,_param->_nb_inst_retire,1);
     47        DELETE1_SIGNAL( in_RETIRE_RESTORE           ,_param->_nb_inst_retire,1                             );
     48        DELETE1_SIGNAL( in_RETIRE_READ_RA           ,_param->_nb_inst_retire,1                             );
     49        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RA_PHY    ,_param->_nb_inst_retire,_param->_size_general_register);
     50        DELETE1_SIGNAL( in_RETIRE_READ_RB           ,_param->_nb_inst_retire,1                             );
     51        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RB_PHY    ,_param->_nb_inst_retire,_param->_size_general_register);
     52        DELETE1_SIGNAL( in_RETIRE_READ_RC           ,_param->_nb_inst_retire,1                             );
     53        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RC_PHY    ,_param->_nb_inst_retire,_param->_size_special_register);
     54        DELETE1_SIGNAL( in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire,1                             );
     55        DELETE1_SIGNAL( in_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire,1                             );
     56        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register);
     57        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register);
     58        DELETE1_SIGNAL( in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire,1                             );
     59        DELETE1_SIGNAL( in_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire,1                             );
     60        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register);
     61        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register);
    6062
    61         delete [] out_PUSH_GPR_VAL             ;
    62         delete []  in_PUSH_GPR_ACK             ;
     63        DELETE1_SIGNAL(out_PUSH_GPR_VAL    ,_param->_nb_reg_free,1);
     64        DELETE1_SIGNAL( in_PUSH_GPR_ACK    ,_param->_nb_reg_free,1);
     65        DELETE1_SIGNAL(out_PUSH_GPR_NUM_REG,_param->_nb_reg_free,_param->_size_general_register);
    6366
    64         delete [] out_PUSH_GPR_NUM_REG         ;
    65         delete [] out_PUSH_SPR_VAL             ;
    66         delete []  in_PUSH_SPR_ACK             ;
    67         delete [] out_PUSH_SPR_NUM_REG         ;
    68    
    69         // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    70    
    71         delete [] gpr_stat_list;
    72         delete [] spr_stat_list;
    73        
    74         delete [] internal_INSERT_ACK       ;
    75         delete [] internal_RETIRE_ACK       ;
    76         delete [] internal_PUSH_GPR_VAL     ;
    77         delete [] internal_PUSH_GPR_NUM_BANK;
    78         delete [] internal_PUSH_SPR_VAL     ;
    79         delete [] internal_PUSH_SPR_NUM_BANK;
     67        DELETE1_SIGNAL(out_PUSH_SPR_VAL    ,_param->_nb_reg_free,1);
     68        DELETE1_SIGNAL( in_PUSH_SPR_ACK    ,_param->_nb_reg_free,1);
     69        DELETE1_SIGNAL(out_PUSH_SPR_NUM_REG,_param->_nb_reg_free,_param->_size_special_register);
     70
     71        DELETE2(gpr_stat_list             ,_param->_nb_bank,_param->_nb_general_register_by_bank);
     72        DELETE2(spr_stat_list             ,_param->_nb_bank,_param->_nb_special_register_by_bank);
     73        DELETE1(internal_INSERT_ACK       ,_param->_nb_inst_insert);
     74        DELETE1(internal_RETIRE_ACK       ,_param->_nb_inst_retire);
     75        DELETE1(internal_PUSH_GPR_VAL     ,_param->_nb_reg_free);
     76        DELETE1(internal_PUSH_GPR_NUM_BANK,_param->_nb_reg_free);
     77        DELETE1(internal_PUSH_SPR_VAL     ,_param->_nb_reg_free);
     78        DELETE1(internal_PUSH_SPR_NUM_BANK,_param->_nb_reg_free);
    8079      }
    81 
    8280
    8381    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMealy.cpp

    r88 r112  
    1919
    2020
    21 #undef  FUNCTION
    22 #define FUNCTION "Stat_List_unit::genMealy"
    23   void Stat_List_unit::genMealy (void)
    24   {
    25     log_begin(Stat_List_unit,FUNCTION);
    26     log_function(Stat_List_unit,FUNCTION,_name.c_str());
     21// #undef  FUNCTION
     22// #define FUNCTION "Stat_List_unit::genMealy"
     23//   void Stat_List_unit::genMealy (void)
     24//   {
     25//     log_begin(Stat_List_unit,FUNCTION);
     26//     log_function(Stat_List_unit,FUNCTION,_name.c_str());
    2727
    28     for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    29       {
    30         bool ack = true;
     28//     for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     29//       {
     30//      bool ack = true;
    3131
    32         if (PORT_READ(in_INSERT_READ_RA [i]))
    33           {
    34             Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);
    35             uint32_t bank = num_reg >> _param->_shift_gpr;
    36             uint32_t reg  = num_reg  & _param->_mask_gpr ;
    37             ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
    38           }
     32//      if (PORT_READ(in_INSERT_READ_RA [i]))
     33//        {
     34//          Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);
     35//          uint32_t bank = num_reg >> _param->_shift_gpr;
     36//          uint32_t reg  = num_reg  & _param->_mask_gpr ;
     37//          ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
     38//        }
    3939
    40         if (PORT_READ(in_INSERT_READ_RB [i]))
    41           {
    42             Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);
    43             uint32_t bank = num_reg >> _param->_shift_gpr;
    44             uint32_t reg  = num_reg  & _param->_mask_gpr ;
    45             ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
    46           }
     40//      if (PORT_READ(in_INSERT_READ_RB [i]))
     41//        {
     42//          Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);
     43//          uint32_t bank = num_reg >> _param->_shift_gpr;
     44//          uint32_t reg  = num_reg  & _param->_mask_gpr ;
     45//          ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
     46//        }
    4747
    48         if (PORT_READ(in_INSERT_READ_RC [i]))
    49           {
    50             Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);
    51             uint32_t bank = num_reg >> _param->_shift_spr;
    52             uint32_t reg  = num_reg  & _param->_mask_spr ;
    53             ack &= spr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
    54           }
     48//      if (PORT_READ(in_INSERT_READ_RC [i]))
     49//        {
     50//          Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);
     51//          uint32_t bank = num_reg >> _param->_shift_spr;
     52//          uint32_t reg  = num_reg  & _param->_mask_spr ;
     53//          ack &= spr_stat_list [bank][reg].can_insert_read(_param->_max_reader);
     54//        }
    5555
    56         internal_INSERT_ACK [i] = ack;
    57         PORT_WRITE(out_INSERT_ACK [i], ack);
    58       }
     56//      internal_INSERT_ACK [i] = ack;
     57//      PORT_WRITE(out_INSERT_ACK [i], ack);
     58//       }
    5959   
    60     log_end(Stat_List_unit,FUNCTION);
    61   };
     60//     log_end(Stat_List_unit,FUNCTION);
     61//   };
    6262
    6363}; // end namespace stat_list_unit
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp

    r88 r112  
    2626    log_function(Stat_List_unit,FUNCTION,_name.c_str());
    2727
    28     uint32_t gpr_ptr = internal_GPR_PTR_FREE;
    29     uint32_t spr_ptr = internal_SPR_PTR_FREE;
     28    uint32_t gpr_ptr = reg_GPR_PTR_FREE;
     29    uint32_t spr_ptr = reg_SPR_PTR_FREE;
    3030
    3131    for (uint32_t i=0; i<_param->_nb_reg_free; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_transition.cpp

    r106 r112  
    3838              spr_stat_list [i][j].reset((spr++)<_param->_nb_spr_use_init);
    3939          }
    40         internal_GPR_PTR_FREE = 0;
    41         internal_SPR_PTR_FREE = 0;
     40        reg_GPR_PTR_FREE = 0;
     41        reg_SPR_PTR_FREE = 0;
    4242      }
    4343    else
     
    5151              log_printf(TRACE,Stat_List_unit,FUNCTION,"  * INSERT [%d]",i);
    5252             
    53               if (PORT_READ(in_INSERT_READ_RA [i]))
    54                 {
    55                   Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);
    56 
    57                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RA  - num_reg     : %d",num_reg);
    58 
    59                   uint32_t bank = num_reg >> _param->_shift_gpr;
    60                   uint32_t reg  = num_reg  & _param->_mask_gpr ;
    61                   gpr_stat_list [bank][reg].insert_read();
    62                 }
    63 
    64               if (PORT_READ(in_INSERT_READ_RB [i]))
    65                 {
    66                   Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);
    67 
    68                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RB  - num_reg     : %d",num_reg);
    69 
    70                   uint32_t bank = num_reg >> _param->_shift_gpr;
    71                   uint32_t reg  = num_reg  & _param->_mask_gpr ;
    72                   gpr_stat_list [bank][reg].insert_read();
    73                 }
    74 
    75               if (PORT_READ(in_INSERT_READ_RC [i]))
    76                 {
    77                   Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);
    78 
    79                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RC  - num_reg     : %d",num_reg);
    80 
    81                   uint32_t bank = num_reg >> _param->_shift_spr;
    82                   uint32_t reg  = num_reg  & _param->_mask_spr ;
    83                   spr_stat_list [bank][reg].insert_read();
    84                 }
     53//            if (PORT_READ(in_INSERT_READ_RA [i]))
     54//              {
     55//                Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);
     56
     57//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RA  - num_reg     : %d",num_reg);
     58
     59//                uint32_t bank = num_reg >> _param->_shift_gpr;
     60//                uint32_t reg  = num_reg  & _param->_mask_gpr ;
     61//                gpr_stat_list [bank][reg].insert_read();
     62//              }
     63
     64//            if (PORT_READ(in_INSERT_READ_RB [i]))
     65//              {
     66//                Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);
     67
     68//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RB  - num_reg     : %d",num_reg);
     69
     70//                uint32_t bank = num_reg >> _param->_shift_gpr;
     71//                uint32_t reg  = num_reg  & _param->_mask_gpr ;
     72//                gpr_stat_list [bank][reg].insert_read();
     73//              }
     74
     75//            if (PORT_READ(in_INSERT_READ_RC [i]))
     76//              {
     77//                Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);
     78
     79//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RC  - num_reg     : %d",num_reg);
     80
     81//                uint32_t bank = num_reg >> _param->_shift_spr;
     82//                uint32_t reg  = num_reg  & _param->_mask_spr ;
     83//                spr_stat_list [bank][reg].insert_read();
     84//              }
    8585
    8686              if (PORT_READ(in_INSERT_WRITE_RD [i]))
     
    8888                  Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RD_PHY_NEW [i]);
    8989
    90                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RD - num_reg     : %d",num_reg);
     90                  log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RD - num_reg new : %d",num_reg);
    9191
    9292                  uint32_t bank = num_reg >> _param->_shift_gpr;
     
    9797              if (PORT_READ(in_INSERT_WRITE_RE [i]))
    9898                {
    99                   Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RE_PHY_NEW [i]);
    100 
    101                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RE - num_reg     : %d",num_reg);
     99                  Tspecial_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RE_PHY_NEW [i]);
     100
     101                  log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RE - num_reg new : %d",num_reg);
    102102
    103103                  uint32_t bank = num_reg >> _param->_shift_spr;
     
    115115              log_printf(TRACE,Stat_List_unit,FUNCTION,"  * RETIRE [%d]",i);
    116116
    117               if (PORT_READ(in_RETIRE_READ_RA [i]))
    118                 {
    119                   Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RA_PHY [i]);
    120 
    121                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RA  - num_reg     : %d",num_reg);
    122 
    123                   uint32_t bank = num_reg >> _param->_shift_gpr;
    124                   uint32_t reg  = num_reg  & _param->_mask_gpr ;
    125                   gpr_stat_list [bank][reg].retire_read();
    126                 }
    127 
    128               if (PORT_READ(in_RETIRE_READ_RB [i]))
    129                 {
    130                   Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RB_PHY [i]);
    131 
    132                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RD  - num_reg     : %d",num_reg);
    133 
    134                   uint32_t bank = num_reg >> _param->_shift_gpr;
    135                   uint32_t reg  = num_reg  & _param->_mask_gpr ;
    136                   gpr_stat_list [bank][reg].retire_read();
    137                 }
    138 
    139               if (PORT_READ(in_RETIRE_READ_RC [i]))
    140                 {
    141                   Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RC_PHY [i]);
    142 
    143                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RC  - num_reg     : %d",num_reg);
    144 
    145                   uint32_t bank = num_reg >> _param->_shift_spr;
    146                   uint32_t reg  = num_reg  & _param->_mask_spr ;
    147                   spr_stat_list [bank][reg].retire_read();
    148                 }
     117              Tcontrol_t restore = PORT_READ(in_RETIRE_RESTORE [i]);
     118
     119              log_printf(TRACE,Stat_List_unit,FUNCTION,"    * restore : %d",restore);
     120
     121//            if (PORT_READ(in_RETIRE_READ_RA [i]))
     122//              {
     123//                Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RA_PHY [i]);
     124
     125//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RA  - num_reg     : %d",num_reg);
     126
     127//                uint32_t bank = num_reg >> _param->_shift_gpr;
     128//                uint32_t reg  = num_reg  & _param->_mask_gpr ;
     129//                gpr_stat_list [bank][reg].retire_read();
     130//              }
     131
     132//            if (PORT_READ(in_RETIRE_READ_RB [i]))
     133//              {
     134//                Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RB_PHY [i]);
     135
     136//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RB  - num_reg     : %d",num_reg);
     137
     138//                uint32_t bank = num_reg >> _param->_shift_gpr;
     139//                uint32_t reg  = num_reg  & _param->_mask_gpr ;
     140//                gpr_stat_list [bank][reg].retire_read();
     141//              }
     142
     143//            if (PORT_READ(in_RETIRE_READ_RC [i]))
     144//              {
     145//                Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RC_PHY [i]);
     146
     147//                   log_printf(TRACE,Stat_List_unit,FUNCTION,"    * READ_RC  - num_reg     : %d",num_reg);
     148
     149//                uint32_t bank = num_reg >> _param->_shift_spr;
     150//                uint32_t reg  = num_reg  & _param->_mask_spr ;
     151//                spr_stat_list [bank][reg].retire_read();
     152//              }
    149153
    150154              if (PORT_READ(in_RETIRE_WRITE_RD [i]))
     
    157161                    Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]);
    158162
    159                     log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RD - num_reg_old : %d",num_reg);
     163                    log_printf(TRACE,Stat_List_unit,FUNCTION,"                num_reg_old : %d",num_reg);
    160164                 
    161165                    uint32_t bank = num_reg >> _param->_shift_gpr;
    162166                    uint32_t reg  = num_reg  & _param->_mask_gpr ;
    163                     gpr_stat_list [bank][reg].retire_write_old(restore_old);
     167                    gpr_stat_list [bank][reg].retire_write_old(restore, restore_old);
    164168                  }
    165169                  {
    166170                    Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_NEW [i]);
    167171
    168                     log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RD - num_reg_new : %d",num_reg);
     172                    log_printf(TRACE,Stat_List_unit,FUNCTION,"                num_reg_new : %d",num_reg);
    169173
    170174                    uint32_t bank = num_reg >> _param->_shift_gpr;
    171175                    uint32_t reg  = num_reg  & _param->_mask_gpr ;
    172                     gpr_stat_list [bank][reg].retire_write_new(restore_old);
     176                    gpr_stat_list [bank][reg].retire_write_new(restore, restore_old);
    173177                  }
    174178                }
     
    181185
    182186                  {
    183                     Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);
    184 
    185                     log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RE - num_reg_new : %d",num_reg);
     187                    Tspecial_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);
     188
     189                    log_printf(TRACE,Stat_List_unit,FUNCTION,"                 num_reg_old : %d",num_reg);
    186190
    187191                    uint32_t bank = num_reg >> _param->_shift_spr;
    188192                    uint32_t reg  = num_reg  & _param->_mask_spr ;
    189                     spr_stat_list [bank][reg].retire_write_old(restore_old);
     193                    spr_stat_list [bank][reg].retire_write_old(restore, restore_old);
    190194                  }
    191195                  {
    192                     Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_NEW [i]);
    193 
    194                     log_printf(TRACE,Stat_List_unit,FUNCTION,"    * WRITE_RE - num_reg_new : %d",num_reg);
     196                    Tspecial_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_NEW [i]);
     197
     198                    log_printf(TRACE,Stat_List_unit,FUNCTION,"                num_reg_new : %d",num_reg);
    195199
    196200                    uint32_t bank = num_reg >> _param->_shift_spr;
    197201                    uint32_t reg  = num_reg  & _param->_mask_spr ;
    198                     spr_stat_list [bank][reg].retire_write_new(restore_old);
     202                    spr_stat_list [bank][reg].retire_write_new(restore, restore_old);
    199203                  }
    200204                }
     
    207211            // =====================================================
    208212            if (internal_PUSH_GPR_VAL [i] and PORT_READ(in_PUSH_GPR_ACK [i]))
    209               gpr_stat_list[internal_PUSH_GPR_NUM_BANK [i]][internal_GPR_PTR_FREE].free();
     213              gpr_stat_list[internal_PUSH_GPR_NUM_BANK [i]][reg_GPR_PTR_FREE].free();
    210214           
    211215            // =====================================================
     
    213217            // =====================================================
    214218            if (internal_PUSH_SPR_VAL [i] and PORT_READ(in_PUSH_SPR_ACK [i]))
    215               spr_stat_list[internal_PUSH_SPR_NUM_BANK [i]][internal_SPR_PTR_FREE].free();
     219              spr_stat_list[internal_PUSH_SPR_NUM_BANK [i]][reg_SPR_PTR_FREE].free();
    216220          }
    217221
    218222        // Update pointer
    219         internal_GPR_PTR_FREE = ((internal_GPR_PTR_FREE==0)?_param->_nb_general_register_by_bank:internal_GPR_PTR_FREE)-1;
    220         internal_SPR_PTR_FREE = ((internal_SPR_PTR_FREE==0)?_param->_nb_special_register_by_bank:internal_SPR_PTR_FREE)-1;
     223        reg_GPR_PTR_FREE = ((reg_GPR_PTR_FREE==0)?_param->_nb_general_register_by_bank:reg_GPR_PTR_FREE)-1;
     224        reg_SPR_PTR_FREE = ((reg_SPR_PTR_FREE==0)?_param->_nb_special_register_by_bank:reg_SPR_PTR_FREE)-1;
    221225      }
    222226
    223227
    224228#if (DEBUG >= DEBUG_TRACE)
    225     log_printf(TRACE,Stat_List_unit,FUNCTION,"  * Dump Stat List");
    226     for (uint32_t i=0; i<_param->_nb_bank; i++)
    227       for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
    228         log_printf(TRACE,Stat_List_unit,FUNCTION,"    * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d",
    229                    i,
    230                    j,
    231                    (i<<_param->_shift_gpr)|j,
    232                    gpr_stat_list[i][j]._is_free,
    233                    gpr_stat_list[i][j]._is_link,
    234                    gpr_stat_list[i][j]._is_valid,
    235                    gpr_stat_list[i][j]._counter);
    236     for (uint32_t i=0; i<_param->_nb_bank; i++)
    237       for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
    238         log_printf(TRACE,Stat_List_unit,FUNCTION,"    * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d",
    239                    i,
    240                    j,
    241                    (i<<_param->_shift_spr)|j,
    242                    spr_stat_list[i][j]._is_free,
    243                    spr_stat_list[i][j]._is_link,
    244                    spr_stat_list[i][j]._is_valid,
    245                    spr_stat_list[i][j]._counter);
     229    {
     230      log_printf(TRACE,Stat_List_unit,FUNCTION,"  * Dump Stat List");
     231      log_printf(TRACE,Stat_List_unit,FUNCTION,"    * reg_GPR_PTR_FREE : %d",reg_GPR_PTR_FREE);
     232      log_printf(TRACE,Stat_List_unit,FUNCTION,"    * reg_SPR_PTR_FREE : %d",reg_SPR_PTR_FREE);
     233     
     234      for (uint32_t i=0; i<_param->_nb_bank; i++)
     235        for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
     236          log_printf(TRACE,Stat_List_unit,FUNCTION,"    * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d",
     237                     i,
     238                     j,
     239                     (i<<_param->_shift_gpr)|j,
     240                     gpr_stat_list[i][j]._is_free,
     241                     gpr_stat_list[i][j]._is_link// ,
     242//                      gpr_stat_list[i][j]._is_valid,
     243//                      gpr_stat_list[i][j]._counter
     244                     );
     245      for (uint32_t i=0; i<_param->_nb_bank; i++)
     246        for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
     247          log_printf(TRACE,Stat_List_unit,FUNCTION,"    * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d",
     248                     i,
     249                     j,
     250                     (i<<_param->_shift_spr)|j,
     251                     spr_stat_list[i][j]._is_free,
     252                     spr_stat_list[i][j]._is_link// ,
     253//                      spr_stat_list[i][j]._is_valid,
     254//                      spr_stat_list[i][j]._counter
     255                     );
     256    }
    246257#endif
     258
     259#ifdef DEBUG_TEST
     260# if 0
     261    {
     262      uint32_t size_rob   = 64;
     263      uint32_t nb_context = 1;
     264     
     265      {
     266        uint32_t nb_is_link = 0;
     267        uint32_t nb_reg = 32;
     268        for (uint32_t i=0; i<_param->_nb_bank; i++)
     269          for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
     270            if (gpr_stat_list[i][j]._is_link)
     271              nb_is_link ++;
     272       
     273        log_printf(TRACE,Stat_List_unit,FUNCTION,"    * nb_GPR_IS_LINK   : %d",nb_is_link);
     274       
     275        if (nb_is_link > size_rob+nb_context*nb_reg)
     276          throw ERRORMORPHEO(FUNCTION,toString(_("They are %d linked gpr register, but max is size_rob+nb_context*%d = %d+%d*%d = %d"),nb_is_link,nb_reg,size_rob,nb_context,nb_reg,size_rob+nb_context*nb_reg));
     277      }
     278     
     279      {
     280        uint32_t nb_is_link = 0;
     281        uint32_t nb_reg = 2;
     282        for (uint32_t i=0; i<_param->_nb_bank; i++)
     283          for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
     284            if (spr_stat_list[i][j]._is_link)
     285              nb_is_link ++;
     286       
     287        log_printf(TRACE,Stat_List_unit,FUNCTION,"    * nb_SPR_IS_LINK   : %d",nb_is_link);
     288       
     289        if (nb_is_link > size_rob+nb_context*nb_reg)
     290          throw ERRORMORPHEO(FUNCTION,toString(_("They are %d linked spr register, but max is size_rob+nb_context*%d = %d+%d*%d = %d"),nb_is_link,nb_reg,size_rob,nb_context,nb_reg,size_rob+nb_context*nb_reg));
     291      }
     292    }
     293# endif
     294#endif
     295               
    247296
    248297#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Parameters.h

    r88 r112  
    3838  public : uint32_t   _nb_reg_free           ;
    3939  public : uint32_t   _nb_bank               ;
    40   public : uint32_t   _size_read_counter     ;
     40//public : uint32_t   _size_read_counter     ;
    4141
    4242//public : uint32_t   _size_front_end_id     ;
     
    6262                        uint32_t   nb_reg_free           ,
    6363                        uint32_t   nb_bank               ,
    64                         uint32_t   size_read_counter     ,
     64//                      uint32_t   size_read_counter     ,
    6565                        bool       is_toplevel=false);
    6666//   public : Parameters  (Parameters & param) ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters.cpp

    r88 r112  
    2828                          uint32_t   nb_reg_free           ,
    2929                          uint32_t   nb_bank               ,
    30                           uint32_t   size_read_counter     ,
     30//                        uint32_t   size_read_counter     ,
    3131                          bool       is_toplevel)
    3232  {
     
    4141    _nb_reg_free         = nb_reg_free        ;
    4242    _nb_bank             = nb_bank            ;
    43     _size_read_counter   = size_read_counter  ;
     43//     _size_read_counter   = size_read_counter  ;
    4444
    4545    uint32_t size_general_register = log2(nb_general_register);
     
    8383       _nb_inst_retire     ,
    8484       _nb_reg_free        ,
    85        _nb_bank            ,
    86        _size_read_counter  );
     85       _nb_bank            // ,
     86//     _size_read_counter 
     87       );
    8788
    8889    _param_register_translation_unit_glue    = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters_print.cpp

    r81 r112  
    3434    xml.singleton_begin("nb_reg_free        "); xml.attribut("value",toString(_nb_reg_free        )); xml.singleton_end();
    3535    xml.singleton_begin("nb_bank            "); xml.attribut("value",toString(_nb_bank            )); xml.singleton_end();
    36     xml.singleton_begin("size_read_counter  "); xml.attribut("value",toString(_size_read_counter  )); xml.singleton_end();
     36//  xml.singleton_begin("size_read_counter  "); xml.attribut("value",toString(_size_read_counter  )); xml.singleton_end();
    3737    for (uint32_t i=0;i<_nb_front_end; i++)
    3838      {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp

    r104 r112  
    5858    // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC1_INTERFACE("rename", IN, EAST, "Instruction with logical register", _param->_nb_inst_insert);
     60      ALLOC1_INTERFACE_BEGIN("rename", IN, EAST, _("Instruction with logical register"), _param->_nb_inst_insert);
    6161
    6262      ALLOC1_VALACK_IN ( in_RENAME_VAL           ,VAL);
     
    7474      ALLOC1_SIGNAL_IN ( in_RENAME_WRITE_RE      ,"write_re"      ,Tcontrol_t        ,1                                   );
    7575      ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RE_LOG,"num_reg_re_log",Tspecial_address_t,_param->_size_special_register_logic);
     76
     77      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    7678    }
    7779
    7880    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7981    {
    80       ALLOC1_INTERFACE("insert",OUT,WEST , "Instruction with physical register", _param->_nb_inst_insert);
     82      ALLOC1_INTERFACE_BEGIN("insert",OUT,WEST , _("Instruction with physical register"), _param->_nb_inst_insert);
    8183     
    8284      ALLOC1_VALACK_OUT(out_INSERT_VAL               ,VAL);
     
    101103      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register      );
    102104      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
     105
     106      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    103107    }
    104108
    105109    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    106110    {
    107       ALLOC1_INTERFACE("retire",IN ,NORTH, "Retire instruction, update renaming structure.", _param->_nb_inst_retire);
     111      ALLOC1_INTERFACE_BEGIN("retire",IN ,NORTH, _("Retire instruction, update renaming structure."), _param->_nb_inst_retire);
     112
    108113      ALLOC1_VALACK_IN ( in_RETIRE_VAL               ,VAL);
    109114      ALLOC1_VALACK_OUT(out_RETIRE_ACK               ,ACK);
     
    124129      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register      );
    125130      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
     131
     132      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    126133    }
    127134
    128135    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    129136    {
    130       ALLOC2_INTERFACE("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
     137      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
    131138
    132139      _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
    133140      _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK           ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
    134141      _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE      ,"state"             ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     142
     143      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    135144    }
    136145
     
    362371          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD",
    363372                                   dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD");
     373          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE"           ,
     374                                   dest, "in_RETIRE_"+toString(i)+"_RESTORE"           );
    364375        }
    365376
     
    671682          // in_RETIRE_RESTORE_RD_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RD_PHY_OLD
    672683          // in_RETIRE_RESTORE_RE_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RE_PHY_OLD
     684          // in_RETIRE_RESTORE            - register_address_translation_unit.out_RETIRE_RESTORE           
    673685
    674686          dest = _name+"_register_translation_unit_glue";
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_deallocation.cpp

    r104 r112  
    2929        delete    in_NRESET;
    3030
    31         delete []  in_RENAME_VAL               ;
    32         delete [] out_RENAME_ACK               ;
    33         if (_param->_have_port_front_end_id)
    34         delete []  in_RENAME_FRONT_END_ID      ;
    35         if (_param->_have_port_context_id)
    36         delete []  in_RENAME_CONTEXT_ID        ;
    37         delete []  in_RENAME_READ_RA           ;
    38         delete []  in_RENAME_NUM_REG_RA_LOG    ;
    39         delete []  in_RENAME_READ_RB           ;
    40         delete []  in_RENAME_NUM_REG_RB_LOG    ;
    41         delete []  in_RENAME_READ_RC           ;
    42         delete []  in_RENAME_NUM_REG_RC_LOG    ;
    43         delete []  in_RENAME_WRITE_RD          ;
    44         delete []  in_RENAME_NUM_REG_RD_LOG    ;
    45         delete []  in_RENAME_WRITE_RE          ;
    46         delete []  in_RENAME_NUM_REG_RE_LOG    ;
     31        DELETE1_SIGNAL( in_RENAME_VAL           ,_param->_nb_inst_insert,1);
     32        DELETE1_SIGNAL(out_RENAME_ACK           ,_param->_nb_inst_insert,1);
     33        DELETE1_SIGNAL( in_RENAME_FRONT_END_ID  ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     34        DELETE1_SIGNAL( in_RENAME_CONTEXT_ID    ,_param->_nb_inst_insert,_param->_size_context_id            );
     35        DELETE1_SIGNAL( in_RENAME_READ_RA       ,_param->_nb_inst_insert,1                                   );
     36        DELETE1_SIGNAL( in_RENAME_NUM_REG_RA_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     37        DELETE1_SIGNAL( in_RENAME_READ_RB       ,_param->_nb_inst_insert,1                                   );
     38        DELETE1_SIGNAL( in_RENAME_NUM_REG_RB_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     39        DELETE1_SIGNAL( in_RENAME_READ_RC       ,_param->_nb_inst_insert,1                                   );
     40        DELETE1_SIGNAL( in_RENAME_NUM_REG_RC_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic);
     41        DELETE1_SIGNAL( in_RENAME_WRITE_RD      ,_param->_nb_inst_insert,1                                   );
     42        DELETE1_SIGNAL( in_RENAME_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     43        DELETE1_SIGNAL( in_RENAME_WRITE_RE      ,_param->_nb_inst_insert,1                                   );
     44        DELETE1_SIGNAL( in_RENAME_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic);
    4745
    48         delete [] out_INSERT_VAL               ;
    49         delete []  in_INSERT_ACK               ;
    50         if (_param->_have_port_front_end_id)
    51         delete [] out_INSERT_FRONT_END_ID      ;
    52         if (_param->_have_port_context_id)
    53         delete [] out_INSERT_CONTEXT_ID        ;
    54         delete [] out_INSERT_READ_RA           ;
    55         delete [] out_INSERT_NUM_REG_RA_LOG    ;
    56         delete [] out_INSERT_NUM_REG_RA_PHY    ;
    57         delete [] out_INSERT_READ_RB           ;
    58         delete [] out_INSERT_NUM_REG_RB_LOG    ;
    59         delete [] out_INSERT_NUM_REG_RB_PHY    ;
    60         delete [] out_INSERT_READ_RC           ;
    61         delete [] out_INSERT_NUM_REG_RC_LOG    ;
    62         delete [] out_INSERT_NUM_REG_RC_PHY    ;
    63         delete [] out_INSERT_WRITE_RD          ;
    64         delete [] out_INSERT_NUM_REG_RD_LOG    ;
    65         delete [] out_INSERT_NUM_REG_RD_PHY_OLD;
    66         delete [] out_INSERT_NUM_REG_RD_PHY_NEW;
    67         delete [] out_INSERT_WRITE_RE          ;
    68         delete [] out_INSERT_NUM_REG_RE_LOG    ;
    69         delete [] out_INSERT_NUM_REG_RE_PHY_OLD;
    70         delete [] out_INSERT_NUM_REG_RE_PHY_NEW;
     46        DELETE1_SIGNAL(out_INSERT_VAL               ,_param->_nb_inst_insert,1);
     47        DELETE1_SIGNAL( in_INSERT_ACK               ,_param->_nb_inst_insert,1);
     48        DELETE1_SIGNAL(out_INSERT_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     49        DELETE1_SIGNAL(out_INSERT_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id            );
     50        DELETE1_SIGNAL(out_INSERT_READ_RA           ,_param->_nb_inst_insert,1                                   );
     51        DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     52        DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     53        DELETE1_SIGNAL(out_INSERT_READ_RB           ,_param->_nb_inst_insert,1                                   );
     54        DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     55        DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     56        DELETE1_SIGNAL(out_INSERT_READ_RC           ,_param->_nb_inst_insert,1                                   );
     57        DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     58        DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register      );
     59        DELETE1_SIGNAL(out_INSERT_WRITE_RD          ,_param->_nb_inst_insert,1                                   );
     60        DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     61        DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register      );
     62        DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register      );
     63        DELETE1_SIGNAL(out_INSERT_WRITE_RE          ,_param->_nb_inst_insert,1                                   );
     64        DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     65        DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register      );
     66        DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register      );
    7167
    72         delete []  in_RETIRE_VAL               ;
    73         delete [] out_RETIRE_ACK               ;
    74         if (_param->_have_port_front_end_id)
    75         delete []  in_RETIRE_FRONT_END_ID      ;
    76         if (_param->_have_port_context_id)
    77         delete []  in_RETIRE_CONTEXT_ID        ;
    78         delete []  in_RETIRE_READ_RA           ;
    79         delete []  in_RETIRE_NUM_REG_RA_PHY    ;
    80         delete []  in_RETIRE_READ_RB           ;
    81         delete []  in_RETIRE_NUM_REG_RB_PHY    ;
    82         delete []  in_RETIRE_READ_RC           ;
    83         delete []  in_RETIRE_NUM_REG_RC_PHY    ;
    84         delete []  in_RETIRE_WRITE_RD          ;
    85         delete []  in_RETIRE_NUM_REG_RD_LOG    ;
    86         delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
    87         delete []  in_RETIRE_NUM_REG_RD_PHY_NEW;
    88         delete []  in_RETIRE_WRITE_RE          ;
    89         delete []  in_RETIRE_NUM_REG_RE_LOG    ;
    90         delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    91         delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
     68        DELETE1_SIGNAL( in_RETIRE_VAL               ,_param->_nb_inst_retire,1);
     69        DELETE1_SIGNAL(out_RETIRE_ACK               ,_param->_nb_inst_retire,1);
     70        DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID      ,_param->_nb_inst_retire,_param->_size_front_end_id          );
     71        DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID        ,_param->_nb_inst_retire,_param->_size_context_id            );
     72        DELETE1_SIGNAL( in_RETIRE_READ_RA           ,_param->_nb_inst_retire,1                                   );
     73        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RA_PHY    ,_param->_nb_inst_retire,_param->_size_general_register      );
     74        DELETE1_SIGNAL( in_RETIRE_READ_RB           ,_param->_nb_inst_retire,1                                   );
     75        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RB_PHY    ,_param->_nb_inst_retire,_param->_size_general_register      );
     76        DELETE1_SIGNAL( in_RETIRE_READ_RC           ,_param->_nb_inst_retire,1                                   );
     77        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RC_PHY    ,_param->_nb_inst_retire,_param->_size_special_register      );
     78        DELETE1_SIGNAL( in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire,1                                   );
     79        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_LOG    ,_param->_nb_inst_retire,_param->_size_general_register_logic);
     80        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register      );
     81        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register      );
     82        DELETE1_SIGNAL( in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire,1                                   );
     83        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_LOG    ,_param->_nb_inst_retire,_param->_size_special_register_logic);
     84        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register      );
     85        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register      );
    9286
    9387        DELETE2_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_allocation.cpp

    r108 r112  
    5858    // ~~~~~[ Interface : "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("rename_in", IN, EAST, "output of decod's stage", _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     60      ALLOC2_INTERFACE_BEGIN("rename_in", IN, EAST, _("output of decod's stage"), _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6161     
    6262      _ALLOC2_VALACK_IN ( in_RENAME_IN_VAL           ,VAL, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     
    8787      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception_use         , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8888      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION     ,"exception"    ,Texception_t      ,_param->_size_exception             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     89
     90      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8991    }
    9092
    9193    // ~~~~~[ Interface : "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9294    {
    93       ALLOC1_INTERFACE("rename_out", IN, EAST, "output of decod's stage", _param->_nb_inst_rename);
     95      ALLOC1_INTERFACE_BEGIN("rename_out", IN, EAST, _("output of decod's stage"), _param->_nb_inst_rename);
    9496     
    9597      ALLOC1_VALACK_OUT(out_RENAME_OUT_VAL           ,VAL);
     
    120122      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception_use         );
    121123      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_EXCEPTION     ,"exception"    ,Texception_t      ,_param->_size_exception             );
     124
     125      ALLOC1_INTERFACE_END(_param->_nb_inst_rename);
    122126    }
    123127
    124128    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    125129    {
    126       ALLOC2_INTERFACE("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
     130      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
    127131
    128132      _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE         ,"state"                ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     133
     134      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    129135    }
    130136
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_deallocation.cpp

    r108 r112  
    2929        delete    in_NRESET;
    3030
    31         delete []  in_RENAME_IN_VAL           ;
    32         delete [] out_RENAME_IN_ACK           ;
    33         if (_param->_have_port_front_end_id)
    34         delete []  in_RENAME_IN_FRONT_END_ID  ;
    35         if (_param->_have_port_context_id)
    36         delete []  in_RENAME_IN_CONTEXT_ID    ;
    37         if (_param->_have_port_depth)
    38         delete []  in_RENAME_IN_DEPTH         ;
    39         delete []  in_RENAME_IN_TYPE          ;
    40         delete []  in_RENAME_IN_OPERATION     ;
    41         delete []  in_RENAME_IN_NO_EXECUTE    ;
    42         delete []  in_RENAME_IN_IS_DELAY_SLOT ;
     31        DELETE2_SIGNAL( in_RENAME_IN_VAL           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1);
     32        DELETE2_SIGNAL(out_RENAME_IN_ACK           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1);
     33        DELETE2_SIGNAL( in_RENAME_IN_FRONT_END_ID  ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_front_end_id          );
     34        DELETE2_SIGNAL( in_RENAME_IN_CONTEXT_ID    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_context_id            );
     35        DELETE2_SIGNAL( in_RENAME_IN_DEPTH         ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_depth                 );
     36        DELETE2_SIGNAL( in_RENAME_IN_TYPE          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_type                  );
     37        DELETE2_SIGNAL( in_RENAME_IN_OPERATION     ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_operation             );
     38        DELETE2_SIGNAL( in_RENAME_IN_NO_EXECUTE    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     39        DELETE2_SIGNAL( in_RENAME_IN_IS_DELAY_SLOT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    4340#ifdef DEBUG
    44         delete []  in_RENAME_IN_ADDRESS       ;
     41        DELETE2_SIGNAL( in_RENAME_IN_ADDRESS       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address   );
    4542#endif
    46         delete []  in_RENAME_IN_ADDRESS_NEXT  ;
    47         delete []  in_RENAME_IN_HAS_IMMEDIAT  ;
    48         delete []  in_RENAME_IN_IMMEDIAT      ;
    49         delete []  in_RENAME_IN_READ_RA       ;
    50         delete []  in_RENAME_IN_NUM_REG_RA    ;
    51         delete []  in_RENAME_IN_READ_RB       ;
    52         delete []  in_RENAME_IN_NUM_REG_RB    ;
    53         delete []  in_RENAME_IN_READ_RC       ;
    54         delete []  in_RENAME_IN_NUM_REG_RC    ;
    55         delete []  in_RENAME_IN_WRITE_RD      ;
    56         delete []  in_RENAME_IN_NUM_REG_RD    ;
    57         delete []  in_RENAME_IN_WRITE_RE      ;
    58         delete []  in_RENAME_IN_NUM_REG_RE    ;
    59         delete []  in_RENAME_IN_EXCEPTION_USE ;
    60         delete []  in_RENAME_IN_EXCEPTION     ;
     43        DELETE2_SIGNAL( in_RENAME_IN_ADDRESS_NEXT  ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address   );
     44        DELETE2_SIGNAL( in_RENAME_IN_HAS_IMMEDIAT  ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     45        DELETE2_SIGNAL( in_RENAME_IN_IMMEDIAT      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_data          );
     46        DELETE2_SIGNAL( in_RENAME_IN_READ_RA       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     47        DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RA    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
     48        DELETE2_SIGNAL( in_RENAME_IN_READ_RB       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     49        DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RB    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
     50        DELETE2_SIGNAL( in_RENAME_IN_READ_RC       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     51        DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RC    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic);
     52        DELETE2_SIGNAL( in_RENAME_IN_WRITE_RD      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     53        DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RD    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
     54        DELETE2_SIGNAL( in_RENAME_IN_WRITE_RE      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     55        DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RE    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic);
     56        DELETE2_SIGNAL( in_RENAME_IN_EXCEPTION_USE ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception_use         );
     57        DELETE2_SIGNAL( in_RENAME_IN_EXCEPTION     ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception             );
     58     
     59        DELETE1_SIGNAL(out_RENAME_OUT_VAL           ,_param->_nb_inst_rename,1);
     60        DELETE1_SIGNAL( in_RENAME_OUT_ACK           ,_param->_nb_inst_rename,1);
     61        DELETE1_SIGNAL(out_RENAME_OUT_FRONT_END_ID  ,_param->_nb_inst_rename,_param->_size_front_end_id          );
     62        DELETE1_SIGNAL(out_RENAME_OUT_CONTEXT_ID    ,_param->_nb_inst_rename,_param->_size_context_id            );
     63        DELETE1_SIGNAL(out_RENAME_OUT_DEPTH         ,_param->_nb_inst_rename,_param->_size_depth                 );
     64        DELETE1_SIGNAL(out_RENAME_OUT_TYPE          ,_param->_nb_inst_rename,_param->_size_type                  );
     65        DELETE1_SIGNAL(out_RENAME_OUT_OPERATION     ,_param->_nb_inst_rename,_param->_size_operation             );
     66        DELETE1_SIGNAL(out_RENAME_OUT_NO_EXECUTE    ,_param->_nb_inst_rename,1                                   );
     67        DELETE1_SIGNAL(out_RENAME_OUT_IS_DELAY_SLOT ,_param->_nb_inst_rename,1                                   );
     68#ifdef DEBUG
     69        DELETE1_SIGNAL(out_RENAME_OUT_ADDRESS       ,_param->_nb_inst_rename,_param->_size_instruction_address   );
     70#endif
     71        DELETE1_SIGNAL(out_RENAME_OUT_ADDRESS_NEXT  ,_param->_nb_inst_rename,_param->_size_instruction_address   );
     72        DELETE1_SIGNAL(out_RENAME_OUT_HAS_IMMEDIAT  ,_param->_nb_inst_rename,1                                   );
     73        DELETE1_SIGNAL(out_RENAME_OUT_IMMEDIAT      ,_param->_nb_inst_rename,_param->_size_general_data          );
     74        DELETE1_SIGNAL(out_RENAME_OUT_READ_RA       ,_param->_nb_inst_rename,1                                   );
     75        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RA    ,_param->_nb_inst_rename,_param->_size_general_register_logic);
     76        DELETE1_SIGNAL(out_RENAME_OUT_READ_RB       ,_param->_nb_inst_rename,1                                   );
     77        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RB    ,_param->_nb_inst_rename,_param->_size_general_register_logic);
     78        DELETE1_SIGNAL(out_RENAME_OUT_READ_RC       ,_param->_nb_inst_rename,1                                   );
     79        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RC    ,_param->_nb_inst_rename,_param->_size_special_register_logic);
     80        DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RD      ,_param->_nb_inst_rename,1                                   );
     81        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD    ,_param->_nb_inst_rename,_param->_size_general_register_logic);
     82        DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RE      ,_param->_nb_inst_rename,1                                   );
     83        DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE    ,_param->_nb_inst_rename,_param->_size_special_register_logic);
     84        DELETE1_SIGNAL(out_RENAME_OUT_EXCEPTION_USE ,_param->_nb_inst_rename,_param->_size_exception_use         );
     85        DELETE1_SIGNAL(out_RENAME_OUT_EXCEPTION     ,_param->_nb_inst_rename,_param->_size_exception             );
    6186
    62         delete [] out_RENAME_OUT_VAL          ;
    63         delete []  in_RENAME_OUT_ACK          ;
    64         if (_param->_have_port_front_end_id)
    65         delete [] out_RENAME_OUT_FRONT_END_ID ;
    66         if (_param->_have_port_context_id)
    67         delete [] out_RENAME_OUT_CONTEXT_ID   ;
    68         if (_param->_have_port_depth)
    69         delete [] out_RENAME_OUT_DEPTH        ;
    70         delete [] out_RENAME_OUT_TYPE         ;
    71         delete [] out_RENAME_OUT_OPERATION    ;
    72 #ifdef DEBUG
    73         delete [] out_RENAME_OUT_ADDRESS      ;
    74 #endif
    75         delete [] out_RENAME_OUT_ADDRESS_NEXT ;
    76         delete [] out_RENAME_OUT_HAS_IMMEDIAT ;
    77         delete [] out_RENAME_OUT_IMMEDIAT     ;
    78         delete [] out_RENAME_OUT_READ_RA      ;
    79         delete [] out_RENAME_OUT_NUM_REG_RA   ;
    80         delete [] out_RENAME_OUT_READ_RB      ;
    81         delete [] out_RENAME_OUT_NUM_REG_RB   ;
    82         delete [] out_RENAME_OUT_READ_RC      ;
    83         delete [] out_RENAME_OUT_NUM_REG_RC   ;
    84         delete [] out_RENAME_OUT_WRITE_RD     ;
    85         delete [] out_RENAME_OUT_NUM_REG_RD   ;
    86         delete [] out_RENAME_OUT_WRITE_RE     ;
    87         delete [] out_RENAME_OUT_NUM_REG_RE   ;
    88         delete [] out_RENAME_OUT_EXCEPTION_USE;
     87        DELETE2_SIGNAL( in_RETIRE_EVENT_STATE       ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
     88      }
    8989
    90         DELETE2_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
    91       }
    9290    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    9391    delete _priority;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp

    r111 r112  
    5252
    5353            log_printf(TRACE,Rename_select,FUNCTION,"    * front_end[%d].inst_decod[%d]",x,y);
    54             log_printf(TRACE,Rename_select,FUNCTION,"      * rename_in_val        : %d",PORT_READ(in_RENAME_IN_VAL[x][y]));
     54            log_printf(TRACE,Rename_select,FUNCTION,"      * in_RENAME_OUT_VAL    : %d",PORT_READ(in_RENAME_IN_VAL[x][y]));
    5555            log_printf(TRACE,Rename_select,FUNCTION,"      * previous_transaction : %d",previous_transaction[x]);
    5656
     
    6363                ack [x][y] = PORT_READ(in_RENAME_OUT_ACK [i]);
    6464
    65                 log_printf(TRACE,Rename_select,FUNCTION,"      * rename_out_ack       : %d",PORT_READ(in_RENAME_OUT_ACK[i]));
     65                log_printf(TRACE,Rename_select,FUNCTION,"      * in_RENAME_OUT_ACK    : %d",PORT_READ(in_RENAME_OUT_ACK[i]));
    6666
    6767                Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RENAME_IN_FRONT_END_ID [x][y]):0;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_allocation.cpp

    r88 r112  
    5959    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6060    {
    61       ALLOC1_INTERFACE("insert",OUT,NORTH,_("Insert interface"),_param->_nb_inst_insert);
     61      ALLOC1_INTERFACE_BEGIN("insert",OUT,NORTH,_("Insert interface"),_param->_nb_inst_insert);
    6262
    6363//    ALLOC1_SIGNAL_OUT(out_INSERT_VAL                                    ,"VAL"                                    ,Tcontrol_t        ,1);
     
    6868      ALLOC1_SIGNAL_OUT(out_INSERT_OPERATION                              ,"OPERATION"                              ,Toperation_t      ,_param->_size_operation);
    6969      ALLOC1_SIGNAL_OUT(out_INSERT_IMMEDIAT                               ,"IMMEDIAT"                               ,Tgeneral_data_t   ,_param->_size_general_data);
    70 //       ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION_USE                          ,"EXCEPTION_USE"                          ,Texception_t      ,_param->_size_exception_use);
     70//    ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION_USE                          ,"EXCEPTION_USE"                          ,Texception_t      ,_param->_size_exception_use);
    7171      ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION                              ,"EXCEPTION"                              ,Texception_t      ,_param->_size_exception);
    7272      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW                     ,"NUM_REG_RE_PHY_NEW"                     ,Tspecial_address_t,_param->_size_special_register);
     
    7878      ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_OPERATION                ,"RENAME_SELECT_OPERATION"                ,Toperation_t      ,_param->_size_operation);
    7979      ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_IMMEDIAT                 ,"RENAME_SELECT_IMMEDIAT"                 ,Tgeneral_data_t   ,_param->_size_general_data);
    80 //       ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,"RENAME_SELECT_EXCEPTION_USE"            ,Texception_t      ,_param->_size_exception_use);
     80//    ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,"RENAME_SELECT_EXCEPTION_USE"            ,Texception_t      ,_param->_size_exception_use);
    8181      ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_EXCEPTION                ,"RENAME_SELECT_EXCEPTION"                ,Texception_t      ,_param->_size_exception);
    8282      ALLOC1_SIGNAL_OUT(out_INSERT_REGISTER_TRANSLATION_VAL               ,"REGISTER_TRANSLATION_VAL"               ,Tcontrol_t        ,1);
     
    9191      ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_STORE_QUEUE_POINTER_TYPE          ,"LOAD_STORE_QUEUE_POINTER_TYPE"          ,Ttype_t           ,_param->_size_type);
    9292      ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_STORE_QUEUE_POINTER_OPERATION     ,"LOAD_STORE_QUEUE_POINTER_OPERATION"     ,Toperation_t      ,_param->_size_operation);
     93
     94      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    9395    }
    9496
    9597    // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9698    {
    97       ALLOC1_INTERFACE("retire",OUT,NORTH,_("Retire interface"),_param->_nb_inst_retire);
     99      ALLOC1_INTERFACE_BEGIN("retire",OUT,NORTH,_("Retire interface"),_param->_nb_inst_retire);
    98100
    99101      ALLOC1_SIGNAL_IN ( in_RETIRE_VAL                                   ,"VAL"                                  ,Tcontrol_t        ,1);
     
    105107      ALLOC1_SIGNAL_OUT(out_RETIRE_REGISTER_TRANSLATION_VAL              ,"REGISTER_TRANSLATION_VAL"             ,Tcontrol_t        ,1);
    106108      ALLOC1_SIGNAL_IN ( in_RETIRE_REGISTER_TRANSLATION_ACK              ,"REGISTER_TRANSLATION_ACK"             ,Tcontrol_t        ,1);
     109
     110      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    107111    }
     112
    108113    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    109114    {
    110       ALLOC2_INTERFACE("spr_read",IN ,NORTH,_("SPR read"),_param->_nb_front_end,_param->_nb_context[it1]);
     115      ALLOC2_INTERFACE_BEGIN("spr_read",IN ,NORTH,_("SPR read"),_param->_nb_front_end,_param->_nb_context[it1]);
    111116
    112117      _ALLOC2_SIGNAL_IN ( in_SPR_READ_SR                                  ,"SR"                                   ,Tspr_t            ,_param->_size_spr,_param->_nb_front_end,_param->_nb_context[it1]);
     118
     119      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    113120    }
    114121
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-min.cfg

    r110 r112  
    19191       1       +1      # nb_reg_free                     
    20201       1       +1      # nb_bank                         
    21 1       1       +1      # size_read_counter               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_1a.cfg

    r110 r112  
    19192       2       +1      # nb_reg_free                     
    20204       8       *2      # nb_bank                         
    21 4       4       +1      # size_read_counter               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4a.cfg

    r110 r112  
    22222       2       +1      # nb_reg_free                     
    23238       8       *2      # nb_bank                         
    24 4       4       +1      # size_read_counter               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4b.cfg

    r110 r112  
    25252       2       +1      # nb_reg_free                     
    26268       8       *2      # nb_bank                         
    27 4       4       +1      # size_read_counter               
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/src/main.cpp

    r110 r112  
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 14
     10#define NB_PARAMS 13
    1111
    1212void usage (int argc, char * argv[])
     
    3333  err (_(" * nb_reg_free                                                  (uint32_t         )\n"));
    3434  err (_(" * nb_bank                                                      (uint32_t         )\n"));
    35   err (_(" * size_read_counter                                            (uint32_t         )\n"));
     35//   err (_(" * size_read_counter                                            (uint32_t         )\n"));
    3636
    3737  exit (1);
     
    103103  uint32_t             _nb_reg_free                       = fromString<uint32_t         >(argv[x++]);
    104104  uint32_t             _nb_bank                           = fromString<uint32_t         >(argv[x++]);
    105   uint32_t             _size_read_counter                 = fromString<uint32_t         >(argv[x++]);
     105//   uint32_t             _size_read_counter                 = fromString<uint32_t         >(argv[x++]);
    106106
    107107  int _return = EXIT_SUCCESS;
     
    128128         _nb_reg_free                      ,
    129129         _nb_bank                          ,
    130          _size_read_counter                ,
     130//       _size_read_counter                ,
    131131         true //is_toplevel
    132132         );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Parameters.h

    r110 r112  
    4747  public : uint32_t             _nb_reg_free                      ;
    4848  public : uint32_t             _nb_bank                          ;
    49   public : uint32_t             _size_read_counter                ;
     49//   public : uint32_t             _size_read_counter                ;
    5050                                                                 
    5151//public : uint32_t             _size_front_end_id                ;
     
    8787                        uint32_t             nb_reg_free                      ,
    8888                        uint32_t             nb_bank                          ,
    89                         uint32_t             size_read_counter                ,
     89//                      uint32_t             size_read_counter                ,
    9090                        bool                 is_toplevel=false
    9191                        );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters.cpp

    r110 r112  
    3838                          uint32_t             nb_reg_free                      ,
    3939                          uint32_t             nb_bank                          ,
    40                           uint32_t             size_read_counter                ,
     40//                        uint32_t             size_read_counter                ,
    4141                          bool                 is_toplevel)
    4242  {
     
    6161    _nb_reg_free                       = nb_reg_free                      ;
    6262    _nb_bank                           = nb_bank                          ;
    63     _size_read_counter                 = size_read_counter                ;
     63//     _size_read_counter                 = size_read_counter                ;
    6464   
    6565    uint32_t size_special_register     = log2(_nb_special_register);
     
    9191       _nb_inst_retire        ,
    9292       _nb_reg_free           ,
    93        _nb_bank               ,
    94        _size_read_counter     
     93       _nb_bank               // ,
     94//        _size_read_counter     
    9595       );
    9696
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters_print.cpp

    r88 r112  
    3939    xml.singleton_begin("nb_reg_free                      "); xml.attribut("value",toString(_nb_reg_free                      )); xml.singleton_end();
    4040    xml.singleton_begin("nb_bank                          "); xml.attribut("value",toString(_nb_bank                          )); xml.singleton_end();
    41     xml.singleton_begin("size_read_counter                "); xml.attribut("value",toString(_size_read_counter                )); xml.singleton_end();
     41//     xml.singleton_begin("size_read_counter                "); xml.attribut("value",toString(_size_read_counter                )); xml.singleton_end();
    4242
    4343    for (uint32_t i=0;i<_nb_front_end; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_allocation.cpp

    r108 r112  
    5858    // ~~~~~[ Interface : "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("rename_in", IN, EAST, "output of decod's stage", _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     60      ALLOC2_INTERFACE_BEGIN("rename_in", IN, EAST, _("output of decod's stage"), _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6161     
    6262      _ALLOC2_VALACK_IN ( in_RENAME_IN_VAL           ,VAL, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     
    8787      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception_use         , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8888      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION     ,"exception"    ,Texception_t      ,_param->_size_exception             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     89
     90      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8991    }
    9092
    9193    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    9294    {
    93       ALLOC1_INTERFACE("insert",OUT,WEST , "Instruction with physical register", _param->_nb_inst_insert);
     95      ALLOC1_INTERFACE_BEGIN("insert",OUT,WEST , _("Instruction with physical register"), _param->_nb_inst_insert);
    9496     
    9597      ALLOC1_VALACK_OUT(out_INSERT_VAL                  ,VAL);
     
    129131      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD   ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      );
    130132      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW   ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      );
     133
     134      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
    131135    }
    132136
    133137    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    134138    {
    135       ALLOC1_INTERFACE("retire",IN ,NORTH, "Retire instruction, update renaming structure.", _param->_nb_inst_retire);
     139      ALLOC1_INTERFACE_BEGIN("retire",IN ,NORTH, _("Retire instruction, update renaming structure."), _param->_nb_inst_retire);
    136140
    137141      ALLOC1_VALACK_IN ( in_RETIRE_VAL                  ,VAL);
     
    159163      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD   ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      );
    160164      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW   ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      );
     165
     166      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
    161167    }
    162168
    163169    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    164170    {
    165       ALLOC2_INTERFACE("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
     171      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
    166172
    167173      _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
    168174      _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK           ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
    169175      _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE         ,"state"                ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     176
     177      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    170178    }
    171179
    172180    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    173181    {
    174       ALLOC2_INTERFACE("spr_read", IN,NORTH, _("Special register"), _param->_nb_front_end, _param->_nb_context[it1]);
     182      ALLOC2_INTERFACE_BEGIN("spr_read", IN,NORTH, _("Special register"), _param->_nb_front_end, _param->_nb_context[it1]);
    175183
    176184      _ALLOC2_SIGNAL_IN (in_SPR_READ_SR                 ,"sr",Tspr_t            ,_param->_size_spr, _param->_nb_front_end, _param->_nb_context[it1]);
     185
     186      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    177187    }
    178188
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/configuration.cfg

    r111 r112  
    51511       1       +1      # nb_reg_free                       [0]               [nb_rename_unit]
    52521       1       +1      # nb_rename_unit_bank               [0]               [nb_rename_unit]
    53 1       1       +1      # size_read_counter                 [0]               [nb_rename_unit]
    54531       1       +1      # nb_load_store_queue               [0]               [nb_rename_unit]
    55542       2       +1      # size_store_queue                  [0][0]            [nb_rename_unit][nb_load_store_queue]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/src/main.cpp

    r111 r112  
    6767  err (_(" * nb_reg_free                       [nb_rename_unit]                      (uint32_t         )\n"));
    6868  err (_(" * nb_rename_unit_bank               [nb_rename_unit]                      (uint32_t         )\n"));
    69   err (_(" * size_read_counter                 [nb_rename_unit]                      (uint32_t         )\n"));
     69//   err (_(" * size_read_counter                 [nb_rename_unit]                      (uint32_t         )\n"));
    7070  err (_(" * nb_load_store_queue               [nb_rename_unit]                      (uint32_t         )\n"));
    7171  err (_(" * size_store_queue                  [nb_rename_unit][nb_load_store_queue] (uint32_t         )\n"));
     
    110110    _nb_inst_decod [i] = fromString<uint32_t>(argv[x++]);
    111111
    112   if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+12*_nb_rename_unit+_nb_execute_loop))
     112  if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop))
    113113    usage (argc, argv);
    114114
     
    160160    }
    161161
    162   if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+11*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue))
     162  if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue))
    163163    usage (argc, argv);
    164164 
     
    195195  uint32_t            * _nb_reg_free                       = new uint32_t          [_nb_rename_unit];
    196196  uint32_t            * _nb_rename_unit_bank               = new uint32_t          [_nb_rename_unit];
    197   uint32_t            * _size_read_counter                 = new uint32_t          [_nb_rename_unit];
     197//   uint32_t            * _size_read_counter                 = new uint32_t          [_nb_rename_unit];
    198198  uint32_t            * _nb_load_store_queue               = new uint32_t          [_nb_rename_unit];
    199199
     
    212212  for (uint32_t i=0; i<_nb_rename_unit; i++)
    213213    _nb_rename_unit_bank               [i] = fromString<uint32_t         >(argv[x++]);
    214   for (uint32_t i=0; i<_nb_rename_unit; i++)
    215     _size_read_counter                 [i] = fromString<uint32_t         >(argv[x++]);
     214//   for (uint32_t i=0; i<_nb_rename_unit; i++)
     215//     _size_read_counter                 [i] = fromString<uint32_t         >(argv[x++]);
    216216  for (uint32_t i=0; i<_nb_rename_unit; i++)
    217217    {
     
    220220    }
    221221
    222   if (argc != static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+11*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue+3*_sum_nb_load_store_queue))
     222  if (argc != static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue+3*_sum_nb_load_store_queue))
    223223    usage (argc, argv);
    224224
     
    327327         _nb_reg_free                      ,
    328328         _nb_rename_unit_bank              ,
    329          _size_read_counter                ,
     329//          _size_read_counter                ,
    330330         _nb_load_store_queue              ,
    331331         _size_store_queue                 ,
     
    391391
    392392  delete [] _nb_load_store_queue               ;
    393   delete [] _size_read_counter                 ;
     393//   delete [] _size_read_counter                 ;
    394394  delete [] _nb_rename_unit_bank               ;
    395395  delete [] _nb_reg_free                       ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/src/test.cpp

    r110 r112  
    143143  ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION  ," in_BRANCH_COMPLETE_MISS_PREDICTION  ",Tcontrol_t        ,_param->_nb_inst_branch_complete);
    144144
    145   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_VAL                 ,"out_COMMIT_EVENT_VAL                 ",Tcontrol_t        );
    146   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ACK                 ," in_COMMIT_EVENT_ACK                 ",Tcontrol_t        );
    147   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_FRONT_END_ID        ,"out_COMMIT_EVENT_FRONT_END_ID        ",Tcontext_t        );
    148   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_CONTEXT_ID          ,"out_COMMIT_EVENT_CONTEXT_ID          ",Tcontext_t        );
    149   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_DEPTH               ,"out_COMMIT_EVENT_DEPTH               ",Tdepth_t          );
    150   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_TYPE                ,"out_COMMIT_EVENT_TYPE                ",Tevent_type_t     );
    151   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_IS_DELAY_SLOT       ,"out_COMMIT_EVENT_IS_DELAY_SLOT       ",Tcontrol_t        );
    152   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS             ,"out_COMMIT_EVENT_ADDRESS             ",Taddress_t        );
    153   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,"out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ",Tcontrol_t        );
    154   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EPCR        ,"out_COMMIT_EVENT_ADDRESS_EPCR        ",Taddress_t        );
    155   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ",Tcontrol_t        );
    156   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR        ,"out_COMMIT_EVENT_ADDRESS_EEAR        ",Tgeneral_data_t   );
     145  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_VAL                 ,"out_COMMIT_EVENT_VAL                 ",Tcontrol_t        );
     146  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ACK                 ," in_COMMIT_EVENT_ACK                 ",Tcontrol_t        );
     147  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ID        ,"out_COMMIT_EVENT_FRONT_END_ID        ",Tcontext_t        );
     148  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_CONTEXT_ID          ,"out_COMMIT_EVENT_CONTEXT_ID          ",Tcontext_t        );
     149  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_DEPTH               ,"out_COMMIT_EVENT_DEPTH               ",Tdepth_t          );
     150  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_TYPE                ,"out_COMMIT_EVENT_TYPE                ",Tevent_type_t     );
     151  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT       ,"out_COMMIT_EVENT_IS_DELAY_SLOT       ",Tcontrol_t        );
     152  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS             ,"out_COMMIT_EVENT_ADDRESS             ",Taddress_t        );
     153  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,"out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ",Tcontrol_t        );
     154  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR        ,"out_COMMIT_EVENT_ADDRESS_EPCR        ",Taddress_t        );
     155  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ",Tcontrol_t        );
     156  ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR        ,"out_COMMIT_EVENT_ADDRESS_EEAR        ",Tgeneral_data_t   );
    157157
    158158  ALLOC2_SC_SIGNAL( in_EVENT_VAL                        ," in_EVENT_VAL                        ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    294294  INSTANCE1_SC_SIGNAL(_OOO_Engine, in_BRANCH_COMPLETE_MISS_PREDICTION  ,_param->_nb_inst_branch_complete);
    295295
    296   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_VAL                 );
    297   INSTANCE_SC_SIGNAL (_OOO_Engine, in_COMMIT_EVENT_ACK                 );
     296  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_VAL                 );
     297  INSTANCE0_SC_SIGNAL(_OOO_Engine, in_COMMIT_EVENT_ACK                 );
    298298  if (_param->_have_port_front_end_id)
    299   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_FRONT_END_ID        );
     299  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_FRONT_END_ID        );
    300300  if (_param->_have_port_context_id)
    301   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_CONTEXT_ID          );
     301  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_CONTEXT_ID          );
    302302  if (_param->_have_port_depth)
    303   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_DEPTH               );
    304   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_TYPE                );
    305   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_IS_DELAY_SLOT       );
    306   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_ADDRESS             );
    307   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR_VAL    );
    308   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR        );
    309   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR_VAL    );
    310   INSTANCE_SC_SIGNAL (_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR        );
     303  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_DEPTH               );
     304  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_TYPE                );
     305  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_IS_DELAY_SLOT       );
     306  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS             );
     307  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR_VAL    );
     308  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR        );
     309  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR_VAL    );
     310  INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR        );
    311311
    312312  INSTANCE2_SC_SIGNAL(_OOO_Engine, in_EVENT_VAL                        ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    472472  DELETE1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION  ,_param->_nb_inst_branch_complete);
    473473 
    474   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_VAL                 );
    475   DELETE_SC_SIGNAL  ( in_COMMIT_EVENT_ACK                 );
    476   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_FRONT_END_ID        );
    477   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_CONTEXT_ID          );
    478   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_DEPTH               );
    479   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_TYPE                );
    480   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_IS_DELAY_SLOT       );
    481   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_ADDRESS             );
    482   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_ADDRESS_EPCR_VAL    );
    483   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_ADDRESS_EPCR        );
    484   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_ADDRESS_EEAR_VAL    );
    485   DELETE_SC_SIGNAL  (out_COMMIT_EVENT_ADDRESS_EEAR        );
     474  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_VAL                 );
     475  DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ACK                 );
     476  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ID        );
     477  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_CONTEXT_ID          );
     478  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_DEPTH               );
     479  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_TYPE                );
     480  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT       );
     481  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS             );
     482  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL    );
     483  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR        );
     484  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL    );
     485  DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR        );
    486486 
    487487  DELETE2_SC_SIGNAL( in_EVENT_VAL                        ,_param->_nb_front_end,_param->_nb_context[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_allocation.cpp

    r101 r112  
    5858    // ~~~~~[ Interface : "spr_access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC1_INTERFACE("spr_access",IN,WEST, _("Access from reexecute_unit"), _param->_nb_inst_reexecute);
     60      ALLOC1_INTERFACE_BEGIN("spr_access",IN,WEST, _("Access from reexecute_unit"), _param->_nb_inst_reexecute);
    6161
    6262      ALLOC1_VALACK_IN ( in_SPR_ACCESS_VAL           ,VAL);
     
    7070      ALLOC1_SIGNAL_OUT(out_SPR_ACCESS_RDATA         ,"rdata"       ,Tspr_t             ,_param->_size_spr);
    7171      ALLOC1_SIGNAL_OUT(out_SPR_ACCESS_INVALID       ,"invalid"     ,Tcontrol_t         ,1);
     72
     73      ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute);
    7274    }
    7375
    7476    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    7577    {
    76       ALLOC2_INTERFACE("spr_read",OUT,WEST, _("Output for a spr bit field."), _param->_nb_front_end, _param->_nb_context[it1]);
     78      ALLOC2_INTERFACE_BEGIN("spr_read",OUT,WEST, _("Output for a spr bit field."), _param->_nb_front_end, _param->_nb_context[it1]);
    7779
    7880      _ALLOC2_SIGNAL_OUT(out_SPR_READ_SR             ,"sr",Tspr_t,_param->_size_spr, _param->_nb_front_end, _param->_nb_context[it1]);
     81
     82      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    7983    }
    8084
    8185    // ~~~~~[ Interface : "spr_commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8286    {
    83       ALLOC2_INTERFACE("spr_commit",IN,WEST, _("Commit instruction to change SR's flags."), _param->_nb_front_end, _param->_nb_context[it1]);
     87      ALLOC2_INTERFACE_BEGIN("spr_commit",IN,WEST, _("Commit instruction to change SR's flags."), _param->_nb_front_end, _param->_nb_context[it1]);
    8488
    8589      _ALLOC2_VALACK_IN ( in_SPR_COMMIT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     
    9195      _ALLOC2_SIGNAL_IN ( in_SPR_COMMIT_SR_OV_VAL     ,"sr_ov_val"    ,Tcontrol_t         ,1,_param->_nb_front_end, _param->_nb_context[it1]);
    9296      _ALLOC2_SIGNAL_IN ( in_SPR_COMMIT_SR_OV         ,"sr_ov"        ,Tcontrol_t         ,1,_param->_nb_front_end, _param->_nb_context[it1]);
     97
     98      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    9399    }
    94100
    95101    // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    96102    {
    97       ALLOC2_INTERFACE("spr_event",IN,WEST, _("Event change a lot of exception."), _param->_nb_front_end, _param->_nb_context[it1]);
     103      ALLOC2_INTERFACE_BEGIN("spr_event",IN,WEST, _("Event change a lot of exception."), _param->_nb_front_end, _param->_nb_context[it1]);
    98104
    99105      _ALLOC2_VALACK_IN ( in_SPR_EVENT_VAL            ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     
    104110      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_DSX        ,"SR_DSX"        ,Tcontrol_t        ,1                ,_param->_nb_front_end, _param->_nb_context[it1]);
    105111      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_TO_ESR     ,"SR_TO_ESR"     ,Tcontrol_t        ,1                ,_param->_nb_front_end, _param->_nb_context[it1]);
     112
     113      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
    106114    }
    107115
     
    109117      {
    110118    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    111     internal_SPR_ACCESS_ACK = new Tcontrol_t   [_param->_nb_inst_reexecute];
    112     internal_SPR_COMMIT_ACK = new Tcontrol_t * [_param->_nb_front_end];
    113     internal_SPR_EVENT_ACK  = new Tcontrol_t * [_param->_nb_front_end];
    114     for (uint32_t i=0; i<_param->_nb_front_end; i++)
    115       {
    116         internal_SPR_COMMIT_ACK [i]  = new Tcontrol_t [_param->_nb_context [i]];
    117         internal_SPR_EVENT_ACK  [i]  = new Tcontrol_t [_param->_nb_context [i]];
    118       }
     119    ALLOC1(internal_SPR_ACCESS_ACK ,Tcontrol_t,_param->_nb_inst_reexecute);
     120    ALLOC2(internal_SPR_COMMIT_ACK ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context [it1]);
     121    ALLOC2(internal_SPR_EVENT_ACK  ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context [it1]);
    119122      }
    120123
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_deallocation.cpp

    r98 r112  
    5959
    6060        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    61         delete [] internal_SPR_ACCESS_ACK;
    62         for (uint32_t i=0; i<_param->_nb_front_end; i++)
    63           {
    64             delete [] internal_SPR_COMMIT_ACK [i];
    65             delete [] internal_SPR_EVENT_ACK  [i];
    66           }
    67         delete [] internal_SPR_COMMIT_ACK;
    68         delete [] internal_SPR_EVENT_ACK;
     61        DELETE1(internal_SPR_ACCESS_ACK ,_param->_nb_inst_reexecute);
     62        DELETE2(internal_SPR_COMMIT_ACK ,_param->_nb_front_end,_param->_nb_context [it1]);
     63        DELETE2(internal_SPR_EVENT_ACK  ,_param->_nb_front_end,_param->_nb_context [it1]);
    6964      }
    7065
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/Parameters.h

    r111 r112  
    7676  public : uint32_t            * _nb_reg_free                      ;//[nb_rename_unit]
    7777  public : uint32_t            * _nb_rename_unit_bank              ;//[nb_rename_unit]
    78   public : uint32_t            * _size_read_counter                ;//[nb_rename_unit]
     78//   public : uint32_t            * _size_read_counter                ;//[nb_rename_unit]
    7979  public : uint32_t            * _nb_load_store_queue              ;//[nb_rename_unit]
    8080  public : uint32_t           ** _size_store_queue                 ;//[nb_rename_unit][nb_load_store_queue]
     
    173173                        uint32_t            * nb_reg_free                      ,//[nb_rename_unit]
    174174                        uint32_t            * nb_rename_unit_bank              ,//[nb_rename_unit]
    175                         uint32_t            * size_read_counter                ,//[nb_rename_unit]
     175//                         uint32_t            * size_read_counter                ,//[nb_rename_unit]
    176176                        uint32_t            * nb_load_store_queue              ,//[nb_rename_unit]
    177177                        uint32_t           ** size_store_queue                 ,//[nb_rename_unit][nb_load_store_queue]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp

    r109 r112  
    5555    // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5656    {
    57       ALLOC2_INTERFACE("rename",IN,WEST,_("Instruction from front_end."),_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     57      ALLOC2_INTERFACE_BEGIN("rename",IN,WEST,_("Instruction from front_end."),_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    5858
    5959      _ALLOC2_VALACK_IN ( in_RENAME_VAL                       , VAL                                                                                 ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     
    8484      _ALLOC2_SIGNAL_IN ( in_RENAME_EXCEPTION_USE             ,"EXCEPTION_USE"             ,Texception_t      ,_param->_size_exception_use          ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    8585      _ALLOC2_SIGNAL_IN ( in_RENAME_EXCEPTION                 ,"EXCEPTION"                 ,Texception_t      ,_param->_size_exception              ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     86
     87      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    8688    }
    8789
    8890    // ~~~~~[ Interface : "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    8991    {
    90       ALLOC1_INTERFACE("issue",OUT,EAST,_("Instruction to execute_loop"),_param->_nb_inst_issue);
     92      ALLOC1_INTERFACE_BEGIN("issue",OUT,EAST,_("Instruction to execute_loop"),_param->_nb_inst_issue);
    9193
    9294      ALLOC1_VALACK_OUT (out_ISSUE_VAL                        , VAL                                                                                 );
     
    111113      ALLOC1_SIGNAL_OUT (out_ISSUE_WRITE_RE                   ,"WRITE_RE"                  ,Tcontrol_t        ,1                                    );
    112114      ALLOC1_SIGNAL_OUT (out_ISSUE_NUM_REG_RE                 ,"NUM_REG_RE"                ,Tspecial_address_t,_param->_size_special_register       );
     115
     116      ALLOC1_INTERFACE_END(_param->_nb_inst_issue);
    113117    }
    114118
    115119    // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    116120    {
    117       ALLOC2_INTERFACE("execute_loop",IN,EAST,_("Instruction executed, from execute_loop."),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     121      ALLOC2_INTERFACE_BEGIN("execute_loop",IN,EAST,_("Instruction executed, from execute_loop."),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    118122
    119123      _ALLOC2_VALACK_IN ( in_EXECUTE_LOOP_VAL                 , VAL                                                                                 ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     
    129133      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS             ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    130134      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_DATA                ,"DATA"                      ,Tgeneral_data_t   ,_param->_size_general_data           ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     135
     136      ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    131137    }
    132138
    133139    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    134140    {
    135       ALLOC1_INTERFACE("insert",OUT,EAST,_("Interface with RegisterFile's stat-list (insert Re-Order-Buffer)."),_param->_sum_inst_insert);
     141      ALLOC1_INTERFACE_BEGIN("insert",OUT,EAST,_("Interface with RegisterFile's stat-list (insert Re-Order-Buffer)."),_param->_sum_inst_insert);
    136142
    137143      ALLOC1_VALACK_OUT (out_INSERT_VAL                       , VAL);
     
    141147      ALLOC1_SIGNAL_OUT (out_INSERT_RE_USE                    ,"RE_USE"                    ,Tcontrol_t        ,1                                    );
    142148      ALLOC1_SIGNAL_OUT (out_INSERT_RE_NUM_REG                ,"RE_NUM_REG"                ,Tspecial_address_t,_param->_size_special_register       );
     149
     150      ALLOC1_INTERFACE_END(_param->_sum_inst_insert);
    143151    }
    144152
    145153//     // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    146154//     {
    147 //       ALLOC1_INTERFACE("retire",OUT,EAST,_("Interface with RegisterFile's stat-list (retire Re-Order-Buffer)."),_param->_sum_inst_retire);
     155//       ALLOC1_INTERFACE_BEGIN("retire",OUT,EAST,_("Interface with RegisterFile's stat-list (retire Re-Order-Buffer)."),_param->_sum_inst_retire);
    148156
    149157//       ALLOC1_VALACK_OUT (out_RETIRE_VAL                       , VAL);
     
    157165//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_USE                ,"RE_NEW_USE"                ,Tcontrol_t        ,1                                    );
    158166//       ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_NUM_REG            ,"RE_NEW_NUM_REG"            ,Tspecial_address_t,_param->_size_special_register       );
     167
     168//       ALLOC1_INTERFACE_END(_param->_sum_inst_retire);
    159169//     }
    160170
    161171    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
    162172    {
    163       ALLOC1_INTERFACE("branch_complete",OUT,WEST,_("Instruction to execute_loop"),_param->_nb_inst_branch_complete);
     173      ALLOC1_INTERFACE_BEGIN("branch_complete",OUT,WEST,_("Instruction to execute_loop"),_param->_nb_inst_branch_complete);
    164174
    165175      ALLOC1_VALACK_OUT (out_BRANCH_COMPLETE_VAL              , VAL);
     
    171181      ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_NO_SEQUENCE      ,"NO_SEQUENCE"               ,Tcontrol_t        ,1                                    );
    172182      ALLOC1_SIGNAL_IN  ( in_BRANCH_COMPLETE_MISS_PREDICTION  ,"MISS_PREDICTION"           ,Tcontrol_t        ,1                                    );
     183
     184      ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete);
    173185    }
    174186                                                                             
    175187    // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    176188    {
    177       ALLOC_INTERFACE("commit_event",OUT,WEST,_("Commit an event (exception)."));
    178 
    179       ALLOC_VALACK_OUT  (out_COMMIT_EVENT_VAL                 , VAL);
    180       ALLOC_VALACK_IN   ( in_COMMIT_EVENT_ACK                 , ACK);
    181       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_FRONT_END_ID        ,"FRONT_END_ID"              ,Tcontext_t        ,_param->_size_front_end_id           );
    182       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_CONTEXT_ID          ,"CONTEXT_ID"                ,Tcontext_t        ,_param->_size_context_id             );
    183       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_DEPTH               ,"DEPTH"                     ,Tdepth_t          ,_param->_size_depth                  );
    184       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_TYPE                ,"TYPE"                      ,Tevent_type_t     ,_param->_size_event_type             );
    185       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_IS_DELAY_SLOT       ,"IS_DELAY_SLOT"             ,Tcontrol_t        ,1                                    );
    186       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS             ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    );
    187       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,"ADDRESS_EPCR_VAL"          ,Tcontrol_t        ,1                                    );
    188       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EPCR        ,"ADDRESS_EPCR"              ,Taddress_t        ,_param->_size_instruction_address    );
    189       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"ADDRESS_EEAR_VAL"          ,Tcontrol_t        ,1                                    );
    190       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EEAR        ,"ADDRESS_EEAR"              ,Tgeneral_data_t   ,_param->_size_general_data           );
     189      ALLOC0_INTERFACE_BEGIN("commit_event",OUT,WEST,_("Commit an event (exception)."));
     190
     191      ALLOC0_VALACK_OUT(out_COMMIT_EVENT_VAL                 , VAL);
     192      ALLOC0_VALACK_IN ( in_COMMIT_EVENT_ACK                 , ACK);
     193      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ID        ,"FRONT_END_ID"              ,Tcontext_t        ,_param->_size_front_end_id           );
     194      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_CONTEXT_ID          ,"CONTEXT_ID"                ,Tcontext_t        ,_param->_size_context_id             );
     195      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_DEPTH               ,"DEPTH"                     ,Tdepth_t          ,_param->_size_depth                  );
     196      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_TYPE                ,"TYPE"                      ,Tevent_type_t     ,_param->_size_event_type             );
     197      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_IS_DELAY_SLOT       ,"IS_DELAY_SLOT"             ,Tcontrol_t        ,1                                    );
     198      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS             ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    );
     199      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,"ADDRESS_EPCR_VAL"          ,Tcontrol_t        ,1                                    );
     200      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EPCR        ,"ADDRESS_EPCR"              ,Taddress_t        ,_param->_size_instruction_address    );
     201      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"ADDRESS_EEAR_VAL"          ,Tcontrol_t        ,1                                    );
     202      ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EEAR        ,"ADDRESS_EEAR"              ,Tgeneral_data_t   ,_param->_size_general_data           );
     203
     204      ALLOC0_INTERFACE_END();
    191205    }
    192206
    193207    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    194208    {
    195       ALLOC2_INTERFACE("event",IN,WEST,_("Event from context_state."),_param->_nb_front_end,_param->_nb_context[it1]);
     209      ALLOC2_INTERFACE_BEGIN("event",IN,WEST,_("Event from context_state."),_param->_nb_front_end,_param->_nb_context[it1]);
    196210
    197211      _ALLOC2_VALACK_IN ( in_EVENT_VAL                        , VAL                                                                                 ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    201215      _ALLOC2_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL           ,"ADDRESS_NEXT_VAL"          ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
    202216      _ALLOC2_SIGNAL_IN ( in_EVENT_IS_DS_TAKE                 ,"IS_DS_TAKE"                ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
     217
     218      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    203219    }
    204220
    205221    // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    206222    {
    207       ALLOC2_INTERFACE("spr_event",IN,WEST,_("Exception : save spr and set a lot of special register."),_param->_nb_front_end,_param->_nb_context[it1]);
     223      ALLOC2_INTERFACE_BEGIN("spr_event",IN,WEST,_("Exception : save spr and set a lot of special register."),_param->_nb_front_end,_param->_nb_context[it1]);
    208224
    209225      _ALLOC2_VALACK_IN ( in_SPR_EVENT_VAL                    , VAL                                                                                 ,_param->_nb_front_end,_param->_nb_context[it1]);
     
    214230      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_DSX                 ,"SR_DSX"                    ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
    215231      _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_TO_ESR              ,"SR_TO_ESR"                 ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
     232
     233      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    216234    }
    217235                                                                                 
    218236    // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    219237    {
    220       ALLOC2_INTERFACE("nb_inst",OUT,WEST,_("Internal number instruction."),_param->_nb_front_end,_param->_nb_context[it1]);
     238      ALLOC2_INTERFACE_BEGIN("nb_inst",OUT,WEST,_("Internal number instruction."),_param->_nb_front_end,_param->_nb_context[it1]);
    221239
    222240      _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_ALL               ,"COMMIT_ALL"                 ,Tcounter_t       ,_param->_size_nb_inst_commit         ,_param->_nb_front_end,_param->_nb_context[it1]);
    223241      _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_MEM               ,"COMMIT_MEM"                 ,Tcounter_t       ,_param->_size_nb_inst_commit         ,_param->_nb_front_end,_param->_nb_context[it1]);
    224242      _ALLOC2_SIGNAL_IN ( in_NB_INST_DECOD_ALL                ,"DECOD_ALL"                  ,Tcounter_t       ,_param->_size_nb_inst_decod          ,_param->_nb_front_end,_param->_nb_context[it1]);
     243
     244      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    225245    }
    226246
    227247    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    228248    {
    229       ALLOC2_INTERFACE("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]);
     249      ALLOC2_INTERFACE_BEGIN("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]);
    230250
    231251      _ALLOC2_SIGNAL_IN ( in_DEPTH_MIN                        ,"MIN"                        ,Tdepth_t         ,_param->_size_depth                  ,_param->_nb_front_end, _param->_nb_context[it1]);
    232252      _ALLOC2_SIGNAL_IN ( in_DEPTH_MAX                        ,"MAX"                        ,Tdepth_t         ,_param->_size_depth                  ,_param->_nb_front_end, _param->_nb_context[it1]);
    233253      _ALLOC2_SIGNAL_IN ( in_DEPTH_FULL                       ,"FULL"                       ,Tcontrol_t       ,1                                    ,_param->_nb_front_end, _param->_nb_context[it1]);
     254
     255      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    234256    }
    235257
    236258    // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    237259    {
    238       ALLOC2_INTERFACE("spr",OUT,WEST,_("SPR"),_param->_nb_front_end,_param->_nb_context[it1]);
     260      ALLOC2_INTERFACE_BEGIN("spr",OUT,WEST,_("SPR"),_param->_nb_front_end,_param->_nb_context[it1]);
    239261
    240262      _ALLOC2_SIGNAL_OUT(out_SPR_SR_IEE                       ,"SR_IEE"                     ,Tcontrol_t       ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
    241263      _ALLOC2_SIGNAL_OUT(out_SPR_SR_EPH                       ,"SR_EPH"                     ,Tcontrol_t       ,1                                    ,_param->_nb_front_end,_param->_nb_context[it1]);
     264
     265      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
    242266    }
    243267
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_deallocation.cpp

    r108 r112  
    117117        DELETE1_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION  ,_param->_nb_inst_branch_complete,1                         );
    118118       
    119         DELETE_SIGNAL (out_COMMIT_EVENT_VAL                 , 1);
    120         DELETE_SIGNAL ( in_COMMIT_EVENT_ACK                 , 1);
    121         DELETE_SIGNAL (out_COMMIT_EVENT_FRONT_END_ID        ,_param->_size_front_end_id           );
    122         DELETE_SIGNAL (out_COMMIT_EVENT_CONTEXT_ID          ,_param->_size_context_id             );
    123         DELETE_SIGNAL (out_COMMIT_EVENT_DEPTH               ,_param->_size_depth                  );
    124         DELETE_SIGNAL (out_COMMIT_EVENT_TYPE                ,_param->_size_event_type             );
    125         DELETE_SIGNAL (out_COMMIT_EVENT_IS_DELAY_SLOT       ,1                                    );
    126         DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS             ,_param->_size_general_data           );
    127         DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,1                                    );
    128         DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EPCR        ,_param->_size_general_data           );
    129         DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,1                                    );
    130         DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR        ,_param->_size_general_data           );
     119        DELETE0_SIGNAL(out_COMMIT_EVENT_VAL                 , 1);
     120        DELETE0_SIGNAL( in_COMMIT_EVENT_ACK                 , 1);
     121        DELETE0_SIGNAL(out_COMMIT_EVENT_FRONT_END_ID        ,_param->_size_front_end_id           );
     122        DELETE0_SIGNAL(out_COMMIT_EVENT_CONTEXT_ID          ,_param->_size_context_id             );
     123        DELETE0_SIGNAL(out_COMMIT_EVENT_DEPTH               ,_param->_size_depth                  );
     124        DELETE0_SIGNAL(out_COMMIT_EVENT_TYPE                ,_param->_size_event_type             );
     125        DELETE0_SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT       ,1                                    );
     126        DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS             ,_param->_size_general_data           );
     127        DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,1                                    );
     128        DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR        ,_param->_size_general_data           );
     129        DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,1                                    );
     130        DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR        ,_param->_size_general_data           );
    131131       
    132132        DELETE2_SIGNAL( in_EVENT_VAL                        ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp

    r111 r112  
    6363                          uint32_t            * nb_reg_free                      ,//[nb_rename_unit]
    6464                          uint32_t            * nb_rename_unit_bank              ,//[nb_rename_unit]
    65                           uint32_t            * size_read_counter                ,//[nb_rename_unit]
     65//                           uint32_t            * size_read_counter                ,//[nb_rename_unit]
    6666                          uint32_t            * nb_load_store_queue              ,//[nb_rename_unit]
    6767                          uint32_t           ** size_store_queue                 ,//[nb_rename_unit][nb_load_store_queue]
     
    119119    _nb_reg_free                       = nb_reg_free                      ;
    120120    _nb_rename_unit_bank               = nb_rename_unit_bank              ;
    121     _size_read_counter                 = size_read_counter                ;
     121//     _size_read_counter                 = size_read_counter                ;
    122122    _nb_load_store_queue               = nb_load_store_queue              ;
    123123    _size_store_queue                  = size_store_queue                 ;
     
    238238       _nb_special_register                           [i],
    239239       _nb_reg_free                                   [i],
    240        _nb_rename_unit_bank                           [i],
    241        _size_read_counter                             [i]
     240       _nb_rename_unit_bank                           [i]// ,
     241//        _size_read_counter                             [i]
     242       
    242243       );
    243244
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters_print.cpp

    r97 r112  
    8181    for (uint32_t i=0; i<_nb_rename_unit; ++i)
    8282    str+= toString(MSG_INFORMATION)+"   * nb_rename_unit_bank                ["+toString(i)+"] : "+toString<uint32_t         >(_nb_rename_unit_bank              [i])+"\n";//[nb_rename_unit]
    83     for (uint32_t i=0; i<_nb_rename_unit; ++i)
    84     str+= toString(MSG_INFORMATION)+"   * size_read_counter                  ["+toString(i)+"] : "+toString<uint32_t         >(_size_read_counter                [i])+"\n";//[nb_rename_unit]
     83//     for (uint32_t i=0; i<_nb_rename_unit; ++i)
     84//     str+= toString(MSG_INFORMATION)+"   * size_read_counter                  ["+toString(i)+"] : "+toString<uint32_t         >(_size_read_counter                [i])+"\n";//[nb_rename_unit]
    8585    for (uint32_t i=0; i<_nb_rename_unit; ++i)
    8686    str+= toString(MSG_INFORMATION)+"   * nb_load_store_queue                ["+toString(i)+"] : "+toString<uint32_t         >(_nb_load_store_queue              [i])+"\n";//[nb_rename_unit]
Note: See TracChangeset for help on using the changeset viewer.