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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_allocation.cpp

    r110 r112  
    5858    // ~~~~~[ Interface : "ifetch" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    5959    {
    60       ALLOC2_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context, _param->_nb_inst_fetch[it1]);
     60      ALLOC2_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context, _param->_nb_inst_fetch[it1]);
    6161
    6262     
     
    6464      _ALLOC2_VALACK_OUT(out_IFETCH_ACK        ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]);
    6565      _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION,"instruction", Tinstruction_t, _param->_size_instruction,_param->_nb_context, _param->_nb_inst_fetch[it1]);
    66     }
    67     {
    68       ALLOC1_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context);
     66
     67      ALLOC2_INTERFACE_END(_param->_nb_context, _param->_nb_inst_fetch[it1]);
     68    }
     69    {
     70      ALLOC1_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context);
    6971     
     72
    7073      ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t         ,_param->_size_context_id      );
    7174      ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS                    ,"address"                    ,Tgeneral_address_t ,_param->_size_instruction_address    );
     
    7578      ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth           );
    7679      ALLOC1_SIGNAL_IN (in_IFETCH_EXCEPTION                  ,"exception"                  ,Texception_t       ,_param->_size_exception_ifetch);
     80
     81      ALLOC1_INTERFACE_END(_param->_nb_context);
    7782    }
    7883
    7984    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    8085    {
    81       ALLOC1_INTERFACE("decod", OUT, EAST, "Instructiont decoded", _param->_nb_inst_decod);
     86      ALLOC1_INTERFACE_BEGIN("decod", OUT, EAST, _("Instructiont decoded"), _param->_nb_inst_decod);
    8287
    8388      ALLOC1_VALACK_OUT(out_DECOD_VAL          ,VAL);
     
    107112      ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION_USE,"exception_use",Texception_t      ,_param->_size_exception_use         );
    108113      ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception_decod       );
     114
     115      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    109116    }
    110117
    111118    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    112119    {
    113       ALLOC1_INTERFACE("predict",OUT,NORTH,"Decod a branch -> inform the branch predictor.",_param->_nb_inst_decod);
     120      ALLOC1_INTERFACE_BEGIN("predict",OUT,NORTH,_("Decod a branch -> inform the branch predictor."),_param->_nb_inst_decod);
    114121
    115122      ALLOC1_VALACK_OUT(out_PREDICT_VAL                        ,VAL);
     
    125132      ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST               ,"address_dest"               ,Tgeneral_data_t    ,_param->_size_instruction_address    );
    126133      ALLOC1_SIGNAL_IN ( in_PREDICT_CAN_CONTINUE               ,"can_continue"               ,Tcontrol_t         ,1                             );
     134
     135      ALLOC1_INTERFACE_END(_param->_nb_inst_decod);
    127136    }
    128137   
    129138    // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    130139    {
    131       ALLOC1_INTERFACE("context", IN, NORTH, "context's information", _param->_nb_context);
     140      ALLOC1_INTERFACE_BEGIN("context", IN, NORTH, _("context's information"), _param->_nb_context);
    132141
    133142      ALLOC1_SIGNAL_IN (in_CONTEXT_DECOD_ENABLE,"decod_enable",Tcontrol_t,1);
    134143      ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH_VAL   ,"depth_val"   ,Tcontrol_t,1);
    135144      ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH       ,"depth"       ,Tdepth_t  ,_param->_size_depth);
     145
     146      ALLOC1_INTERFACE_END(_param->_nb_context);
    136147    }
    137148
    138149    // ~~~~~[ Interface : "context_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    139150    {
    140       ALLOC_INTERFACE("context_event", OUT, NORTH, "context's evenement");
    141 
    142       ALLOC_VALACK_OUT(out_CONTEXT_EVENT_VAL          ,VAL);
    143       ALLOC_VALACK_IN ( in_CONTEXT_EVENT_ACK          ,ACK);
    144       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id  );
    145       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH        ,"depth"        ,Tdepth_t       ,_param->_size_depth       );
    146       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE         ,"type"         ,Tevent_type_t  ,_param->_size_event_type  );
    147       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t     ,1                         );
    148       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_instruction_address);
    149       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address);
     151      ALLOC0_INTERFACE_BEGIN("context_event", OUT, NORTH, _("context's evenement"));
     152
     153      ALLOC0_VALACK_OUT(out_CONTEXT_EVENT_VAL          ,VAL);
     154      ALLOC0_VALACK_IN ( in_CONTEXT_EVENT_ACK          ,ACK);
     155      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id  );
     156      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH        ,"depth"        ,Tdepth_t       ,_param->_size_depth       );
     157      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE         ,"type"         ,Tevent_type_t  ,_param->_size_event_type  );
     158      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t     ,1                         );
     159      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_instruction_address);
     160      ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address);
     161
     162      ALLOC0_INTERFACE_END();
    150163    }
    151164
     
    154167    if (usage_is_set(_usage,USE_SYSTEMC))
    155168      {
    156     reg_CONTEXT_ADDRESS_PREVIOUS      = new Tgeneral_data_t [_param->_nb_context];
    157     reg_CONTEXT_IS_DELAY_SLOT         = new Tcontrol_t      [_param->_nb_context];
    158 
    159     internal_CONTEXT_HAVE_TRANSACTION = new Tcontrol_t      [_param->_nb_context];
    160     internal_CONTEXT_ADDRESS_PREVIOUS = new Tgeneral_data_t [_param->_nb_context];
    161     internal_CONTEXT_IS_DELAY_SLOT    = new Tcontrol_t      [_param->_nb_context];
     169    ALLOC1(reg_CONTEXT_ADDRESS_PREVIOUS      ,Tgeneral_data_t,_param->_nb_context);
     170    ALLOC1(reg_CONTEXT_IS_DELAY_SLOT         ,Tcontrol_t     ,_param->_nb_context);
     171
     172    ALLOC1(internal_CONTEXT_HAVE_TRANSACTION ,Tcontrol_t     ,_param->_nb_context);
     173    ALLOC1(internal_CONTEXT_ADDRESS_PREVIOUS ,Tgeneral_data_t,_param->_nb_context);
     174    ALLOC1(internal_CONTEXT_IS_DELAY_SLOT    ,Tcontrol_t     ,_param->_nb_context);
    162175
    163176#ifdef STATISTICS
    164     internal_DECOD_VAL                = new Tcontrol_t      [_param->_nb_inst_decod];
     177    ALLOC1(internal_DECOD_VAL                ,Tcontrol_t     ,_param->_nb_inst_decod);
    165178#endif
    166179      }
     
    174187                                                 _param->_nb_context_select);
    175188
    176     const uint32_t nb_opcod_type = 14;
    177     const uint32_t tab_opcod_type [] = {MAX_OPCOD_0,
    178                                         MAX_OPCOD_1 ,
    179                                         MAX_OPCOD_2 ,
    180                                         MAX_OPCOD_3 ,
    181                                         MAX_OPCOD_4 ,
    182                                         MAX_OPCOD_5 ,
    183                                         MAX_OPCOD_6 ,
    184                                         MAX_OPCOD_7 ,
    185                                         MAX_OPCOD_8 ,
    186                                         MAX_OPCOD_9 ,
    187                                         MAX_OPCOD_10,
    188                                         MAX_OPCOD_11,
    189                                         MAX_OPCOD_12,
    190                                         MAX_OPCOD_13};
    191    
    192     _function_decod  = new function_decod_t *** [_param->_nb_context];
    193     _function_custom = new function_decod_t *** [_param->_nb_context];
     189    ALLOC3(_function_decod ,function_decod_t *,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]);
     190    ALLOC3(_function_custom,function_decod_t *,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]);
     191
    194192    for (uint32_t i=0; i<_param->_nb_context; i++)
    195193      {
    196         _function_decod  [i] = new function_decod_t ** [nb_opcod_type];
    197         _function_custom [i] = new function_decod_t ** [nb_opcod_type];
    198194        for (uint32_t j=0; j<nb_opcod_type; j++)
    199           {
    200             _function_decod  [i][j] = new function_decod_t * [tab_opcod_type[j]];
    201             _function_custom [i][j] = new function_decod_t * [tab_opcod_type[j]];
    202             for (uint32_t k=0; k<tab_opcod_type[j]; k++)
    203               {
    204                 _function_decod  [i][j][k] = &(instruction_illegal);
    205                 _function_custom [i][j][k] = &(instruction_illegal);
    206               }
    207           }
     195          for (uint32_t k=0; k<tab_opcod_type[j]; k++)
     196            {
     197              _function_decod  [i][j][k] = &(instruction_illegal);
     198              _function_custom [i][j][k] = &(instruction_illegal);
     199            }
    208200
    209201        // Create indirection
     
    454446      }
    455447
    456     _decod_instruction = new decod_instruction_t;
    457 
    458     _decod_param = new decod_param_t * [_param->_nb_context];
     448    ALLOC0(_decod_instruction,decod_instruction_t);
     449    ALLOC1(_decod_param,decod_param_t *,_param->_nb_context);
     450
    459451    for (uint32_t i=0; i<_param->_nb_context; i++)
    460452      _decod_param [i] = new decod_param_t (_param->_size_general_data,
Note: See TracChangeset for help on using the changeset viewer.