Ignore:
Timestamp:
Jul 30, 2010, 4:47:27 PM (14 years ago)
Author:
rosiere
Message:
  • Add test for all configuration
  • RAT : add rat scheme (depth_save)
Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit
Files:
4 added
1 deleted
16 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Parameters.h

    r88 r139  
    1111#include "Common/include/Debug.h"
    1212#include "Behavioural/include/Parameters.h"
     13#include "Behavioural/include/Types.h"
    1314
    1415namespace morpheo {
     
    2526  {
    2627    //-----[ fields ]------------------------------------------------------------
    27   public : uint32_t   _nb_front_end          ;
    28   public : uint32_t * _nb_context            ;//[nb_front_end]
    29   public : uint32_t   _nb_general_register   ;
    30   public : uint32_t   _nb_special_register   ;
    31   public : uint32_t   _nb_inst_insert        ;
    32   public : uint32_t   _nb_inst_retire        ;   
    33                      
    34 //public : uint32_t   _size_front_end_id     ;
    35 //public : uint32_t   _size_context_id       ;
    36 //public : uint32_t   _size_general_register ;
    37 //public : uint32_t   _size_special_register ;
    38 //                   
    39 //public : uint32_t   _have_port_context_id  ;
    40 //public : uint32_t   _have_port_front_end_id;
     28  public : uint32_t         _nb_front_end          ;
     29  public : uint32_t       * _nb_context            ;//[nb_front_end]
     30  public : uint32_t         _nb_general_register   ;
     31  public : uint32_t         _nb_special_register   ;
     32  public : Trat_scheme_t    _rat_scheme            ;
     33  public : uint32_t         _nb_inst_insert        ;
     34  public : uint32_t         _nb_inst_retire        ;   
     35  public : uint32_t      ** _nb_branch_speculated  ;//[nb_front_end][nb_context]
     36   
     37  public : uint32_t         _max_nb_context        ;
     38//public : uint32_t         _size_front_end_id     ;
     39//public : uint32_t         _size_context_id       ;
     40//public : uint32_t         _size_general_register ;
     41//public : uint32_t         _size_special_register ;
     42//                         
     43//public : uint32_t         _have_port_context_id  ;
     44//public : uint32_t         _have_port_front_end_id;
    4145
    4246    //-----[ methods ]-----------------------------------------------------------
    43   public : Parameters  (uint32_t   nb_front_end       ,
    44                         uint32_t * nb_context         ,
    45                         uint32_t   nb_general_register,
    46                         uint32_t   nb_special_register,
    47                         uint32_t   nb_inst_insert     ,
    48                         uint32_t   nb_inst_retire     ,
    49                         bool       is_toplevel=false
     47  public : Parameters  (uint32_t         nb_front_end        ,
     48                        uint32_t       * nb_context          ,//[nb_front_end]
     49                        uint32_t         nb_general_register ,
     50                        uint32_t         nb_special_register ,
     51                        Trat_scheme_t    rat_scheme          ,
     52                        uint32_t         nb_inst_insert      ,
     53                        uint32_t         nb_inst_retire      ,
     54                        uint32_t      ** nb_branch_speculated,//[nb_front_end][nb_context]
     55                        bool             is_toplevel=false
    5056                        );
    5157//   public : Parameters  (Parameters & param) ;
  • 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

    r131 r139  
    6868  public    : SC_IN (Tcontext_t        )   **  in_RENAME_FRONT_END_ID      ;//[nb_inst_insert]
    6969  public    : SC_IN (Tcontext_t        )   **  in_RENAME_CONTEXT_ID        ;//[nb_inst_insert]
     70  public    : SC_IN (Tdepth_t          )   **  in_RENAME_DEPTH             ;//[nb_inst_insert]
     71  public    : SC_IN (Tcontrol_t        )   **  in_RENAME_SAVE_RAT          ;//[nb_inst_insert]
    7072  public    : SC_IN (Tgeneral_address_t)   **  in_RENAME_NUM_REG_RA_LOG    ;//[nb_inst_insert]
    7173  public    : SC_IN (Tgeneral_address_t)   **  in_RENAME_NUM_REG_RB_LOG    ;//[nb_inst_insert]
     
    102104  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_NEW;//[nb_inst_retire]
    103105  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_NEW;//[nb_inst_retire]
    104   public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
    105   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]
     106  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE           ;//[nb_inst_retire]
    107107
    108108    // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    110110  public    : SC_OUT(Tcontrol_t        )  *** out_RETIRE_EVENT_ACK            ;//[nb_front_end][nb_context]
    111111  public    : SC_IN (Tevent_state_t    )  ***  in_RETIRE_EVENT_STATE          ;//[nb_front_end][nb_context]
     112  public    : SC_IN (Tevent_type_t     )  ***  in_RETIRE_EVENT_TYPE           ;//[nb_front_end][nb_context]
     113  public    : SC_IN (Tdepth_t          )  ***  in_RETIRE_EVENT_DEPTH          ;//[nb_front_end][nb_context]
    112114
    113115    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    114116
    115117    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    116   private   : Tgeneral_address_t          *** rat_gpr_not_speculative;      //[nb_front_end][nb_context][nb_general_register_logic]
    117   private   : Tgeneral_address_t          *** rat_gpr_speculative;          //[nb_front_end][nb_context][nb_general_register_logic]
    118   private   : bool                        *** rat_gpr_speculative_valid;    //[nb_front_end][nb_context][nb_general_register_logic]
    119   private   : bool                        *** rat_gpr_update_table;         //[nb_front_end][nb_context][nb_general_register_logic]
    120 
    121   private   : Tspecial_address_t          *** rat_spr_not_speculative;      //[nb_front_end][nb_context][nb_special_register_logic]
    122   private   : Tspecial_address_t          *** rat_spr_speculative;          //[nb_front_end][nb_context][nb_special_register_logic]
    123   private   : bool                        *** rat_spr_speculative_valid;    //[nb_front_end][nb_context][nb_special_register_logic]
    124   private   : bool                        *** rat_spr_update_table;         //[nb_front_end][nb_context][nb_special_register_logic]
     118  private   : Tgeneral_address_t          *** rat_gpr_not_speculative;      //[nb_front_end][nb_context]                      [nb_general_register_logic]
     119  private   : Tgeneral_address_t          *** rat_gpr_speculative;          //[nb_front_end][nb_context]                      [nb_general_register_logic]
     120  private   : bool                        *** rat_gpr_speculative_valid;    //[nb_front_end][nb_context]                      [nb_general_register_logic]
     121  private   : Tgeneral_address_t         **** rat_gpr_save;                 //[nb_front_end][nb_context][nb_branch_speculated][nb_general_register_logic]
     122
     123  private   : Tspecial_address_t          *** rat_spr_not_speculative;      //[nb_front_end][nb_context]                      [nb_special_register_logic]
     124  private   : Tspecial_address_t          *** rat_spr_speculative;          //[nb_front_end][nb_context]                      [nb_special_register_logic]
     125  private   : bool                        *** rat_spr_speculative_valid;    //[nb_front_end][nb_context]                      [nb_special_register_logic]
     126  private   : Tspecial_address_t         **** rat_spr_save;                 //[nb_front_end][nb_context][nb_branch_speculated][nb_special_register_logic]
     127
     128  private   : Tdepth_t                     ** rat_depth;                    //[nb_front_end][nb_context]
    125129
    126130    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    127131  private   : Tcontrol_t                    * internal_RENAME_ACK;          //[nb_inst_insert]
     132  private   : Tcontrol_t                    * internal_RENAME_SAVE;         //[nb_inst_insert]
    128133  private   : Tcontrol_t                    * internal_INSERT_ACK;          //[nb_inst_insert]
    129134  private   : Tcontrol_t                    * internal_RETIRE_ACK;          //[nb_inst_retire]
    130135  private   : Tcontrol_t                   ** internal_RETIRE_EVENT_ACK    ;//[nb_front_end][nb_context]
    131136
    132   private   : bool                        *** internal_rat_gpr_update_table;//[nb_front_end][nb_context][nb_general_register_logic]
    133   private   : bool                        *** internal_rat_spr_update_table;//[nb_front_end][nb_context][nb_special_register_logic]
    134 
    135   private   : Tcontrol_t                    * internal_RETIRE_RESTORE           ;//[nb_inst_retire]
    136   private   : Tcontrol_t                    * internal_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
    137   private   : Tcontrol_t                    * internal_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
    138 
     137    // function pointer
     138  public    : void (morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::*function_constant       ) (void);
     139  public    : void (morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::*function_transition     ) (void);
     140  public    : void (morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::*function_genMealy_rename) (void);
    139141#endif
    140142
     
    169171                                               
    170172#ifdef SYSTEMC                                 
    171   public  : void        constant                  (void);
    172   public  : void        transition                (void);
    173   public  : void        genMealy_rename           (void);
    174   public  : void        genMealy_retire           (void);
     173  public  : void        constant                            (void);
     174  public  : void        transition                          (void);
     175  public  : void        genMealy_rename                     (void);
     176
     177  // public  : void        function_no_save_constant           (void);
     178  // public  : void        function_no_save_transition         (void);
     179  // public  : void        function_no_save_genMealy_rename    (void);
     180
     181  public  : void        function_one_save_constant          (void);
     182  public  : void        function_one_save_transition        (void);
     183  public  : void        function_one_save_genMealy_rename   (void);
     184
     185  public  : void        function_depth_save_constant        (void);
     186  public  : void        function_depth_save_transition      (void);
     187  public  : void        function_depth_save_genMealy_rename (void);
    175188#endif                                         
    176189
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Parameters.cpp

    r88 r139  
    2020#undef  FUNCTION
    2121#define FUNCTION "Register_Address_Translation_unit::Parameters"
    22   Parameters::Parameters (uint32_t   nb_front_end       ,
    23                           uint32_t * nb_context         ,
    24                           uint32_t   nb_general_register,
    25                           uint32_t   nb_special_register,
    26                           uint32_t   nb_inst_insert     ,
    27                           uint32_t   nb_inst_retire     ,
    28                           bool       is_toplevel)
     22  Parameters::Parameters (uint32_t         nb_front_end        ,
     23                          uint32_t       * nb_context          ,//[nb_front_end]
     24                          uint32_t         nb_general_register ,
     25                          uint32_t         nb_special_register ,
     26                          Trat_scheme_t    rat_scheme          ,
     27                          uint32_t         nb_inst_insert      ,
     28                          uint32_t         nb_inst_retire      ,
     29                          uint32_t      ** nb_branch_speculated,//[nb_front_end][nb_context]
     30                          bool             is_toplevel)
    2931  {
    3032    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
    3133
    32     _nb_front_end           = nb_front_end       ;
    33     _nb_context             = nb_context         ;
    34     _nb_general_register    = nb_general_register;
    35     _nb_special_register    = nb_special_register;
    36     _nb_inst_insert         = nb_inst_insert     ;
    37     _nb_inst_retire         = nb_inst_retire     ;
     34    _nb_front_end           = nb_front_end        ;
     35    _nb_context             = nb_context          ;
     36    _nb_general_register    = nb_general_register ;
     37    _nb_special_register    = nb_special_register ;
     38    _rat_scheme             = rat_scheme          ;
     39    _nb_inst_insert         = nb_inst_insert      ;
     40    _nb_inst_retire         = nb_inst_retire      ;
     41    _nb_branch_speculated   = nb_branch_speculated;
     42
     43    _max_nb_context         = max<uint32_t>(_nb_context, _nb_front_end);
    3844
    3945    test();
     
    4147    if (is_toplevel)
    4248      {
    43         _size_front_end_id      = log2(nb_front_end       );
    44         _size_context_id        = log2(max<uint32_t>(nb_context, nb_front_end));
    45         _size_general_register  = log2(nb_general_register);
    46         _size_special_register  = log2(nb_special_register);
     49        _size_front_end_id      = log2(_nb_front_end       );
     50        _size_context_id        = log2(_max_nb_context     );
     51        _size_general_register  = log2(_nb_general_register);
     52        _size_special_register  = log2(_nb_special_register);
     53        _size_depth             = log2(max<uint32_t>(_nb_branch_speculated,_nb_front_end,_nb_context));
    4754   
    4855        _have_port_front_end_id = _size_front_end_id>0;
    4956        _have_port_context_id   = _size_context_id  >0;
    50        
     57        _have_port_depth        = _size_depth       >0;
     58
    5159        copy();
    5260      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Parameters_msg_error.cpp

    r82 r139  
    1010#include <sstream>
    1111
    12 namespace morpheo                    {
     12namespace morpheo {
    1313namespace behavioural {
    1414namespace core {
     
    2727    Parameters_test test ("Register_Address_Translation_unit");
    2828
     29    switch(_rat_scheme)
     30      {
     31      case RAT_NO_SAVE    :
     32        {
     33          test.error(toString(_("The Register Address Translation scheme \"%s\" is not yet implemented.\n"),toString(_rat_scheme).c_str()));
     34        }
     35      default             :
     36      // case RAT_ONE_SAVE   :
     37      // case RAT_DEPTH_SAVE :
     38        {
     39          break;
     40        }
     41      }
     42
    2943    return test;
    3044
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Parameters_print.cpp

    r81 r139  
    2828
    2929    xml.balise_open("register_address_translation_unit");
    30     xml.singleton_begin("nb_front_end       "); xml.attribut("value",toString(_nb_front_end       )); xml.singleton_end();
    31     xml.singleton_begin("nb_general_register"); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end();
    32     xml.singleton_begin("nb_special_register"); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end();
    33     xml.singleton_begin("nb_inst_insert     "); xml.attribut("value",toString(_nb_inst_insert     )); xml.singleton_end();
    34     xml.singleton_begin("nb_inst_retire     "); xml.attribut("value",toString(_nb_inst_retire     )); xml.singleton_end();
     30    xml.singleton_begin("nb_front_end        "); xml.attribut("value",toString(_nb_front_end       )); xml.singleton_end();
     31    xml.singleton_begin("rat_scheme          "); xml.attribut("value",toString(_rat_scheme         )); xml.singleton_end();
     32    xml.singleton_begin("nb_general_register "); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end();
     33    xml.singleton_begin("nb_special_register "); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end();
     34    xml.singleton_begin("nb_inst_insert      "); xml.attribut("value",toString(_nb_inst_insert     )); xml.singleton_end();
     35    xml.singleton_begin("nb_inst_retire      "); xml.attribut("value",toString(_nb_inst_retire     )); xml.singleton_end();
    3536
    3637    for (uint32_t i=0;i<_nb_front_end; i++)
     
    4041        xml.  attribut("id"  ,toString(i));
    4142        xml. balise_open_end();
    42         xml.  singleton_begin("nb_context         "); xml.attribut("value",toString(_nb_context [i]     )); xml.singleton_end();
     43        xml.  singleton_begin("nb_context          "); xml.attribut("value",toString(_nb_context [i]     )); xml.singleton_end();
     44
     45        for (uint32_t j=0;j<_nb_context[i]; j++)
     46          {
     47            xml. balise_open_begin("component");
     48            xml.  attribut("type","context");
     49            xml.  attribut("id"  ,toString(j));
     50            xml. balise_open_end();
     51            xml.  singleton_begin("nb_branch_speculated"); xml.attribut("value",toString(_nb_branch_speculated[i][j])); xml.singleton_end();
     52            xml. balise_close();
     53          }
     54
    4355        xml. balise_close();
    4456      }
  • 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.cpp

    r132 r139  
    7575    if (usage_is_set(_usage,USE_SYSTEMC))
    7676      {
     77        // Function pointer
     78        switch (_param->_rat_scheme)
     79          {
     80          case RAT_NO_SAVE    :
     81            {
     82              // function_constant        = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_no_save_constant       ;
     83              // function_transition      = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_no_save_transition     ;
     84              // function_genMealy_rename = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_no_save_genMealy_rename;
     85
     86              break;
     87            }
     88
     89          case RAT_ONE_SAVE   :
     90            {
     91              function_constant        = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_one_save_constant       ;
     92              function_transition      = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_one_save_transition     ;
     93              function_genMealy_rename = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_one_save_genMealy_rename;
     94
     95              break;
     96            }
     97
     98          case RAT_DEPTH_SAVE :
     99            {
     100              function_constant        = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_depth_save_constant       ;
     101              function_transition      = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_depth_save_transition     ;
     102              function_genMealy_rename = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_depth_save_genMealy_rename;
     103
     104              break;
     105            }
     106
     107          default             :
     108            {
     109              break;
     110            }
     111          }
     112
    77113#ifdef SYSTEMCASS_SPECIFIC
    78114        constant();
     
    118154                      << (*(in_RENAME_NUM_REG_RD_LOG [i]))
    119155                      << (*(in_RENAME_NUM_REG_RE_LOG [i]));
     156
     157            if (_param->_rat_scheme == RAT_DEPTH_SAVE)
     158            sensitive << (*(in_RENAME_SAVE_RAT       [i]));
    120159          }
    121160        for (uint32_t i=0; i<_param->_nb_front_end; ++i)
     
    124163                      << (*(in_RETIRE_EVENT_STATE [i][j]));
    125164
    126 # ifdef SYSTEMCASS_SPECIFIC
    127         // List dependency information
    128 # endif   
    129 
    130         log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Method - genMealy_retire");
    131 
    132         SC_METHOD (genMealy_retire);
    133         dont_initialize ();
    134         sensitive << (*(in_CLOCK)).neg() // need internal register
    135                   << (*(in_NRESET));
    136 
    137         for (uint32_t i=0; i<_param->_nb_inst_retire; ++i)
    138           {
    139             if (param->_have_port_front_end_id)
    140             sensitive << (*(in_RETIRE_FRONT_END_ID   [i]));
    141             if (param->_have_port_context_id)
    142             sensitive << (*(in_RETIRE_CONTEXT_ID     [i]));
    143            
    144             sensitive << (*(in_RETIRE_WRITE_RD       [i]))
    145                       << (*(in_RETIRE_WRITE_RE       [i]))
    146                       << (*(in_RETIRE_NUM_REG_RD_LOG [i]))
    147                       << (*(in_RETIRE_NUM_REG_RE_LOG [i]));
    148           }
    149 
    150         for (uint32_t i=0; i<_param->_nb_front_end; ++i)
    151           for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
    152             sensitive << (*(in_RETIRE_EVENT_VAL   [i][j]))
    153                       << (*(in_RETIRE_EVENT_STATE [i][j]));
    154        
    155165# ifdef SYSTEMCASS_SPECIFIC
    156166        // List dependency information
  • 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

    r122 r139  
    6161      ALLOC1_INTERFACE_BEGIN("rename",IN,EAST,_("Input to rename source logical register"), _param->_nb_inst_insert);
    6262
    63       ALLOC1_VALACK_IN ( in_RENAME_VAL               , VAL);
    64       ALLOC1_VALACK_OUT(out_RENAME_ACK               , ACK);
    65       ALLOC1_SIGNAL_IN ( in_RENAME_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id);
    66       ALLOC1_SIGNAL_IN ( in_RENAME_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id  );
    67       ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RA_LOG    ,"num_reg_ra_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
    68       ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RB_LOG    ,"num_reg_rb_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
    69       ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RC_LOG    ,"num_reg_rc_log"    ,Tspecial_address_t,_param->_size_special_register_logic);
    70       ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RD_LOG    ,"num_reg_rd_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
    71       ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RE_LOG    ,"num_reg_re_log"    ,Tspecial_address_t,_param->_size_special_register_logic);
    72       ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RA_PHY    ,"num_reg_ra_phy"    ,Tgeneral_address_t,_param->_size_general_register);
    73       ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RB_PHY    ,"num_reg_rb_phy"    ,Tgeneral_address_t,_param->_size_general_register);
    74       ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RC_PHY    ,"num_reg_rc_phy"    ,Tspecial_address_t,_param->_size_special_register);
    75       ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register);
    76       ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
     63      ALLOC1_VALACK_IN      ( in_RENAME_VAL               , VAL);
     64      ALLOC1_VALACK_OUT     (out_RENAME_ACK               , ACK);
     65      ALLOC1_SIGNAL_IN      ( in_RENAME_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id);
     66      ALLOC1_SIGNAL_IN      ( in_RENAME_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id  );
     67      ALLOC1_SIGNAL_IN_COND ( in_RENAME_DEPTH             ,"depth"             ,Tdepth_t          ,_param->_size_depth,_param->_rat_scheme == RAT_DEPTH_SAVE);
     68      ALLOC1_SIGNAL_IN      ( in_RENAME_SAVE_RAT          ,"save_rat"          ,Tcontrol_t        ,1);
     69      ALLOC1_SIGNAL_IN      ( in_RENAME_NUM_REG_RA_LOG    ,"num_reg_ra_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
     70      ALLOC1_SIGNAL_IN      ( in_RENAME_NUM_REG_RB_LOG    ,"num_reg_rb_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
     71      ALLOC1_SIGNAL_IN      ( in_RENAME_NUM_REG_RC_LOG    ,"num_reg_rc_log"    ,Tspecial_address_t,_param->_size_special_register_logic);
     72      ALLOC1_SIGNAL_IN      ( in_RENAME_NUM_REG_RD_LOG    ,"num_reg_rd_log"    ,Tgeneral_address_t,_param->_size_general_register_logic);
     73      ALLOC1_SIGNAL_IN      ( in_RENAME_NUM_REG_RE_LOG    ,"num_reg_re_log"    ,Tspecial_address_t,_param->_size_special_register_logic);
     74      ALLOC1_SIGNAL_OUT     (out_RENAME_NUM_REG_RA_PHY    ,"num_reg_ra_phy"    ,Tgeneral_address_t,_param->_size_general_register);
     75      ALLOC1_SIGNAL_OUT     (out_RENAME_NUM_REG_RB_PHY    ,"num_reg_rb_phy"    ,Tgeneral_address_t,_param->_size_general_register);
     76      ALLOC1_SIGNAL_OUT     (out_RENAME_NUM_REG_RC_PHY    ,"num_reg_rc_phy"    ,Tspecial_address_t,_param->_size_special_register);
     77      ALLOC1_SIGNAL_OUT     (out_RENAME_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register);
     78      ALLOC1_SIGNAL_OUT     (out_RENAME_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
    7779
    7880      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
     
    111113      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_NEW,"num_reg_rd_phy_new",Tgeneral_address_t,_param->_size_general_register);
    112114      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register);
    113       ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t        ,1);
    114       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);
     115      ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE           ,"restore"           ,Tcontrol_t        ,1);
    116116
    117117      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
     
    122122      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
    123123
    124       _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL        ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
    125       _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK        ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
    126       _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE      ,"state"             ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     124      _ALLOC2_VALACK_IN      ( in_RETIRE_EVENT_VAL        ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     125      _ALLOC2_VALACK_OUT     (out_RETIRE_EVENT_ACK        ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
     126      _ALLOC2_SIGNAL_IN      ( in_RETIRE_EVENT_STATE      ,"state"             ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     127      _ALLOC2_SIGNAL_IN_COND ( in_RETIRE_EVENT_TYPE       ,"type"              ,Tevent_type_t     ,_param->_size_event_type , _param->_nb_front_end, _param->_nb_context[it1],_param->_rat_scheme == RAT_DEPTH_SAVE);
     128      _ALLOC2_SIGNAL_IN_COND ( in_RETIRE_EVENT_DEPTH      ,"depth"             ,Tdepth_t          ,_param->_size_depth      , _param->_nb_front_end, _param->_nb_context[it1],_param->_rat_scheme == RAT_DEPTH_SAVE);
    127129
    128130      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
     
    132134      {
    133135    ALLOC1(internal_RENAME_ACK       ,Tcontrol_t,_param->_nb_inst_insert);
     136    ALLOC1(internal_RENAME_SAVE      ,Tcontrol_t,_param->_nb_inst_insert);
    134137    ALLOC1(internal_INSERT_ACK       ,Tcontrol_t,_param->_nb_inst_insert);
    135138    ALLOC1(internal_RETIRE_ACK       ,Tcontrol_t,_param->_nb_inst_retire);
    136139    ALLOC2(internal_RETIRE_EVENT_ACK ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]);
    137140
    138     ALLOC3(rat_gpr_not_speculative  ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
    139141    ALLOC3(rat_gpr_speculative      ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
    140     ALLOC3(rat_gpr_speculative_valid,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
    141     ALLOC3(rat_gpr_update_table     ,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     142    ALLOC3(rat_spr_speculative      ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     143
     144    switch(_param->_rat_scheme)
     145      {
     146      case RAT_NO_SAVE    :
     147        {
     148          break;
     149        }
     150      case RAT_ONE_SAVE   :
     151        {
     152          ALLOC3(rat_gpr_not_speculative  ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     153          ALLOC3(rat_gpr_speculative_valid,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     154
     155          ALLOC3(rat_spr_not_speculative  ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     156          ALLOC3(rat_spr_speculative_valid,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     157         
     158          break;
     159        }
     160      case RAT_DEPTH_SAVE :
     161        {
     162          ALLOC4(rat_gpr_save             ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_branch_speculated[it1][it2],_param->_nb_general_register_logic);
     163          ALLOC4(rat_spr_save             ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_branch_speculated[it1][it2],_param->_nb_special_register_logic);
     164          ALLOC2(rat_depth                ,Tdepth_t          ,_param->_nb_front_end,_param->_nb_context[it1]);
    142165   
    143     ALLOC3(rat_spr_not_speculative  ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    144     ALLOC3(rat_spr_speculative      ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    145     ALLOC3(rat_spr_speculative_valid,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    146     ALLOC3(rat_spr_update_table     ,bool              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    147 
    148     ALLOC3(internal_rat_gpr_update_table,bool, _param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
    149     ALLOC3(internal_rat_spr_update_table,bool, _param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    150 
    151     ALLOC1(internal_RETIRE_RESTORE           ,Tcontrol_t,_param->_nb_inst_retire);
    152     ALLOC1(internal_RETIRE_RESTORE_RD_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire);
    153     ALLOC1(internal_RETIRE_RESTORE_RE_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire);
     166          break;
     167        }
     168      }
    154169      }
    155170
  • 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_constant.cpp

    r131 r139  
    2626    log_function(Register_Address_Translation_unit,FUNCTION,_name.c_str());
    2727
    28         // Constant : accepted already transaction
    29         for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    30           {
    31             internal_RENAME_ACK [i] = 1;
    32             internal_INSERT_ACK [i] = 1;
    33 
    34             PORT_WRITE(out_RENAME_ACK[i],internal_RENAME_ACK [i]);
    35             PORT_WRITE(out_INSERT_ACK[i],internal_INSERT_ACK [i]);
    36           }
    37 
    38         for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
    39           {
    40             internal_RETIRE_ACK [i] = 1;
    41 
    42             PORT_WRITE(out_RETIRE_ACK[i],internal_RETIRE_ACK [i]);
    43           }
    44 
    45         for (uint32_t i=0; i<_param->_nb_front_end; ++i)
    46           for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
    47             {
    48               internal_RETIRE_EVENT_ACK [i][j] = 1;
    49              
    50               PORT_WRITE(out_RETIRE_EVENT_ACK[i][j],internal_RETIRE_EVENT_ACK [i][j]);
    51             }
     28    (this->*function_constant) ();
    5229
    5330    log_end(Register_Address_Translation_unit,FUNCTION);
  • 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

    r122 r139  
    3030        delete     in_NRESET;
    3131
    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);
    46 
    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);
    57 
    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_NEW,_param->_nb_inst_retire,_param->_size_general_register);
    67         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW,_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);
     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_COND( in_RENAME_DEPTH             ,_param->_nb_inst_insert,_param->_size_depth,_param->_rat_scheme == RAT_DEPTH_SAVE);
     37        DELETE1_SIGNAL     ( in_RENAME_SAVE_RAT          ,_param->_nb_inst_insert,1);
     38        DELETE1_SIGNAL     ( in_RENAME_NUM_REG_RA_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     39        DELETE1_SIGNAL     ( in_RENAME_NUM_REG_RB_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     40        DELETE1_SIGNAL     ( in_RENAME_NUM_REG_RC_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     41        DELETE1_SIGNAL     ( in_RENAME_NUM_REG_RD_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     42        DELETE1_SIGNAL     ( in_RENAME_NUM_REG_RE_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     43        DELETE1_SIGNAL     (out_RENAME_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register);
     44        DELETE1_SIGNAL     (out_RENAME_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register);
     45        DELETE1_SIGNAL     (out_RENAME_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register);
     46        DELETE1_SIGNAL     (out_RENAME_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register);
     47        DELETE1_SIGNAL     (out_RENAME_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register);
     48                           
     49        DELETE1_SIGNAL     ( in_INSERT_VAL           ,_param->_nb_inst_insert,1);
     50        DELETE1_SIGNAL     (out_INSERT_ACK           ,_param->_nb_inst_insert,1);
     51//      DELETE1_SIGNAL     ( in_INSERT_FRONT_END_ID  ,_param->_nb_inst_insert,_param->_size_front_end_id);
     52//      DELETE1_SIGNAL     ( in_INSERT_CONTEXT_ID    ,_param->_nb_inst_insert,_param->_size_context_id  );
     53        DELETE1_SIGNAL     ( in_INSERT_WRITE_RD      ,_param->_nb_inst_insert,1);
     54        DELETE1_SIGNAL     ( in_INSERT_WRITE_RE      ,_param->_nb_inst_insert,1);
     55        DELETE1_SIGNAL     ( in_INSERT_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     56        DELETE1_SIGNAL     ( in_INSERT_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic);
     57        DELETE1_SIGNAL     ( in_INSERT_NUM_REG_RD_PHY,_param->_nb_inst_insert,_param->_size_general_register);
     58        DELETE1_SIGNAL     ( in_INSERT_NUM_REG_RE_PHY,_param->_nb_inst_insert,_param->_size_special_register);
     59                           
     60        DELETE1_SIGNAL     ( in_RETIRE_VAL               ,_param->_nb_inst_retire,1);
     61        DELETE1_SIGNAL     (out_RETIRE_ACK               ,_param->_nb_inst_retire,1);
     62        DELETE1_SIGNAL     ( in_RETIRE_FRONT_END_ID      ,_param->_nb_inst_retire,_param->_size_front_end_id);
     63        DELETE1_SIGNAL     ( in_RETIRE_CONTEXT_ID        ,_param->_nb_inst_retire,_param->_size_context_id  );
     64        DELETE1_SIGNAL     ( in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire,1);
     65        DELETE1_SIGNAL     ( in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire,1);
     66        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RD_LOG    ,_param->_nb_inst_retire,_param->_size_general_register_logic);
     67        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RE_LOG    ,_param->_nb_inst_retire,_param->_size_special_register_logic);
     68        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register);
     69        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register);
     70        DELETE1_SIGNAL     ( in_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);
     75        DELETE2_SIGNAL_COND( in_RETIRE_EVENT_TYPE           ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_type,_param->_rat_scheme == RAT_DEPTH_SAVE);
     76        DELETE2_SIGNAL_COND( in_RETIRE_EVENT_DEPTH          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_depth     ,_param->_rat_scheme == RAT_DEPTH_SAVE);
    7577
    7678        DELETE1(internal_RENAME_ACK                    ,_param->_nb_inst_insert);
     79        DELETE1(internal_RENAME_SAVE                   ,_param->_nb_inst_insert);
    7780        DELETE1(internal_INSERT_ACK                    ,_param->_nb_inst_insert);
    7881        DELETE1(internal_RETIRE_ACK                    ,_param->_nb_inst_retire);
    7982        DELETE2(internal_RETIRE_EVENT_ACK              ,_param->_nb_front_end,_param->_nb_context[it1]);
    8083
    81         DELETE3(rat_gpr_not_speculative      ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
    8284        DELETE3(rat_gpr_speculative          ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
    83         DELETE3(rat_gpr_speculative_valid    ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
    84         DELETE3(rat_gpr_update_table         ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     85        DELETE3(rat_spr_speculative          ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    8586
    86         DELETE3(rat_spr_not_speculative      ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    87         DELETE3(rat_spr_speculative          ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    88         DELETE3(rat_spr_speculative_valid    ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    89         DELETE3(rat_spr_update_table         ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     87        switch(_param->_rat_scheme)
     88          {
     89          case RAT_NO_SAVE    :
     90            {
     91              break;
     92            }
     93          case RAT_ONE_SAVE   :
     94            {
     95              DELETE3(rat_gpr_not_speculative      ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     96              DELETE3(rat_gpr_speculative_valid    ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     97             
     98              DELETE3(rat_spr_not_speculative      ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     99              DELETE3(rat_spr_speculative_valid    ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     100             
     101              break;
     102            }
     103          case RAT_DEPTH_SAVE :
     104            {
     105              DELETE4(rat_gpr_save                 ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_branch_speculated[it1][it2],_param->_nb_general_register_logic);
     106              DELETE4(rat_spr_save                 ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_branch_speculated[it1][it2],_param->_nb_special_register_logic);
     107              DELETE2(rat_depth                    ,_param->_nb_front_end,_param->_nb_context[it1]);
    90108
    91         DELETE3(internal_rat_gpr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
    92         DELETE3(internal_rat_spr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    93        
    94         DELETE1(internal_RETIRE_RESTORE           ,_param->_nb_inst_retire);
    95         DELETE1(internal_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
    96         DELETE1(internal_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire);
     109              break;
     110            }
     111          }
    97112      }
    98113
  • 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_function_one_save_genMealy_rename.cpp

    r137 r139  
    2020
    2121#undef  FUNCTION
    22 #define FUNCTION "Register_Address_Translation_unit::genMealy_rename"
    23   void Register_Address_Translation_unit::genMealy_rename (void)
     22#define FUNCTION "Register_Address_Translation_unit::function_one_save_genMealy_rename"
     23  void Register_Address_Translation_unit::function_one_save_genMealy_rename (void)
    2424  {
    2525    log_begin(Register_Address_Translation_unit,FUNCTION);
  • 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_function_one_save_transition.cpp

    r137 r139  
    2020
    2121#undef  FUNCTION
    22 #define FUNCTION "Register_Address_Translation_unit::transition"
    23   void Register_Address_Translation_unit::transition (void)
     22#define FUNCTION "Register_Address_Translation_unit::function_one_save_transition"
     23  void Register_Address_Translation_unit::function_one_save_transition (void)
    2424  {
    2525    log_begin(Register_Address_Translation_unit,FUNCTION);
     
    3737              rat_gpr_speculative_valid [i][j][0] = false;
    3838              rat_gpr_speculative       [i][j][0] = 0    ; // not necessary
    39               rat_gpr_update_table      [i][j][0] = false; // not necessary
    4039
    4140              for (uint32_t k=1; k<_param->_nb_general_register_logic; k++)
     
    4443                  rat_gpr_speculative_valid  [i][j][k] = false;
    4544                  rat_gpr_speculative        [i][j][k] = 0    ; // not necessary
    46                   rat_gpr_update_table       [i][j][k] = false; // not necessary
    4745                }
    4846              for (uint32_t k=0; k<_param->_nb_special_register_logic; k++)
     
    5149                  rat_spr_speculative_valid  [i][j][k] = false;
    5250                  rat_spr_speculative        [i][j][k] = 0    ; // not necessary
    53                   rat_spr_update_table       [i][j][k] = false; // not necessary
    5451                }
    5552            }
     
    7067                  log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * Reset Update Table");
    7168                 
    72                   // Reset update_table and validity table
     69                  // Reset validity table
    7370                  for (uint32_t k=0; k<_param->_nb_general_register_logic; k++)
    74                     {
    75                       rat_gpr_update_table      [i][j][k] = false;
    76                       rat_gpr_speculative_valid [i][j][k] = false;
    77                     }
     71                    rat_gpr_speculative_valid [i][j][k] = false;
    7872                  for (uint32_t k=0; k<_param->_nb_special_register_logic; k++)
    79                     {
    80                       rat_spr_update_table      [i][j][k] = false;
    81                       rat_spr_speculative_valid [i][j][k] = false;
    82                     }
     73                    rat_spr_speculative_valid [i][j][k] = false;
    8374                }
    8475
     
    149140              Tcontrol_t write_rd     = PORT_READ(in_RETIRE_WRITE_RD [i]);
    150141              Tcontrol_t write_re     = PORT_READ(in_RETIRE_WRITE_RE [i]);
    151               Tcontrol_t restore      = internal_RETIRE_RESTORE [i];
     142              Tcontrol_t restore      = PORT_READ(in_RETIRE_RESTORE  [i]);
    152143
    153144              log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * front_end_id       : %d",front_end_id);
     
    157148              // Test if write and have not a previous update
    158149              log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * write_rd           : %d",write_rd);
    159               if (PORT_READ(in_RETIRE_WRITE_RD [i]) == 1)
     150              if (write_rd == 1)
    160151                {
    161152                  Tgeneral_address_t num_reg_rd_log     = PORT_READ(in_RETIRE_NUM_REG_RD_LOG     [i]);
     
    171162                  rat_gpr_not_speculative [front_end_id][context_id][num_reg_rd_log] = num_reg_rd_phy_new;
    172163                    }
    173 
    174                   Tcontrol_t         restore_rd         = internal_RETIRE_RESTORE_RD_PHY_OLD [i];
    175                   log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * restore_rd         : %d",restore_rd        );
    176                      
    177                   if (restore_rd)
    178                   rat_gpr_update_table    [front_end_id][context_id][num_reg_rd_log] = true;
    179164                }
    180165
    181166              log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * write_re           : %d",write_re);
    182               if (PORT_READ(in_RETIRE_WRITE_RE [i]) == 1)
     167              if (write_re == 1)
    183168                {
    184169                  Tspecial_address_t num_reg_re_log     = PORT_READ(in_RETIRE_NUM_REG_RE_LOG     [i]);
     
    194179                  rat_spr_not_speculative [front_end_id][context_id][num_reg_re_log] = num_reg_re_phy_new;
    195180                    }
    196 
    197                   Tcontrol_t         restore_re         = internal_RETIRE_RESTORE_RE_PHY_OLD [i];
    198                   log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * restore_re         : %d",restore_re        );
    199                      
    200                   if (restore_re)
    201                   rat_spr_update_table    [front_end_id][context_id][num_reg_re_log] = true;
    202181                }
    203182
     
    224203                      break;
    225204                    else
    226                       str+=toString("GPR[%.4d] - %.1d %.5d (%.5d) %.1d | ",index,rat_gpr_speculative_valid [i][j][index],rat_gpr_speculative [i][j][index],rat_gpr_not_speculative [i][j][index],rat_gpr_update_table[i][j][index]);
     205                      str+=toString("GPR[%.4d] - %.1d %.5d (%.5d) | ",index,rat_gpr_speculative_valid [i][j][index],rat_gpr_speculative [i][j][index],rat_gpr_not_speculative [i][j][index]);
    227206                  }
    228207                log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * %s",str.c_str());
     
    239218                      break;
    240219                    else
    241                       str+=toString("SPR[%.4d] - %.1d %.5d (%.5d) %.1d | ",index,rat_spr_speculative_valid [i][j][index],rat_spr_speculative [i][j][index],rat_spr_not_speculative [i][j][index],rat_spr_update_table[i][j][index]);
     220                      str+=toString("SPR[%.4d] - %.1d %.5d (%.5d) | ",index,rat_spr_speculative_valid [i][j][index],rat_spr_speculative [i][j][index],rat_spr_not_speculative [i][j][index]);
    242221                  }
    243222                log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * %s",str.c_str());
     
    281260#endif
    282261
    283 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    284     end_cycle ();
    285 #endif
    286 
    287262    log_end(Register_Address_Translation_unit,FUNCTION);
    288263  };
  • 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

    r123 r139  
    9494          log_printf(TRACE,Stat_List_unit,FUNCTION,"  * nb_spr_free : stat_list %d - free_list %d - free %d, link %d (%d), use %d (%d)",stat_list_nb_spr_free,free_list_nb_spr_free,nb_spr_free,nb_spr_link,stat_list_nb_spr_link,nb_spr_use,stat_list_nb_spr_use);
    9595
    96           if (free_list_nb_gpr_free != stat_list_nb_gpr_free)
    97             throw ERRORMORPHEO(FUNCTION,toString(_("Number of free general register is not valid. %d in Stat_List and %d in Free_list.\n"),stat_list_nb_gpr_free,free_list_nb_gpr_free));
    98           if (free_list_nb_spr_free != stat_list_nb_spr_free)
    99             throw ERRORMORPHEO(FUNCTION,toString(_("Number of free general register is not valid. %d in Stat_List and %d in Free_list.\n"),stat_list_nb_spr_free,free_list_nb_spr_free));
    100 
    101           if (PORT_READ(in_INFO_ROB_EMPTY) and (nb_gpr_free != _nb_gpr_free))
    102             throw ERRORMORPHEO(FUNCTION,toString(_("Rob is empty but they have %d general registers free or can_free and must be %d registers."),nb_gpr_free,_nb_gpr_free));
    103 
    104           if (PORT_READ(in_INFO_ROB_EMPTY) and (nb_spr_free != _nb_spr_free))
    105             throw ERRORMORPHEO(FUNCTION,toString(_("Rob is empty but they have %d special registers free or can_free and must be %d registers."),nb_spr_free,_nb_spr_free));
     96          bool error_nb_gpr_free     = (free_list_nb_gpr_free != stat_list_nb_gpr_free);
     97          bool error_nb_spr_free     = (free_list_nb_spr_free != stat_list_nb_spr_free);
     98          bool error_rob_nb_gpr_free = (PORT_READ(in_INFO_ROB_EMPTY) and (nb_gpr_free != _nb_gpr_free));
     99          bool error_rob_nb_spr_free = (PORT_READ(in_INFO_ROB_EMPTY) and (nb_spr_free != _nb_spr_free));
     100
     101          std::string list_gpr_not_free;
     102          std::string list_spr_not_free;
     103
     104
     105          if (error_nb_gpr_free or
     106              error_rob_nb_gpr_free)
     107            for (uint32_t i=0; i<_param->_nb_bank; i++)
     108              for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
     109                if (not gpr_stat_list [i][j]._is_free)
     110                  list_gpr_not_free+=toString((i<<_param->_shift_gpr)|j)+" ";   
     111
     112          if (error_nb_spr_free or
     113              error_rob_nb_spr_free)
     114            for (uint32_t i=0; i<_param->_nb_bank; i++)
     115              for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
     116                if (not spr_stat_list [i][j]._is_free)
     117                  list_spr_not_free+=toString((i<<_param->_shift_spr)|j)+" ";   
     118
     119          if (error_nb_gpr_free)
     120            throw ERRORMORPHEO(FUNCTION,toString(_("Number of free general register is not valid. %d in Stat_List and %d in Free_list. (GPR not free : %s)\n"),stat_list_nb_gpr_free,free_list_nb_gpr_free,list_gpr_not_free.c_str()));
     121          if (error_nb_spr_free)
     122            throw ERRORMORPHEO(FUNCTION,toString(_("Number of free general register is not valid. %d in Stat_List and %d in Free_list. (SPR not free : %s)\n"),stat_list_nb_spr_free,free_list_nb_spr_free,list_spr_not_free.c_str()));
     123          if (error_rob_nb_gpr_free)
     124            throw ERRORMORPHEO(FUNCTION,toString(_("Rob is empty but they have %d general registers free or can_free and must be %d registers. (GPR not free : %s)"),nb_gpr_free,_nb_gpr_free,list_gpr_not_free.c_str()));
     125
     126          if (error_rob_nb_spr_free)
     127            throw ERRORMORPHEO(FUNCTION,toString(_("Rob is empty but they have %d special registers free or can_free and must be %d registers. (SPR not free : %s)"),nb_spr_free,_nb_spr_free,list_gpr_not_free.c_str()));
    106128        }
    107129#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Parameters.h

    r112 r139  
    3030  {
    3131    //-----[ fields ]------------------------------------------------------------
    32   public : uint32_t   _nb_front_end          ;
    33   public : uint32_t * _nb_context            ;//[nb_front_end]
    34   public : uint32_t   _nb_general_register   ;
    35   public : uint32_t   _nb_special_register   ;
    36   public : uint32_t   _nb_inst_insert        ;
    37   public : uint32_t   _nb_inst_retire        ;
    38   public : uint32_t   _nb_reg_free           ;
    39   public : uint32_t   _nb_bank               ;
    40 //public : uint32_t   _size_read_counter     ;
    41 
    42 //public : uint32_t   _size_front_end_id     ;
    43 //public : uint32_t   _size_context_id       ;
    44 //public : uint32_t   _size_general_register ;
    45 //public : uint32_t   _size_special_register ;
    46                      
    47 //public : uint32_t   _have_port_context_id  ;
    48 //public : uint32_t   _have_port_front_end_id;
     32  public : uint32_t         _nb_front_end          ;
     33  public : uint32_t       * _nb_context            ;//[nb_front_end]
     34  public : uint32_t         _nb_general_register   ;
     35  public : uint32_t         _nb_special_register   ;
     36  public : Trat_scheme_t    _rat_scheme            ;
     37  public : uint32_t         _nb_inst_insert        ;
     38  public : uint32_t         _nb_inst_retire        ;
     39  public : uint32_t         _nb_reg_free           ;
     40  public : uint32_t         _nb_bank               ;
     41//public : uint32_t         _size_read_counter     ;
     42  public : uint32_t      ** _nb_branch_speculated  ;//[nb_front_end][nb_context]
     43                         
     44//public : uint32_t         _size_front_end_id     ;
     45//public : uint32_t         _size_context_id       ;
     46//public : uint32_t         _size_general_register ;
     47//public : uint32_t         _size_special_register ;
     48                           
     49//public : uint32_t         _have_port_context_id  ;
     50//public : uint32_t         _have_port_front_end_id;
    4951
    5052  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::dependency_checking_unit::         Parameters * _param_dependency_checking_unit;
     
    5456  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::   Parameters * _param_register_translation_unit_glue;   
    5557    //-----[ methods ]-----------------------------------------------------------
    56   public : Parameters  (uint32_t   nb_front_end          ,
    57                         uint32_t * nb_context            ,
    58                         uint32_t   nb_general_register   ,
    59                         uint32_t   nb_special_register   ,
    60                         uint32_t   nb_inst_insert        ,
    61                         uint32_t   nb_inst_retire        ,
    62                         uint32_t   nb_reg_free           ,
    63                         uint32_t   nb_bank               ,
    64 //                      uint32_t   size_read_counter     ,
    65                         bool       is_toplevel=false);
     58  public : Parameters  (uint32_t         nb_front_end        ,
     59                        uint32_t       * nb_context          ,
     60                        uint32_t         nb_general_register ,
     61                        uint32_t         nb_special_register ,
     62                        Trat_scheme_t    rat_scheme          ,//[nb_front_end]
     63                        uint32_t         nb_inst_insert      ,
     64                        uint32_t         nb_inst_retire      ,
     65                        uint32_t         nb_reg_free         ,
     66                        uint32_t         nb_bank             ,
     67//                      uint32_t         size_read_counter   ,
     68                        uint32_t      ** nb_branch_speculated,//[nb_front_end][nb_context]
     69                        bool             is_toplevel=false);
    6670//   public : Parameters  (Parameters & param) ;
    6771  public : ~Parameters () ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Register_translation_unit.h

    r137 r139  
    7272  public    : SC_IN (Tcontext_t        )   **  in_RENAME_FRONT_END_ID      ;//[nb_inst_insert]
    7373  public    : SC_IN (Tcontext_t        )   **  in_RENAME_CONTEXT_ID        ;//[nb_inst_insert]
     74  public    : SC_IN (Tdepth_t          )   **  in_RENAME_DEPTH             ;//[nb_inst_insert]
     75  public    : SC_IN (Tcontrol_t        )   **  in_RENAME_SAVE_RAT          ;//[nb_inst_insert]
    7476  public    : SC_IN (Tcontrol_t        )   **  in_RENAME_READ_RA           ;//[nb_inst_insert]
    7577  public    : SC_IN (Tgeneral_address_t)   **  in_RENAME_NUM_REG_RA_LOG    ;//[nb_inst_insert]
     
    117119  public    : SC_IN (Tcontext_t        )   **  in_RETIRE_FRONT_END_ID      ;//[nb_inst_retire]
    118120  public    : SC_IN (Tcontext_t        )   **  in_RETIRE_CONTEXT_ID        ;//[nb_inst_retire]
    119 //   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RA           ;//[nb_inst_retire]
    120 //   public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RA_PHY    ;//[nb_inst_retire]
    121 //   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RB           ;//[nb_inst_retire]
    122 //   public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RB_PHY    ;//[nb_inst_retire]
    123 //   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RC           ;//[nb_inst_retire]
    124 //   public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RC_PHY    ;//[nb_inst_retire]
     121//public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RA           ;//[nb_inst_retire]
     122//public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RA_PHY    ;//[nb_inst_retire]
     123//public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RB           ;//[nb_inst_retire]
     124//public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RB_PHY    ;//[nb_inst_retire]
     125//public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RC           ;//[nb_inst_retire]
     126//public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RC_PHY    ;//[nb_inst_retire]
    125127  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RD          ;//[nb_inst_retire]
    126128  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_LOG    ;//[nb_inst_retire]
     
    131133  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_OLD;//[nb_inst_retire]
    132134  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_NEW;//[nb_inst_retire]
     135  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE           ;//[nb_inst_retire]
     136  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
     137  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
    133138
    134139    // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    136141  public    : SC_OUT(Tcontrol_t        )  *** out_RETIRE_EVENT_ACK         ;//[nb_front_end][nb_context]
    137142  public    : SC_IN (Tevent_state_t    )  ***  in_RETIRE_EVENT_STATE       ;//[nb_front_end][nb_context]
     143  public    : SC_IN (Tevent_type_t     )  ***  in_RETIRE_EVENT_TYPE        ;//[nb_front_end][nb_context]
     144  public    : SC_IN (Tdepth_t          )  ***  in_RETIRE_EVENT_DEPTH       ;//[nb_front_end][nb_context]
    138145
    139146    // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters.cpp

    r128 r139  
    2020#undef  FUNCTION
    2121#define FUNCTION "Register_translation_unit::Parameters"
    22   Parameters::Parameters (uint32_t   nb_front_end          ,
    23                           uint32_t * nb_context            ,
    24                           uint32_t   nb_general_register   ,
    25                           uint32_t   nb_special_register   ,
    26                           uint32_t   nb_inst_insert        ,
    27                           uint32_t   nb_inst_retire        ,
    28                           uint32_t   nb_reg_free           ,
    29                           uint32_t   nb_bank               ,
    30 //                        uint32_t   size_read_counter     ,
    31                           bool       is_toplevel)
     22  Parameters::Parameters (uint32_t         nb_front_end        ,
     23                          uint32_t       * nb_context          ,//[nb_front_end]
     24                          uint32_t         nb_general_register ,
     25                          uint32_t         nb_special_register ,
     26                          Trat_scheme_t    rat_scheme          ,
     27                          uint32_t         nb_inst_insert      ,
     28                          uint32_t         nb_inst_retire      ,
     29                          uint32_t         nb_reg_free         ,
     30                          uint32_t         nb_bank             ,
     31//                        uint32_t         size_read_counter   ,
     32                          uint32_t      ** nb_branch_speculated,//[nb_front_end][nb_context]
     33                          bool             is_toplevel)
    3234  {
    3335    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
    3436   
    35     _nb_front_end        = nb_front_end       ;
    36     _nb_context          = nb_context         ;
    37     _nb_general_register = nb_general_register;
    38     _nb_special_register = nb_special_register;
    39     _nb_inst_insert      = nb_inst_insert     ;
    40     _nb_inst_retire      = nb_inst_retire     ;
    41     _nb_reg_free         = nb_reg_free        ;
    42     _nb_bank             = nb_bank            ;
    43 //     _size_read_counter   = size_read_counter  ;
     37    _nb_front_end         = nb_front_end        ;
     38    _nb_context           = nb_context          ;
     39    _nb_general_register  = nb_general_register ;
     40    _nb_special_register  = nb_special_register ;
     41    _rat_scheme           = rat_scheme          ;
     42    _nb_inst_insert       = nb_inst_insert      ;
     43    _nb_inst_retire       = nb_inst_retire      ;
     44    _nb_reg_free          = nb_reg_free         ;
     45    _nb_bank              = nb_bank             ;
     46//  _size_read_counter    = size_read_counter   ;
     47    _nb_branch_speculated = nb_branch_speculated;
    4448
    4549    uint32_t size_general_register = log2(nb_general_register);
     
    6872
    6973    _param_register_address_translation_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Parameters
    70       (_nb_front_end       ,
    71        _nb_context         ,
    72        _nb_general_register,
    73        _nb_special_register,
    74        _nb_inst_insert     ,
    75        _nb_inst_retire     );
     74      (_nb_front_end        ,
     75       _nb_context          ,
     76       _nb_general_register ,
     77       _nb_special_register ,
     78       _rat_scheme          ,
     79       _nb_inst_insert      ,
     80       _nb_inst_retire      ,
     81       _nb_branch_speculated);
    7682
    7783    _param_stat_list_unit                    = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::stat_list_unit::Parameters
     
    99105        _size_front_end_id      = log2(nb_front_end       );
    100106        _size_context_id        = log2(max_nb_context     );
    101 
     107        _size_depth             = log2(max<uint32_t>(_nb_branch_speculated,_nb_front_end,_nb_context));
    102108        _size_general_register  = size_general_register;
    103109        _size_special_register  = size_special_register;
     
    105111        _have_port_front_end_id = _size_front_end_id>0;
    106112        _have_port_context_id   = _size_context_id  >0;
     113        _have_port_depth        = _size_depth       >0;
    107114
    108115        copy();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters_print.cpp

    r112 r139  
    2727
    2828    xml.balise_open("register_translation_unit");
    29     xml.singleton_begin("nb_front_end       "); xml.attribut("value",toString(_nb_front_end       )); xml.singleton_end();
    30     xml.singleton_begin("nb_general_register"); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end();
    31     xml.singleton_begin("nb_special_register"); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end();
    32     xml.singleton_begin("nb_inst_insert     "); xml.attribut("value",toString(_nb_inst_insert     )); xml.singleton_end();
    33     xml.singleton_begin("nb_inst_retire     "); xml.attribut("value",toString(_nb_inst_retire     )); xml.singleton_end();
    34     xml.singleton_begin("nb_reg_free        "); xml.attribut("value",toString(_nb_reg_free        )); xml.singleton_end();
    35     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();
     29    xml.singleton_begin("nb_front_end        "); xml.attribut("value",toString(_nb_front_end       )); xml.singleton_end();
     30    xml.singleton_begin("nb_general_register "); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end();
     31    xml.singleton_begin("nb_special_register "); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end();
     32    xml.singleton_begin("rat_scheme          "); xml.attribut("value",toString(_rat_scheme         )); xml.singleton_end();
     33    xml.singleton_begin("nb_inst_insert      "); xml.attribut("value",toString(_nb_inst_insert     )); xml.singleton_end();
     34    xml.singleton_begin("nb_inst_retire      "); xml.attribut("value",toString(_nb_inst_retire     )); xml.singleton_end();
     35    xml.singleton_begin("nb_reg_free         "); xml.attribut("value",toString(_nb_reg_free        )); xml.singleton_end();
     36    xml.singleton_begin("nb_bank             "); xml.attribut("value",toString(_nb_bank            )); xml.singleton_end();
     37//  xml.singleton_begin("size_read_counter   "); xml.attribut("value",toString(_size_read_counter  )); xml.singleton_end();
    3738    for (uint32_t i=0;i<_nb_front_end; i++)
    3839      {
     
    4142        xml.  attribut("id"  ,toString(i));
    4243        xml. balise_open_end();
    43         xml.  singleton_begin("nb_context         "); xml.attribut("value",toString(_nb_context [i]     )); xml.singleton_end();
     44        xml.  singleton_begin("nb_context          "); xml.attribut("value",toString(_nb_context [i]     )); xml.singleton_end();
     45
     46        for (uint32_t j=0;j<_nb_context[i]; j++)
     47          {
     48            xml. balise_open_begin("component");
     49            xml.  attribut("type","context");
     50            xml.  attribut("id"  ,toString(j));
     51            xml. balise_open_end();
     52            xml.  singleton_begin("nb_branch_speculated"); xml.attribut("value",toString(_nb_branch_speculated[i][j])); xml.singleton_end();
     53            xml. balise_close();
     54          }
     55
    4456        xml. balise_close();
    4557      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp

    r137 r139  
    6060      ALLOC1_INTERFACE_BEGIN("rename", IN, EAST, _("Instruction with logical register"), _param->_nb_inst_insert);
    6161
    62       ALLOC1_VALACK_IN ( in_RENAME_VAL           ,VAL);
    63       ALLOC1_VALACK_OUT(out_RENAME_ACK           ,ACK);
    64       ALLOC1_SIGNAL_IN ( in_RENAME_FRONT_END_ID  ,"front_end_id"  ,Tcontext_t        ,_param->_size_front_end_id          );
    65       ALLOC1_SIGNAL_IN ( in_RENAME_CONTEXT_ID    ,"context_id"    ,Tcontext_t        ,_param->_size_context_id            );
    66       ALLOC1_SIGNAL_IN ( in_RENAME_READ_RA       ,"read_ra"       ,Tcontrol_t        ,1                                   );
    67       ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RA_LOG,"num_reg_ra_log",Tgeneral_address_t,_param->_size_general_register_logic);
    68       ALLOC1_SIGNAL_IN ( in_RENAME_READ_RB       ,"read_rb"       ,Tcontrol_t        ,1                                   );
    69       ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RB_LOG,"num_reg_rb_log",Tgeneral_address_t,_param->_size_general_register_logic);
    70       ALLOC1_SIGNAL_IN ( in_RENAME_READ_RC       ,"read_rc"       ,Tcontrol_t        ,1                                   );
    71       ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RC_LOG,"num_reg_rc_log",Tspecial_address_t,_param->_size_special_register_logic);
    72       ALLOC1_SIGNAL_IN ( in_RENAME_WRITE_RD      ,"write_rd"      ,Tcontrol_t        ,1                                   );
    73       ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RD_LOG,"num_reg_rd_log",Tgeneral_address_t,_param->_size_general_register_logic);
    74       ALLOC1_SIGNAL_IN ( in_RENAME_WRITE_RE      ,"write_re"      ,Tcontrol_t        ,1                                   );
    75       ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RE_LOG,"num_reg_re_log",Tspecial_address_t,_param->_size_special_register_logic);
     62      ALLOC1_VALACK_IN      ( in_RENAME_VAL           ,VAL);
     63      ALLOC1_VALACK_OUT     (out_RENAME_ACK           ,ACK);
     64      ALLOC1_SIGNAL_IN      ( in_RENAME_FRONT_END_ID  ,"front_end_id"  ,Tcontext_t        ,_param->_size_front_end_id          );
     65      ALLOC1_SIGNAL_IN      ( in_RENAME_CONTEXT_ID    ,"context_id"    ,Tcontext_t        ,_param->_size_context_id            );
     66      ALLOC1_SIGNAL_IN_COND ( in_RENAME_DEPTH         ,"depth"         ,Tdepth_t          ,_param->_size_depth                 ,_param->_rat_scheme == RAT_DEPTH_SAVE);
     67      ALLOC1_SIGNAL_IN      ( in_RENAME_SAVE_RAT      ,"save_rat"      ,Tcontrol_t        ,1                                   );
     68      ALLOC1_SIGNAL_IN      ( in_RENAME_READ_RA       ,"read_ra"       ,Tcontrol_t        ,1                                   );
     69      ALLOC1_SIGNAL_IN      ( in_RENAME_NUM_REG_RA_LOG,"num_reg_ra_log",Tgeneral_address_t,_param->_size_general_register_logic);
     70      ALLOC1_SIGNAL_IN      ( in_RENAME_READ_RB       ,"read_rb"       ,Tcontrol_t        ,1                                   );
     71      ALLOC1_SIGNAL_IN      ( in_RENAME_NUM_REG_RB_LOG,"num_reg_rb_log",Tgeneral_address_t,_param->_size_general_register_logic);
     72      ALLOC1_SIGNAL_IN      ( in_RENAME_READ_RC       ,"read_rc"       ,Tcontrol_t        ,1                                   );
     73      ALLOC1_SIGNAL_IN      ( in_RENAME_NUM_REG_RC_LOG,"num_reg_rc_log",Tspecial_address_t,_param->_size_special_register_logic);
     74      ALLOC1_SIGNAL_IN      ( in_RENAME_WRITE_RD      ,"write_rd"      ,Tcontrol_t        ,1                                   );
     75      ALLOC1_SIGNAL_IN      ( in_RENAME_NUM_REG_RD_LOG,"num_reg_rd_log",Tgeneral_address_t,_param->_size_general_register_logic);
     76      ALLOC1_SIGNAL_IN      ( in_RENAME_WRITE_RE      ,"write_re"      ,Tcontrol_t        ,1                                   );
     77      ALLOC1_SIGNAL_IN      ( in_RENAME_NUM_REG_RE_LOG,"num_reg_re_log",Tspecial_address_t,_param->_size_special_register_logic);
    7678
    7779      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
     
    135137      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register      );
    136138      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
     139      ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE           ,"restore"           ,Tcontrol_t        ,1                                   );
     140      ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t        ,1                                   );
     141      ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RE_PHY_OLD,"restore_re_phy_old",Tcontrol_t        ,1                                   );
    137142
    138143      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
     
    143148      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
    144149
    145       _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
    146       _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK           ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
    147       _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE      ,"state"             ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     150      _ALLOC2_VALACK_IN      ( in_RETIRE_EVENT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     151      _ALLOC2_VALACK_OUT     (out_RETIRE_EVENT_ACK           ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
     152      _ALLOC2_SIGNAL_IN      ( in_RETIRE_EVENT_STATE      ,"state"             ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     153      _ALLOC2_SIGNAL_IN_COND ( in_RETIRE_EVENT_TYPE       ,"type"              ,Tevent_type_t     ,_param->_size_event_type , _param->_nb_front_end, _param->_nb_context[it1],_param->_rat_scheme == RAT_DEPTH_SAVE);
     154      _ALLOC2_SIGNAL_IN_COND ( in_RETIRE_EVENT_DEPTH      ,"depth"             ,Tdepth_t          ,_param->_size_depth      , _param->_nb_front_end, _param->_nb_context[it1],_param->_rat_scheme == RAT_DEPTH_SAVE);
    148155
    149156      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
     
    295302          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_CONTEXT_ID"        ,
    296303                              dest, "in_RENAME_"+toString(i)+"_CONTEXT_ID"        );
     304          if (_param->_have_port_depth and (_param->_rat_scheme == RAT_DEPTH_SAVE))
     305          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_DEPTH"             ,
     306                              dest, "in_RENAME_"+toString(i)+"_DEPTH"             );
     307          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_SAVE_RAT"          ,
     308                              dest, "in_RENAME_"+toString(i)+"_SAVE_RAT"          );
    297309          PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    ,
    298310                              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    );
     
    376388          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
    377389                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
     390          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RESTORE"           ,
     391                              dest, "in_RETIRE_"+toString(i)+"_RESTORE"           );
    378392
    379393          dest = _name+"_register_translation_unit_glue";
     
    383397                                   dest, "in_RETIRE_"+toString(i)+"_RAT_ACK"      );
    384398
    385           dest = _name+"_stat_list_unit";
    386           COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD",
    387                                    dest, "in_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD");
    388           COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD",
    389                                    dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD");
    390           COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE"           ,
    391                                    dest, "in_RETIRE_"+toString(i)+"_RESTORE"           );
     399          // dest = _name+"_stat_list_unit";
     400          // COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD",
     401          //                          dest, "in_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD");
     402          // COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD",
     403          //                          dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD");
     404          // COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE"           ,
     405          //                          dest, "in_RETIRE_"+toString(i)+"_RESTORE"           );
    392406        }
    393407
     
    407421            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE",
    408422                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE");
     423            if (_param->_rat_scheme == RAT_DEPTH_SAVE)
     424              {
     425            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_TYPE" ,
     426                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_TYPE" );
     427            if (_param->_have_port_depth)
     428            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_DEPTH",
     429                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_DEPTH");
     430              }
    409431          }
    410432    }
     
    717739          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
    718740                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
    719 
    720           // in_RETIRE_RESTORE_RD_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RD_PHY_OLD
    721           // in_RETIRE_RESTORE_RE_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RE_PHY_OLD
    722           // in_RETIRE_RESTORE            - register_address_translation_unit.out_RETIRE_RESTORE           
     741          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RESTORE",
     742                              dest, "in_RETIRE_"+toString(i)+"_RESTORE");
     743          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD",
     744                              dest, "in_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD");
     745          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD",
     746                              dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD");
    723747
    724748          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

    r137 r139  
    2929        delete    in_NRESET;
    3030
    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);
     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_COND( in_RENAME_DEPTH         ,_param->_nb_inst_insert,_param->_size_depth                 ,_param->_rat_scheme == RAT_DEPTH_SAVE);
     36        DELETE1_SIGNAL     ( in_RENAME_SAVE_RAT      ,_param->_nb_inst_insert,1                                   );
     37        DELETE1_SIGNAL     ( in_RENAME_READ_RA       ,_param->_nb_inst_insert,1                                   );
     38        DELETE1_SIGNAL     ( in_RENAME_NUM_REG_RA_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     39        DELETE1_SIGNAL     ( in_RENAME_READ_RB       ,_param->_nb_inst_insert,1                                   );
     40        DELETE1_SIGNAL     ( in_RENAME_NUM_REG_RB_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     41        DELETE1_SIGNAL     ( in_RENAME_READ_RC       ,_param->_nb_inst_insert,1                                   );
     42        DELETE1_SIGNAL     ( in_RENAME_NUM_REG_RC_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic);
     43        DELETE1_SIGNAL     ( in_RENAME_WRITE_RD      ,_param->_nb_inst_insert,1                                   );
     44        DELETE1_SIGNAL     ( in_RENAME_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic);
     45        DELETE1_SIGNAL     ( in_RENAME_WRITE_RE      ,_param->_nb_inst_insert,1                                   );
     46        DELETE1_SIGNAL     ( in_RENAME_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic);
     47                           
     48        DELETE1_SIGNAL     (out_INSERT_VAL               ,_param->_nb_inst_insert,1);
     49        DELETE1_SIGNAL     ( in_INSERT_ACK               ,_param->_nb_inst_insert,1);
     50//      DELETE1_SIGNAL     (out_INSERT_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     51//      DELETE1_SIGNAL     (out_INSERT_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id            );
     52        DELETE1_SIGNAL     (out_INSERT_READ_RA           ,_param->_nb_inst_insert,1                                   );
     53#ifdef DEBUG               
     54        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RA_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     55#endif                     
     56        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     57        DELETE1_SIGNAL     (out_INSERT_READ_RB           ,_param->_nb_inst_insert,1                                   );
     58#ifdef DEBUG               
     59        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RB_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     60#endif                     
     61        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
     62        DELETE1_SIGNAL     (out_INSERT_READ_RC           ,_param->_nb_inst_insert,1                                   );
     63#ifdef DEBUG               
     64        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RC_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     65#endif                     
     66        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register      );
     67        DELETE1_SIGNAL     (out_INSERT_WRITE_RD          ,_param->_nb_inst_insert,1                                   );
     68        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RD_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     69        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register      );
     70        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register      );
     71        DELETE1_SIGNAL     (out_INSERT_WRITE_RE          ,_param->_nb_inst_insert,1                                   );
     72        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RE_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     73        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register      );
     74        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register      );
     75                           
     76        DELETE1_SIGNAL     ( in_RETIRE_VAL               ,_param->_nb_inst_retire,1);
     77        DELETE1_SIGNAL     (out_RETIRE_ACK               ,_param->_nb_inst_retire,1);
     78        DELETE1_SIGNAL     ( in_RETIRE_FRONT_END_ID      ,_param->_nb_inst_retire,_param->_size_front_end_id          );
     79        DELETE1_SIGNAL     ( in_RETIRE_CONTEXT_ID        ,_param->_nb_inst_retire,_param->_size_context_id            );
     80//      DELETE1_SIGNAL     ( in_RETIRE_READ_RA           ,_param->_nb_inst_retire,1                                   );
     81//      DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RA_PHY    ,_param->_nb_inst_retire,_param->_size_general_register      );
     82//      DELETE1_SIGNAL     ( in_RETIRE_READ_RB           ,_param->_nb_inst_retire,1                                   );
     83//      DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RB_PHY    ,_param->_nb_inst_retire,_param->_size_general_register      );
     84//      DELETE1_SIGNAL     ( in_RETIRE_READ_RC           ,_param->_nb_inst_retire,1                                   );
     85//      DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RC_PHY    ,_param->_nb_inst_retire,_param->_size_special_register      );
     86        DELETE1_SIGNAL     ( in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire,1                                   );
     87        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RD_LOG    ,_param->_nb_inst_retire,_param->_size_general_register_logic);
     88        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register      );
     89        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register      );
     90        DELETE1_SIGNAL     ( in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire,1                                   );
     91        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RE_LOG    ,_param->_nb_inst_retire,_param->_size_special_register_logic);
     92        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register      );
     93        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register      );
     94        DELETE1_SIGNAL     ( in_RETIRE_RESTORE              ,_param->_nb_inst_retire,1);
     95        DELETE1_SIGNAL     ( in_RETIRE_RESTORE_RD_PHY_OLD   ,_param->_nb_inst_retire,1);
     96        DELETE1_SIGNAL     ( in_RETIRE_RESTORE_RE_PHY_OLD   ,_param->_nb_inst_retire,1);
    4597
    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 #ifdef DEBUG
    52         DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
    53 #endif
    54         DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
    55         DELETE1_SIGNAL(out_INSERT_READ_RB           ,_param->_nb_inst_insert,1                                   );
    56 #ifdef DEBUG
    57         DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
    58 #endif
    59         DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
    60         DELETE1_SIGNAL(out_INSERT_READ_RC           ,_param->_nb_inst_insert,1                                   );
    61 #ifdef DEBUG
    62         DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
    63 #endif
    64         DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register      );
    65         DELETE1_SIGNAL(out_INSERT_WRITE_RD          ,_param->_nb_inst_insert,1                                   );
    66         DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
    67         DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register      );
    68         DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register      );
    69         DELETE1_SIGNAL(out_INSERT_WRITE_RE          ,_param->_nb_inst_insert,1                                   );
    70         DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
    71         DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register      );
    72         DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register      );
    73 
    74         DELETE1_SIGNAL( in_RETIRE_VAL               ,_param->_nb_inst_retire,1);
    75         DELETE1_SIGNAL(out_RETIRE_ACK               ,_param->_nb_inst_retire,1);
    76         DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID      ,_param->_nb_inst_retire,_param->_size_front_end_id          );
    77         DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID        ,_param->_nb_inst_retire,_param->_size_context_id            );
    78 //         DELETE1_SIGNAL( in_RETIRE_READ_RA           ,_param->_nb_inst_retire,1                                   );
    79 //         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RA_PHY    ,_param->_nb_inst_retire,_param->_size_general_register      );
    80 //         DELETE1_SIGNAL( in_RETIRE_READ_RB           ,_param->_nb_inst_retire,1                                   );
    81 //         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RB_PHY    ,_param->_nb_inst_retire,_param->_size_general_register      );
    82 //         DELETE1_SIGNAL( in_RETIRE_READ_RC           ,_param->_nb_inst_retire,1                                   );
    83 //         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RC_PHY    ,_param->_nb_inst_retire,_param->_size_special_register      );
    84         DELETE1_SIGNAL( in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire,1                                   );
    85         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_LOG    ,_param->_nb_inst_retire,_param->_size_general_register_logic);
    86         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register      );
    87         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register      );
    88         DELETE1_SIGNAL( in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire,1                                   );
    89         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_LOG    ,_param->_nb_inst_retire,_param->_size_special_register_logic);
    90         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register      );
    91         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register      );
    92 
    93         DELETE2_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
    94         DELETE2_SIGNAL(out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1],1);
    95         DELETE2_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
     98        DELETE2_SIGNAL     ( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     99        DELETE2_SIGNAL     (out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     100        DELETE2_SIGNAL     ( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
     101        DELETE2_SIGNAL_COND( in_RETIRE_EVENT_TYPE           ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_type,_param->_rat_scheme == RAT_DEPTH_SAVE);
     102        DELETE2_SIGNAL_COND( in_RETIRE_EVENT_DEPTH          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_depth     ,_param->_rat_scheme == RAT_DEPTH_SAVE);
    96103
    97104#ifdef DEBUG_TEST
    98         DELETE0_SIGNAL( in_INFO_ROB_EMPTY  ,1);
     105        DELETE0_SIGNAL     ( in_INFO_ROB_EMPTY  ,1);
    99106#endif
    100107      }
Note: See TracChangeset for help on using the changeset viewer.