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/Return_Address_Stack
Files:
14 edited

Legend:

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

    r81 r88  
    2424library_clean                   : Return_Address_Stack_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/Return_Address_Stack/SelfTest/config_mono_context.cfg

    r81 r88  
    332       4       *2      # size_queue     [0]
    4432      32      *2      # size_address   
    5 1       1       +1      # nb_inst_predict
    6 1       1       +1      # nb_inst_decod 
    7 1       1       +1      # nb_inst_update
     51       4       *4      # nb_inst_predict
     61       4       *4      # nb_inst_decod 
     71       4       *4      # nb_inst_update
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/SelfTest/config_multi_context.cfg

    r81 r88  
    444       4       *2      # size_queue     [1]
    558       8       *2      # size_queue     [2]
    6 16      16      *2      # size_queue     [3]
     68       8       *2      # size_queue     [3]
    7732      32      *2      # size_address   
    8 1       1       +1      # nb_inst_predict
    9 1       1       +1      # nb_inst_decod 
    10 1       1       +1      # nb_inst_update
     81       4       *4      # nb_inst_predict
     91       4       *4      # nb_inst_decod 
     101       4       *4      # nb_inst_update
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/SelfTest/src/main.cpp

    r81 r88  
    6060         _nb_inst_predict ,
    6161         _nb_inst_decod   ,
    62          _nb_inst_update  );
     62         _nb_inst_update  ,
     63         true // is_toplevel
     64         );
    6365     
    6466      msg(_("%s"),param->print(1).c_str());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/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  Return_Address_Stack * _Return_Address_Stack = new Return_Address_Stack
    2636    (name.c_str(),
     
    2939#endif
    3040     _param,
    31      USE_ALL);
     41     _usage);
    3242 
    3343#ifdef SYSTEMC
     
    403413
    404414        in_DECOD_VAL [port1]->write(0);
    405 
    406       }
     415        }
    407416    }
    408417
     
    419428  delete in_NRESET;
    420429
    421   delete []  in_PREDICT_VAL          ;
    422   delete [] out_PREDICT_ACK          ;
    423   delete []  in_PREDICT_CONTEXT_ID   ;
    424   delete [] out_PREDICT_HIT          ;
    425   delete []  in_PREDICT_PUSH         ;
    426   delete []  in_PREDICT_ADDRESS_PUSH ;
    427   delete [] out_PREDICT_ADDRESS_POP  ;
    428   delete [] out_PREDICT_INDEX        ;
    429   delete []  in_DECOD_VAL            ;
    430   delete [] out_DECOD_ACK            ;
    431   delete []  in_DECOD_PUSH           ;
    432   delete []  in_DECOD_CONTEXT_ID     ;
    433   delete [] out_DECOD_HIT            ;
    434   delete []  in_DECOD_ADDRESS_PUSH   ;
    435   delete [] out_DECOD_ADDRESS_POP    ;
    436   delete [] out_DECOD_INDEX          ;
    437   delete []  in_DECOD_MISS_PREDICTION;
    438   delete []  in_UPDATE_VAL           ;
    439   delete [] out_UPDATE_ACK           ;
    440   delete []  in_UPDATE_CONTEXT_ID    ;
    441   delete []  in_UPDATE_PUSH          ;
    442   delete []  in_UPDATE_INDEX         ;
    443   delete []  in_UPDATE_ADDRESS       ;
    444   delete []  in_UPDATE_MISS_PREDICTION;
    445   delete []  in_UPDATE_PREDICTION_IFETCH;
     430  DELETE1_SC_SIGNAL( in_PREDICT_VAL             ,_param->_nb_inst_predict);
     431  DELETE1_SC_SIGNAL(out_PREDICT_ACK             ,_param->_nb_inst_predict);
     432  DELETE1_SC_SIGNAL( in_PREDICT_CONTEXT_ID      ,_param->_nb_inst_predict);
     433  DELETE1_SC_SIGNAL(out_PREDICT_HIT             ,_param->_nb_inst_predict);
     434  DELETE1_SC_SIGNAL( in_PREDICT_PUSH            ,_param->_nb_inst_predict);
     435  DELETE1_SC_SIGNAL( in_PREDICT_ADDRESS_PUSH    ,_param->_nb_inst_predict);
     436  DELETE1_SC_SIGNAL(out_PREDICT_ADDRESS_POP     ,_param->_nb_inst_predict);
     437  DELETE1_SC_SIGNAL(out_PREDICT_INDEX           ,_param->_nb_inst_predict);
     438
     439  DELETE1_SC_SIGNAL( in_DECOD_VAL               ,_param->_nb_inst_decod);
     440  DELETE1_SC_SIGNAL(out_DECOD_ACK               ,_param->_nb_inst_decod);
     441  DELETE1_SC_SIGNAL( in_DECOD_CONTEXT_ID        ,_param->_nb_inst_decod);
     442  DELETE1_SC_SIGNAL(out_DECOD_HIT               ,_param->_nb_inst_decod);
     443  DELETE1_SC_SIGNAL( in_DECOD_PUSH              ,_param->_nb_inst_decod);
     444  DELETE1_SC_SIGNAL( in_DECOD_ADDRESS_PUSH      ,_param->_nb_inst_decod);
     445  DELETE1_SC_SIGNAL(out_DECOD_ADDRESS_POP       ,_param->_nb_inst_decod);
     446  DELETE1_SC_SIGNAL(out_DECOD_INDEX             ,_param->_nb_inst_decod);
     447  DELETE1_SC_SIGNAL( in_DECOD_MISS_PREDICTION   ,_param->_nb_inst_decod);
     448
     449  DELETE1_SC_SIGNAL( in_UPDATE_VAL              ,_param->_nb_inst_update);
     450  DELETE1_SC_SIGNAL(out_UPDATE_ACK              ,_param->_nb_inst_update);
     451  DELETE1_SC_SIGNAL( in_UPDATE_CONTEXT_ID       ,_param->_nb_inst_update);
     452  DELETE1_SC_SIGNAL( in_UPDATE_PUSH             ,_param->_nb_inst_update);
     453  DELETE1_SC_SIGNAL( in_UPDATE_ADDRESS          ,_param->_nb_inst_update);
     454  DELETE1_SC_SIGNAL( in_UPDATE_INDEX            ,_param->_nb_inst_update);
     455  DELETE1_SC_SIGNAL( in_UPDATE_MISS_PREDICTION  ,_param->_nb_inst_update);
     456  DELETE1_SC_SIGNAL( in_UPDATE_PREDICTION_IFETCH,_param->_nb_inst_update);
    446457
    447458#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/include/Parameters.h

    r81 r88  
    2626  public : uint32_t   _nb_context     ;
    2727  public : uint32_t * _size_queue     ;//[nb_context]
    28   public : uint32_t   _size_address   ;
     28//public : uint32_t   _size_address   ;
    2929  public : uint32_t   _nb_inst_predict;
    3030  public : uint32_t   _nb_inst_decod  ;
    3131  public : uint32_t   _nb_inst_update ;
    3232   
    33   public : uint32_t   _size_context_id;
     33//public : uint32_t   _size_context_id;
    3434  public : uint32_t   _size_index     ;
    3535
    36   public : uint32_t   _have_port_context_id;
     36//public : uint32_t   _have_port_context_id;
    3737
    3838    //-----[ methods ]-----------------------------------------------------------
     
    4242                        uint32_t   nb_inst_predict,
    4343                        uint32_t   nb_inst_decod  ,
    44                         uint32_t   nb_inst_update );
     44                        uint32_t   nb_inst_update ,
     45                        bool       is_toplevel=false
     46                        );
    4547//   public : Parameters  (Parameters & param) ;
    4648  public : ~Parameters () ;
     49
     50  public :        void            copy       (void);
    4751
    4852  public :        Parameters_test msg_error  (void);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Parameters.cpp

    r81 r88  
    2525                          uint32_t   nb_inst_predict,
    2626                          uint32_t   nb_inst_decod  ,
    27                           uint32_t   nb_inst_update )
     27                          uint32_t   nb_inst_update ,
     28                          bool       is_toplevel
     29                          )
    2830  {
    2931    log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin");
     
    3133    _nb_context      = nb_context     ;
    3234    _size_queue      = size_queue     ;
    33     _size_address    = size_address   ;
    3435    _nb_inst_predict = nb_inst_predict;
    3536    _nb_inst_decod   = nb_inst_decod  ;
    3637    _nb_inst_update  = nb_inst_update ;
    3738
    38     _size_context_id = log2(nb_context);
    3939    _size_index      = max<uint32_t>(size_queue,nb_context);
    4040
    41     _have_port_context_id = _size_context_id > 0;
     41    test();
    4242
    43     test();
     43    if (is_toplevel)
     44      {
     45        _size_instruction_address = size_address   ;
     46        _size_context_id          = log2(nb_context);
     47        _have_port_context_id     = _size_context_id > 0;
     48
     49        copy ();
     50      }
     51
    4452    log_printf(FUNC,Return_Address_Stack,FUNCTION,"End");
    4553  };
     
    6270  };
    6371
     72#undef  FUNCTION
     73#define FUNCTION "Return_Address_Stack::copy"
     74  void Parameters::copy (void)
     75  {
     76    log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin");
     77    log_printf(FUNC,Return_Address_Stack,FUNCTION,"End");
     78  };
     79
    6480}; // end namespace return_address_stack
    6581}; // end namespace prediction_unit
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Parameters_msg_error.cpp

    r81 r88  
    2929    for (uint32_t i=0; i<_nb_context; i++)
    3030      if (_size_queue [i] < 2)
    31         test.error("context \""+toString(i)+"\" :  size_queue must be > 2");
     31        test.error(toString(_("context \"%d\" : size_queue must be >= 2\n"),i));
    3232   
    3333    log_printf(FUNC,Return_Address_Stack,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Parameters_print.cpp

    r81 r88  
    2828    xml.balise_open("return_address_stack");
    2929    xml.singleton_begin("nb_context     "); xml.attribut("value",toString(_nb_context     )); xml.singleton_end();
    30     xml.singleton_begin("size_address   "); xml.attribut("value",toString(_size_address   )); xml.singleton_end();
     30//  xml.singleton_begin("size_address   "); xml.attribut("value",toString(_size_address   )); xml.singleton_end();
    3131    xml.singleton_begin("nb_inst_predict"); xml.attribut("value",toString(_nb_inst_predict)); xml.singleton_end();
    3232    xml.singleton_begin("nb_inst_decod  "); xml.attribut("value",toString(_nb_inst_decod  )); xml.singleton_end();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack.cpp

    r81 r88  
    3838    log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin");
    3939
     40#if DEBUG_Return_Address_Stac == true
     41    log_printf(INFO,Return_Address_Stac,FUNCTION,_("<%s> Parameters"),_name.c_str());
     42
     43    std::cout << *param << std::endl;
     44#endif   
     45
    4046    log_printf(INFO,Return_Address_Stack,FUNCTION,"Allocation");
    4147
     
    4753
    4854#ifdef STATISTICS
    49     if (_usage & USE_STATISTICS)
     55    if (usage_is_set(_usage,USE_STATISTICS))
    5056      {
    5157        log_printf(INFO,Return_Address_Stack,FUNCTION,"Allocation of statistics");
     
    5662
    5763#ifdef VHDL
    58     if (_usage & USE_VHDL)
     64    if (usage_is_set(_usage,USE_VHDL))
    5965      {
    6066        // generate the vhdl
     
    6672
    6773#ifdef SYSTEMC
    68     if (_usage & USE_SYSTEMC)
     74    if (usage_is_set(_usage,USE_SYSTEMC))
    6975      {
    7076        for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
     
    165171
    166172#ifdef STATISTICS
    167     if (_usage & USE_STATISTICS)
     173    if (usage_is_set(_usage,USE_STATISTICS))
    168174      {
    169175        statistics_deallocation();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_allocation.cpp

    r81 r88  
    1717namespace return_address_stack {
    1818
    19 
    20 
    2119#undef  FUNCTION
    2220#define FUNCTION "Return_Address_Stack::allocation"
    2321  void Return_Address_Stack::allocation (
    2422#ifdef STATISTICS
    25                                morpheo::behavioural::Parameters_Statistics * param_statistics
     23                                         morpheo::behavioural::Parameters_Statistics * param_statistics
    2624#else
    27                                void
     25                                         void
    2826#endif
    29                                )
     27                                         )
    3028  {
    3129    log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin");
     
    6563      ALLOC1_SIGNAL_OUT(out_PREDICT_HIT         ,"hit"         ,Tcontrol_t,1);
    6664      ALLOC1_SIGNAL_IN ( in_PREDICT_PUSH        ,"push"        ,Tcontrol_t,1);
    67       ALLOC1_SIGNAL_IN ( in_PREDICT_ADDRESS_PUSH,"address_push",Taddress_t,_param->_size_address);
    68       ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_POP ,"address_pop" ,Taddress_t,_param->_size_address);
     65      ALLOC1_SIGNAL_IN ( in_PREDICT_ADDRESS_PUSH,"address_push",Taddress_t,_param->_size_instruction_address);
     66      ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_POP ,"address_pop" ,Taddress_t,_param->_size_instruction_address);
    6967      ALLOC1_SIGNAL_OUT(out_PREDICT_INDEX       ,"index"       ,Tptr_t    ,_param->_size_index);
    7068    }
     
    7977      ALLOC1_SIGNAL_OUT(out_DECOD_HIT            ,"hit"            ,Tcontrol_t,1);
    8078      ALLOC1_SIGNAL_IN ( in_DECOD_PUSH           ,"push"           ,Tcontrol_t,1);
    81       ALLOC1_SIGNAL_IN ( in_DECOD_ADDRESS_PUSH   ,"address_push"   ,Taddress_t,_param->_size_address);
    82       ALLOC1_SIGNAL_OUT(out_DECOD_ADDRESS_POP    ,"address_pop"    ,Taddress_t,_param->_size_address);
     79      ALLOC1_SIGNAL_IN ( in_DECOD_ADDRESS_PUSH   ,"address_push"   ,Taddress_t,_param->_size_instruction_address);
     80      ALLOC1_SIGNAL_OUT(out_DECOD_ADDRESS_POP    ,"address_pop"    ,Taddress_t,_param->_size_instruction_address);
    8381      ALLOC1_SIGNAL_OUT(out_DECOD_INDEX          ,"index"          ,Tptr_t    ,_param->_size_index);
    8482      ALLOC1_SIGNAL_IN ( in_DECOD_MISS_PREDICTION,"miss_prediction",Tcontrol_t,1);
     
    8987      ALLOC1_INTERFACE("update", IN, SOUTH, "update's interface", _param->_nb_inst_update);
    9088
    91       ALLOC1_VALACK_IN ( in_UPDATE_VAL            ,VAL);
    92       ALLOC1_VALACK_OUT(out_UPDATE_ACK            ,ACK);
    93       ALLOC1_SIGNAL_IN ( in_UPDATE_CONTEXT_ID     ,"context_id"     ,Tcontext_t,_param->_size_context_id);
    94       ALLOC1_SIGNAL_IN ( in_UPDATE_PUSH           ,"push"           ,Tcontrol_t,1);
    95       ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS        ,"address"        ,Taddress_t,_param->_size_address);
    96       ALLOC1_SIGNAL_IN ( in_UPDATE_INDEX          ,"index"          ,Tptr_t    ,_param->_size_index);
    97       ALLOC1_SIGNAL_IN ( in_UPDATE_MISS_PREDICTION,"miss_prediction",Tcontrol_t,1);
     89      ALLOC1_VALACK_IN ( in_UPDATE_VAL              ,VAL);
     90      ALLOC1_VALACK_OUT(out_UPDATE_ACK              ,ACK);
     91      ALLOC1_SIGNAL_IN ( in_UPDATE_CONTEXT_ID       ,"context_id"       ,Tcontext_t,_param->_size_context_id);
     92      ALLOC1_SIGNAL_IN ( in_UPDATE_PUSH             ,"push"             ,Tcontrol_t,1);
     93      ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS          ,"address"          ,Taddress_t,_param->_size_instruction_address);
     94      ALLOC1_SIGNAL_IN ( in_UPDATE_INDEX            ,"index"            ,Tptr_t    ,_param->_size_index);
     95      ALLOC1_SIGNAL_IN ( in_UPDATE_MISS_PREDICTION  ,"miss_prediction"  ,Tcontrol_t,1);
    9896      ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTION_IFETCH,"prediction_ifetch",Tcontrol_t,1);
    9997    }
    10098
     99    if (usage_is_set(_usage,USE_SYSTEMC))
     100      {
    101101    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    102102
     
    118118    internal_DECOD_HIT   = new Tcontrol_t [_param->_nb_inst_decod  ];
    119119    internal_UPDATE_ACK  = new Tcontrol_t [_param->_nb_inst_update ];
     120      }
    120121
    121122    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    122123
    123124#ifdef POSITION
    124     _component->generate_file();
     125    if (usage_is_set(_usage,USE_POSITION))
     126      _component->generate_file();
    125127#endif
    126128
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_deallocation.cpp

    r81 r88  
    77
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/include/Return_Address_Stack.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    2324    log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin");
    2425
    25     if (_usage & USE_SYSTEMC)
     26    if (usage_is_set(_usage,USE_SYSTEMC))
    2627      {
    2728        delete    in_CLOCK ;
    2829        delete    in_NRESET;
    2930
    30         delete []  in_PREDICT_VAL          ;
    31         delete [] out_PREDICT_ACK          ;
    32         if (_param->_have_port_context_id)
    33         delete []  in_PREDICT_CONTEXT_ID   ;
    34         delete [] out_PREDICT_HIT          ;
    35         delete []  in_PREDICT_PUSH         ;
    36         delete []  in_PREDICT_ADDRESS_PUSH ;
    37         delete [] out_PREDICT_ADDRESS_POP  ;
    38         delete [] out_PREDICT_INDEX        ;
    39         delete []  in_DECOD_VAL            ;
    40         delete [] out_DECOD_ACK            ;
    41         delete []  in_DECOD_PUSH           ;
    42         if (_param->_have_port_context_id)
    43         delete []  in_DECOD_CONTEXT_ID     ;
    44         delete [] out_DECOD_HIT            ;
    45         delete []  in_DECOD_ADDRESS_PUSH   ;
    46         delete [] out_DECOD_ADDRESS_POP    ;
    47         delete [] out_DECOD_INDEX          ;
    48         delete []  in_DECOD_MISS_PREDICTION;
    49         delete []  in_UPDATE_VAL           ;
    50         delete [] out_UPDATE_ACK           ;
    51         if (_param->_have_port_context_id)
    52         delete []  in_UPDATE_CONTEXT_ID    ;
    53         delete []  in_UPDATE_PUSH          ;
    54         delete []  in_UPDATE_INDEX         ;
    55         delete []  in_UPDATE_ADDRESS       ;
    56         delete []  in_UPDATE_MISS_PREDICTION;
    57         delete []  in_UPDATE_PREDICTION_IFETCH;
     31        DELETE1_SIGNAL( in_PREDICT_VAL             ,_param->_nb_inst_predict,1);
     32        DELETE1_SIGNAL(out_PREDICT_ACK             ,_param->_nb_inst_predict,1);
     33        DELETE1_SIGNAL( in_PREDICT_CONTEXT_ID      ,_param->_nb_inst_predict,_param->_size_context_id);
     34        DELETE1_SIGNAL(out_PREDICT_HIT             ,_param->_nb_inst_predict,1);
     35        DELETE1_SIGNAL( in_PREDICT_PUSH            ,_param->_nb_inst_predict,1);
     36        DELETE1_SIGNAL( in_PREDICT_ADDRESS_PUSH    ,_param->_nb_inst_predict,_param->_size_instruction_address);
     37        DELETE1_SIGNAL(out_PREDICT_ADDRESS_POP     ,_param->_nb_inst_predict,_param->_size_instruction_address);
     38        DELETE1_SIGNAL(out_PREDICT_INDEX           ,_param->_nb_inst_predict,_param->_size_index);
     39
     40        DELETE1_SIGNAL( in_DECOD_VAL               ,_param->_nb_inst_decod,1);
     41        DELETE1_SIGNAL(out_DECOD_ACK               ,_param->_nb_inst_decod,1);
     42        DELETE1_SIGNAL( in_DECOD_CONTEXT_ID        ,_param->_nb_inst_decod,_param->_size_context_id);
     43        DELETE1_SIGNAL(out_DECOD_HIT               ,_param->_nb_inst_decod,1);
     44        DELETE1_SIGNAL( in_DECOD_PUSH              ,_param->_nb_inst_decod,1);
     45        DELETE1_SIGNAL( in_DECOD_ADDRESS_PUSH      ,_param->_nb_inst_decod,_param->_size_instruction_address);
     46        DELETE1_SIGNAL(out_DECOD_ADDRESS_POP       ,_param->_nb_inst_decod,_param->_size_instruction_address);
     47        DELETE1_SIGNAL(out_DECOD_INDEX             ,_param->_nb_inst_decod,_param->_size_index);
     48        DELETE1_SIGNAL( in_DECOD_MISS_PREDICTION   ,_param->_nb_inst_decod,1);
     49
     50        DELETE1_SIGNAL( in_UPDATE_VAL              ,_param->_nb_inst_update,1);
     51        DELETE1_SIGNAL(out_UPDATE_ACK              ,_param->_nb_inst_update,1);
     52        DELETE1_SIGNAL( in_UPDATE_CONTEXT_ID       ,_param->_nb_inst_update,_param->_size_context_id);
     53        DELETE1_SIGNAL( in_UPDATE_PUSH             ,_param->_nb_inst_update,1);
     54        DELETE1_SIGNAL( in_UPDATE_ADDRESS          ,_param->_nb_inst_update,_param->_size_instruction_address);
     55        DELETE1_SIGNAL( in_UPDATE_INDEX            ,_param->_nb_inst_update,_param->_size_index);
     56        DELETE1_SIGNAL( in_UPDATE_MISS_PREDICTION  ,_param->_nb_inst_update,1);
     57        DELETE1_SIGNAL( in_UPDATE_PREDICTION_IFETCH,_param->_nb_inst_update,1);
     58       
     59        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     60       
     61        for (uint32_t i=0; i<_param->_nb_context; i++)
     62          delete [] reg_stack [i];
     63        delete [] reg_stack;
     64        delete [] reg_TOP;
     65        delete [] reg_BOTTOM;
     66        delete [] reg_NB_ELT;
     67        delete [] reg_PREDICT_TOP;
     68        delete [] reg_PREDICT_BOTTOM;
     69        delete [] reg_PREDICT_NB_ELT;
     70       
     71        delete [] internal_PREDICT_ACK;
     72        delete [] internal_PREDICT_HIT;
     73        delete [] internal_DECOD_ACK;
     74        delete [] internal_DECOD_HIT;
     75        delete [] internal_UPDATE_ACK;
    5876      }
    59 
    60     // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    61 
    62     delete [] reg_stack;
    63     delete [] reg_TOP;
    64     delete [] reg_BOTTOM;
    65     delete [] reg_NB_ELT;
    66     delete [] reg_PREDICT_TOP;
    67     delete [] reg_PREDICT_BOTTOM;
    68     delete [] reg_PREDICT_NB_ELT;
    69    
    70     delete [] internal_PREDICT_ACK;
    71     delete [] internal_PREDICT_HIT;
    72     delete [] internal_DECOD_ACK;
    73     delete [] internal_DECOD_HIT;
    74     delete [] internal_UPDATE_ACK;
    7577
    7678    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_end_cycle.cpp

    r81 r88  
    2525
    2626#ifdef STATISTICS
    27     _stat->end_cycle();
     27    if (usage_is_set(_usage,USE_STATISTICS))
     28      _stat->end_cycle();
    2829#endif   
    2930
     
    3132    // Evaluation before read the ouput signal
    3233//  sc_start(0);
    33     _interfaces->testbench();
     34    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
     35      _interfaces->testbench();
    3436#endif
    3537
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_transition.cpp

    r81 r88  
    191191                 
    192192                  // Scan full assoc !!!
    193                   for (uint32_t j=0; j<_param->_size_queue [i]; j++)
     193                  for (uint32_t j=0; j<_param->_size_queue [context]; j++)
    194194                    // Test if this slot is tagged with "predict" : if true, tagged as miss
    195195                    if (reg_stack [context][j]._predict)
Note: See TracChangeset for help on using the changeset viewer.