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

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

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Decod.h

    r110 r136  
    7272  public    : SC_OUT(Tcontrol_t         ) *** out_IFETCH_ACK                         ;//[nb_context][nb_inst_fetch]
    7373  public    : SC_IN (Tinstruction_t     ) ***  in_IFETCH_INSTRUCTION                 ;//[nb_context][nb_inst_fetch]
    74   public    : SC_IN (Tcontext_t         )  **  in_IFETCH_CONTEXT_ID                  ;//[nb_context]
    75   public    : SC_IN (Tgeneral_address_t )  **  in_IFETCH_ADDRESS                     ;//[nb_context]
    76 //public    : SC_IN (Tgeneral_address_t )  **  in_IFETCH_ADDRESS_NEXT                ;//[nb_context]
    77   public    : SC_IN (Tinst_ifetch_ptr_t )  **  in_IFETCH_INST_IFETCH_PTR             ;//[nb_context]
    78   public    : SC_IN (Tbranch_state_t    )  **  in_IFETCH_BRANCH_STATE                ;//[nb_context]
    79   public    : SC_IN (Tprediction_ptr_t  )  **  in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ;//[nb_context]
    80   public    : SC_IN (Texception_t       )  **  in_IFETCH_EXCEPTION                   ;//[nb_context]                                                                                 
     74  public    : SC_IN (Tcontext_t         ) ***  in_IFETCH_CONTEXT_ID                  ;//[nb_context][nb_inst_fetch]
     75  public    : SC_IN (Tgeneral_address_t ) ***  in_IFETCH_ADDRESS                     ;//[nb_context][nb_inst_fetch]
     76//public    : SC_IN (Tgeneral_address_t ) ***  in_IFETCH_ADDRESS_NEXT                ;//[nb_context][nb_inst_fetch]
     77//public    : SC_IN (Tinst_ifetch_ptr_t ) ***  in_IFETCH_INST_IFETCH_PTR             ;//[nb_context][nb_inst_fetch]
     78  public    : SC_IN (Tbranch_state_t    ) ***  in_IFETCH_BRANCH_STATE                ;//[nb_context][nb_inst_fetch]
     79  public    : SC_IN (Tprediction_ptr_t  ) ***  in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ;//[nb_context][nb_inst_fetch]
     80  public    : SC_IN (Texception_t       ) ***  in_IFETCH_EXCEPTION                   ;//[nb_context][nb_inst_fetch]                                                                                 
    8181    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
    8282  public    : SC_OUT(Tcontrol_t         )  ** out_DECOD_VAL                          ;//[nb_inst_decod]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod.cpp

    r132 r136  
    9494          {
    9595            for (uint32_t j=0; j<_param->_nb_inst_fetch [i]; j++)
    96               sensitive << (*(in_IFETCH_VAL         [i][j]))
    97                         << (*(in_IFETCH_INSTRUCTION [i][j]));
    98             sensitive << (*(in_IFETCH_ADDRESS                     [i]))
    99 //                    << (*(in_IFETCH_ADDRESS_NEXT                [i]))
    100                       << (*(in_IFETCH_BRANCH_STATE                [i]))
    101                       << (*(in_IFETCH_EXCEPTION                   [i]))
    102                       << (*(in_CONTEXT_DECOD_ENABLE               [i]));
    103             if (_param->_have_port_context_id)
    104             sensitive << (*(in_IFETCH_CONTEXT_ID                  [i]));
    105             if (_param->_have_port_depth)
    106             sensitive << (*(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i]));
    107             sensitive << (*(in_CONTEXT_DEPTH_VAL                  [i]));
     96              {
     97                sensitive << (*(in_IFETCH_VAL                         [i][j]))
     98                          << (*(in_IFETCH_INSTRUCTION                 [i][j]))
     99                          << (*(in_IFETCH_ADDRESS                     [i][j]))
     100//                        << (*(in_IFETCH_ADDRESS_NEXT                [i][j]))
     101                          << (*(in_IFETCH_BRANCH_STATE                [i][j]))
     102                          << (*(in_IFETCH_EXCEPTION                   [i][j]));
     103
     104                if (_param->_have_port_context_id)
     105                sensitive << (*(in_IFETCH_CONTEXT_ID                  [i][j]));
     106                if (_param->_have_port_depth)
     107                sensitive << (*(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i][j]));
     108//              if (_param->_have_port_inst_ifetch_ptr)
     109//              sensitive << (*(in_IFETCH_INST_IFETCH_PTR             [i][j]));
     110              }
     111            sensitive << (*(in_CONTEXT_DECOD_ENABLE               [i]))
     112                      << (*(in_CONTEXT_DEPTH_VAL                  [i]));
    108113            if (_param->_have_port_depth)
    109114            sensitive << (*(in_CONTEXT_DEPTH                      [i]));
    110             if (_param->_have_port_inst_ifetch_ptr)
    111             sensitive << (*(in_IFETCH_INST_IFETCH_PTR             [i]));
    112115          }
    113116
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_allocation.cpp

    r112 r136  
    6161
    6262     
    63       _ALLOC2_VALACK_IN ( in_IFETCH_VAL        ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]);
    64       _ALLOC2_VALACK_OUT(out_IFETCH_ACK        ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]);
    65       _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION,"instruction", Tinstruction_t, _param->_size_instruction,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     63      _ALLOC2_VALACK_IN ( in_IFETCH_VAL                       ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]);
     64      _ALLOC2_VALACK_OUT(out_IFETCH_ACK                       ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]);
     65      _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION               ,"instruction"                ,Tinstruction_t     ,_param->_size_instruction        ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     66      _ALLOC2_SIGNAL_IN (in_IFETCH_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t         ,_param->_size_context_id         ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     67      _ALLOC2_SIGNAL_IN (in_IFETCH_ADDRESS                    ,"address"                    ,Tgeneral_address_t ,_param->_size_instruction_address,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     68//    _ALLOC2_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT               ,"address_next"               ,Tgeneral_address_t ,_param->_size_instruction_address,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     69//    _ALLOC2_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr    ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     70      _ALLOC2_SIGNAL_IN (in_IFETCH_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t    ,_param->_size_branch_state       ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     71      _ALLOC2_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth              ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     72      _ALLOC2_SIGNAL_IN (in_IFETCH_EXCEPTION                  ,"exception"                  ,Texception_t       ,_param->_size_exception_ifetch   ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
    6673
    6774      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);
    71      
    72 
    73       ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t         ,_param->_size_context_id      );
    74       ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS                    ,"address"                    ,Tgeneral_address_t ,_param->_size_instruction_address    );
    75 //    ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT               ,"address_next"               ,Tgeneral_address_t ,_param->_size_instruction_address    );
    76       ALLOC1_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr );
    77       ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t    ,_param->_size_branch_state    );
    78       ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth           );
    79       ALLOC1_SIGNAL_IN (in_IFETCH_EXCEPTION                  ,"exception"                  ,Texception_t       ,_param->_size_exception_ifetch);
    80 
    81       ALLOC1_INTERFACE_END(_param->_nb_context);
    8275    }
    8376
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_deallocation.cpp

    r112 r136  
    2929        delete    in_NRESET;
    3030     
    31         DELETE2_SIGNAL( in_IFETCH_VAL        , _param->_nb_context, _param->_nb_inst_fetch[it1],1);
    32         DELETE2_SIGNAL(out_IFETCH_ACK        , _param->_nb_context, _param->_nb_inst_fetch[it1],1);
    33         DELETE2_SIGNAL( in_IFETCH_INSTRUCTION, _param->_nb_context, _param->_nb_inst_fetch[it1],_param->_size_instruction);
    34      
    35         DELETE1_SIGNAL(in_IFETCH_CONTEXT_ID                 , _param->_nb_context,_param->_size_context_id      );
    36         DELETE1_SIGNAL(in_IFETCH_ADDRESS                    , _param->_nb_context,_param->_size_instruction_address    );
    37 //      DELETE1_SIGNAL(in_IFETCH_ADDRESS_NEXT               , _param->_nb_context,_param->_size_instruction_address    );
    38         DELETE1_SIGNAL(in_IFETCH_INST_IFETCH_PTR            , _param->_nb_context,_param->_size_inst_ifetch_ptr );
    39         DELETE1_SIGNAL(in_IFETCH_BRANCH_STATE               , _param->_nb_context,_param->_size_branch_state    );
    40         DELETE1_SIGNAL(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID, _param->_nb_context,_param->_size_depth           );
    41         DELETE1_SIGNAL(in_IFETCH_EXCEPTION                  , _param->_nb_context,_param->_size_exception_ifetch);
     31        DELETE2_SIGNAL( in_IFETCH_VAL                        ,_param->_nb_context,_param->_nb_inst_fetch[it1],1);
     32        DELETE2_SIGNAL(out_IFETCH_ACK                        ,_param->_nb_context,_param->_nb_inst_fetch[it1],1);
     33        DELETE2_SIGNAL( in_IFETCH_INSTRUCTION                ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction);
     34        DELETE2_SIGNAL( in_IFETCH_CONTEXT_ID                 ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_context_id      );
     35        DELETE2_SIGNAL( in_IFETCH_ADDRESS                    ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction_address    );
     36//      DELETE2_SIGNAL( in_IFETCH_ADDRESS_NEXT               ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction_address    );
     37//      DELETE2_SIGNAL( in_IFETCH_INST_IFETCH_PTR            ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_inst_ifetch_ptr );
     38        DELETE2_SIGNAL( in_IFETCH_BRANCH_STATE               ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_branch_state    );
     39        DELETE2_SIGNAL( in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_depth           );
     40        DELETE2_SIGNAL( in_IFETCH_EXCEPTION                  ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_exception_ifetch);
    4241
    4342        DELETE1_SIGNAL(out_DECOD_VAL          ,_param->_nb_inst_decod,1);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp

    r135 r136  
    9999                ifetch_ack [x][y] = PORT_READ(in_DECOD_ACK [i]); // fetch_val and decod_enable and decod_ack
    100100
    101                 Tgeneral_data_t addr = PORT_READ(in_IFETCH_ADDRESS [x])+y;
     101                Tgeneral_data_t addr = PORT_READ(in_IFETCH_ADDRESS [x][y]);
    102102
    103103                _decod_instruction->_instruction        = PORT_READ(in_IFETCH_INSTRUCTION [x][y]);
     
    132132
    133133                // Test IFetch exception
    134                 Texception_t ifetch_exception = PORT_READ(in_IFETCH_EXCEPTION [x]);
     134                Texception_t ifetch_exception = PORT_READ(in_IFETCH_EXCEPTION [x][y]);
    135135
    136136                if (ifetch_exception == EXCEPTION_IFETCH_NONE)
     
    232232                  }
    233233
     234                Tbranch_state_t ifetch_branch_state = PORT_READ(in_IFETCH_BRANCH_STATE [x][y]);
    234235                if (_param->_have_port_context_id)
    235236                PORT_WRITE(out_PREDICT_CONTEXT_ID                  [i],x);
    236                 PORT_WRITE(out_PREDICT_MATCH_INST_IFETCH_PTR       [i],y == ((_param->_have_port_inst_ifetch_ptr)?PORT_READ(in_IFETCH_INST_IFETCH_PTR [x]):0));
    237                 PORT_WRITE(out_PREDICT_BRANCH_STATE                [i],PORT_READ(in_IFETCH_BRANCH_STATE                [x]));
     237//              PORT_WRITE(out_PREDICT_MATCH_INST_IFETCH_PTR       [i],y == ((_param->_have_port_inst_ifetch_ptr)?PORT_READ(in_IFETCH_INST_IFETCH_PTR [x]):0));
     238                PORT_WRITE(out_PREDICT_MATCH_INST_IFETCH_PTR       [i],ifetch_branch_state != BRANCH_STATE_NONE);
     239
     240                PORT_WRITE(out_PREDICT_BRANCH_STATE                [i],ifetch_branch_state);
    238241                if (_param->_have_port_depth)
    239                 PORT_WRITE(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [i],PORT_READ(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [x]));
     242                PORT_WRITE(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [i],PORT_READ(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [x][y]));
    240243                PORT_WRITE(out_PREDICT_BRANCH_CONDITION            [i],_decod_instruction->_branch_condition  );
    241244//              PORT_WRITE(out_PREDICT_BRANCH_STACK_WRITE          [i],_decod_instruction->_branch_stack_write);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Decod_queue.h

    r123 r136  
    5656  private   : counter_t                      * _stat_use_queue;
    5757
    58   private   : counter_t                      * _stat_sum_inst_enable;
    59   private   : counter_t                      * _stat_sum_transaction_decod_in;
    60   private   : counter_t                      * _stat_average_occupation_bundle;
     58  private   : counter_t                      * _stat_decode_in_empty  ;
     59  private   : counter_t                      * _stat_decode_in_full   ;
     60  private   : counter_t                      * _stat_decode_in_average;
    6161#endif
    6262
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_transition.cpp

    r124 r136  
    5151        {
    5252#ifdef STATISTICS
    53           bool find = false;
    54 #endif
     53          uint32_t nb_decod_in = 0;
     54#endif
     55
    5556          for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
    5657            if (PORT_READ(in_DECOD_IN_VAL [i]) and internal_DECOD_IN_ACK[i])
    5758              {
    5859                log_printf(TRACE,Decod_queue,FUNCTION,_("  * DECOD_IN  [%d]"),i);
    59                
     60               
     61#ifdef STATISTICS
     62                nb_decod_in ++;
     63#endif
     64 
    6065                // Create entry
    6166                decod_queue_entry_t * entry = new decod_queue_entry_t (1);
    6267                reg_QUEUE[reg_NUM_BANK_TAIL].push_back(entry);
    6368               
    64 #ifdef STATISTICS
    65                 find = true;
    66                 if (usage_is_set(_usage,USE_STATISTICS))
    67                   (*_stat_sum_inst_enable) ++;
    68 #endif
    69 
    7069                Tcontext_t context = (_param->_have_port_context_id)?PORT_READ(in_DECOD_IN_CONTEXT_ID [i]):0;
    7170
     
    107106
    108107#ifdef STATISTICS
    109           if (usage_is_set(_usage,USE_STATISTICS))
    110             if (find)
    111               (*_stat_sum_transaction_decod_in) ++;
     108        if (usage_is_set(_usage,USE_STATISTICS))
     109          {
     110            if (nb_decod_in > 0)
     111              {
     112                if (nb_decod_in == _param->_nb_inst_decod)
     113                  (*_stat_decode_in_full) ++;
     114                else
     115                  (*_stat_decode_in_average) += nb_decod_in;
     116              }
     117            else
     118              {
     119                (*_stat_decode_in_empty) ++;
     120              }
     121          }
    112122#endif
    113123        }
     
    208218      {
    209219        for (uint32_t i=0; i<_param->_nb_bank; ++i)
    210           *(_stat_use_queue) += reg_QUEUE[i].size();
     220          (*_stat_use_queue) += reg_QUEUE[i].size();
    211221        for (uint32_t i=0; i<_param->_nb_context; i++)
    212           *(_stat_nb_inst [i]) += reg_NB_INST [i];
     222          (*_stat_nb_inst [i]) += reg_NB_INST [i];
    213223      }
    214224#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_transition.cpp

    r123 r136  
    4646        //-----[ DECOD_IN ]---------------------------------------------------
    4747        //-------------------------------------------------------------------- 
     48        {
    4849        decod_queue_entry_t * entry = NULL;
     50
     51#ifdef STATISTICS
     52        uint32_t nb_decod_in = 0;
     53#endif
     54
    4955        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
    5056          {
     
    5864                   entry = new decod_queue_entry_t (_param->_nb_inst_decod);
    5965                   reg_QUEUE->push_back(entry);
    60 
    61 #ifdef STATISTICS
    62                    if (usage_is_set(_usage,USE_STATISTICS))
    63                      (*_stat_sum_transaction_decod_in) ++;
    64 #endif
    6566                 }
    6667
    6768#ifdef STATISTICS
    68                 if (usage_is_set(_usage,USE_STATISTICS))
    69                   (*_stat_sum_inst_enable) ++;
     69                nb_decod_in ++;
    7070#endif
    7171
     
    106106              }
    107107          }
     108
     109#ifdef STATISTICS
     110        if (usage_is_set(_usage,USE_STATISTICS))
     111          {
     112            if (nb_decod_in > 0)
     113              {
     114                if (nb_decod_in == _param->_nb_inst_decod)
     115                  (*_stat_decode_in_full) ++;
     116                else
     117                  (*_stat_decode_in_average) += nb_decod_in;
     118              }
     119            else
     120              {
     121                (*_stat_decode_in_empty) ++;
     122              }
     123          }
     124#endif
     125        }
    108126
    109127        //--------------------------------------------------------------------
     
    217235    if (usage_is_set(_usage,USE_STATISTICS))
    218236      {
    219         *(_stat_use_queue) += reg_QUEUE->size();
     237        (*_stat_use_queue) += reg_QUEUE->size();
    220238        for (uint32_t i=0; i<_param->_nb_context; i++)
    221           *(_stat_nb_inst [i]) += reg_NB_INST [i];
     239          (*_stat_nb_inst [i]) += reg_NB_INST [i];
    222240      }
    223241#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_statistics_allocation.cpp

    r110 r136  
    1717namespace decod_queue {
    1818
    19 
    2019#undef  FUNCTION
    2120#define FUNCTION "Decod_queue::statistics_allocation"
     
    2928                      param_statistics);
    3029
    31     _stat_sum_transaction_decod_in = _stat->create_variable("sum_transaction_decod_in");
    32     _stat_sum_inst_enable          = _stat->create_variable("sum_inst_enable");
    33     _stat_average_occupation_bundle= _stat->create_counter ("average_occupation_bundle", "", "Occupation average of instruction's bundle.");
     30    _stat_decode_in_empty          = _stat->create_counter ("decode_in_empty"  , "", "Number cycle with no input instruction.");
     31    _stat_decode_in_full           = _stat->create_counter ("decode_in_full"   , "", toString("Number cycle with full input instruction (%d).",_param->_nb_inst_decod));
     32    _stat_decode_in_average        = _stat->create_counter ("decode_in_average", "", "Average decod instruction.");
    3433
    35     _stat->create_expr                 ("average_occupation_bundle" ,"/ sum_inst_enable sum_transaction_decod_in");
    36     _stat->create_expr_percent         ("percent_occupation_bundle" ,"average_occupation_bundle", toString(_param->_nb_inst_decod),"Percent of instruction's bundle occupation.");
     34    _stat->create_expr_average_by_cycle("average_decod_in", toString("+ * decode_in_full %d decode_in_average",_param->_nb_inst_decod), "", "Average instruction from decode unit");
     35    _stat->create_expr_percent         ("percent_decod_in" ,"average_decod_in", toString(_param->_nb_inst_decod),"Percent of instruction's bundle occupation.");
    3736
    3837    _stat_use_queue = _stat->create_variable ("use_queue");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Decod_unit.h

    r123 r136  
    7070  public    : SC_OUT(Tcontrol_t         ) *** out_IFETCH_ACK                         ;//[nb_context][nb_inst_fetch]
    7171  public    : SC_IN (Tinstruction_t     ) ***  in_IFETCH_INSTRUCTION                 ;//[nb_context][nb_inst_fetch]
    72   public    : SC_IN (Tcontext_t         )  **  in_IFETCH_CONTEXT_ID                  ;//[nb_context]
    73   public    : SC_IN (Tgeneral_address_t )  **  in_IFETCH_ADDRESS                     ;//[nb_context]
    74 //public    : SC_IN (Tgeneral_address_t )  **  in_IFETCH_ADDRESS_NEXT                ;//[nb_context]
    75   public    : SC_IN (Tinst_ifetch_ptr_t )  **  in_IFETCH_INST_IFETCH_PTR             ;//[nb_context]
    76   public    : SC_IN (Tbranch_state_t    )  **  in_IFETCH_BRANCH_STATE                ;//[nb_context]
    77   public    : SC_IN (Tprediction_ptr_t  )  **  in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ;//[nb_context]
    78   public    : SC_IN (Texception_t       )  **  in_IFETCH_EXCEPTION                   ;//[nb_context]
     72  public    : SC_IN (Tcontext_t         ) ***  in_IFETCH_CONTEXT_ID                  ;//[nb_context][nb_inst_fetch]
     73  public    : SC_IN (Tgeneral_address_t ) ***  in_IFETCH_ADDRESS                     ;//[nb_context][nb_inst_fetch]
     74//public    : SC_IN (Tgeneral_address_t ) ***  in_IFETCH_ADDRESS_NEXT                ;//[nb_context][nb_inst_fetch]
     75//public    : SC_IN (Tinst_ifetch_ptr_t ) ***  in_IFETCH_INST_IFETCH_PTR             ;//[nb_context][nb_inst_fetch]
     76  public    : SC_IN (Tbranch_state_t    ) ***  in_IFETCH_BRANCH_STATE                ;//[nb_context][nb_inst_fetch]
     77  public    : SC_IN (Tprediction_ptr_t  ) ***  in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ;//[nb_context][nb_inst_fetch]
     78  public    : SC_IN (Texception_t       ) ***  in_IFETCH_EXCEPTION                   ;//[nb_context][nb_inst_fetch]
    7979                                                                                     
    8080    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_allocation.cpp

    r123 r136  
    1515namespace front_end {
    1616namespace decod_unit {
    17 
    18 
    1917
    2018#undef  FUNCTION
     
    6058      ALLOC2_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context, _param->_nb_inst_fetch[it1]);
    6159     
    62       _ALLOC2_VALACK_IN ( in_IFETCH_VAL        ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]);
    63       _ALLOC2_VALACK_OUT(out_IFETCH_ACK        ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]);
    64       _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION,"instruction", Tinstruction_t, _param->_size_instruction,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     60      _ALLOC2_VALACK_IN ( in_IFETCH_VAL                       ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]);
     61      _ALLOC2_VALACK_OUT(out_IFETCH_ACK                       ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]);
     62      _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION               ,"instruction"                ,Tinstruction_t     ,_param->_size_instruction        ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     63      _ALLOC2_SIGNAL_IN (in_IFETCH_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t         ,_param->_size_context_id         ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     64      _ALLOC2_SIGNAL_IN (in_IFETCH_ADDRESS                    ,"address"                    ,Tgeneral_address_t ,_param->_size_instruction_address,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     65//    _ALLOC2_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT               ,"address_next"               ,Tgeneral_address_t ,_param->_size_instruction_address,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     66//    _ALLOC2_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr    ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     67      _ALLOC2_SIGNAL_IN (in_IFETCH_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t    ,_param->_size_branch_state       ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     68      _ALLOC2_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth              ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
     69      _ALLOC2_SIGNAL_IN (in_IFETCH_EXCEPTION                  ,"exception"                  ,Texception_t       ,_param->_size_exception_ifetch   ,_param->_nb_context, _param->_nb_inst_fetch[it1]);
    6570
    6671      ALLOC2_INTERFACE_END(_param->_nb_context, _param->_nb_inst_fetch[it1]);
    67     }
    68     {
    69       ALLOC1_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context);
    70      
    71       ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t         ,_param->_size_context_id      );
    72       ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS                    ,"address"                    ,Tgeneral_address_t ,_param->_size_instruction_address    );
    73 //    ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT               ,"address_next"               ,Tgeneral_address_t ,_param->_size_instruction_address    );
    74       ALLOC1_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr );
    75       ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t    ,_param->_size_branch_state    );
    76       ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth           );
    77       ALLOC1_SIGNAL_IN (in_IFETCH_EXCEPTION                  ,"exception"                  ,Texception_t       ,_param->_size_exception_ifetch);
    78 
    79       ALLOC1_INTERFACE_END(_param->_nb_context);
    8072    }
    8173
     
    261253              PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_INSTRUCTION",
    262254                                  dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_INSTRUCTION");
     255              if (_param->_have_port_context_id)
     256              PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"                 ,
     257                                  dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"                 );
     258              PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_ADDRESS"                    ,
     259                                  dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_ADDRESS"                    );
     260//            PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT"               ,
     261//                                dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_ADDRESS_NEXT"               );
     262//            if (_param->_have_port_inst_ifetch_ptr)
     263//            PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_INST_IFETCH_PTR"            ,
     264//                                dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_INST_IFETCH_PTR"            );
     265              PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_BRANCH_STATE"               ,
     266                                  dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_BRANCH_STATE"               );
     267              if (_param->_have_port_depth)
     268              PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_BRANCH_UPDATE_PREDICTION_ID",
     269                                  dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_BRANCH_UPDATE_PREDICTION_ID");
     270              PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_"+toString(j)+"_EXCEPTION"                  ,
     271                                  dest, "in_IFETCH_"+toString(i)+"_"+toString(j)+"_EXCEPTION"                  );
    263272            }
    264          
    265 #ifdef POSITION
    266           _component->interface_map (src ,"ifetch_"+toString(i),
    267                                      dest,"ifetch_"+toString(i));
    268 #endif
    269 
    270           if (_param->_have_port_context_id)
    271           PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_CONTEXT_ID"                 ,
    272                               dest, "in_IFETCH_"+toString(i)+"_CONTEXT_ID"                 );
    273           PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_ADDRESS"                    ,
    274                               dest, "in_IFETCH_"+toString(i)+"_ADDRESS"                    );
    275 //        PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_ADDRESS_NEXT"               ,
    276 //                            dest, "in_IFETCH_"+toString(i)+"_ADDRESS_NEXT"               );
    277           if (_param->_have_port_inst_ifetch_ptr)
    278           PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_INST_IFETCH_PTR"            ,
    279                               dest, "in_IFETCH_"+toString(i)+"_INST_IFETCH_PTR"            );
    280           PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_BRANCH_STATE"               ,
    281                               dest, "in_IFETCH_"+toString(i)+"_BRANCH_STATE"               );
    282           if (_param->_have_port_depth)
    283           PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID",
    284                               dest, "in_IFETCH_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID");
    285           PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_EXCEPTION"                  ,
    286                               dest, "in_IFETCH_"+toString(i)+"_EXCEPTION"                  );
     273 
    287274        }
    288275       
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_deallocation.cpp

    r128 r136  
    2828        delete    in_NRESET;
    2929
    30         DELETE2_SIGNAL( in_IFETCH_VAL                         ,_param->_nb_context, _param->_nb_inst_fetch[it1],1);
    31         DELETE2_SIGNAL(out_IFETCH_ACK                         ,_param->_nb_context, _param->_nb_inst_fetch[it1],1);
    32         DELETE2_SIGNAL( in_IFETCH_INSTRUCTION                 ,_param->_nb_context, _param->_nb_inst_fetch[it1],_param->_size_instruction);
    33        
    34         DELETE1_SIGNAL(in_IFETCH_CONTEXT_ID                   ,_param->_nb_context,_param->_size_context_id      );
    35         DELETE1_SIGNAL(in_IFETCH_ADDRESS                      ,_param->_nb_context,_param->_size_instruction_address);
    36 //      DELETE1_SIGNAL(in_IFETCH_ADDRESS_NEXT                 ,_param->_nb_context,_param->_size_instruction_address);
    37         DELETE1_SIGNAL(in_IFETCH_INST_IFETCH_PTR              ,_param->_nb_context,_param->_size_inst_ifetch_ptr );
    38         DELETE1_SIGNAL(in_IFETCH_BRANCH_STATE                 ,_param->_nb_context,_param->_size_branch_state    );
    39         DELETE1_SIGNAL(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID  ,_param->_nb_context,_param->_size_depth           );
    40         DELETE1_SIGNAL(in_IFETCH_EXCEPTION                    ,_param->_nb_context,_param->_size_exception_ifetch);
     30        DELETE2_SIGNAL( in_IFETCH_VAL                         ,_param->_nb_context,_param->_nb_inst_fetch[it1],1);
     31        DELETE2_SIGNAL(out_IFETCH_ACK                         ,_param->_nb_context,_param->_nb_inst_fetch[it1],1);
     32        DELETE2_SIGNAL( in_IFETCH_INSTRUCTION                 ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction);
     33        DELETE2_SIGNAL(in_IFETCH_CONTEXT_ID                   ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_context_id         );
     34        DELETE2_SIGNAL(in_IFETCH_ADDRESS                      ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction_address);
     35//      DELETE2_SIGNAL(in_IFETCH_ADDRESS_NEXT                 ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_instruction_address);
     36//      DELETE2_SIGNAL(in_IFETCH_INST_IFETCH_PTR              ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_inst_ifetch_ptr    );
     37        DELETE2_SIGNAL(in_IFETCH_BRANCH_STATE                 ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_branch_state       );
     38        DELETE2_SIGNAL(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID  ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_depth              );
     39        DELETE2_SIGNAL(in_IFETCH_EXCEPTION                    ,_param->_nb_context,_param->_nb_inst_fetch[it1],_param->_size_exception_ifetch   );
    4140       
    4241        DELETE1_SIGNAL(out_DECOD_VAL                          ,_param->_nb_inst_decod,1);
Note: See TracChangeset for help on using the changeset viewer.