Ignore:
Timestamp:
Dec 10, 2008, 7:31:39 PM (16 years ago)
Author:
rosiere
Message:

Almost complete design
with Test and test platform

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/SelfTest/Makefile

    r81 r88  
    2424library_clean                   : Branch_Target_Buffer_Glue_library_clean
    2525
     26local_clean                     :
     27
    2628include                         $(DIR_COMPONENT)/Makefile.deps
    2729include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/SelfTest/src/main.cpp

    r81 r88  
    5555         _nb_inst_predict    ,
    5656         _nb_inst_decod      ,
    57          _nb_inst_update     );
     57         _nb_inst_update     ,
     58         true // is_toplevel
     59         );
    5860     
    5961      msg(_("%s"),param->print(1).c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/SelfTest/src/test.cpp

    r82 r88  
    2323#endif
    2424
     25  Tusage_t _usage = USE_ALL;
     26
     27//   _usage = usage_unset(_usage,USE_SYSTEMC              );
     28//   _usage = usage_unset(_usage,USE_VHDL                 );
     29//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
     30//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
     31//   _usage = usage_unset(_usage,USE_POSITION             );
     32//   _usage = usage_unset(_usage,USE_STATISTICS           );
     33//   _usage = usage_unset(_usage,USE_INFORMATION          );
     34
    2535  Branch_Target_Buffer_Glue * _Branch_Target_Buffer_Glue = new Branch_Target_Buffer_Glue
    2636    (name.c_str(),
     
    2939#endif
    3040     _param,
    31      USE_ALL);
     41     _usage);
    3242 
    3343#ifdef SYSTEMC
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/include/Parameters.h

    r81 r88  
    2929  public : uint32_t   _size_buffer       ;
    3030  public : uint32_t   _associativity     ;
    31   public : uint32_t   _size_address      ;
     31//public : uint32_t   _size_address      ;
    3232  public : uint32_t   _nb_inst_predict   ;
    3333  public : uint32_t   _nb_inst_decod     ;
     
    5151                        uint32_t   nb_inst_predict   ,
    5252                        uint32_t   nb_inst_decod     ,
    53                         uint32_t   nb_inst_update    );
     53                        uint32_t   nb_inst_update    ,
     54                        bool       is_toplevel=false
     55                        );
    5456//   public : Parameters  (Parameters & param) ;
    5557  public : ~Parameters () ;
     58
     59  public :        void            copy       (void);
    5660
    5761  public :        Parameters_test msg_error  (void);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue.cpp

    r81 r88  
    3939    log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin");
    4040
     41#if DEBUG_Branch_Target_Buffer_Glue == true
     42    log_printf(INFO,Branch_Target_Buffer_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());
     43
     44    std::cout << *param << std::endl;
     45#endif   
     46
    4147    log_printf(INFO,Branch_Target_Buffer_Glue,FUNCTION,"Allocation");
    4248
     
    4854
    4955#ifdef STATISTICS
    50     if (_usage & USE_STATISTICS)
     56    if (usage_is_set(_usage,USE_STATISTICS))
    5157      {
    5258        log_printf(INFO,Branch_Target_Buffer_Glue,FUNCTION,"Allocation of statistics");
     
    5763
    5864#ifdef VHDL
    59     if (_usage & USE_VHDL)
     65    if (usage_is_set(_usage,USE_VHDL))
    6066      {
    6167        // generate the vhdl
     
    6773
    6874#ifdef SYSTEMC
    69     if (_usage & USE_SYSTEMC)
     75    if (usage_is_set(_usage,USE_SYSTEMC))
    7076      {
    7177# if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     
    104110          }
    105111       
    106 # ifdef SYSTEMCASS_SPECIFIC
    107         // List dependency information
    108 
    109         for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
    110           {
    111             for (uint32_t j=0; j<_param->_associativity; j++)
    112             (*(out_PREDICT_HIT            [i])) (*(in_PREDICT_REGISTER_HIT          [i][j]));
    113             if (_param->_have_port_victim)
    114             (*(out_PREDICT_HIT            [i])) (*(in_PREDICT_SORT_INDEX            [i]));
    115 
    116             for (uint32_t j=0; j<_param->_associativity; j++)
    117             (*(out_PREDICT_ADDRESS_SRC    [i])) (*(in_PREDICT_REGISTER_ADDRESS_SRC  [i][j]));
    118             if (_param->_have_port_victim)
    119             (*(out_PREDICT_ADDRESS_SRC    [i])) (*(in_PREDICT_SORT_INDEX            [i]));
    120 
    121             for (uint32_t j=0; j<_param->_associativity; j++)
    122             (*(out_PREDICT_ADDRESS_DEST   [i])) (*(in_PREDICT_REGISTER_ADDRESS_DEST [i][j]));
    123             if (_param->_have_port_victim)
    124             (*(out_PREDICT_ADDRESS_DEST   [i])) (*(in_PREDICT_SORT_INDEX            [i]));
    125 
    126             for (uint32_t j=0; j<_param->_associativity; j++)
    127             (*(out_PREDICT_CONDITION      [i])) (*(in_PREDICT_REGISTER_CONDITION    [i][j]));
    128             if (_param->_have_port_victim)
    129             (*(out_PREDICT_CONDITION      [i])) (*(in_PREDICT_SORT_INDEX            [i]));
    130 
    131             for (uint32_t j=0; j<_param->_associativity; j++)
    132             (*(out_PREDICT_LAST_TAKE      [i])) (*(in_PREDICT_REGISTER_LAST_TAKE    [i][j]));
    133             if (_param->_have_port_victim)
    134             (*(out_PREDICT_LAST_TAKE      [i])) (*(in_PREDICT_SORT_INDEX            [i]));
    135 
    136             for (uint32_t j=0; j<_param->_associativity; j++)
    137             (*(out_PREDICT_IS_ACCURATE    [i])) (*(in_PREDICT_REGISTER_IS_ACCURATE  [i][j]));
    138             if (_param->_have_port_victim)
    139             (*(out_PREDICT_IS_ACCURATE    [i])) (*(in_PREDICT_SORT_INDEX            [i]));
    140 
    141 
    142             (*(out_PREDICT_ACK            [i])) (*(in_PREDICT_REGISTER_ACK          [i]));
    143             if (_param->_have_port_victim)
    144               {
    145             (*(out_PREDICT_ACK            [i])) (*(in_PREDICT_SORT_VAL              [i]));
    146             (*(out_PREDICT_ACK            [i])) (*(in_PREDICT_VICTIM_ACK            [i]));
    147               }
    148 
    149             (*(out_PREDICT_REGISTER_VAL   [i])) (*(in_PREDICT_VAL                   [i]));
    150             if (_param->_have_port_victim)
    151               {
    152             (*(out_PREDICT_REGISTER_VAL   [i])) (*(in_PREDICT_SORT_VAL              [i]));
    153             (*(out_PREDICT_REGISTER_VAL   [i])) (*(in_PREDICT_VICTIM_ACK            [i]));
    154               }
    155 
    156             if (_param->_have_port_victim)
    157               {
    158             (*(out_PREDICT_VICTIM_VAL     [i])) (*(in_PREDICT_VAL                   [i]));
    159             (*(out_PREDICT_VICTIM_VAL     [i])) (*(in_PREDICT_REGISTER_ACK          [i]));
    160             (*(out_PREDICT_VICTIM_VAL     [i])) (*(in_PREDICT_SORT_VAL              [i]));
    161 
    162             for (uint32_t j=0; j<_param->_associativity; j++)
    163             (*(out_PREDICT_VICTIM_HIT     [i])) (*(in_PREDICT_REGISTER_HIT          [i][j]));
    164             (*(out_PREDICT_VICTIM_HIT     [i])) (*(in_PREDICT_SORT_INDEX            [i]));
    165 
    166             if (not _param->_is_full_associative)
    167               {
    168             for (uint32_t j=0; j<_param->_associativity; j++)
    169             (*(out_PREDICT_VICTIM_ADDRESS [i])) (*(in_PREDICT_REGISTER_ADDRESS_SRC  [i][j]));
    170             (*(out_PREDICT_VICTIM_ADDRESS [i])) (*(in_PREDICT_SORT_INDEX            [i]));
    171               }
    172             (*(out_PREDICT_VICTIM_INDEX   [i])) (*(in_PREDICT_SORT_INDEX            [i]));
    173               }
    174           }
    175 # endif
     112// # ifdef SYSTEMCASS_SPECIFIC
     113//      // List dependency information
     114
     115//      for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
     116//        {
     117//          for (uint32_t j=0; j<_param->_associativity; j++)
     118//          (*(out_PREDICT_HIT            [i])) (*(in_PREDICT_REGISTER_HIT          [i][j]));
     119//          if (_param->_have_port_victim)
     120//          (*(out_PREDICT_HIT            [i])) (*(in_PREDICT_SORT_INDEX            [i]));
     121
     122//          for (uint32_t j=0; j<_param->_associativity; j++)
     123//          (*(out_PREDICT_ADDRESS_SRC    [i])) (*(in_PREDICT_REGISTER_ADDRESS_SRC  [i][j]));
     124//          if (_param->_have_port_victim)
     125//          (*(out_PREDICT_ADDRESS_SRC    [i])) (*(in_PREDICT_SORT_INDEX            [i]));
     126
     127//          for (uint32_t j=0; j<_param->_associativity; j++)
     128//          (*(out_PREDICT_ADDRESS_DEST   [i])) (*(in_PREDICT_REGISTER_ADDRESS_DEST [i][j]));
     129//          if (_param->_have_port_victim)
     130//          (*(out_PREDICT_ADDRESS_DEST   [i])) (*(in_PREDICT_SORT_INDEX            [i]));
     131
     132//          for (uint32_t j=0; j<_param->_associativity; j++)
     133//          (*(out_PREDICT_CONDITION      [i])) (*(in_PREDICT_REGISTER_CONDITION    [i][j]));
     134//          if (_param->_have_port_victim)
     135//          (*(out_PREDICT_CONDITION      [i])) (*(in_PREDICT_SORT_INDEX            [i]));
     136
     137//          for (uint32_t j=0; j<_param->_associativity; j++)
     138//          (*(out_PREDICT_LAST_TAKE      [i])) (*(in_PREDICT_REGISTER_LAST_TAKE    [i][j]));
     139//          if (_param->_have_port_victim)
     140//          (*(out_PREDICT_LAST_TAKE      [i])) (*(in_PREDICT_SORT_INDEX            [i]));
     141
     142//          for (uint32_t j=0; j<_param->_associativity; j++)
     143//          (*(out_PREDICT_IS_ACCURATE    [i])) (*(in_PREDICT_REGISTER_IS_ACCURATE  [i][j]));
     144//          if (_param->_have_port_victim)
     145//          (*(out_PREDICT_IS_ACCURATE    [i])) (*(in_PREDICT_SORT_INDEX            [i]));
     146
     147
     148//          (*(out_PREDICT_ACK            [i])) (*(in_PREDICT_REGISTER_ACK          [i]));
     149//          if (_param->_have_port_victim)
     150//            {
     151//          (*(out_PREDICT_ACK            [i])) (*(in_PREDICT_SORT_VAL              [i]));
     152//          (*(out_PREDICT_ACK            [i])) (*(in_PREDICT_VICTIM_ACK            [i]));
     153//            }
     154
     155//          (*(out_PREDICT_REGISTER_VAL   [i])) (*(in_PREDICT_VAL                   [i]));
     156//          if (_param->_have_port_victim)
     157//            {
     158//          (*(out_PREDICT_REGISTER_VAL   [i])) (*(in_PREDICT_SORT_VAL              [i]));
     159//          (*(out_PREDICT_REGISTER_VAL   [i])) (*(in_PREDICT_VICTIM_ACK            [i]));
     160//            }
     161
     162//          if (_param->_have_port_victim)
     163//            {
     164//          (*(out_PREDICT_VICTIM_VAL     [i])) (*(in_PREDICT_VAL                   [i]));
     165//          (*(out_PREDICT_VICTIM_VAL     [i])) (*(in_PREDICT_REGISTER_ACK          [i]));
     166//          (*(out_PREDICT_VICTIM_VAL     [i])) (*(in_PREDICT_SORT_VAL              [i]));
     167
     168//          for (uint32_t j=0; j<_param->_associativity; j++)
     169//          (*(out_PREDICT_VICTIM_HIT     [i])) (*(in_PREDICT_REGISTER_HIT          [i][j]));
     170//          (*(out_PREDICT_VICTIM_HIT     [i])) (*(in_PREDICT_SORT_INDEX            [i]));
     171
     172//          if (not _param->_is_full_associative)
     173//            {
     174//          for (uint32_t j=0; j<_param->_associativity; j++)
     175//          (*(out_PREDICT_VICTIM_ADDRESS [i])) (*(in_PREDICT_REGISTER_ADDRESS_SRC  [i][j]));
     176//          (*(out_PREDICT_VICTIM_ADDRESS [i])) (*(in_PREDICT_SORT_INDEX            [i]));
     177//            }
     178//          (*(out_PREDICT_VICTIM_INDEX   [i])) (*(in_PREDICT_SORT_INDEX            [i]));
     179//            }
     180//        }
     181// # endif
    176182
    177183        log_printf(INFO,Branch_Target_Buffer_Glue,FUNCTION,"Method - genMealy_decod");
     
    271277
    272278#ifdef STATISTICS
    273     if (_usage & USE_STATISTICS)
     279    if (usage_is_set(_usage,USE_STATISTICS))
    274280      {
    275281        statistics_deallocation();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_allocation.cpp

    r81 r88  
    6565        ALLOC1_SIGNAL_OUT(out_PREDICT_ACK           , "ack"           ,Tcontrol_t         , 1);
    6666        ALLOC1_SIGNAL_OUT(out_PREDICT_HIT           , "hit"           ,Tcontrol_t         , 1);
    67         ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC   , "address_src"   ,Tgeneral_data_t    , _param->_size_address);
    68         ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST  , "address_dest"  ,Tgeneral_data_t    , _param->_size_address);
     67        ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC   , "address_src"   ,Tgeneral_data_t    , _param->_size_instruction_address);
     68        ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST  , "address_dest"  ,Tgeneral_data_t    , _param->_size_instruction_address);
    6969        ALLOC1_SIGNAL_OUT(out_PREDICT_CONDITION     , "condition"     ,Tbranch_condition_t, _param->_size_branch_condition);
    7070        ALLOC1_SIGNAL_OUT(out_PREDICT_LAST_TAKE     , "last_take"     ,Tcontrol_t         , 1);
     
    8989
    9090        ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_HIT         ,"register_hit"         ,Tcontrol_t         ,1);
    91         ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_ADDRESS_SRC ,"register_address_src" ,Tgeneral_data_t    ,_param->_size_address);
    92         ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_ADDRESS_DEST,"register_address_dest",Tgeneral_data_t    ,_param->_size_address);
     91        ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_ADDRESS_SRC ,"register_address_src" ,Tgeneral_data_t    ,_param->_size_instruction_address);
     92        ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_ADDRESS_DEST,"register_address_dest",Tgeneral_data_t    ,_param->_size_instruction_address);
    9393        ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_CONDITION   ,"register_condition"   ,Tbranch_condition_t,_param->_size_branch_condition);
    9494        ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_LAST_TAKE   ,"register_last_take"   ,Tcontrol_t         ,1);
     
    104104      ALLOC1_SIGNAL_OUT(out_DECOD_ACK           ,"ack"           ,Tcontrol_t     ,1);
    105105      if (not _param->_is_full_associative)
    106       ALLOC1_SIGNAL_IN ( in_DECOD_ADDRESS_SRC   ,"address_src"   ,Tgeneral_data_t,_param->_size_address);
     106      ALLOC1_SIGNAL_IN ( in_DECOD_ADDRESS_SRC   ,"address_src"   ,Tgeneral_data_t,_param->_size_instruction_address);
    107107
    108108      ALLOC1_SIGNAL_OUT(out_DECOD_REGISTER_VAL  ,"register_val"  ,Tcontrol_t     ,1);
     
    124124      ALLOC1_SIGNAL_OUT(out_UPDATE_ACK           ,"ack"           ,Tcontrol_t     ,1);
    125125      if (not _param->_is_full_associative)
    126       ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS_SRC   ,"address_src"   ,Tgeneral_data_t,_param->_size_address);
     126      ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS_SRC   ,"address_src"   ,Tgeneral_data_t,_param->_size_instruction_address);
    127127
    128128      ALLOC1_SIGNAL_OUT(out_UPDATE_REGISTER_VAL  ,"register_val"  ,Tcontrol_t     ,1);
     
    140140
    141141#ifdef POSITION
    142     _component->generate_file();
     142    if (usage_is_set(_usage,USE_POSITION))
     143      _component->generate_file();
    143144#endif
    144145
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_deallocation.cpp

    r81 r88  
    2424    log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin");
    2525
    26     if (_usage & USE_SYSTEMC)
     26    if (usage_is_set(_usage,USE_SYSTEMC))
    2727      {
    2828        delete     in_CLOCK ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_end_cycle.cpp

    r81 r88  
    2626
    2727#ifdef STATISTICS
    28     _stat->end_cycle();
     28    if (usage_is_set(_usage,USE_STATISTICS))
     29      _stat->end_cycle();
    2930#endif   
    3031
     
    3233    // Evaluation before read the ouput signal
    3334//  sc_start(0);
    34     _interfaces->testbench();
     35    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     36      _interfaces->testbench();
    3537#endif
    3638
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Parameters.cpp

    r81 r88  
    2727                          uint32_t   nb_inst_predict   ,
    2828                          uint32_t   nb_inst_decod     ,
    29                           uint32_t   nb_inst_update    )
     29                          uint32_t   nb_inst_update    ,
     30                          bool       is_toplevel)
    3031  {
    3132    log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin");
     
    3435    _size_buffer            = size_buffer       ;
    3536    _associativity          = associativity     ;
    36     _size_address           = size_address      ;
     37//  _size_address           = size_address      ;
    3738    _nb_inst_predict        = nb_inst_predict   ;
    3839    _nb_inst_decod          = nb_inst_decod     ;
     
    5051
    5152    test();
     53
     54    if (is_toplevel)
     55      {
     56        _size_instruction_address = size_address;
     57
     58        copy();
     59      }
     60
    5261    log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"End");
    5362  };
     
    7079  };
    7180
     81#undef  FUNCTION
     82#define FUNCTION "Branch_Target_Buffer_Glue::copy"
     83  void Parameters::copy (void)
     84  {
     85    log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin");
     86    log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"End");
     87  };
     88
    7289}; // end namespace branch_target_buffer_glue
    7390}; // end namespace branch_target_buffer
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Parameters_print.cpp

    r81 r88  
    3131    xml.singleton_begin("size_buffer       "); xml.attribut("value",toString(_size_buffer       )); xml.singleton_end();
    3232    xml.singleton_begin("associativity     "); xml.attribut("value",toString(_associativity     )); xml.singleton_end();
    33     xml.singleton_begin("size_address      "); xml.attribut("value",toString(_size_address      )); xml.singleton_end();
     33//  xml.singleton_begin("size_address      "); xml.attribut("value",toString(_size_address      )); xml.singleton_end();
    3434    xml.singleton_begin("nb_inst_predict   "); xml.attribut("value",toString(_nb_inst_predict   )); xml.singleton_end();
    3535    xml.singleton_begin("nb_inst_decod     "); xml.attribut("value",toString(_nb_inst_decod     )); xml.singleton_end();
Note: See TracChangeset for help on using the changeset viewer.