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
Files:
4 added
1 deleted
48 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h

    r138 r139  
    150150  public    : SC_OUT(Tspecial_address_t ) *** out_RETIRE_NUM_REG_RE_PHY_OLD        ;//[nb_rename_unit][nb_inst_retire]
    151151  public    : SC_OUT(Tspecial_address_t ) *** out_RETIRE_NUM_REG_RE_PHY_NEW        ;//[nb_rename_unit][nb_inst_retire]
     152  public    : SC_OUT(Tcontrol_t         ) *** out_RETIRE_RESTORE                   ;//[nb_rename_unit][nb_inst_retire]
     153  public    : SC_OUT(Tcontrol_t         ) *** out_RETIRE_RESTORE_RD_PHY_OLD        ;//[nb_rename_unit][nb_inst_retire]
     154  public    : SC_OUT(Tcontrol_t         ) *** out_RETIRE_RESTORE_RE_PHY_OLD        ;//[nb_rename_unit][nb_inst_retire]
    152155
    153156    // ~~~~~[ Interface : "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
     
    157160//public    : SC_OUT(Tcontrol_t         ) *** out_RETIRE_EVENT_FLUSH               ;//[nb_front_end][nb_context]
    158161  public    : SC_OUT(Tcontrol_t         ) *** out_RETIRE_EVENT_STOP                ;//[nb_front_end][nb_context]
    159                                                                                    
     162  public    : SC_OUT(Tevent_type_t      ) *** out_RETIRE_EVENT_TYPE                ;//[nb_front_end][nb_context]
     163  public    : SC_OUT(Tdepth_t           ) *** out_RETIRE_EVENT_DEPTH               ;//[nb_front_end][nb_context]
     164
    160165    // ~~~~~[ Interface : "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
    161166  public    : SC_IN (Tcontrol_t         )  **  in_COMMIT_VAL                       ;//[nb_inst_commit]
     
    260265
    261266  private   : Tcommit_event_state_t        ** reg_EVENT_STATE                      ;//[nb_front_end][nb_context]
     267  private   : Tevent_type_t                ** reg_EVENT_TYPE                       ;//[nb_front_end][nb_context]
    262268//private   : bool                         ** reg_EVENT_FLUSH                      ;//[nb_front_end][nb_context]
    263269//private   : bool                         ** reg_EVENT_STOP                       ;//[nb_front_end][nb_context]
    264   private   : uint32_t                     ** reg_EVENT_NUM_BANK                   ;//[nb_front_end][nb_context]
    265   private   : uint32_t                     ** reg_EVENT_NUM_PTR                    ;//[nb_front_end][nb_context]
     270//private   : uint32_t                     ** reg_EVENT_NUM_BANK                   ;//[nb_front_end][nb_context]
     271//private   : uint32_t                     ** reg_EVENT_NUM_PTR                    ;//[nb_front_end][nb_context]
    266272//private   : bool                         ** reg_EVENT_CAN_RESTART                ;//[nb_front_end][nb_context]
    267273  private   : uint32_t                     ** reg_EVENT_PACKET                     ;//[nb_front_end][nb_context]
     274  private   : Tdepth_t                     ** reg_EVENT_DEPTH                      ;//[nb_front_end][nb_context]
    268275  private   : uint32_t                     ** reg_EVENT_NB_INST                    ;//[nb_front_end][nb_context]
    269276  private   : bool                         ** reg_EVENT_LAST                       ;//[nb_front_end][nb_context]
     
    279286  private   : Taddress_t                   ** reg_PC_CURRENT_IS_DS_TAKE            ;//[nb_front_end][nb_context]
    280287  private   : Taddress_t                   ** reg_PC_NEXT                          ;//[nb_front_end][nb_context]
     288
     289  private   : bool                        *** rat_gpr_update_table                 ;//[nb_front_end][nb_context][nb_general_register_logic]
     290  private   : bool                        *** rat_spr_update_table                 ;//[nb_front_end][nb_context][nb_special_register_logic]
    281291                                                                                   
    282292    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
     
    292302  private   : entry_t *                    ** internal_BANK_COMMIT_ENTRY           ;//[nb_bank][nb_bank_access_commit]
    293303
    294   private   : uint32_t                        internal_BANK_RETIRE_HEAD            ;
    295   private   : Tcontrol_t                    * internal_BANK_RETIRE_VAL             ;//[nb_bank]
    296   private   : uint32_t                      * internal_BANK_RETIRE_NUM_RENAME_UNIT ;//[nb_bank]
    297   private   : uint32_t                      * internal_BANK_RETIRE_NUM_INST        ;//[nb_bank]
     304  private   : uint32_t                        internal_BANK_RETIRE_HEAD              ;
     305  private   : Tcontrol_t                    * internal_BANK_RETIRE_VAL               ;//[nb_bank]
     306  private   : uint32_t                      * internal_BANK_RETIRE_NUM_RENAME_UNIT   ;//[nb_bank]
     307  private   : uint32_t                      * internal_BANK_RETIRE_NUM_INST          ;//[nb_bank]
     308//private   : Tcontrol_t                    * internal_BANK_RETIRE_RESTORE           ;//[nb_bank]
     309  private   : Tcontrol_t                    * internal_BANK_RETIRE_RESTORE_RD_PHY_OLD;//[nb_bank]
     310  private   : Tcontrol_t                    * internal_BANK_RETIRE_RESTORE_RE_PHY_OLD;//[nb_bank]
    298311
    299312  private   : Tcontrol_t                    * internal_REEXECUTE_VAL               ;//[nb_inst_reexecute]
     
    309322
    310323  private   : Tcontrol_t                   ** internal_RETIRE_EVENT_VAL            ;//[nb_front_end][nb_context]
     324
     325  private   : bool                        *** internal_rat_gpr_update_table;//[nb_front_end][nb_context][nb_general_register_logic]
     326  private   : bool                        *** internal_rat_spr_update_table;//[nb_front_end][nb_context][nb_special_register_logic]
    311327#endif
    312328
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Parameters.h

    r138 r139  
    4141//public : uint32_t             _size_general_register              ;
    4242//public : uint32_t             _size_special_register              ;
     43  public : Trat_scheme_t      * _rat_scheme                         ;//[nb_front_end]
    4344  public : Tpriority_t          _priority                           ;
    4445  public : Tload_balancing_t    _load_balancing                     ;
    4546  public : uint32_t             _nb_rename_unit_select              ;
    4647  public : uint32_t             _nb_thread                          ;
    47   public : uint32_t          ** _translate_num_context_to_num_thread; //[nb_front_end][nb_context]
     48  public : uint32_t          ** _translate_num_context_to_num_thread;//[nb_front_end][nb_context]
    4849  public : const uint32_t       _nb_bank_access_commit              ;
    49                              
     50
    5051  public : uint32_t             _max_nb_context          ;
    5152  public : uint32_t             _max_nb_inst_insert      ;
     
    9697                        uint32_t             size_general_register              ,
    9798                        uint32_t             size_special_register              ,
     99                        Trat_scheme_t      * rat_scheme                         ,//[nb_front_end]
    98100                        Tpriority_t          priority                           ,
    99101                        Tload_balancing_t    load_balancing                     ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Types.h

    r138 r139  
    7171
    7272#define commit_event_state_to_event_state(x) ((x==COMMIT_EVENT_STATE_EVENT)?EVENT_STATE_EVENT:((x==COMMIT_EVENT_STATE_WAIT_END)?EVENT_STATE_WAITEND:EVENT_STATE_NO_EVENT))
     73#define rob_state_to_event_type(x) ((x==ROB_END_BRANCH_MISS)?EVENT_TYPE_BRANCH_MISS_SPECULATION:((x==ROB_END_LOAD_MISS)?EVENT_TYPE_LOAD_MISS_SPECULATION:((x==ROB_END_EXCEPTION)?EVENT_TYPE_EXCEPTION:EVENT_TYPE_NONE)))
    7374
    7475// #define commit_event_state_to_event_state(x) ((x==COMMIT_EVENT_STATE_EVENT)?EVENT_STATE_EVENT:((x==COMMIT_EVENT_STATE_WAIT_END)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_END)?EVENT_STATE_END:EVENT_STATE_NO_EVENT)))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp

    r137 r139  
    120120      _ALLOC2_SIGNAL_OUT(out_RETIRE_STORE_QUEUE_PTR_WRITE   ,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr       ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    121121      _ALLOC2_SIGNAL_OUT(out_RETIRE_LOAD_QUEUE_PTR_WRITE    ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr        ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    122 //       _ALLOC2_SIGNAL_OUT(out_RETIRE_READ_RA                 ,"read_ra"              ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    123 //       _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RA_PHY          ,"num_reg_ra_phy"       ,Tgeneral_address_t,_param->_size_general_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    124 //       _ALLOC2_SIGNAL_OUT(out_RETIRE_READ_RB                 ,"read_rb"              ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    125 //       _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RB_PHY          ,"num_reg_rb_phy"       ,Tgeneral_address_t,_param->_size_general_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    126 //       _ALLOC2_SIGNAL_OUT(out_RETIRE_READ_RC                 ,"read_rc"              ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    127 //       _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RC_PHY          ,"num_reg_rc_phy"       ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     122//    _ALLOC2_SIGNAL_OUT(out_RETIRE_READ_RA                 ,"read_ra"              ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     123//    _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RA_PHY          ,"num_reg_ra_phy"       ,Tgeneral_address_t,_param->_size_general_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     124//    _ALLOC2_SIGNAL_OUT(out_RETIRE_READ_RB                 ,"read_rb"              ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     125//    _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RB_PHY          ,"num_reg_rb_phy"       ,Tgeneral_address_t,_param->_size_general_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     126//    _ALLOC2_SIGNAL_OUT(out_RETIRE_READ_RC                 ,"read_rc"              ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     127//    _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RC_PHY          ,"num_reg_rc_phy"       ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    128128      _ALLOC2_SIGNAL_OUT(out_RETIRE_WRITE_RD                ,"write_rd"             ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    129129      _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RD_LOG          ,"num_reg_rd_log"       ,Tgeneral_address_t,_param->_size_general_register_logic,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     
    134134      _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RE_PHY_OLD      ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    135135      _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RE_PHY_NEW      ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     136      _ALLOC2_SIGNAL_OUT(out_RETIRE_RESTORE                 ,"RESTORE"              ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     137      _ALLOC2_SIGNAL_OUT(out_RETIRE_RESTORE_RD_PHY_OLD      ,"RESTORE_RD_PHY_OLD"   ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     138      _ALLOC2_SIGNAL_OUT(out_RETIRE_RESTORE_RE_PHY_OLD      ,"RESTORE_RE_PHY_OLD"   ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
    136139
    137140      ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);
     
    142145      ALLOC2_INTERFACE_BEGIN("retire_event",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_front_end,_param->_nb_context[it1]);
    143146   
    144       _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_VAL               ,VAL,_param->_nb_front_end,_param->_nb_context[it1]);
    145       _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_ACK               ,ACK,_param->_nb_front_end,_param->_nb_context[it1]);
    146       _ALLOC2_SIGNAL_OUT(out_RETIRE_EVENT_STATE             ,"state"                ,Tevent_state_t    ,_param->_size_event_state           ,_param->_nb_front_end,_param->_nb_context[it1]);
    147 //    _ALLOC2_SIGNAL_OUT(out_RETIRE_EVENT_FLUSH             ,"flush"                ,Tcontrol_t        ,1                                   ,_param->_nb_front_end,_param->_nb_context[it1]);
    148       _ALLOC2_SIGNAL_OUT(out_RETIRE_EVENT_STOP              ,"stop"                 ,Tcontrol_t        ,1                                   ,_param->_nb_front_end,_param->_nb_context[it1]);
     147      _ALLOC2_VALACK_OUT     (out_RETIRE_EVENT_VAL   ,VAL,_param->_nb_front_end,_param->_nb_context[it1]);
     148      _ALLOC2_VALACK_IN      ( in_RETIRE_EVENT_ACK   ,ACK,_param->_nb_front_end,_param->_nb_context[it1]);
     149      _ALLOC2_SIGNAL_OUT     (out_RETIRE_EVENT_STATE ,"state"      ,Tevent_state_t    ,_param->_size_event_state,_param->_nb_front_end,_param->_nb_context[it1]);
     150//    _ALLOC2_SIGNAL_OUT     (out_RETIRE_EVENT_FLUSH ,"flush"      ,Tcontrol_t        ,1                        ,_param->_nb_front_end,_param->_nb_context[it1]);
     151      _ALLOC2_SIGNAL_OUT     (out_RETIRE_EVENT_STOP  ,"stop"       ,Tcontrol_t        ,1                        ,_param->_nb_front_end,_param->_nb_context[it1]);
     152      _ALLOC2_SIGNAL_OUT_COND(out_RETIRE_EVENT_TYPE  ,"type"       ,Tevent_type_t     ,_param->_size_event_type ,_param->_nb_front_end,_param->_nb_context[it1],_param->_rat_scheme[it1] == RAT_DEPTH_SAVE);
     153      _ALLOC2_SIGNAL_OUT_COND(out_RETIRE_EVENT_DEPTH ,"depth"      ,Tdepth_t          ,_param->_size_depth      ,_param->_nb_front_end,_param->_nb_context[it1],_param->_rat_scheme[it1] == RAT_DEPTH_SAVE);
    149154
    150155      ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]);
     
    306311    ALLOC2(internal_BANK_COMMIT_ENTRY           ,entry_t * ,_param->_nb_bank,_param->_nb_bank_access_commit);
    307312
    308     ALLOC1(internal_BANK_RETIRE_VAL             ,Tcontrol_t,_param->_nb_bank);
    309     ALLOC1(internal_BANK_RETIRE_NUM_RENAME_UNIT ,uint32_t  ,_param->_nb_bank);
    310     ALLOC1(internal_BANK_RETIRE_NUM_INST        ,uint32_t  ,_param->_nb_bank);
     313    ALLOC1(internal_BANK_RETIRE_VAL               ,Tcontrol_t,_param->_nb_bank);
     314    ALLOC1(internal_BANK_RETIRE_NUM_RENAME_UNIT   ,uint32_t  ,_param->_nb_bank);
     315    ALLOC1(internal_BANK_RETIRE_NUM_INST          ,uint32_t  ,_param->_nb_bank);
     316//  ALLOC1(internal_BANK_RETIRE_RESTORE           ,Tcontrol_t,_param->_nb_bank);
     317    ALLOC1(internal_BANK_RETIRE_RESTORE_RD_PHY_OLD,Tcontrol_t,_param->_nb_bank);
     318    ALLOC1(internal_BANK_RETIRE_RESTORE_RE_PHY_OLD,Tcontrol_t,_param->_nb_bank);
    311319
    312320    ALLOC1(internal_REEXECUTE_VAL               ,Tcontrol_t,_param->_nb_inst_reexecute);
     
    318326    ALLOC2(internal_EVENT_ACK                   ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]);
    319327    ALLOC2(internal_RETIRE_EVENT_VAL            ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]);
     328
     329    ALLOC3(internal_rat_gpr_update_table        ,bool      ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     330    ALLOC3(internal_rat_spr_update_table        ,bool      ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
     331
    320332
    321333    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     
    329341   
    330342    ALLOC2(reg_EVENT_STATE          ,Tcommit_event_state_t,_param->_nb_front_end,_param->_nb_context [it1]);
     343    ALLOC2(reg_EVENT_TYPE           ,Tevent_type_t        ,_param->_nb_front_end,_param->_nb_context [it1]);
    331344//  ALLOC2(reg_EVENT_FLUSH          ,bool                 ,_param->_nb_front_end,_param->_nb_context [it1]);
    332345//  ALLOC2(reg_EVENT_STOP           ,bool                 ,_param->_nb_front_end,_param->_nb_context [it1]);
    333     ALLOC2(reg_EVENT_NUM_BANK       ,uint32_t             ,_param->_nb_front_end,_param->_nb_context [it1]);
    334     ALLOC2(reg_EVENT_NUM_PTR        ,uint32_t             ,_param->_nb_front_end,_param->_nb_context [it1]);
     346//  ALLOC2(reg_EVENT_NUM_BANK       ,uint32_t             ,_param->_nb_front_end,_param->_nb_context [it1]);
     347//  ALLOC2(reg_EVENT_NUM_PTR        ,uint32_t             ,_param->_nb_front_end,_param->_nb_context [it1]);
    335348//  ALLOC2(reg_EVENT_CAN_RESTART    ,bool                 ,_param->_nb_front_end,_param->_nb_context [it1]);
    336349    ALLOC2(reg_EVENT_PACKET         ,uint32_t             ,_param->_nb_front_end,_param->_nb_context [it1]);
     350    ALLOC2(reg_EVENT_DEPTH          ,Tdepth_t             ,_param->_nb_front_end,_param->_nb_context [it1]);
    337351    ALLOC2(reg_EVENT_NB_INST        ,uint32_t             ,_param->_nb_front_end,_param->_nb_context [it1]);
    338352    ALLOC2(reg_EVENT_LAST           ,bool                 ,_param->_nb_front_end,_param->_nb_context [it1]);
     
    348362    ALLOC2(reg_PC_CURRENT_IS_DS_TAKE,Taddress_t           ,_param->_nb_front_end,_param->_nb_context [it1]);
    349363    ALLOC2(reg_PC_NEXT              ,Taddress_t           ,_param->_nb_front_end,_param->_nb_context [it1]);
     364
     365    ALLOC3(rat_gpr_update_table     ,bool                 ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_general_register_logic);
     366    ALLOC3(rat_spr_update_table     ,bool                 ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_special_register_logic);
    350367      }
    351368
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_deallocation.cpp

    r137 r139  
    9696        DELETE2_SIGNAL(out_RETIRE_NUM_REG_RE_PHY_OLD      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_size_special_register      );
    9797        DELETE2_SIGNAL(out_RETIRE_NUM_REG_RE_PHY_NEW      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_size_special_register      );
    98 
    99         DELETE2_SIGNAL(out_RETIRE_EVENT_VAL               ,_param->_nb_front_end,_param->_nb_context[it1],1);
    100         DELETE2_SIGNAL( in_RETIRE_EVENT_ACK               ,_param->_nb_front_end,_param->_nb_context[it1],1);
    101         DELETE2_SIGNAL(out_RETIRE_EVENT_STATE             ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_event_state);
    102 //      DELETE2_SIGNAL(out_RETIRE_EVENT_FLUSH             ,_param->_nb_front_end,_param->_nb_context[it1],1);
    103         DELETE2_SIGNAL(out_RETIRE_EVENT_STOP              ,_param->_nb_front_end,_param->_nb_context[it1],1);
     98        DELETE2_SIGNAL(out_RETIRE_RESTORE                 ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],1);
     99        DELETE2_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],1);
     100        DELETE2_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD      ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],1);
     101
     102        DELETE2_SIGNAL     (out_RETIRE_EVENT_VAL               ,_param->_nb_front_end,_param->_nb_context[it1],1);
     103        DELETE2_SIGNAL     ( in_RETIRE_EVENT_ACK               ,_param->_nb_front_end,_param->_nb_context[it1],1);
     104        DELETE2_SIGNAL     (out_RETIRE_EVENT_STATE             ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_event_state);
     105//      DELETE2_SIGNAL     (out_RETIRE_EVENT_FLUSH             ,_param->_nb_front_end,_param->_nb_context[it1],1);
     106        DELETE2_SIGNAL     (out_RETIRE_EVENT_STOP              ,_param->_nb_front_end,_param->_nb_context[it1],1);
     107        DELETE2_SIGNAL_COND(out_RETIRE_EVENT_TYPE              ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_event_type,_param->_rat_scheme[it1] == RAT_DEPTH_SAVE);
     108        DELETE2_SIGNAL_COND(out_RETIRE_EVENT_DEPTH             ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_depth     ,_param->_rat_scheme[it1] == RAT_DEPTH_SAVE);
    104109
    105110        DELETE1_SIGNAL( in_COMMIT_VAL               ,_param->_nb_inst_commit,1                             );
     
    187192        DELETE2(internal_BANK_COMMIT_ENTRY           ,_param->_nb_bank,_param->_nb_bank_access_commit);
    188193       
    189         DELETE1(internal_BANK_RETIRE_VAL             ,_param->_nb_bank);
    190         DELETE1(internal_BANK_RETIRE_NUM_RENAME_UNIT ,_param->_nb_bank);
    191         DELETE1(internal_BANK_RETIRE_NUM_INST        ,_param->_nb_bank);
     194        DELETE1(internal_BANK_RETIRE_VAL               ,_param->_nb_bank);
     195        DELETE1(internal_BANK_RETIRE_NUM_RENAME_UNIT   ,_param->_nb_bank);
     196        DELETE1(internal_BANK_RETIRE_NUM_INST          ,_param->_nb_bank);
     197//      DELETE1(internal_BANK_RETIRE_RESTORE           ,_param->_nb_bank);
     198        DELETE1(internal_BANK_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_bank);
     199        DELETE1(internal_BANK_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_bank);
    192200       
    193201        DELETE1(internal_REEXECUTE_VAL               ,_param->_nb_inst_reexecute);
     
    200208       
    201209        DELETE2(internal_RETIRE_EVENT_VAL            ,_param->_nb_front_end,_param->_nb_context[it1]);
     210
     211        DELETE3(internal_rat_gpr_update_table        ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);
     212        DELETE3(internal_rat_spr_update_table        ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic);
    202213       
    203214        // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     
    217228
    218229        DELETE2(reg_EVENT_STATE          ,_param->_nb_front_end,_param->_nb_context [it1]);
     230        DELETE2(reg_EVENT_TYPE           ,_param->_nb_front_end,_param->_nb_context [it1]);
    219231//      DELETE2(reg_EVENT_FLUSH          ,_param->_nb_front_end,_param->_nb_context [it1]);
    220232//      DELETE2(reg_EVENT_STOP           ,_param->_nb_front_end,_param->_nb_context [it1]);
    221         DELETE2(reg_EVENT_NUM_BANK       ,_param->_nb_front_end,_param->_nb_context [it1]);
    222         DELETE2(reg_EVENT_NUM_PTR        ,_param->_nb_front_end,_param->_nb_context [it1]);
     233//      DELETE2(reg_EVENT_NUM_BANK       ,_param->_nb_front_end,_param->_nb_context [it1]);
     234//      DELETE2(reg_EVENT_NUM_PTR        ,_param->_nb_front_end,_param->_nb_context [it1]);
    223235//      DELETE2(reg_EVENT_CAN_RESTART    ,_param->_nb_front_end,_param->_nb_context [it1]);
    224236        DELETE2(reg_EVENT_PACKET         ,_param->_nb_front_end,_param->_nb_context [it1]);
     237        DELETE2(reg_EVENT_DEPTH          ,_param->_nb_front_end,_param->_nb_context [it1]);
    225238        DELETE2(reg_EVENT_NB_INST        ,_param->_nb_front_end,_param->_nb_context [it1]);
    226239        DELETE2(reg_EVENT_LAST           ,_param->_nb_front_end,_param->_nb_context [it1]);
     
    236249        DELETE2(reg_PC_CURRENT_IS_DS_TAKE,_param->_nb_front_end,_param->_nb_context [it1]);
    237250        DELETE2(reg_PC_NEXT              ,_param->_nb_front_end,_param->_nb_context [it1]);
     251
     252        DELETE3(rat_gpr_update_table     ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_general_register_logic);
     253        DELETE3(rat_spr_update_table     ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_special_register_logic);
    238254      }
    239255
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_retire.cpp

    r133 r139  
    6060          spr_write_sr_cy     [i][j] = 0; // not necessary
    6161          spr_write_sr_ov     [i][j] = 0; // not necessary
     62
     63          // Init internal update table
     64         
     65          // Test if an event occure
     66          // bool event = (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) != EVENT_STATE_NO_EVENT);
     67          bool reset_update_table = (commit_event_state_to_event_state(reg_EVENT_STATE[i][j]) == EVENT_STATE_EVENT);
     68
     69          log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * reset_update_table : %d",reset_update_table);
     70
     71          // not event -> update_table == 1 -> always update
     72          // event     -> update_table and not reset
     73          for (uint32_t k=0; k<_param->_nb_general_register_logic; ++k)
     74            internal_rat_gpr_update_table [i][j][k] = // not event or
     75                                                      (not reset_update_table and rat_gpr_update_table [i][j][k]);
     76          for (uint32_t k=0; k<_param->_nb_special_register_logic; ++k)
     77            internal_rat_spr_update_table [i][j][k] = // not event or
     78                                                      (not reset_update_table and rat_spr_update_table [i][j][k]);
    6279        }
    6380
     
    116133                        )
    117134                      {
     135                        Tcontrol_t         write_rd       = entry->write_rd;
    118136                        Tcontrol_t         write_re       = entry->write_re;
     137                        Tgeneral_address_t num_reg_rd_log = entry->num_reg_rd_log;
    119138                        Tspecial_address_t num_reg_re_log = entry->num_reg_re_log;
    120139                       
     
    172191                          }
    173192                       
    174                         internal_BANK_RETIRE_NUM_RENAME_UNIT [num_bank] = x;
    175                         internal_BANK_RETIRE_NUM_INST        [num_bank] = y;
     193                        // Restore Old Register
     194                        Tcontrol_t retire_restore = (commit_event_state_to_event_state(reg_EVENT_STATE[front_end_id][context_id]) != EVENT_STATE_NO_EVENT);
     195
     196                        // Test if event -> need restore ?
     197                        if (retire_restore)
     198                          {
     199                            log_printf(TRACE,Commit_unit,FUNCTION,"      * Restore");
     200                           
     201                            // Test and update update table
     202                            if (write_rd)
     203                              {
     204                                internal_BANK_RETIRE_RESTORE_RD_PHY_OLD [num_bank] = (internal_rat_gpr_update_table[front_end_id][context_id][num_reg_rd_log] == 0);
     205
     206                                internal_rat_gpr_update_table[front_end_id][context_id][num_reg_rd_log] = 1;
     207                              }
     208                            if (write_re)
     209                              {
     210                                internal_BANK_RETIRE_RESTORE_RE_PHY_OLD [num_bank] = (internal_rat_spr_update_table[front_end_id][context_id][num_reg_re_log] == 0);
     211                               
     212                                internal_rat_spr_update_table[front_end_id][context_id][num_reg_re_log] = 1;
     213                              }
     214
     215                            log_printf(TRACE,Commit_unit,FUNCTION,"      * restore_rd_phy_old   : %d",internal_BANK_RETIRE_RESTORE_RD_PHY_OLD [num_bank]);
     216                            log_printf(TRACE,Commit_unit,FUNCTION,"      * restore_re_phy_old   : %d",internal_BANK_RETIRE_RESTORE_RE_PHY_OLD [num_bank]);
     217                          }
     218
     219                        internal_BANK_RETIRE_NUM_RENAME_UNIT    [num_bank] = x;
     220                        internal_BANK_RETIRE_NUM_INST           [num_bank] = y;
    176221                       
    177222                        if (_param->_have_port_front_end_id)
     
    199244                        PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_OLD    [x][y], entry->num_reg_re_phy_old   );
    200245                        PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_NEW    [x][y], entry->num_reg_re_phy_new   );
     246                        PORT_WRITE(out_RETIRE_RESTORE               [x][y],retire_restore);
     247                        PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD    [x][y],internal_BANK_RETIRE_RESTORE_RD_PHY_OLD [num_bank]);
     248                        PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD    [x][y],internal_BANK_RETIRE_RESTORE_RE_PHY_OLD [num_bank]);
    201249                       
    202250                        // Event -> rob must be manage this event
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMoore.cpp

    r129 r139  
    331331          PORT_WRITE(out_RETIRE_EVENT_STOP  [i][j], ((reg_EVENT_STATE [i][j] == COMMIT_EVENT_STATE_NOT_YET_EVENT) or
    332332                                                     reg_EVENT_NEXT_STOP [i][j]));
     333          if (_param->_rat_scheme[i] == RAT_DEPTH_SAVE)
     334            {
     335          PORT_WRITE(out_RETIRE_EVENT_TYPE  [i][j], reg_EVENT_TYPE  [i][j]);
     336          if (_param->_have_port_depth)
     337          PORT_WRITE(out_RETIRE_EVENT_DEPTH [i][j], reg_EVENT_DEPTH [i][j]);
     338            }
    333339        }
    334340      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp

    r137 r139  
    5454//            reg_EVENT_FLUSH           [i][j] = false;
    5555//            reg_EVENT_STOP            [i][j] = false;
    56               reg_EVENT_NUM_BANK        [i][j] = 0; // not necessary
    57               reg_EVENT_NUM_PTR         [i][j] = 0; // not necessary
    58             //reg_EVENT_CAN_RESTART     [i][j] = 0; // not necessary
     56//            reg_EVENT_NUM_BANK        [i][j] = 0; // not necessary
     57//            reg_EVENT_NUM_PTR         [i][j] = 0; // not necessary
     58//            reg_EVENT_CAN_RESTART     [i][j] = 0; // not necessary
    5959              reg_EVENT_PACKET          [i][j] = 0; // not necessary
     60              reg_EVENT_DEPTH           [i][j] = 0; // not necessary
    6061              reg_EVENT_NB_INST         [i][j] = 0;
    6162              reg_EVENT_LAST            [i][j] = false;
     
    7273              reg_PC_NEXT               [i][j] = (0x100+4)>>2;
    7374            }
     75
     76        // Resert RAT_UPDATE_TABLE
     77        for (uint32_t i=0; i<_param->_nb_front_end; i++)
     78          for (uint32_t j=0; j<_param->_nb_context[i]; j++)
     79            {
     80              for (uint32_t k=0; k<_param->_nb_general_register_logic; k++)
     81                rat_gpr_update_table       [i][j][k] = false; // not necessary
     82              for (uint32_t k=0; k<_param->_nb_special_register_logic; k++)
     83                rat_spr_update_table       [i][j][k] = false; // not necessary
     84            }
    7485
    7586        // Reset priority algorithm
     
    114125//                         else
    115126                          reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_WAIT_END;
     127                         
     128                          // Reset update_table
     129                          for (uint32_t k=0; k<_param->_nb_general_register_logic; k++)
     130                            rat_gpr_update_table      [i][j][k] = false;
     131                          for (uint32_t k=0; k<_param->_nb_special_register_logic; k++)
     132                            rat_spr_update_table      [i][j][k] = false;
    116133                      }
    117134                   
     
    180197                        else
    181198                          {
     199                            uint32_t next_packet = reg_EVENT_NEXT_PACKET [i][j];
     200
    182201                            reg_EVENT_STATE         [i][j] = COMMIT_EVENT_STATE_NOT_YET_EVENT;
    183202
    184203                            reg_EVENT_NEXT_STOP     [i][j] = false;
    185                             reg_EVENT_PACKET        [i][j] = reg_EVENT_NEXT_PACKET [i][j];
     204                            reg_EVENT_PACKET        [i][j] = next_packet;
     205//                          reg_EVENT_DEPTH         [i][j] = _rob[next_packet].depth;
    186206                            reg_EVENT_NB_INST       [i][j] = reg_NB_INST_COMMIT_ALL [i][j];
    187207                          //reg_EVENT_STOP          [i][j] = true;
     
    596616                                reg_EVENT_STATE         [front_end_id][context_id] = COMMIT_EVENT_STATE_NOT_YET_EVENT;
    597617
     618//                              reg_EVENT_DEPTH         [front_end_id][context_id] = _rob[packet].depth;
    598619                                reg_EVENT_NB_INST       [front_end_id][context_id] = reg_NB_INST_COMMIT_ALL [front_end_id][context_id];
    599620
     
    697718#endif
    698719
    699 
    700720#ifdef STATISTICS
    701             if (usage_is_set(_usage,USE_STATISTICS))
    702               (*_stat_nb_inst_retire [x]) ++;
    703                
     721                if (usage_is_set(_usage,USE_STATISTICS))
     722                  (*_stat_nb_inst_retire [x]) ++;
    704723#endif
    705724               
     
    709728                entry->state_old = entry->state;
    710729                entry->state     = ROB_END;
     730
     731
     732                // Update RAT_UPDATE_TABLE
     733                Tcontext_t front_end_id = entry->front_end_id;
     734                Tcontext_t context_id   = entry->context_id  ;
     735
     736                if (entry->write_rd and internal_BANK_RETIRE_RESTORE_RD_PHY_OLD [num_bank])
     737                  rat_gpr_update_table [front_end_id][context_id][entry->num_reg_rd_log] = true;
     738                if (entry->write_re and internal_BANK_RETIRE_RESTORE_RE_PHY_OLD [num_bank])
     739                  rat_spr_update_table [front_end_id][context_id][entry->num_reg_re_log] = true;
    711740              }
    712741          }
     
    771800                      {
    772801                          reg_EVENT_STATE         [front_end_id][context_id] = COMMIT_EVENT_STATE_EVENT;
     802                          reg_EVENT_TYPE          [front_end_id][context_id] = rob_state_to_event_type(state);
    773803//                        reg_EVENT_STOP          [front_end_id][context_id] = false; // instruction flow can continue
    774804                          reg_EVENT_LAST          [front_end_id][context_id] = false;
    775805                          // it the head !
    776806                          reg_EVENT_PACKET        [front_end_id][context_id] = packet_id;
    777                    
     807                          reg_EVENT_DEPTH         [front_end_id][context_id] = entry->depth;
     808
    778809//                           // If event is an load_miss, many instruction can be inserted.
    779810//                           // -> new last instruction
     
    947978                      // In all case, stop instruction flow
    948979                      reg_EVENT_STATE         [entry->front_end_id][entry->context_id] = COMMIT_EVENT_STATE_NOT_YET_EVENT;
     980//                    reg_EVENT_DEPTH         [entry->front_end_id][entry->context_id] = _rob[packet]._depth;
    949981                      reg_EVENT_NB_INST       [entry->front_end_id][entry->context_id] = reg_NB_INST_COMMIT_ALL [entry->front_end_id][entry->context_id];
    950                                
    951982//                    reg_EVENT_STOP          [entry->front_end_id][entry->context_id] = true;
    952983
     
    12831314//          log_printf(TRACE,Commit_unit,FUNCTION,"      * EVENT             : %d (bank %d, ptr %d)",((reg_EVENT_NUM_PTR [i][j] << _param->_shift_num_slot) | reg_EVENT_NUM_BANK [i][j]), reg_EVENT_NUM_BANK [i][j],reg_EVENT_NUM_PTR [i][j]);
    12841315//          log_printf(TRACE,Commit_unit,FUNCTION,"      * EVENT_CAN_RESTART : %d",reg_EVENT_CAN_RESTART [i][j]);
     1316            log_printf(TRACE,Commit_unit,FUNCTION,"      * EVENT_DEPTH       : %d - type %s",reg_EVENT_DEPTH [i][j],toString(reg_EVENT_TYPE [i][j]).c_str());
    12851317            log_printf(TRACE,Commit_unit,FUNCTION,"      * EVENT_LAST        : %d - packet %d - ptr %d (bank %d, ptr %d)",reg_EVENT_LAST [i][j],reg_EVENT_PACKET[i][j],((reg_EVENT_LAST_NUM_PTR [i][j] << _param->_shift_num_slot) | reg_EVENT_LAST_NUM_BANK [i][j]), reg_EVENT_LAST_NUM_BANK [i][j],reg_EVENT_LAST_NUM_PTR [i][j]);
    12861318            log_printf(TRACE,Commit_unit,FUNCTION,"      * EVENT_NEXT        : stop : %d - packet : %d",reg_EVENT_NEXT_STOP  [i][j],reg_EVENT_NEXT_PACKET[i][j]);
     
    13701402        }
    13711403
     1404      log_printf(TRACE,Commit_unit,FUNCTION,"  * Dump RAT Update Table");
     1405      for (uint32_t i=0; i<_param->_nb_front_end; ++i)
     1406        for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
     1407          {
     1408            {
     1409              std::string str = "";
     1410              for (uint32_t k=0; k<_param->_nb_general_register_logic; k++)
     1411                str+=toString("%.1d ",rat_gpr_update_table[i][j][k]);
     1412             
     1413              log_printf(TRACE,Commit_unit,FUNCTION,"    * GPR [%d][%d] %s",i,j,str.c_str());
     1414            }
     1415
     1416            {
     1417              std::string str = "";
     1418              for (uint32_t k=0; k<_param->_nb_special_register_logic; k++)
     1419                str+=toString("%.1d ",rat_spr_update_table[i][j][k]);
     1420             
     1421              log_printf(TRACE,Commit_unit,FUNCTION,"    * GPR [%d][%d] %s",i,j,str.c_str());
     1422            }
     1423          }
     1424
    13721425      log_printf(TRACE,Commit_unit,FUNCTION,"    * nb_write_rd   : %d",nb_write_rd);
    13731426      log_printf(TRACE,Commit_unit,FUNCTION,"    * nb_write_re   : %d",nb_write_re);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Parameters.cpp

    r138 r139  
    2222#define FUNCTION "Commit_unit::Parameters"
    2323  Parameters::Parameters (uint32_t             nb_front_end                       ,
    24                           uint32_t           * nb_context                         ,
    25                           uint32_t             nb_rename_unit                     ,
    26                           uint32_t             size_queue                         ,
    27                           uint32_t             nb_bank                            ,
    28                           Tretire_ooo_scheme_t retire_ooo_scheme                  ,
    29                           uint32_t           * nb_inst_insert                     ,
    30                           uint32_t           * nb_inst_retire                     ,
    31                           uint32_t             nb_inst_commit                     ,
    32                           uint32_t             nb_inst_reexecute                  ,
    33                           uint32_t             nb_inst_branch_complete            ,
    34                           uint32_t          ** nb_branch_speculated               ,
     24                          uint32_t           * nb_context                         ,//[nb_front_end]           
     25                          uint32_t             nb_rename_unit                     ,                           
     26                          uint32_t             size_queue                         ,                           
     27                          uint32_t             nb_bank                            ,                           
     28                          Tretire_ooo_scheme_t retire_ooo_scheme                  ,                           
     29                          uint32_t           * nb_inst_insert                     ,//[nb_rename_unit]         
     30                          uint32_t           * nb_inst_retire                     ,//[nb_rename_unit]
     31                          uint32_t             nb_inst_commit                     ,                           
     32                          uint32_t             nb_inst_reexecute                  ,                           
     33                          uint32_t             nb_inst_branch_complete            ,                           
     34                          uint32_t          ** nb_branch_speculated               ,//[nb_front_end][nb_context]
    3535                          uint32_t             size_nb_inst_decod                 ,
    3636                          uint32_t             size_general_data                  ,
     
    3939                          uint32_t             size_general_register              ,
    4040                          uint32_t             size_special_register              ,
     41                          Trat_scheme_t      * rat_scheme                         ,//[nb_front_end]
    4142                          Tpriority_t          priority                           ,
    4243                          Tload_balancing_t    load_balancing                     ,
    4344                          uint32_t             nb_rename_unit_select              ,
    4445                          uint32_t             nb_thread                          ,
    45                           uint32_t          ** translate_num_context_to_num_thread,
     46                          uint32_t          ** translate_num_context_to_num_thread,//[nb_front_end][nb_context]
    4647                          bool                 is_toplevel):
    4748    _nb_bank_access_commit (1              )
     
    6162    _nb_inst_branch_complete             = nb_inst_branch_complete            ;
    6263    _nb_branch_speculated                = nb_branch_speculated               ;
     64    _rat_scheme                          = rat_scheme                         ;
    6365    _priority                            = priority                           ;
    6466    _load_balancing                      = load_balancing                     ;
  • 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      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Rename_select.h

    r137 r139  
    8181  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_LAST_EVENT    ;//[nb_front_end][nb_inst_decod]
    8282  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_IS_DELAY_SLOT ;//[nb_front_end][nb_inst_decod]
     83  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_SAVE_RAT      ;//[nb_front_end][nb_inst_decod]
    8384#ifdef DEBUG
    8485  public    : SC_IN (Taddress_t        )  ***  in_RENAME_IN_ADDRESS       ;//[nb_front_end][nb_inst_decod]
     
    114115  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_LAST_EVENT   ;//[nb_inst_rename]
    115116  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_IS_DELAY_SLOT;//[nb_inst_rename]
     117  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_SAVE_RAT     ;//[nb_inst_rename]
    116118#ifdef DEBUG
    117119  public    : SC_OUT(Taddress_t        )   ** out_RENAME_OUT_ADDRESS      ;//[nb_inst_rename]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select.cpp

    r132 r139  
    101101                        << (*(in_RENAME_IN_LAST_EVENT    [i][j]))
    102102                        << (*(in_RENAME_IN_IS_DELAY_SLOT [i][j]))
     103                        << (*(in_RENAME_IN_SAVE_RAT      [i][j]))
    103104#ifdef DEBUG
    104105                        << (*(in_RENAME_IN_ADDRESS       [i][j]))
     
    176177                  (*(out_RENAME_OUT_IS_DELAY_SLOT [x])) (*(in_RENAME_IN_VAL           [i][j]));
    177178                  (*(out_RENAME_OUT_IS_DELAY_SLOT [x])) (*(in_RENAME_IN_IS_DELAY_SLOT [i][j]));
     179                  (*(out_RENAME_OUT_SAVE_RAT      [x])) (*(in_RENAME_IN_VAL           [i][j]));
     180                  (*(out_RENAME_OUT_SAVE_RAT      [x])) (*(in_RENAME_IN_SAVE_RAT      [i][j]));
    178181#ifdef DEBUG
    179182                  (*(out_RENAME_OUT_ADDRESS       [x])) (*(in_RENAME_IN_VAL           [i][j]));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_allocation.cpp

    r137 r139  
    7474      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_LAST_EVENT    ,"last_event"   ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    7575      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     76      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_SAVE_RAT      ,"save_rat"     ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    7677#ifdef DEBUG
    7778      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_ADDRESS       ,"address"      ,Taddress_t        ,_param->_size_instruction_address   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     
    113114      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_LAST_EVENT    ,"last_event"   ,Tcontrol_t        ,1                                   );
    114115      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t        ,1                                   );
     116      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_SAVE_RAT      ,"save_rat"     ,Tcontrol_t        ,1                                   );
    115117#ifdef DEBUG
    116118      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_ADDRESS       ,"address"      ,Taddress_t        ,_param->_size_instruction_address   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp

    r137 r139  
    111111                    PORT_WRITE(out_RENAME_OUT_LAST_EVENT   [i],PORT_READ(in_RENAME_IN_LAST_EVENT    [x][y]));
    112112                    PORT_WRITE(out_RENAME_OUT_IS_DELAY_SLOT[i],PORT_READ(in_RENAME_IN_IS_DELAY_SLOT [x][y]));
     113                    PORT_WRITE(out_RENAME_OUT_SAVE_RAT     [i],PORT_READ(in_RENAME_IN_SAVE_RAT      [x][y]));
    113114#ifdef DEBUG       
    114115                    PORT_WRITE(out_RENAME_OUT_ADDRESS      [i],PORT_READ(in_RENAME_IN_ADDRESS       [x][y]));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/include/Parameters.h

    r88 r139  
    1111#include "Behavioural/include/Parameters.h"
    1212#include "Common/include/Debug.h"
     13#include "Behavioural/include/Types.h"
    1314
    1415namespace morpheo {
     
    2425  {
    2526    //-----[ fields ]------------------------------------------------------------
    26   public : uint32_t    _nb_front_end          ;
    27   public : uint32_t  * _nb_context            ;//[nb_front_end]
    28   public : uint32_t    _nb_inst_insert        ;
    29   public : uint32_t    _nb_inst_retire        ;
    30 //public : uint32_t    _size_general_data     ;
    31 //public : uint32_t    _size_special_register ;
     27  public : uint32_t        _nb_front_end          ;
     28  public : uint32_t      * _nb_context            ;//[nb_front_end]
     29  public : uint32_t        _nb_inst_insert        ;
     30  public : uint32_t        _nb_inst_retire        ;
     31//public : uint32_t        _size_general_data     ;
     32//public : uint32_t        _size_special_register ;
     33  public : Trat_scheme_t   _rat_scheme            ;
    3234
    3335//public : uint32_t    _size_front_end_id     ;
     
    3840
    3941    //-----[ methods ]-----------------------------------------------------------
    40   public : Parameters  (uint32_t    nb_front_end         ,
    41                         uint32_t  * nb_context           ,
    42 //                      uint32_t    size_front_end_id    ,
    43 //                      uint32_t    size_context_id      ,
    44                         uint32_t    nb_inst_insert       ,
    45                         uint32_t    nb_inst_retire       ,
    46                         uint32_t    size_general_data    ,
    47                         uint32_t    size_special_register,
    48                         bool        is_toplevel=false
     42  public : Parameters  (uint32_t        nb_front_end         ,
     43                        uint32_t      * nb_context           ,
     44//                      uint32_t        size_front_end_id    ,
     45//                      uint32_t        size_context_id      ,
     46                        uint32_t        nb_inst_insert       ,
     47                        uint32_t        nb_inst_retire       ,
     48                        uint32_t        size_general_data    ,
     49                        uint32_t        size_special_register,
     50                        Trat_scheme_t   rat_scheme           ,
     51                        bool            is_toplevel=false
    4952                        );
    5053//   public : Parameters  (Parameters & param) ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/include/Rename_unit_Glue.h

    r122 r139  
    1212#include "systemc.h"
    1313#endif
    14 
    1514
    1615#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/include/Parameters.h"
     
    6968  public    : SC_OUT(Tcontext_t        )   ** out_INSERT_FRONT_END_ID                           ;//[nb_inst_insert]
    7069  public    : SC_OUT(Tcontext_t        )   ** out_INSERT_CONTEXT_ID                             ;//[nb_inst_insert]
     70  public    : SC_OUT(Tdepth_t          )   ** out_INSERT_DEPTH                                  ;//[nb_inst_insert]
    7171  public    : SC_OUT(Ttype_t           )   ** out_INSERT_TYPE                                   ;//[nb_inst_insert]
    7272  public    : SC_OUT(Toperation_t      )   ** out_INSERT_OPERATION                              ;//[nb_inst_insert]
     
    8181  public    : SC_IN (Tcontext_t        )   **  in_INSERT_RENAME_SELECT_FRONT_END_ID             ;//[nb_inst_insert]
    8282  public    : SC_IN (Tcontext_t        )   **  in_INSERT_RENAME_SELECT_CONTEXT_ID               ;//[nb_inst_insert]
     83  public    : SC_IN (Tdepth_t          )   **  in_INSERT_RENAME_SELECT_DEPTH                    ;//[nb_inst_insert]
    8384  public    : SC_IN (Ttype_t           )   **  in_INSERT_RENAME_SELECT_TYPE                     ;//[nb_inst_insert]
    8485  public    : SC_IN (Toperation_t      )   **  in_INSERT_RENAME_SELECT_OPERATION                ;//[nb_inst_insert]
     
    9293  public    : SC_OUT(Tcontext_t        )   ** out_INSERT_REGISTER_TRANSLATION_FRONT_END_ID      ;//[nb_inst_insert]
    9394  public    : SC_OUT(Tcontext_t        )   ** out_INSERT_REGISTER_TRANSLATION_CONTEXT_ID        ;//[nb_inst_insert]
     95  public    : SC_OUT(Tdepth_t          )   ** out_INSERT_REGISTER_TRANSLATION_DEPTH             ;//[nb_inst_insert]
    9496  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW;//[nb_inst_insert]
    9597
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Parameters.cpp

    r88 r139  
    1919#undef  FUNCTION
    2020#define FUNCTION "Rename_unit_Glue::Parameters"
    21   Parameters::Parameters (uint32_t    nb_front_end          ,
    22                           uint32_t  * nb_context            ,
    23 //                        uint32_t    size_front_end_id     ,
    24 //                        uint32_t    size_context_id       ,
    25                           uint32_t    nb_inst_insert        ,
    26                           uint32_t    nb_inst_retire        ,
    27                           uint32_t    size_general_data     ,
    28                           uint32_t    size_special_register ,
    29                           bool        is_toplevel
     21  Parameters::Parameters (uint32_t        nb_front_end          ,
     22                          uint32_t      * nb_context            ,
     23//                        uint32_t        size_front_end_id     ,
     24//                        uint32_t        size_context_id       ,
     25                          uint32_t        nb_inst_insert        ,
     26                          uint32_t        nb_inst_retire        ,
     27                          uint32_t        size_general_data     ,
     28                          uint32_t        size_special_register ,
     29                          Trat_scheme_t   rat_scheme           ,
     30                          bool            is_toplevel
    3031                          )
    3132  {
     
    3637    _nb_inst_insert         = nb_inst_insert;
    3738    _nb_inst_retire         = nb_inst_retire;
     39    _rat_scheme             = rat_scheme    ;
    3840
    3941    test();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue.cpp

    r132 r139  
    163163            if (_param->_have_port_context_id)
    164164            sensitive << (*(in_INSERT_RENAME_SELECT_CONTEXT_ID                [i]));
     165            if (_param->_have_port_depth and (_param->_rat_scheme == RAT_DEPTH_SAVE))
     166            sensitive << (*(in_INSERT_RENAME_SELECT_DEPTH                     [i]));
    165167            sensitive << (*(in_INSERT_RENAME_SELECT_TYPE                      [i]))
    166168                      << (*(in_INSERT_RENAME_SELECT_OPERATION                 [i]))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_allocation.cpp

    r122 r139  
    6161      ALLOC1_INTERFACE_BEGIN("insert",OUT,NORTH,_("Insert interface"),_param->_nb_inst_insert);
    6262
    63 //    ALLOC1_SIGNAL_OUT(out_INSERT_VAL                                    ,"VAL"                                    ,Tcontrol_t        ,1);
    64 //    ALLOC1_SIGNAL_IN ( in_INSERT_ACK                                    ,"ACK"                                    ,Tcontrol_t        ,1);
    65       ALLOC1_SIGNAL_OUT(out_INSERT_FRONT_END_ID                           ,"FRONT_END_ID"                           ,Tcontext_t        ,_param->_size_front_end_id);
    66       ALLOC1_SIGNAL_OUT(out_INSERT_CONTEXT_ID                             ,"CONTEXT_ID"                             ,Tcontext_t        ,_param->_size_context_id);
    67       ALLOC1_SIGNAL_OUT(out_INSERT_TYPE                                   ,"TYPE"                                   ,Ttype_t           ,_param->_size_type);
    68       ALLOC1_SIGNAL_OUT(out_INSERT_OPERATION                              ,"OPERATION"                              ,Toperation_t      ,_param->_size_operation);
    69       ALLOC1_SIGNAL_OUT(out_INSERT_IMMEDIAT                               ,"IMMEDIAT"                               ,Tgeneral_data_t   ,_param->_size_general_data);
    70 //    ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION_USE                          ,"EXCEPTION_USE"                          ,Texception_t      ,_param->_size_exception_use);
    71       ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION                              ,"EXCEPTION"                              ,Texception_t      ,_param->_size_exception);
    72       ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW                     ,"NUM_REG_RE_PHY_NEW"                     ,Tspecial_address_t,_param->_size_special_register);
    73       ALLOC1_SIGNAL_OUT(out_INSERT_NO_EXECUTE                             ,"NO_EXECUTE"                             ,Tcontrol_t        ,1);
    74 
    75       ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_VAL                      ,"RENAME_SELECT_VAL"                      ,Tcontrol_t        ,1);
    76       ALLOC1_SIGNAL_OUT(out_INSERT_RENAME_SELECT_ACK                      ,"RENAME_SELECT_ACK"                      ,Tcontrol_t        ,1);
    77       ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_FRONT_END_ID             ,"RENAME_SELECT_FRONT_END_ID"             ,Tcontext_t        ,_param->_size_front_end_id);
    78       ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_CONTEXT_ID               ,"RENAME_SELECT_CONTEXT_ID"               ,Tcontext_t        ,_param->_size_context_id);
    79       ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_TYPE                     ,"RENAME_SELECT_TYPE"                     ,Ttype_t           ,_param->_size_type);
    80       ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_OPERATION                ,"RENAME_SELECT_OPERATION"                ,Toperation_t      ,_param->_size_operation);
    81       ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_IMMEDIAT                 ,"RENAME_SELECT_IMMEDIAT"                 ,Tgeneral_data_t   ,_param->_size_general_data);
    82 //    ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,"RENAME_SELECT_EXCEPTION_USE"            ,Texception_t      ,_param->_size_exception_use);
    83       ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_EXCEPTION                ,"RENAME_SELECT_EXCEPTION"                ,Texception_t      ,_param->_size_exception);
    84       ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_NO_EXECUTE               ,"RENAME_SELECT_NO_EXECUTE"               ,Tcontrol_t        ,1);
    85 
    86       ALLOC1_SIGNAL_OUT(out_INSERT_REGISTER_TRANSLATION_VAL               ,"REGISTER_TRANSLATION_VAL"               ,Tcontrol_t        ,1);
    87       ALLOC1_SIGNAL_IN ( in_INSERT_REGISTER_TRANSLATION_ACK               ,"REGISTER_TRANSLATION_ACK"               ,Tcontrol_t        ,1);
    88       ALLOC1_SIGNAL_OUT(out_INSERT_REGISTER_TRANSLATION_FRONT_END_ID      ,"REGISTER_TRANSLATION_FRONT_END_ID"      ,Tcontext_t        ,_param->_size_front_end_id);
    89       ALLOC1_SIGNAL_OUT(out_INSERT_REGISTER_TRANSLATION_CONTEXT_ID        ,"REGISTER_TRANSLATION_CONTEXT_ID"        ,Tcontext_t        ,_param->_size_context_id);
    90       ALLOC1_SIGNAL_IN ( in_INSERT_REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW,"REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_size_special_register);
    91       ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_STORE_QUEUE_POINTER_VAL           ,"LOAD_STORE_QUEUE_POINTER_VAL"           ,Tcontrol_t        ,1);
    92       ALLOC1_SIGNAL_IN ( in_INSERT_LOAD_STORE_QUEUE_POINTER_ACK           ,"LOAD_STORE_QUEUE_POINTER_ACK"           ,Tcontrol_t        ,1);
    93       ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_STORE_QUEUE_POINTER_FRONT_END_ID  ,"LOAD_STORE_QUEUE_POINTER_FRONT_END_ID"  ,Tcontext_t        ,_param->_size_front_end_id);
    94       ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_STORE_QUEUE_POINTER_CONTEXT_ID    ,"LOAD_STORE_QUEUE_POINTER_CONTEXT_ID"    ,Tcontext_t        ,_param->_size_context_id);
    95       ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_STORE_QUEUE_POINTER_TYPE          ,"LOAD_STORE_QUEUE_POINTER_TYPE"          ,Ttype_t           ,_param->_size_type);
    96       ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_STORE_QUEUE_POINTER_OPERATION     ,"LOAD_STORE_QUEUE_POINTER_OPERATION"     ,Toperation_t      ,_param->_size_operation);
     63//    ALLOC1_SIGNAL_OUT     (out_INSERT_VAL                                    ,"VAL"                                    ,Tcontrol_t        ,1);
     64//    ALLOC1_SIGNAL_IN      ( in_INSERT_ACK                                    ,"ACK"                                    ,Tcontrol_t        ,1);
     65      ALLOC1_SIGNAL_OUT     (out_INSERT_FRONT_END_ID                           ,"FRONT_END_ID"                           ,Tcontext_t        ,_param->_size_front_end_id);
     66      ALLOC1_SIGNAL_OUT     (out_INSERT_CONTEXT_ID                             ,"CONTEXT_ID"                             ,Tcontext_t        ,_param->_size_context_id);
     67      ALLOC1_SIGNAL_OUT_COND(out_INSERT_DEPTH                                  ,"DEPTH"                                  ,Tdepth_t          ,_param->_size_depth,_param->_rat_scheme == RAT_DEPTH_SAVE);
     68      ALLOC1_SIGNAL_OUT     (out_INSERT_TYPE                                   ,"TYPE"                                   ,Ttype_t           ,_param->_size_type);
     69      ALLOC1_SIGNAL_OUT     (out_INSERT_OPERATION                              ,"OPERATION"                              ,Toperation_t      ,_param->_size_operation);
     70      ALLOC1_SIGNAL_OUT     (out_INSERT_IMMEDIAT                               ,"IMMEDIAT"                               ,Tgeneral_data_t   ,_param->_size_general_data);
     71//    ALLOC1_SIGNAL_OUT     (out_INSERT_EXCEPTION_USE                          ,"EXCEPTION_USE"                          ,Texception_t      ,_param->_size_exception_use);
     72      ALLOC1_SIGNAL_OUT     (out_INSERT_EXCEPTION                              ,"EXCEPTION"                              ,Texception_t      ,_param->_size_exception);
     73      ALLOC1_SIGNAL_OUT     (out_INSERT_NUM_REG_RE_PHY_NEW                     ,"NUM_REG_RE_PHY_NEW"                     ,Tspecial_address_t,_param->_size_special_register);
     74      ALLOC1_SIGNAL_OUT     (out_INSERT_NO_EXECUTE                             ,"NO_EXECUTE"                             ,Tcontrol_t        ,1);
     75                           
     76      ALLOC1_SIGNAL_IN      ( in_INSERT_RENAME_SELECT_VAL                      ,"RENAME_SELECT_VAL"                      ,Tcontrol_t        ,1);
     77      ALLOC1_SIGNAL_OUT     (out_INSERT_RENAME_SELECT_ACK                      ,"RENAME_SELECT_ACK"                      ,Tcontrol_t        ,1);
     78      ALLOC1_SIGNAL_IN      ( in_INSERT_RENAME_SELECT_FRONT_END_ID             ,"RENAME_SELECT_FRONT_END_ID"             ,Tcontext_t        ,_param->_size_front_end_id);
     79      ALLOC1_SIGNAL_IN      ( in_INSERT_RENAME_SELECT_CONTEXT_ID               ,"RENAME_SELECT_CONTEXT_ID"               ,Tcontext_t        ,_param->_size_context_id);
     80      ALLOC1_SIGNAL_IN_COND ( in_INSERT_RENAME_SELECT_DEPTH                    ,"RENAME_SELECT_DEPTH"                    ,Tdepth_t          ,_param->_size_depth,_param->_rat_scheme == RAT_DEPTH_SAVE);
     81      ALLOC1_SIGNAL_IN      ( in_INSERT_RENAME_SELECT_TYPE                     ,"RENAME_SELECT_TYPE"                     ,Ttype_t           ,_param->_size_type);
     82      ALLOC1_SIGNAL_IN      ( in_INSERT_RENAME_SELECT_OPERATION                ,"RENAME_SELECT_OPERATION"                ,Toperation_t      ,_param->_size_operation);
     83      ALLOC1_SIGNAL_IN      ( in_INSERT_RENAME_SELECT_IMMEDIAT                 ,"RENAME_SELECT_IMMEDIAT"                 ,Tgeneral_data_t   ,_param->_size_general_data);
     84//    ALLOC1_SIGNAL_IN      ( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,"RENAME_SELECT_EXCEPTION_USE"            ,Texception_t      ,_param->_size_exception_use);
     85      ALLOC1_SIGNAL_IN      ( in_INSERT_RENAME_SELECT_EXCEPTION                ,"RENAME_SELECT_EXCEPTION"                ,Texception_t      ,_param->_size_exception);
     86      ALLOC1_SIGNAL_IN      ( in_INSERT_RENAME_SELECT_NO_EXECUTE               ,"RENAME_SELECT_NO_EXECUTE"               ,Tcontrol_t        ,1);
     87                           
     88      ALLOC1_SIGNAL_OUT     (out_INSERT_REGISTER_TRANSLATION_VAL               ,"REGISTER_TRANSLATION_VAL"               ,Tcontrol_t        ,1);
     89      ALLOC1_SIGNAL_IN      ( in_INSERT_REGISTER_TRANSLATION_ACK               ,"REGISTER_TRANSLATION_ACK"               ,Tcontrol_t        ,1);
     90      ALLOC1_SIGNAL_OUT     (out_INSERT_REGISTER_TRANSLATION_FRONT_END_ID      ,"REGISTER_TRANSLATION_FRONT_END_ID"      ,Tcontext_t        ,_param->_size_front_end_id);
     91      ALLOC1_SIGNAL_OUT     (out_INSERT_REGISTER_TRANSLATION_CONTEXT_ID        ,"REGISTER_TRANSLATION_CONTEXT_ID"        ,Tcontext_t        ,_param->_size_context_id);
     92      ALLOC1_SIGNAL_OUT_COND(out_INSERT_REGISTER_TRANSLATION_DEPTH             ,"REGISTER_TRANSLATION_DEPTH"             ,Tdepth_t          ,_param->_size_depth,_param->_rat_scheme == RAT_DEPTH_SAVE);
     93      ALLOC1_SIGNAL_IN      ( in_INSERT_REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW,"REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_size_special_register);
     94      ALLOC1_SIGNAL_OUT     (out_INSERT_LOAD_STORE_QUEUE_POINTER_VAL           ,"LOAD_STORE_QUEUE_POINTER_VAL"           ,Tcontrol_t        ,1);
     95      ALLOC1_SIGNAL_IN      ( in_INSERT_LOAD_STORE_QUEUE_POINTER_ACK           ,"LOAD_STORE_QUEUE_POINTER_ACK"           ,Tcontrol_t        ,1);
     96      ALLOC1_SIGNAL_OUT     (out_INSERT_LOAD_STORE_QUEUE_POINTER_FRONT_END_ID  ,"LOAD_STORE_QUEUE_POINTER_FRONT_END_ID"  ,Tcontext_t        ,_param->_size_front_end_id);
     97      ALLOC1_SIGNAL_OUT     (out_INSERT_LOAD_STORE_QUEUE_POINTER_CONTEXT_ID    ,"LOAD_STORE_QUEUE_POINTER_CONTEXT_ID"    ,Tcontext_t        ,_param->_size_context_id);
     98      ALLOC1_SIGNAL_OUT     (out_INSERT_LOAD_STORE_QUEUE_POINTER_TYPE          ,"LOAD_STORE_QUEUE_POINTER_TYPE"          ,Ttype_t           ,_param->_size_type);
     99      ALLOC1_SIGNAL_OUT     (out_INSERT_LOAD_STORE_QUEUE_POINTER_OPERATION     ,"LOAD_STORE_QUEUE_POINTER_OPERATION"     ,Toperation_t      ,_param->_size_operation);
    97100
    98101      ALLOC1_INTERFACE_END(_param->_nb_inst_insert);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_deallocation.cpp

    r122 r139  
    2929        delete    in_NRESET;
    3030
    31 //      DELETE1_SIGNAL(out_INSERT_VAL                                    ,_param->_nb_inst_insert,1);
    32 //      DELETE1_SIGNAL( in_INSERT_ACK                                    ,_param->_nb_inst_insert,1);
    33         DELETE1_SIGNAL(out_INSERT_FRONT_END_ID                           ,_param->_nb_inst_insert,_param->_size_front_end_id);
    34         DELETE1_SIGNAL(out_INSERT_CONTEXT_ID                             ,_param->_nb_inst_insert,_param->_size_context_id);
    35         DELETE1_SIGNAL(out_INSERT_TYPE                                   ,_param->_nb_inst_insert,_param->_size_type);
    36         DELETE1_SIGNAL(out_INSERT_OPERATION                              ,_param->_nb_inst_insert,_param->_size_operation);
    37         DELETE1_SIGNAL(out_INSERT_IMMEDIAT                               ,_param->_nb_inst_insert,_param->_size_general_data);
    38 //      DELETE1_SIGNAL(out_INSERT_EXCEPTION_USE                          ,_param->_nb_inst_insert,_param->_size_exception_use);
    39         DELETE1_SIGNAL(out_INSERT_EXCEPTION                              ,_param->_nb_inst_insert,_param->_size_exception);
    40         DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW                     ,_param->_nb_inst_insert,_param->_size_special_register);
    41         DELETE1_SIGNAL(out_INSERT_NO_EXECUTE                             ,_param->_nb_inst_insert,1);
    42 
    43         DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_VAL                      ,_param->_nb_inst_insert,1);
    44         DELETE1_SIGNAL(out_INSERT_RENAME_SELECT_ACK                      ,_param->_nb_inst_insert,1);
    45         DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_FRONT_END_ID             ,_param->_nb_inst_insert,_param->_size_front_end_id);
    46         DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_CONTEXT_ID               ,_param->_nb_inst_insert,_param->_size_context_id);
    47         DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_TYPE                     ,_param->_nb_inst_insert,_param->_size_type);
    48         DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_OPERATION                ,_param->_nb_inst_insert,_param->_size_operation);
    49         DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_IMMEDIAT                 ,_param->_nb_inst_insert,_param->_size_general_data);
    50 //      DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,_param->_nb_inst_insert,_param->_size_exception_use);
    51         DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_EXCEPTION                ,_param->_nb_inst_insert,_param->_size_exception);
    52         DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_NO_EXECUTE               ,_param->_nb_inst_insert,1);
    53 
    54         DELETE1_SIGNAL(out_INSERT_REGISTER_TRANSLATION_VAL               ,_param->_nb_inst_insert,1);
    55         DELETE1_SIGNAL( in_INSERT_REGISTER_TRANSLATION_ACK               ,_param->_nb_inst_insert,1);
    56         DELETE1_SIGNAL(out_INSERT_REGISTER_TRANSLATION_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id);
    57         DELETE1_SIGNAL(out_INSERT_REGISTER_TRANSLATION_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id);
    58         DELETE1_SIGNAL( in_INSERT_REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register);
    59         DELETE1_SIGNAL(out_INSERT_LOAD_STORE_QUEUE_POINTER_VAL           ,_param->_nb_inst_insert,1);
    60         DELETE1_SIGNAL( in_INSERT_LOAD_STORE_QUEUE_POINTER_ACK           ,_param->_nb_inst_insert,1);
    61         DELETE1_SIGNAL(out_INSERT_LOAD_STORE_QUEUE_POINTER_FRONT_END_ID  ,_param->_nb_inst_insert,_param->_size_front_end_id);
    62         DELETE1_SIGNAL(out_INSERT_LOAD_STORE_QUEUE_POINTER_CONTEXT_ID    ,_param->_nb_inst_insert,_param->_size_context_id);
    63         DELETE1_SIGNAL(out_INSERT_LOAD_STORE_QUEUE_POINTER_TYPE          ,_param->_nb_inst_insert,_param->_size_type);
    64         DELETE1_SIGNAL(out_INSERT_LOAD_STORE_QUEUE_POINTER_OPERATION     ,_param->_nb_inst_insert,_param->_size_operation);
    65                                                                          
    66         DELETE1_SIGNAL( in_RETIRE_VAL                                    ,_param->_nb_inst_retire,1);
    67         DELETE1_SIGNAL(out_RETIRE_ACK                                    ,_param->_nb_inst_retire,1);
    68         DELETE1_SIGNAL(out_RETIRE_LOAD_STORE_QUEUE_POINTER_VAL           ,_param->_nb_inst_retire,1);
    69         DELETE1_SIGNAL( in_RETIRE_LOAD_STORE_QUEUE_POINTER_ACK           ,_param->_nb_inst_retire,1);
    70 //      DELETE1_SIGNAL(out_RETIRE_LOAD_STORE_QUEUE_POINTER_TYPE          ,_param->_nb_inst_retire,_param->_size_type);
    71 //      DELETE1_SIGNAL(out_RETIRE_LOAD_STORE_QUEUE_POINTER_OPERATION     ,_param->_nb_inst_retire,_param->_size_operation);
    72         DELETE1_SIGNAL(out_RETIRE_REGISTER_TRANSLATION_VAL               ,_param->_nb_inst_retire,1);
    73         DELETE1_SIGNAL( in_RETIRE_REGISTER_TRANSLATION_ACK               ,_param->_nb_inst_retire,1);
    74 
    75         DELETE2_SIGNAL( in_RETIRE_EVENT_VAL                              ,_param->_nb_front_end,_param->_nb_context[it1],1);
    76         DELETE2_SIGNAL(out_RETIRE_EVENT_ACK                              ,_param->_nb_front_end,_param->_nb_context[it1],1);
    77         DELETE2_SIGNAL(out_RETIRE_EVENT_LOAD_STORE_QUEUE_POINTER_VAL     ,_param->_nb_front_end,_param->_nb_context[it1],1);
    78         DELETE2_SIGNAL( in_RETIRE_EVENT_LOAD_STORE_QUEUE_POINTER_ACK     ,_param->_nb_front_end,_param->_nb_context[it1],1);
    79         DELETE2_SIGNAL(out_RETIRE_EVENT_REGISTER_TRANSLATION_VAL         ,_param->_nb_front_end,_param->_nb_context[it1],1);
    80         DELETE2_SIGNAL( in_RETIRE_EVENT_REGISTER_TRANSLATION_ACK         ,_param->_nb_front_end,_param->_nb_context[it1],1);
    81                                                                          
    82         DELETE2_SIGNAL( in_SPR_READ_SR                                   ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_spr);
     31//      DELETE1_SIGNAL     (out_INSERT_VAL                                    ,_param->_nb_inst_insert,1);
     32//      DELETE1_SIGNAL     ( in_INSERT_ACK                                    ,_param->_nb_inst_insert,1);
     33        DELETE1_SIGNAL     (out_INSERT_FRONT_END_ID                           ,_param->_nb_inst_insert,_param->_size_front_end_id);
     34        DELETE1_SIGNAL     (out_INSERT_CONTEXT_ID                             ,_param->_nb_inst_insert,_param->_size_context_id);
     35        DELETE1_SIGNAL_COND(out_INSERT_DEPTH                                  ,_param->_nb_inst_insert,_param->_size_depth,_param->_rat_scheme == RAT_DEPTH_SAVE);
     36        DELETE1_SIGNAL     (out_INSERT_TYPE                                   ,_param->_nb_inst_insert,_param->_size_type);
     37        DELETE1_SIGNAL     (out_INSERT_OPERATION                              ,_param->_nb_inst_insert,_param->_size_operation);
     38        DELETE1_SIGNAL     (out_INSERT_IMMEDIAT                               ,_param->_nb_inst_insert,_param->_size_general_data);
     39//      DELETE1_SIGNAL     (out_INSERT_EXCEPTION_USE                          ,_param->_nb_inst_insert,_param->_size_exception_use);
     40        DELETE1_SIGNAL     (out_INSERT_EXCEPTION                              ,_param->_nb_inst_insert,_param->_size_exception);
     41        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RE_PHY_NEW                     ,_param->_nb_inst_insert,_param->_size_special_register);
     42        DELETE1_SIGNAL     (out_INSERT_NO_EXECUTE                             ,_param->_nb_inst_insert,1);
     43                           
     44        DELETE1_SIGNAL     ( in_INSERT_RENAME_SELECT_VAL                      ,_param->_nb_inst_insert,1);
     45        DELETE1_SIGNAL     (out_INSERT_RENAME_SELECT_ACK                      ,_param->_nb_inst_insert,1);
     46        DELETE1_SIGNAL     ( in_INSERT_RENAME_SELECT_FRONT_END_ID             ,_param->_nb_inst_insert,_param->_size_front_end_id);
     47        DELETE1_SIGNAL     ( in_INSERT_RENAME_SELECT_CONTEXT_ID               ,_param->_nb_inst_insert,_param->_size_context_id);
     48        DELETE1_SIGNAL_COND( in_INSERT_RENAME_SELECT_DEPTH                    ,_param->_nb_inst_insert,_param->_size_depth,_param->_rat_scheme == RAT_DEPTH_SAVE);
     49        DELETE1_SIGNAL     ( in_INSERT_RENAME_SELECT_TYPE                     ,_param->_nb_inst_insert,_param->_size_type);
     50        DELETE1_SIGNAL     ( in_INSERT_RENAME_SELECT_OPERATION                ,_param->_nb_inst_insert,_param->_size_operation);
     51        DELETE1_SIGNAL     ( in_INSERT_RENAME_SELECT_IMMEDIAT                 ,_param->_nb_inst_insert,_param->_size_general_data);
     52//      DELETE1_SIGNAL     ( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,_param->_nb_inst_insert,_param->_size_exception_use);
     53        DELETE1_SIGNAL     ( in_INSERT_RENAME_SELECT_EXCEPTION                ,_param->_nb_inst_insert,_param->_size_exception);
     54        DELETE1_SIGNAL     ( in_INSERT_RENAME_SELECT_NO_EXECUTE               ,_param->_nb_inst_insert,1);
     55                           
     56        DELETE1_SIGNAL     (out_INSERT_REGISTER_TRANSLATION_VAL               ,_param->_nb_inst_insert,1);
     57        DELETE1_SIGNAL     ( in_INSERT_REGISTER_TRANSLATION_ACK               ,_param->_nb_inst_insert,1);
     58        DELETE1_SIGNAL     (out_INSERT_REGISTER_TRANSLATION_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id);
     59        DELETE1_SIGNAL     (out_INSERT_REGISTER_TRANSLATION_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id);
     60        DELETE1_SIGNAL_COND(out_INSERT_REGISTER_TRANSLATION_DEPTH             ,_param->_nb_inst_insert,_param->_size_depth,_param->_rat_scheme == RAT_DEPTH_SAVE);
     61        DELETE1_SIGNAL     ( in_INSERT_REGISTER_TRANSLATION_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register);
     62        DELETE1_SIGNAL     (out_INSERT_LOAD_STORE_QUEUE_POINTER_VAL           ,_param->_nb_inst_insert,1);
     63        DELETE1_SIGNAL     ( in_INSERT_LOAD_STORE_QUEUE_POINTER_ACK           ,_param->_nb_inst_insert,1);
     64        DELETE1_SIGNAL     (out_INSERT_LOAD_STORE_QUEUE_POINTER_FRONT_END_ID  ,_param->_nb_inst_insert,_param->_size_front_end_id);
     65        DELETE1_SIGNAL     (out_INSERT_LOAD_STORE_QUEUE_POINTER_CONTEXT_ID    ,_param->_nb_inst_insert,_param->_size_context_id);
     66        DELETE1_SIGNAL     (out_INSERT_LOAD_STORE_QUEUE_POINTER_TYPE          ,_param->_nb_inst_insert,_param->_size_type);
     67        DELETE1_SIGNAL     (out_INSERT_LOAD_STORE_QUEUE_POINTER_OPERATION     ,_param->_nb_inst_insert,_param->_size_operation);
     68                                                                         
     69        DELETE1_SIGNAL     ( in_RETIRE_VAL                                    ,_param->_nb_inst_retire,1);
     70        DELETE1_SIGNAL     (out_RETIRE_ACK                                    ,_param->_nb_inst_retire,1);
     71        DELETE1_SIGNAL     (out_RETIRE_LOAD_STORE_QUEUE_POINTER_VAL           ,_param->_nb_inst_retire,1);
     72        DELETE1_SIGNAL     ( in_RETIRE_LOAD_STORE_QUEUE_POINTER_ACK           ,_param->_nb_inst_retire,1);
     73//      DELETE1_SIGNAL     (out_RETIRE_LOAD_STORE_QUEUE_POINTER_TYPE          ,_param->_nb_inst_retire,_param->_size_type);
     74//      DELETE1_SIGNAL     (out_RETIRE_LOAD_STORE_QUEUE_POINTER_OPERATION     ,_param->_nb_inst_retire,_param->_size_operation);
     75        DELETE1_SIGNAL     (out_RETIRE_REGISTER_TRANSLATION_VAL               ,_param->_nb_inst_retire,1);
     76        DELETE1_SIGNAL     ( in_RETIRE_REGISTER_TRANSLATION_ACK               ,_param->_nb_inst_retire,1);
     77                           
     78        DELETE2_SIGNAL     ( in_RETIRE_EVENT_VAL                              ,_param->_nb_front_end,_param->_nb_context[it1],1);
     79        DELETE2_SIGNAL     (out_RETIRE_EVENT_ACK                              ,_param->_nb_front_end,_param->_nb_context[it1],1);
     80        DELETE2_SIGNAL     (out_RETIRE_EVENT_LOAD_STORE_QUEUE_POINTER_VAL     ,_param->_nb_front_end,_param->_nb_context[it1],1);
     81        DELETE2_SIGNAL     ( in_RETIRE_EVENT_LOAD_STORE_QUEUE_POINTER_ACK     ,_param->_nb_front_end,_param->_nb_context[it1],1);
     82        DELETE2_SIGNAL     (out_RETIRE_EVENT_REGISTER_TRANSLATION_VAL         ,_param->_nb_front_end,_param->_nb_context[it1],1);
     83        DELETE2_SIGNAL     ( in_RETIRE_EVENT_REGISTER_TRANSLATION_ACK         ,_param->_nb_front_end,_param->_nb_context[it1],1);
     84                                                                         
     85        DELETE2_SIGNAL     ( in_SPR_READ_SR                                   ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_spr);
    8386      }
    8487    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_insert.cpp

    r123 r139  
    3232        Tcontext_t         FRONT_END_ID       = (_param->_have_port_front_end_id)?PORT_READ(in_INSERT_RENAME_SELECT_FRONT_END_ID [i]):0;
    3333        Tcontext_t         CONTEXT_ID         = (_param->_have_port_context_id  )?PORT_READ(in_INSERT_RENAME_SELECT_CONTEXT_ID   [i]):0;
     34        Tdepth_t           DEPTH              = ((_param->_rat_scheme == RAT_DEPTH_SAVE) and _param->_have_port_depth)?PORT_READ(in_INSERT_RENAME_SELECT_DEPTH [i]):0;
    3435        Ttype_t            TYPE               = PORT_READ(in_INSERT_RENAME_SELECT_TYPE                      [i]);
    3536        Toperation_t       OPERATION          = PORT_READ(in_INSERT_RENAME_SELECT_OPERATION                 [i]);
     
    9798        PORT_WRITE(out_INSERT_LOAD_STORE_QUEUE_POINTER_CONTEXT_ID   [i],CONTEXT_ID        );
    9899          }
     100        if (_param->_have_port_depth and (_param->_rat_scheme == RAT_DEPTH_SAVE))
     101          {
     102        PORT_WRITE(out_INSERT_DEPTH                                 [i],DEPTH             );
     103        PORT_WRITE(out_INSERT_REGISTER_TRANSLATION_DEPTH            [i],DEPTH             );
     104          }
    99105        PORT_WRITE(out_INSERT_TYPE                                  [i],TYPE              );
    100106        PORT_WRITE(out_INSERT_OPERATION                             [i],OPERATION         );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Parameters.h

    r112 r139  
    4545  public : uint32_t             _nb_general_register              ;
    4646  public : uint32_t             _nb_special_register              ;
     47  public : Trat_scheme_t        _rat_scheme                       ;
    4748  public : uint32_t             _nb_reg_free                      ;
    4849  public : uint32_t             _nb_bank                          ;
    49 //   public : uint32_t             _size_read_counter                ;
    50                                                                  
     50//public : uint32_t             _size_read_counter                ;
     51  public : uint32_t          ** _nb_branch_speculated             ;//[nb_front_end][nb_context]
     52                                                 
    5153//public : uint32_t             _size_front_end_id                ;
    5254//public : uint32_t             _size_context_id                  ;   
     
    8587                        uint32_t             nb_general_register              ,
    8688                        uint32_t             nb_special_register              ,
     89                        Trat_scheme_t        rat_scheme                       ,
    8790                        uint32_t             nb_reg_free                      ,
    8891                        uint32_t             nb_bank                          ,
    8992//                      uint32_t             size_read_counter                ,
     93                        uint32_t          ** nb_branch_speculated             ,//[nb_front_end][nb_context]
    9094                        bool                 is_toplevel=false
    9195                        );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Rename_unit.h

    r137 r139  
    8383  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_LAST_EVENT        ;//[nb_front_end][nb_inst_decod]
    8484  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_IS_DELAY_SLOT     ;//[nb_front_end][nb_inst_decod]
     85  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_SAVE_RAT          ;//[nb_front_end][nb_inst_decod]
    8586#ifdef DEBUG
    8687  public    : SC_IN (Taddress_t        )  ***  in_RENAME_IN_ADDRESS           ;//[nb_front_end][nb_inst_decod]
     
    163164  public    : SC_IN (Tlsq_ptr_t        )   **  in_RETIRE_STORE_QUEUE_PTR_WRITE;//[nb_inst_retire]
    164165  public    : SC_IN (Tlsq_ptr_t        )   **  in_RETIRE_LOAD_QUEUE_PTR_WRITE ;//[nb_inst_retire]
    165 //   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RA              ;//[nb_inst_retire]
    166 //   public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RA_PHY       ;//[nb_inst_retire]
    167 //   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RB              ;//[nb_inst_retire]
    168 //   public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RB_PHY       ;//[nb_inst_retire]
    169 //   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RC              ;//[nb_inst_retire]
    170 //   public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RC_PHY       ;//[nb_inst_retire]
     166//public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RA              ;//[nb_inst_retire]
     167//public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RA_PHY       ;//[nb_inst_retire]
     168//public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RB              ;//[nb_inst_retire]
     169//public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RB_PHY       ;//[nb_inst_retire]
     170//public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RC              ;//[nb_inst_retire]
     171//public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RC_PHY       ;//[nb_inst_retire]
    171172  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RD             ;//[nb_inst_retire]
    172173  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_LOG       ;//[nb_inst_retire]
     
    177178  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_OLD   ;//[nb_inst_retire]
    178179  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_NEW   ;//[nb_inst_retire]
     180  public    : SC_IN (Tcontrol_t         )  **  in_RETIRE_RESTORE              ;//[nb_inst_retire]
     181  public    : SC_IN (Tcontrol_t         )  **  in_RETIRE_RESTORE_RD_PHY_OLD   ;//[nb_inst_retire]
     182  public    : SC_IN (Tcontrol_t         )  **  in_RETIRE_RESTORE_RE_PHY_OLD   ;//[nb_inst_retire]
    179183
    180184    // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    184188//public    : SC_IN (Tcontrol_t        )  ***  in_RETIRE_EVENT_FLUSH          ;//[nb_front_end][nb_context]
    185189  public    : SC_IN (Tcontrol_t        )  ***  in_RETIRE_EVENT_STOP           ;//[nb_front_end][nb_context]
     190  public    : SC_IN (Tevent_type_t     )  ***  in_RETIRE_EVENT_TYPE           ;//[nb_front_end][nb_context]
     191  public    : SC_IN (Tdepth_t          )  ***  in_RETIRE_EVENT_DEPTH          ;//[nb_front_end][nb_context]
    186192
    187193    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters.cpp

    r112 r139  
    3636                          uint32_t             nb_general_register              ,
    3737                          uint32_t             nb_special_register              ,
     38                          Trat_scheme_t        rat_scheme                       ,
    3839                          uint32_t             nb_reg_free                      ,
    3940                          uint32_t             nb_bank                          ,
    4041//                        uint32_t             size_read_counter                ,
     42                          uint32_t          ** nb_branch_speculated             ,//[nb_front_end][nb_context]
    4143                          bool                 is_toplevel)
    4244  {
     
    5961    _nb_general_register               = nb_general_register              ;
    6062    _nb_special_register               = nb_special_register              ;
     63    _rat_scheme                        = rat_scheme                       ;
    6164    _nb_reg_free                       = nb_reg_free                      ;
    6265    _nb_bank                           = nb_bank                          ;
    63 //     _size_read_counter                 = size_read_counter                ;
    64    
     66//  _size_read_counter                 = size_read_counter                ;
     67    _nb_branch_speculated              = nb_branch_speculated             ;
     68
    6569    uint32_t size_special_register     = log2(_nb_special_register);
    6670
     
    8892       _nb_general_register   ,
    8993       _nb_special_register   ,
     94       _rat_scheme            ,
    9095       _nb_inst_insert        ,
    9196       _nb_inst_retire        ,
    9297       _nb_reg_free           ,
    93        _nb_bank               // ,
    94 //        _size_read_counter     
     98       _nb_bank               ,
     99//        _size_read_counter  ,
     100       _nb_branch_speculated 
    95101       );
    96102
     
    117123       _nb_inst_retire       ,
    118124       _size_general_data    ,
    119        _size_special_register
     125       _size_special_register,
     126       _rat_scheme
    120127       );
    121128
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters_print.cpp

    r112 r139  
    5858
    5959            xml.singleton_begin("link_load_store_unit_with_thread "); xml.attribut("value",toString(_link_load_store_unit_with_thread [i][j])); xml.singleton_end();
     60            xml.singleton_begin("nb_branch_speculated             "); xml.attribut("value",toString(_nb_branch_speculated             [i][j])); xml.singleton_end();
    6061           
    6162            xml. balise_close();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_allocation.cpp

    r137 r139  
    7474      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_LAST_EVENT    ,"last_event"   ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    7575      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     76      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_SAVE_RAT      ,"save_rat"     ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    7677#ifdef DEBUG
    7778      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_ADDRESS       ,"address"      ,Taddress_t        ,_param->_size_instruction_address   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     
    166167      ALLOC1_SIGNAL_IN ( in_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr       );
    167168      ALLOC1_SIGNAL_IN ( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr        );
    168 //       ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1                                   );
    169 //       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RA_PHY       ,"num_reg_ra_phy"       ,Tgeneral_address_t,_param->_size_general_register      );
    170 //       ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1                                   );
    171 //       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RB_PHY       ,"num_reg_rb_phy"       ,Tgeneral_address_t,_param->_size_general_register      );
    172 //       ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1                                   );
    173 //       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RC_PHY       ,"num_reg_rc_phy"       ,Tspecial_address_t,_param->_size_special_register      );
     169//    ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1                                   );
     170//    ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RA_PHY       ,"num_reg_ra_phy"       ,Tgeneral_address_t,_param->_size_general_register      );
     171//    ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1                                   );
     172//    ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RB_PHY       ,"num_reg_rb_phy"       ,Tgeneral_address_t,_param->_size_general_register      );
     173//    ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1                                   );
     174//    ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RC_PHY       ,"num_reg_rc_phy"       ,Tspecial_address_t,_param->_size_special_register      );
    174175      ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                                   );
    175176      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_LOG       ,"num_reg_rd_log"       ,Tgeneral_address_t,_param->_size_general_register_logic);
     
    180181      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD   ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      );
    181182      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW   ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      );
     183      ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE              ,"restore"              ,Tcontrol_t        ,1                                   );
     184      ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RD_PHY_OLD   ,"restore_rd_phy_old"   ,Tcontrol_t        ,1                                   );
     185      ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RE_PHY_OLD   ,"restore_re_phy_old"   ,Tcontrol_t        ,1                                   );
    182186
    183187      ALLOC1_INTERFACE_END(_param->_nb_inst_retire);
     
    188192      ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
    189193
    190       _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
    191       _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK           ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
    192       _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE         ,"state"                ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
    193 //       _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_FLUSH         ,"flush"                ,Tcontrol_t        ,1                        , _param->_nb_front_end, _param->_nb_context[it1]);
    194       _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STOP          ,"stop"                 ,Tcontrol_t        ,1                        , _param->_nb_front_end, _param->_nb_context[it1]);
     194      _ALLOC2_VALACK_IN      ( in_RETIRE_EVENT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     195      _ALLOC2_VALACK_OUT     (out_RETIRE_EVENT_ACK           ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
     196      _ALLOC2_SIGNAL_IN      ( in_RETIRE_EVENT_STATE         ,"state"                ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     197//    _ALLOC2_SIGNAL_IN      ( in_RETIRE_EVENT_FLUSH         ,"flush"                ,Tcontrol_t        ,1                        , _param->_nb_front_end, _param->_nb_context[it1]);
     198      _ALLOC2_SIGNAL_IN      ( in_RETIRE_EVENT_STOP          ,"stop"                 ,Tcontrol_t        ,1                        , _param->_nb_front_end, _param->_nb_context[it1]);
     199      _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);
     200      _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);
    195201
    196202      ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]);
     
    337343                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_CONTEXT_ID"   );
    338344            if (_param->_have_port_depth)
     345              {
    339346            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_DEPTH"        ,
    340347                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_DEPTH"        );
     348              }
    341349#ifdef STATISTICS
    342350            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_INSTRUCTION"  ,
     
    355363            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_IS_DELAY_SLOT",
    356364                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_IS_DELAY_SLOT");
     365            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_SAVE_RAT"     ,
     366                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_SAVE_RAT"     );
    357367#ifdef DEBUG
    358368            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_ADDRESS"      ,
     
    400410#endif
    401411
     412          if (_param->_have_port_depth and (_param->_rat_scheme != RAT_DEPTH_SAVE))
     413          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_DEPTH",
     414                              dest,"out_INSERT_"    +toString(i)+"_DEPTH");
    402415          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_IS_DELAY_SLOT",
    403416                              dest,"out_INSERT_"    +toString(i)+"_IS_DELAY_SLOT");
    404           if (_param->_have_port_depth)
    405           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_DEPTH"       ,
    406                               dest,"out_INSERT_"    +toString(i)+"_DEPTH"       );
     417
    407418#ifdef STATISTICS
    408419          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_INSTRUCTION" ,
     
    429440#endif
    430441
     442          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_SAVE_RAT"  ,
     443                                   dest, "in_RENAME_"    +toString(i)+"_SAVE_RAT"  );
    431444          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RA"   ,
    432445                                   dest, "in_RENAME_"    +toString(i)+"_READ_RA"   );
     
    467480          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_CONTEXT_ID"   ,
    468481                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_CONTEXT_ID"   );
     482          if (_param->_have_port_depth and (_param->_rat_scheme == RAT_DEPTH_SAVE))
     483          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_DEPTH"        ,
     484                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_DEPTH"        );
    469485          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_TYPE"         ,
    470486                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_TYPE"         );
     
    540556          COMPONENT_MAP(_component,src , "in_RENAME_"+toString(i)+                     "_CONTEXT_ID"  ,
    541557                                   dest,"out_INSERT_"+toString(i)+"_REGISTER_TRANSLATION_CONTEXT_ID"  );
    542 
     558          if (_param->_have_port_depth and (_param->_rat_scheme == RAT_DEPTH_SAVE))
     559          COMPONENT_MAP(_component,src , "in_RENAME_"+toString(i)+                     "_DEPTH"        ,
     560                                   dest,"out_INSERT_"+toString(i)+"_REGISTER_TRANSLATION_DEPTH"        );
     561
     562          //  in_RENAME_SAVE_RAS          - rename_select
    543563          //  in_RENAME_READ_RA           - rename_select
    544564          //  in_RENAME_NUM_REG_RA_LOG    - rename_select
     
    662682          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
    663683                              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
     684          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RESTORE"           ,
     685                              dest, "in_RETIRE_"+toString(i)+"_RESTORE"           );
     686          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD",
     687                              dest, "in_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD");
     688          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD",
     689                              dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD");
    664690
    665691          dest = _name+"_glue";
     
    696722            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE",
    697723                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE");
     724            if (_param->_rat_scheme == RAT_DEPTH_SAVE)
     725              {
     726            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_TYPE" ,
     727                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_TYPE" );
     728            if (_param->_have_port_depth)
     729            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_DEPTH",
     730                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_DEPTH");
     731              }
     732
    698733          }
    699734
     
    871906          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_CONTEXT_ID"   ,
    872907                              dest,"out_INSERT_"+toString(i)+"_CONTEXT_ID"   );
     908          if (_param->_have_port_depth and (_param->_rat_scheme == RAT_DEPTH_SAVE))
     909          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_DEPTH"        ,
     910                              dest,"out_INSERT_"+toString(i)+"_DEPTH"        );
    873911          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_TYPE"         ,
    874912                              dest,"out_INSERT_"+toString(i)+"_TYPE"         );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_deallocation.cpp

    r137 r139  
    2828        delete    in_NRESET;
    2929
    30         DELETE2_SIGNAL( in_RENAME_IN_VAL               ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    31         DELETE2_SIGNAL(out_RENAME_IN_ACK               ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    32         DELETE2_SIGNAL( in_RENAME_IN_FRONT_END_ID      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_front_end_id          );
    33         DELETE2_SIGNAL( in_RENAME_IN_CONTEXT_ID        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_context_id            );
    34         DELETE2_SIGNAL( in_RENAME_IN_DEPTH             ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_depth                 );
    35 #ifdef STATISTICS
    36         DELETE2_SIGNAL( in_RENAME_IN_INSTRUCTION       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],32);
    37 #endif
    38         DELETE2_SIGNAL( in_RENAME_IN_TYPE              ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_type                  );
    39         DELETE2_SIGNAL( in_RENAME_IN_OPERATION         ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_operation             );
    40         DELETE2_SIGNAL( in_RENAME_IN_NO_EXECUTE        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    41 //      DELETE2_SIGNAL( in_RENAME_IN_HAVE_EVENT        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    42         DELETE2_SIGNAL( in_RENAME_IN_LAST_EVENT        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    43         DELETE2_SIGNAL( in_RENAME_IN_IS_DELAY_SLOT     ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    44 #ifdef DEBUG
    45         DELETE2_SIGNAL( in_RENAME_IN_ADDRESS           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address   );
    46 #endif
    47         DELETE2_SIGNAL( in_RENAME_IN_ADDRESS_NEXT      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address   );
    48         DELETE2_SIGNAL( in_RENAME_IN_HAS_IMMEDIAT      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    49         DELETE2_SIGNAL( in_RENAME_IN_IMMEDIAT          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_data          );
    50         DELETE2_SIGNAL( in_RENAME_IN_READ_RA           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    51         DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RA        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
    52         DELETE2_SIGNAL( in_RENAME_IN_READ_RB           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    53         DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RB        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
    54         DELETE2_SIGNAL( in_RENAME_IN_READ_RC           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    55         DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RC        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic);
    56         DELETE2_SIGNAL( in_RENAME_IN_WRITE_RD          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    57         DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RD        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
    58         DELETE2_SIGNAL( in_RENAME_IN_WRITE_RE          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
    59         DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RE        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic);
    60         DELETE2_SIGNAL( in_RENAME_IN_EXCEPTION_USE     ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception_use         );
    61         DELETE2_SIGNAL( in_RENAME_IN_EXCEPTION         ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception             );
     30        DELETE2_SIGNAL     ( in_RENAME_IN_VAL               ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     31        DELETE2_SIGNAL     (out_RENAME_IN_ACK               ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     32        DELETE2_SIGNAL     ( in_RENAME_IN_FRONT_END_ID      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_front_end_id          );
     33        DELETE2_SIGNAL     ( in_RENAME_IN_CONTEXT_ID        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_context_id            );
     34        DELETE2_SIGNAL     ( in_RENAME_IN_DEPTH             ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_depth                 );
     35#ifdef STATISTICS         
     36        DELETE2_SIGNAL     ( in_RENAME_IN_INSTRUCTION       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],32);
     37#endif                     
     38        DELETE2_SIGNAL     ( in_RENAME_IN_TYPE              ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_type                  );
     39        DELETE2_SIGNAL     ( in_RENAME_IN_OPERATION         ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_operation             );
     40        DELETE2_SIGNAL     ( in_RENAME_IN_NO_EXECUTE        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     41//      DELETE2_SIGNAL     ( in_RENAME_IN_HAVE_EVENT        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     42        DELETE2_SIGNAL     ( in_RENAME_IN_LAST_EVENT        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     43        DELETE2_SIGNAL     ( in_RENAME_IN_IS_DELAY_SLOT     ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     44        DELETE2_SIGNAL     ( in_RENAME_IN_SAVE_RAT          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     45#ifdef DEBUG               
     46        DELETE2_SIGNAL     ( in_RENAME_IN_ADDRESS           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address   );
     47#endif                     
     48        DELETE2_SIGNAL     ( in_RENAME_IN_ADDRESS_NEXT      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address   );
     49        DELETE2_SIGNAL     ( in_RENAME_IN_HAS_IMMEDIAT      ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     50        DELETE2_SIGNAL     ( in_RENAME_IN_IMMEDIAT          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_data          );
     51        DELETE2_SIGNAL     ( in_RENAME_IN_READ_RA           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     52        DELETE2_SIGNAL     ( in_RENAME_IN_NUM_REG_RA        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
     53        DELETE2_SIGNAL     ( in_RENAME_IN_READ_RB           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     54        DELETE2_SIGNAL     ( in_RENAME_IN_NUM_REG_RB        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
     55        DELETE2_SIGNAL     ( in_RENAME_IN_READ_RC           ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     56        DELETE2_SIGNAL     ( in_RENAME_IN_NUM_REG_RC        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic);
     57        DELETE2_SIGNAL     ( in_RENAME_IN_WRITE_RD          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     58        DELETE2_SIGNAL     ( in_RENAME_IN_NUM_REG_RD        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic);
     59        DELETE2_SIGNAL     ( in_RENAME_IN_WRITE_RE          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1                                   );
     60        DELETE2_SIGNAL     ( in_RENAME_IN_NUM_REG_RE        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic);
     61        DELETE2_SIGNAL     ( in_RENAME_IN_EXCEPTION_USE     ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception_use         );
     62        DELETE2_SIGNAL     ( in_RENAME_IN_EXCEPTION         ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception             );
     63                           
     64        DELETE1_SIGNAL     (out_INSERT_VAL                  ,_param->_nb_inst_insert,1                                   );
     65        DELETE1_SIGNAL     ( in_INSERT_ACK                  ,_param->_nb_inst_insert,1                                   );
     66        DELETE1_SIGNAL     (out_INSERT_FRONT_END_ID         ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     67        DELETE1_SIGNAL     (out_INSERT_CONTEXT_ID           ,_param->_nb_inst_insert,_param->_size_context_id            );
     68        DELETE1_SIGNAL     (out_INSERT_DEPTH                ,_param->_nb_inst_insert,_param->_size_depth                 );
     69#ifdef STATISTICS         
     70        DELETE1_SIGNAL     (out_INSERT_INSTRUCTION          ,_param->_nb_inst_insert,32);
     71#endif                     
     72        DELETE1_SIGNAL     (out_INSERT_TYPE                 ,_param->_nb_inst_insert,_param->_size_type                  );
     73        DELETE1_SIGNAL     (out_INSERT_OPERATION            ,_param->_nb_inst_insert,_param->_size_operation             );
     74        DELETE1_SIGNAL     (out_INSERT_NO_EXECUTE           ,_param->_nb_inst_insert,1                                   );
     75        DELETE1_SIGNAL     (out_INSERT_LAST_EVENT           ,_param->_nb_inst_insert,1                                   );
     76        DELETE1_SIGNAL     (out_INSERT_IS_DELAY_SLOT        ,_param->_nb_inst_insert,1                                   );
     77#ifdef DEBUG               
     78        DELETE1_SIGNAL     (out_INSERT_ADDRESS              ,_param->_nb_inst_insert,_param->_size_instruction_address   );
     79#endif                     
     80        DELETE1_SIGNAL     (out_INSERT_ADDRESS_NEXT         ,_param->_nb_inst_insert,_param->_size_instruction_address   );
     81        DELETE1_SIGNAL     (out_INSERT_HAS_IMMEDIAT         ,_param->_nb_inst_insert,1                                   );
     82        DELETE1_SIGNAL     (out_INSERT_IMMEDIAT             ,_param->_nb_inst_insert,_param->_size_general_data          );
     83        DELETE1_SIGNAL     (out_INSERT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_insert,_param->_size_store_queue_ptr       );
     84        DELETE1_SIGNAL     (out_INSERT_STORE_QUEUE_PTR_READ ,_param->_nb_inst_insert,_param->_size_store_queue_ptr       );
     85        DELETE1_SIGNAL     (out_INSERT_STORE_QUEUE_EMPTY    ,_param->_nb_inst_insert,1                                   );
     86        DELETE1_SIGNAL     (out_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_insert,_param->_size_load_queue_ptr        );
     87        DELETE1_SIGNAL     (out_INSERT_EXCEPTION_USE        ,_param->_nb_inst_insert,_param->_size_exception_use         );
     88        DELETE1_SIGNAL     (out_INSERT_EXCEPTION            ,_param->_nb_inst_insert,_param->_size_exception             );
     89        DELETE1_SIGNAL     (out_INSERT_READ_RA              ,_param->_nb_inst_insert,1                                   );
     90#ifdef DEBUG               
     91        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RA_LOG       ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     92#endif                     
     93        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RA_PHY       ,_param->_nb_inst_insert,_param->_size_general_register      );
     94        DELETE1_SIGNAL     (out_INSERT_READ_RB              ,_param->_nb_inst_insert,1                                   );
     95#ifdef DEBUG               
     96        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RB_LOG       ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     97#endif                     
     98        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RB_PHY       ,_param->_nb_inst_insert,_param->_size_general_register      );
     99        DELETE1_SIGNAL     (out_INSERT_READ_RC              ,_param->_nb_inst_insert,1                                   );
     100#ifdef DEBUG               
     101        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RC_LOG       ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     102#endif                     
     103        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RC_PHY       ,_param->_nb_inst_insert,_param->_size_special_register      );
     104        DELETE1_SIGNAL     (out_INSERT_WRITE_RD             ,_param->_nb_inst_insert,1                                   );
     105        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RD_LOG       ,_param->_nb_inst_insert,_param->_size_general_register_logic);
     106        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RD_PHY_OLD   ,_param->_nb_inst_insert,_param->_size_general_register      );
     107        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RD_PHY_NEW   ,_param->_nb_inst_insert,_param->_size_general_register      );
     108        DELETE1_SIGNAL     (out_INSERT_WRITE_RE             ,_param->_nb_inst_insert,1                                   );
     109        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RE_LOG       ,_param->_nb_inst_insert,_param->_size_special_register_logic);
     110        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RE_PHY_OLD   ,_param->_nb_inst_insert,_param->_size_special_register      );
     111        DELETE1_SIGNAL     (out_INSERT_NUM_REG_RE_PHY_NEW   ,_param->_nb_inst_insert,_param->_size_special_register      );
     112                           
     113        DELETE1_SIGNAL     ( in_RETIRE_VAL                  ,_param->_nb_inst_retire,1                                   );
     114        DELETE1_SIGNAL     (out_RETIRE_ACK                  ,_param->_nb_inst_retire,1                                   );
     115        DELETE1_SIGNAL     ( in_RETIRE_FRONT_END_ID         ,_param->_nb_inst_retire,_param->_size_front_end_id          );
     116        DELETE1_SIGNAL     ( in_RETIRE_CONTEXT_ID           ,_param->_nb_inst_retire,_param->_size_context_id            );
     117//      DELETE1_SIGNAL     ( in_RETIRE_TYPE                 ,_param->_nb_inst_retire,_param->_size_type                  );
     118//      DELETE1_SIGNAL     ( in_RETIRE_OPERATION            ,_param->_nb_inst_retire,_param->_size_operation             );
     119        DELETE1_SIGNAL     ( in_RETIRE_USE_STORE_QUEUE      ,_param->_nb_inst_retire,1                                   );
     120        DELETE1_SIGNAL     ( in_RETIRE_USE_LOAD_QUEUE       ,_param->_nb_inst_retire,1                                   );
     121        DELETE1_SIGNAL     ( in_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr       );
     122        DELETE1_SIGNAL     ( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr        );
     123//      DELETE1_SIGNAL     ( in_RETIRE_READ_RA              ,_param->_nb_inst_retire,1                                   );
     124//      DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RA_PHY       ,_param->_nb_inst_retire,_param->_size_general_register      );
     125//      DELETE1_SIGNAL     ( in_RETIRE_READ_RB              ,_param->_nb_inst_retire,1                                   );
     126//      DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RB_PHY       ,_param->_nb_inst_retire,_param->_size_general_register      );
     127//      DELETE1_SIGNAL     ( in_RETIRE_READ_RC              ,_param->_nb_inst_retire,1                                   );
     128//      DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RC_PHY       ,_param->_nb_inst_retire,_param->_size_special_register      );
     129        DELETE1_SIGNAL     ( in_RETIRE_WRITE_RD             ,_param->_nb_inst_retire,1                                   );
     130        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RD_LOG       ,_param->_nb_inst_retire,_param->_size_general_register_logic);
     131        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RD_PHY_OLD   ,_param->_nb_inst_retire,_param->_size_general_register      );
     132        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RD_PHY_NEW   ,_param->_nb_inst_retire,_param->_size_general_register      );
     133        DELETE1_SIGNAL     ( in_RETIRE_WRITE_RE             ,_param->_nb_inst_retire,1                                   );
     134        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RE_LOG       ,_param->_nb_inst_retire,_param->_size_special_register_logic);
     135        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RE_PHY_OLD   ,_param->_nb_inst_retire,_param->_size_special_register      );
     136        DELETE1_SIGNAL     ( in_RETIRE_NUM_REG_RE_PHY_NEW   ,_param->_nb_inst_retire,_param->_size_special_register      );
     137        DELETE1_SIGNAL     ( in_RETIRE_RESTORE              ,_param->_nb_inst_retire,1);
     138        DELETE1_SIGNAL     ( in_RETIRE_RESTORE_RD_PHY_OLD   ,_param->_nb_inst_retire,1);
     139        DELETE1_SIGNAL     ( in_RETIRE_RESTORE_RE_PHY_OLD   ,_param->_nb_inst_retire,1);
     140                           
     141        DELETE2_SIGNAL     ( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     142        DELETE2_SIGNAL     (out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     143        DELETE2_SIGNAL     ( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
     144//      DELETE2_SIGNAL     ( in_RETIRE_EVENT_FLUSH          ,_param->_nb_front_end, _param->_nb_context[it1],1);
     145        DELETE2_SIGNAL     ( in_RETIRE_EVENT_STOP           ,_param->_nb_front_end, _param->_nb_context[it1],1);
     146        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);
     147        DELETE2_SIGNAL_COND( in_RETIRE_EVENT_DEPTH          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_depth     ,_param->_rat_scheme == RAT_DEPTH_SAVE);
    62148       
    63         DELETE1_SIGNAL(out_INSERT_VAL                  ,_param->_nb_inst_insert,1                                   );
    64         DELETE1_SIGNAL( in_INSERT_ACK                  ,_param->_nb_inst_insert,1                                   );
    65         DELETE1_SIGNAL(out_INSERT_FRONT_END_ID         ,_param->_nb_inst_insert,_param->_size_front_end_id          );
    66         DELETE1_SIGNAL(out_INSERT_CONTEXT_ID           ,_param->_nb_inst_insert,_param->_size_context_id            );
    67         DELETE1_SIGNAL(out_INSERT_DEPTH                ,_param->_nb_inst_insert,_param->_size_depth                 );
    68 #ifdef STATISTICS
    69         DELETE1_SIGNAL(out_INSERT_INSTRUCTION          ,_param->_nb_inst_insert,32);
    70 #endif
    71         DELETE1_SIGNAL(out_INSERT_TYPE                 ,_param->_nb_inst_insert,_param->_size_type                  );
    72         DELETE1_SIGNAL(out_INSERT_OPERATION            ,_param->_nb_inst_insert,_param->_size_operation             );
    73         DELETE1_SIGNAL(out_INSERT_NO_EXECUTE           ,_param->_nb_inst_insert,1                                   );
    74         DELETE1_SIGNAL(out_INSERT_LAST_EVENT           ,_param->_nb_inst_insert,1                                   );
    75         DELETE1_SIGNAL(out_INSERT_IS_DELAY_SLOT        ,_param->_nb_inst_insert,1                                   );
    76 #ifdef DEBUG
    77         DELETE1_SIGNAL(out_INSERT_ADDRESS              ,_param->_nb_inst_insert,_param->_size_instruction_address   );
    78 #endif
    79         DELETE1_SIGNAL(out_INSERT_ADDRESS_NEXT         ,_param->_nb_inst_insert,_param->_size_instruction_address   );
    80         DELETE1_SIGNAL(out_INSERT_HAS_IMMEDIAT         ,_param->_nb_inst_insert,1                                   );
    81         DELETE1_SIGNAL(out_INSERT_IMMEDIAT             ,_param->_nb_inst_insert,_param->_size_general_data          );
    82         DELETE1_SIGNAL(out_INSERT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_insert,_param->_size_store_queue_ptr       );
    83         DELETE1_SIGNAL(out_INSERT_STORE_QUEUE_PTR_READ ,_param->_nb_inst_insert,_param->_size_store_queue_ptr       );
    84         DELETE1_SIGNAL(out_INSERT_STORE_QUEUE_EMPTY    ,_param->_nb_inst_insert,1                                   );
    85         DELETE1_SIGNAL(out_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_insert,_param->_size_load_queue_ptr        );
    86         DELETE1_SIGNAL(out_INSERT_EXCEPTION_USE        ,_param->_nb_inst_insert,_param->_size_exception_use         );
    87         DELETE1_SIGNAL(out_INSERT_EXCEPTION            ,_param->_nb_inst_insert,_param->_size_exception             );
    88         DELETE1_SIGNAL(out_INSERT_READ_RA              ,_param->_nb_inst_insert,1                                   );
    89 #ifdef DEBUG
    90         DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_LOG       ,_param->_nb_inst_insert,_param->_size_general_register_logic);
    91 #endif
    92         DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_PHY       ,_param->_nb_inst_insert,_param->_size_general_register      );
    93         DELETE1_SIGNAL(out_INSERT_READ_RB              ,_param->_nb_inst_insert,1                                   );
    94 #ifdef DEBUG
    95         DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_LOG       ,_param->_nb_inst_insert,_param->_size_general_register_logic);
    96 #endif
    97         DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_PHY       ,_param->_nb_inst_insert,_param->_size_general_register      );
    98         DELETE1_SIGNAL(out_INSERT_READ_RC              ,_param->_nb_inst_insert,1                                   );
    99 #ifdef DEBUG
    100         DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_LOG       ,_param->_nb_inst_insert,_param->_size_special_register_logic);
    101 #endif
    102         DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_PHY       ,_param->_nb_inst_insert,_param->_size_special_register      );
    103         DELETE1_SIGNAL(out_INSERT_WRITE_RD             ,_param->_nb_inst_insert,1                                   );
    104         DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_LOG       ,_param->_nb_inst_insert,_param->_size_general_register_logic);
    105         DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD   ,_param->_nb_inst_insert,_param->_size_general_register      );
    106         DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW   ,_param->_nb_inst_insert,_param->_size_general_register      );
    107         DELETE1_SIGNAL(out_INSERT_WRITE_RE             ,_param->_nb_inst_insert,1                                   );
    108         DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_LOG       ,_param->_nb_inst_insert,_param->_size_special_register_logic);
    109         DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD   ,_param->_nb_inst_insert,_param->_size_special_register      );
    110         DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW   ,_param->_nb_inst_insert,_param->_size_special_register      );
    111        
    112         DELETE1_SIGNAL( in_RETIRE_VAL                  ,_param->_nb_inst_retire,1                                   );
    113         DELETE1_SIGNAL(out_RETIRE_ACK                  ,_param->_nb_inst_retire,1                                   );
    114         DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID         ,_param->_nb_inst_retire,_param->_size_front_end_id          );
    115         DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID           ,_param->_nb_inst_retire,_param->_size_context_id            );
    116 //      DELETE1_SIGNAL( in_RETIRE_TYPE                 ,_param->_nb_inst_retire,_param->_size_type                  );
    117 //      DELETE1_SIGNAL( in_RETIRE_OPERATION            ,_param->_nb_inst_retire,_param->_size_operation             );
    118         DELETE1_SIGNAL( in_RETIRE_USE_STORE_QUEUE      ,_param->_nb_inst_retire,1                                   );
    119         DELETE1_SIGNAL( in_RETIRE_USE_LOAD_QUEUE       ,_param->_nb_inst_retire,1                                   );
    120         DELETE1_SIGNAL( in_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr       );
    121         DELETE1_SIGNAL( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr        );
    122 //         DELETE1_SIGNAL( in_RETIRE_READ_RA              ,_param->_nb_inst_retire,1                                   );
    123 //         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RA_PHY       ,_param->_nb_inst_retire,_param->_size_general_register      );
    124 //         DELETE1_SIGNAL( in_RETIRE_READ_RB              ,_param->_nb_inst_retire,1                                   );
    125 //         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RB_PHY       ,_param->_nb_inst_retire,_param->_size_general_register      );
    126 //         DELETE1_SIGNAL( in_RETIRE_READ_RC              ,_param->_nb_inst_retire,1                                   );
    127 //         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RC_PHY       ,_param->_nb_inst_retire,_param->_size_special_register      );
    128         DELETE1_SIGNAL( in_RETIRE_WRITE_RD             ,_param->_nb_inst_retire,1                                   );
    129         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_LOG       ,_param->_nb_inst_retire,_param->_size_general_register_logic);
    130         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD   ,_param->_nb_inst_retire,_param->_size_general_register      );
    131         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW   ,_param->_nb_inst_retire,_param->_size_general_register      );
    132         DELETE1_SIGNAL( in_RETIRE_WRITE_RE             ,_param->_nb_inst_retire,1                                   );
    133         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_LOG       ,_param->_nb_inst_retire,_param->_size_special_register_logic);
    134         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD   ,_param->_nb_inst_retire,_param->_size_special_register      );
    135         DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW   ,_param->_nb_inst_retire,_param->_size_special_register      );
    136 
    137         DELETE2_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
    138         DELETE2_SIGNAL(out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1],1);
    139         DELETE2_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
    140 //         DELETE2_SIGNAL( in_RETIRE_EVENT_FLUSH          ,_param->_nb_front_end, _param->_nb_context[it1],1);
    141         DELETE2_SIGNAL( in_RETIRE_EVENT_STOP           ,_param->_nb_front_end, _param->_nb_context[it1],1);
    142        
    143         DELETE2_SIGNAL(in_SPR_READ_SR                  ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_spr);
     149        DELETE2_SIGNAL     (in_SPR_READ_SR                  ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_spr);
    144150
    145151#ifdef DEBUG_TEST
    146         DELETE0_SIGNAL( in_INFO_ROB_EMPTY  ,1);
     152        DELETE0_SIGNAL     ( in_INFO_ROB_EMPTY  ,1);
    147153#endif
    148154      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/OOO_Engine.h

    r137 r139  
    8282  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_LAST_EVENT                ;//[nb_front_end][nb_inst_decod]
    8383  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IS_DELAY_SLOT             ;//[nb_front_end][nb_inst_decod]
     84  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_SAVE_RAT                  ;//[nb_front_end][nb_inst_decod]
    8485#ifdef DEBUG
    8586  public    : SC_IN (Taddress_t        )  ***  in_RENAME_ADDRESS                   ;//[nb_front_end][nb_inst_decod]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/Parameters.h

    r138 r139  
    6464  public : Tpriority_t           _issue_priority                   ;
    6565  public : Tload_balancing_t     _issue_load_balancing             ;
    66 //   public : bool               ** _table_routing                    ;//[nb_rename_unit][nb_inst_issue]
    67 //   public : bool               ** _table_issue_type                 ;//[nb_inst_issue][nb_type]
     66//public : bool               ** _table_routing                    ;//[nb_rename_unit][nb_inst_issue]
     67//public : bool               ** _table_issue_type                 ;//[nb_inst_issue][nb_type]
    6868    // Reexecute
    6969  public : uint32_t              _size_reexecute_queue             ;
     
    7474  public : uint32_t            * _nb_general_register              ;//[nb_rename_unit]
    7575  public : uint32_t            * _nb_special_register              ;//[nb_rename_unit]
     76  public : Trat_scheme_t       * _rat_scheme                       ;//[nb_rename_unit]
    7677  public : uint32_t            * _nb_reg_free                      ;//[nb_rename_unit]
    7778  public : uint32_t            * _nb_rename_unit_bank              ;//[nb_rename_unit]
    78 //   public : uint32_t            * _size_read_counter                ;//[nb_rename_unit]
     79//public : uint32_t            * _size_read_counter                ;//[nb_rename_unit]
    7980  public : uint32_t            * _nb_load_store_queue              ;//[nb_rename_unit]
    8081  public : uint32_t           ** _size_store_queue                 ;//[nb_rename_unit][nb_load_store_queue]
     
    9495  public : uint32_t           ** _rename_unit_nb_inst_decod                    ;//[nb_rename_unit][nb_front_end]
    9596  public : uint32_t          *** _rename_unit_link_load_store_unit_with_thread ;//[nb_rename_unit][nb_front_end][nb_context]
     97  public : uint32_t          *** _rename_unit_nb_branch_speculated             ;//[nb_rename_unit][nb_front_end][nb_context]
    9698  public : uint32_t            * _rename_unit_size_front_end_id                ;//[nb_rename_unit]
    9799  public : uint32_t            * _rename_unit_size_context_id                  ;//[nb_rename_unit]
     100  public : Trat_scheme_t       * _commit_unit_rat_scheme                       ;//[nb_front_end]
    98101  public : uint32_t              _max_nb_context                               ;
    99102  public : uint32_t              _max_branch_speculated                        ;
     
    171174                        uint32_t            * nb_general_register              ,//[nb_rename_unit]
    172175                        uint32_t            * nb_special_register              ,//[nb_rename_unit]
     176                        Trat_scheme_t       * rat_scheme                       ,//[nb_rename_unit]
    173177                        uint32_t            * nb_reg_free                      ,//[nb_rename_unit]
    174178                        uint32_t            * nb_rename_unit_bank              ,//[nb_rename_unit]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp

    r137 r139  
     1
    12/*
    23 * $Id$
     
    7172      _ALLOC2_SIGNAL_IN ( in_RENAME_LAST_EVENT                ,"LAST_EVENT"                ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    7273      _ALLOC2_SIGNAL_IN ( in_RENAME_IS_DELAY_SLOT             ,"IS_DELAY_SLOT"             ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     74      _ALLOC2_SIGNAL_IN ( in_RENAME_SAVE_RAT                  ,"SAVE_RAT"                  ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    7375#ifdef DEBUG
    7476      _ALLOC2_SIGNAL_IN ( in_RENAME_ADDRESS                   ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     
    458460                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_IS_DELAY_SLOT",
    459461                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_IS_DELAY_SLOT");
     462                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_SAVE_RAT"     ,
     463                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_SAVE_RAT"     );
    460464#ifdef DEBUG
    461465                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_ADDRESS"      ,
     
    530534            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_IS_DELAY_SLOT" ,
    531535                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_IS_DELAY_SLOT" );
    532 //             COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_HAVE_EVENT"    ,
    533 //                                      dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_HAVE_EVENT"    );
     536//          COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_HAVE_EVENT"    ,
     537//                                   dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_HAVE_EVENT"    );
    534538            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_LAST_EVENT"    ,
    535539                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_LAST_EVENT"    );
     
    682686            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_NUM_REG_RE_LOG"       ,
    683687                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_NUM_REG_RE_LOG"       );
     688            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_RESTORE"              ,
     689                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_RESTORE"              );
     690            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_RESTORE_RD_PHY_OLD"   ,
     691                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_RESTORE_RD_PHY_OLD"   );
     692            COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(j)+                "_RESTORE_RE_PHY_OLD"   ,
     693                                     dest,"out_RETIRE_"+toString(i)+"_"+toString(j)+"_RESTORE_RE_PHY_OLD"   );
    684694          }
    685695
     
    705715                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_STATE",
    706716                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_STATE");
    707 //                     COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_FLUSH",
    708 //                                              dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_FLUSH");
     717//                  COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_FLUSH",
     718//                                           dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_FLUSH");
    709719                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_STOP",
    710720                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_STOP");
     721                    if (_param->_rat_scheme[i] == RAT_DEPTH_SAVE)
     722                      {
     723                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_TYPE",
     724                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_TYPE");
     725                    COMPONENT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(x)+"_"+toString(k)+"_DEPTH",
     726                                             dest,"out_RETIRE_EVENT_"+toString(j)+"_"+toString(k)+"_DEPTH");
     727                      }
    711728                  }
    712729                x++;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_deallocation.cpp

    r137 r139  
    4141        DELETE2_SIGNAL( in_RENAME_LAST_EVENT                ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
    4242        DELETE2_SIGNAL( in_RENAME_IS_DELAY_SLOT             ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
     43        DELETE2_SIGNAL( in_RENAME_SAVE_RAT                  ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
    4344#ifdef DEBUG
    4445        DELETE2_SIGNAL( in_RENAME_ADDRESS                   ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_instruction_address    );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp

    r138 r139  
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/Parameters.h"
    99#include "Common/include/Max.h"
     10#include "Behavioural/include/Allocation.h"
    1011
    1112namespace morpheo {
     
    6162                          uint32_t            * nb_general_register              ,//[nb_rename_unit]
    6263                          uint32_t            * nb_special_register              ,//[nb_rename_unit]
     64                          Trat_scheme_t       * rat_scheme                       ,//[nb_rename_unit]
    6365                          uint32_t            * nb_reg_free                      ,//[nb_rename_unit]
    6466                          uint32_t            * nb_rename_unit_bank              ,//[nb_rename_unit]
     
    108110    _issue_priority                    = issue_priority                   ;
    109111    _issue_load_balancing              = issue_load_balancing             ;
    110 //     _table_routing                     = table_routing                    ;
    111 //     _table_issue_type                  = table_issue_type                 ;
     112//  _table_routing                     = table_routing                    ;
     113//  _table_issue_type                  = table_issue_type                 ;
    112114    _size_reexecute_queue              = size_reexecute_queue             ;
    113115    _rename_select_priority            = rename_select_priority           ;
     
    116118    _nb_general_register               = nb_general_register              ;
    117119    _nb_special_register               = nb_special_register              ;
     120    _rat_scheme                        = rat_scheme                       ;
    118121    _nb_reg_free                       = nb_reg_free                      ;
    119122    _nb_rename_unit_bank               = nb_rename_unit_bank              ;
    120 //     _size_read_counter                 = size_read_counter                ;
     123//  _size_read_counter                 = size_read_counter                ;
    121124    _nb_load_store_queue               = nb_load_store_queue              ;
    122125    _size_store_queue                  = size_store_queue                 ;
     
    147150    _rename_unit_nb_inst_decod                    = new uint32_t *  [_nb_rename_unit];
    148151    _rename_unit_link_load_store_unit_with_thread = new uint32_t ** [_nb_rename_unit];
     152    _rename_unit_nb_branch_speculated             = new uint32_t ** [_nb_rename_unit];
    149153   
    150154    for (uint32_t i=0; i<_nb_rename_unit; i++)
     
    156160        _rename_unit_nb_inst_decod                    [i] = new uint32_t   [x];
    157161        _rename_unit_link_load_store_unit_with_thread [i] = new uint32_t * [x];
     162        _rename_unit_nb_branch_speculated             [i] = new uint32_t * [x];
    158163
    159164        // Scan front_end list
     
    164169            _rename_unit_nb_inst_decod [i][j] = _nb_inst_decod [*it];
    165170            _rename_unit_link_load_store_unit_with_thread [i][j] = new uint32_t [_nb_context [*it]];
    166            
     171            _rename_unit_nb_branch_speculated             [i][j] = new uint32_t [_nb_context [*it]];
     172
    167173            for (uint32_t k=0; k<_nb_context [*it]; k++)
    168               _rename_unit_link_load_store_unit_with_thread [i][j][k] = _link_load_store_unit_with_thread [*it][k];
     174              {
     175                _rename_unit_link_load_store_unit_with_thread [i][j][k] = _link_load_store_unit_with_thread [*it][k];
     176                _rename_unit_nb_branch_speculated             [i][j][k] = _nb_branch_speculated             [*it][k];
     177              }
    169178
    170179            ++it;           
     
    188197          }
    189198      }
     199
     200    ALLOC1(_commit_unit_rat_scheme,Trat_scheme_t,_nb_front_end);
     201
     202    for (uint32_t num_front_end=0; num_front_end<_nb_front_end; ++num_front_end)
     203      _commit_unit_rat_scheme [num_front_end] = rat_scheme [_link_rename_unit_with_front_end [num_front_end]];
    190204
    191205    _max_nb_context                = max<uint32_t>(_nb_context,_nb_front_end);
     
    242256       _nb_general_register                           [i],
    243257       _nb_special_register                           [i],
     258       _rat_scheme                                    [i],
    244259       _nb_reg_free                                   [i],
    245        _nb_rename_unit_bank                           [i]// ,
    246 //        _size_read_counter                             [i]
    247        
     260       _nb_rename_unit_bank                           [i],
     261//     _size_read_counter                             [i]
     262       _rename_unit_nb_branch_speculated              [i]
    248263       );
    249264
     
    268283        size_general_register   ,
    269284        size_special_register   ,
     285       _commit_unit_rat_scheme  ,
    270286       _issue_priority          ,
    271287       _issue_load_balancing    ,
     
    396412      {
    397413        for (uint32_t j=0; j<_nb_front_end; j++)
     414          delete [] _rename_unit_nb_branch_speculated           [i][j];
     415        delete [] _rename_unit_nb_branch_speculated             [i];
     416        for (uint32_t j=0; j<_nb_front_end; j++)
    398417          delete [] _rename_unit_link_load_store_unit_with_thread [i][j];
    399        
    400418        delete [] _rename_unit_link_load_store_unit_with_thread [i];
    401419        delete [] _rename_unit_nb_inst_decod                    [i];
     
    403421      }
    404422   
     423    delete [] _rename_unit_nb_branch_speculated            ;
    405424    delete [] _rename_unit_link_load_store_unit_with_thread;
    406425    delete [] _rename_unit_nb_inst_decod                   ;
     
    410429    delete [] _rename_unit_size_context_id                 ;
    411430    delete [] _link_front_end_with_rename_unit             ;
     431
     432    DELETE1(_commit_unit_rat_scheme,_nb_front_end);
    412433
    413434    for (uint32_t i=0; i<_nb_rename_unit; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters_print.cpp

    r138 r139  
    7676    str+= toString(MSG_INFORMATION)+"   * nb_special_register                ["+toString(i)+"] : "+toString<uint32_t         >(_nb_special_register              [i])+"\n";//[nb_rename_unit]
    7777    for (uint32_t i=0; i<_nb_rename_unit; ++i)
     78    str+= toString(MSG_INFORMATION)+"   * rat_scheme                         ["+toString(i)+"] : "+toString<uint32_t         >(_rat_scheme                       [i])+"\n";//[nb_rename_unit]
     79    for (uint32_t i=0; i<_nb_rename_unit; ++i)
    7880    str+= toString(MSG_INFORMATION)+"   * nb_reg_free                        ["+toString(i)+"] : "+toString<uint32_t         >(_nb_reg_free                      [i])+"\n";//[nb_rename_unit]
    7981    for (uint32_t i=0; i<_nb_rename_unit; ++i)
Note: See TracChangeset for help on using the changeset viewer.