Ignore:
Timestamp:
Jan 21, 2009, 10:53:13 PM (15 years ago)
Author:
rosiere
Message:

Fix Bug :
1) Load Store Unit : check big endian
2) Commit unit & RAT : add retire_event interface

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/test.cpp

    r88 r104  
    8181  ALLOC1_SC_SIGNAL( in_RETIRE_FRONT_END_ID      ," in_RETIRE_FRONT_END_ID      ",Tcontext_t        ,_param->_nb_inst_retire);
    8282  ALLOC1_SC_SIGNAL( in_RETIRE_CONTEXT_ID        ," in_RETIRE_CONTEXT_ID        ",Tcontext_t        ,_param->_nb_inst_retire);
    83   ALLOC1_SC_SIGNAL( in_RETIRE_EVENT_STATE       ," in_RETIRE_EVENT_STATE       ",Tevent_state_t    ,_param->_nb_inst_retire);
    8483  ALLOC1_SC_SIGNAL( in_RETIRE_WRITE_RD          ," in_RETIRE_WRITE_RD          ",Tcontrol_t        ,_param->_nb_inst_retire);
    8584  ALLOC1_SC_SIGNAL( in_RETIRE_WRITE_RE          ," in_RETIRE_WRITE_RE          ",Tcontrol_t        ,_param->_nb_inst_retire);
     
    9089  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,"out_RETIRE_RESTORE_RD_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
    9190  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,"out_RETIRE_RESTORE_RE_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
     91
     92  ALLOC2_SC_SIGNAL( in_RETIRE_EVENT_VAL         ," in_RETIRE_EVENT_VAL         ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_context[it1]);
     93  ALLOC2_SC_SIGNAL(out_RETIRE_EVENT_ACK         ,"out_RETIRE_EVENT_ACK         ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_context[it1]);
     94  ALLOC2_SC_SIGNAL( in_RETIRE_EVENT_STATE       ," in_RETIRE_EVENT_STATE       ",Tevent_state_t    ,_param->_nb_front_end,_param->_nb_context[it1]);
    9295 
    9396  /********************************************************
     
    136139  if (_param->_have_port_context_id)
    137140  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_CONTEXT_ID        ,_param->_nb_inst_retire);
    138   INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_EVENT_STATE       ,_param->_nb_inst_retire);
    139141  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire);
    140142  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire);
     
    145147  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
    146148  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire);
     149
     150  INSTANCE2_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_EVENT_VAL         ,_param->_nb_front_end, _param->_nb_context[it1]);
     151  INSTANCE2_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_EVENT_ACK         ,_param->_nb_front_end, _param->_nb_context[it1]);
     152  INSTANCE2_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_EVENT_STATE       ,_param->_nb_front_end, _param->_nb_context[it1]);
    147153
    148154  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
     
    192198  SC_START(0);
    193199  LABEL("Initialisation");
     200 
     201  for (uint32_t i=0; i<_param->_nb_front_end; ++i)
     202    for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
     203      in_RETIRE_EVENT_VAL [i][j]->write(1);
    194204
    195205  LABEL("Reset");
     
    251261
    252262              Tcontext_t front_end_id = rand() % _param->_nb_front_end;
     263              Tcontext_t context_id   = rand() % (_param->_nb_context[front_end_id]);
    253264
    254265              in_RETIRE_VAL                [i]->write(val);
    255266              in_RETIRE_FRONT_END_ID       [i]->write(front_end_id);
    256               in_RETIRE_CONTEXT_ID         [i]->write(rand() % (_param->_nb_context[front_end_id]));
    257               in_RETIRE_EVENT_STATE        [i]->write(EVENT_STATE_NO_EVENT);
     267              in_RETIRE_CONTEXT_ID         [i]->write(context_id);
    258268              in_RETIRE_WRITE_RD           [i]->write(rand() % 2);
    259269              in_RETIRE_WRITE_RE           [i]->write(rand() % 2);
     
    262272              in_RETIRE_NUM_REG_RD_PHY_OLD [i]->write(rand() % _param->_nb_general_register);
    263273              in_RETIRE_NUM_REG_RE_PHY_OLD [i]->write(rand() % _param->_nb_special_register);
     274
     275              in_RETIRE_EVENT_STATE        [front_end_id][context_id]->write(EVENT_STATE_NO_EVENT);
    264276            }
    265277
     
    332344          in_RETIRE_FRONT_END_ID       [i]->write(retire_front_end_id [i]);
    333345          in_RETIRE_CONTEXT_ID         [i]->write(retire_context_id   [i]);
    334           in_RETIRE_EVENT_STATE        [i]->write(EVENT_STATE_EVENT);
    335346          in_RETIRE_WRITE_RD           [i]->write(0);
    336347          in_RETIRE_WRITE_RE           [i]->write(0);
    337348         
     349          in_RETIRE_EVENT_STATE [retire_front_end_id [i]][retire_context_id [i]]->write(EVENT_STATE_EVENT);
     350
    338351          do
    339352            {
     
    389402              in_RETIRE_FRONT_END_ID       [i]->write(retire_front_end_id [i]);
    390403              in_RETIRE_CONTEXT_ID         [i]->write(retire_context_id   [i]);
    391               in_RETIRE_EVENT_STATE        [i]->write(EVENT_STATE_WAITEND);
    392404              in_RETIRE_WRITE_RD           [i]->write(rand() % 2);
    393405              in_RETIRE_WRITE_RE           [i]->write(rand() % 2);
     
    396408              in_RETIRE_NUM_REG_RD_PHY_OLD [i]->write(rand() % _param->_nb_general_register);
    397409              in_RETIRE_NUM_REG_RE_PHY_OLD [i]->write(rand() % _param->_nb_special_register);
     410
     411              in_RETIRE_EVENT_STATE [retire_front_end_id [i]][retire_context_id [i]]->write(EVENT_STATE_WAITEND);
    398412            }
    399413
     
    517531  if (_param->_have_port_context_id)
    518532  delete []  in_RETIRE_CONTEXT_ID        ;
    519   delete []  in_RETIRE_EVENT_STATE       ;
    520533  delete []  in_RETIRE_WRITE_RD          ;
    521534  delete []  in_RETIRE_WRITE_RE          ;
     
    527540  delete [] out_RETIRE_RESTORE_RE_PHY_OLD;
    528541
     542  DELETE2_SC_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1]);
     543  DELETE2_SC_SIGNAL(out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1]);
     544  DELETE2_SC_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1]);
    529545#endif
    530546
  • 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

    r88 r104  
    9696  public    : SC_IN (Tcontext_t        )   **  in_RETIRE_FRONT_END_ID      ;//[nb_inst_retire]
    9797  public    : SC_IN (Tcontext_t        )   **  in_RETIRE_CONTEXT_ID        ;//[nb_inst_retire]
    98   public    : SC_IN (Tevent_state_t    )   **  in_RETIRE_EVENT_STATE       ;//[nb_inst_retire]
    9998  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RD          ;//[nb_inst_retire]
    10099  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RE          ;//[nb_inst_retire]
     
    105104  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
    106105  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
     106
     107    // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     108  public    : SC_IN (Tcontrol_t        )  ***  in_RETIRE_EVENT_VAL            ;//[nb_front_end][nb_context]
     109  public    : SC_OUT(Tcontrol_t        )  *** out_RETIRE_EVENT_ACK            ;//[nb_front_end][nb_context]
     110  public    : SC_IN (Tevent_state_t    )  ***  in_RETIRE_EVENT_STATE          ;//[nb_front_end][nb_context]
    107111
    108112    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     
    118122  private   : Tcontrol_t                    * internal_INSERT_ACK;          //[nb_inst_insert]
    119123  private   : Tcontrol_t                    * internal_RETIRE_ACK;          //[nb_inst_retire]
     124  public    : Tcontrol_t                   ** internal_RETIRE_EVENT_ACK    ;//[nb_front_end][nb_context]
    120125
    121126  private   : bool                        *** internal_rat_gpr_update_table;         //[nb_front_end][nb_context][nb_general_register_logic]
  • 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

    r100 r104  
    8484            PORT_WRITE(out_INSERT_ACK[i],internal_INSERT_ACK [i]);
    8585          }
     86
    8687        for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
    8788          {
     
    9091            PORT_WRITE(out_RETIRE_ACK[i],internal_RETIRE_ACK [i]);
    9192          }
     93
     94        for (uint32_t i=0; i<_param->_nb_front_end; ++i)
     95          for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
     96            {
     97              internal_RETIRE_EVENT_ACK [i][j] = 1;
     98             
     99              PORT_WRITE(out_RETIRE_EVENT_ACK[i][j],internal_RETIRE_EVENT_ACK [i][j]);
     100            }
    92101
    93102        log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Method - transition");
     
    119128                      << (*(in_RENAME_NUM_REG_RD_LOG [i]))
    120129                      << (*(in_RENAME_NUM_REG_RE_LOG [i]));
    121       }
    122 
     130          }
    123131
    124132# ifdef SYSTEMCASS_SPECIFIC
     
    138146            sensitive << (*(in_RETIRE_CONTEXT_ID     [i]));
    139147           
    140             sensitive << (*(in_RETIRE_EVENT_STATE    [i]))
    141                       << (*(in_RETIRE_WRITE_RD       [i]))
     148            sensitive << (*(in_RETIRE_WRITE_RD       [i]))
    142149                      << (*(in_RETIRE_WRITE_RE       [i]))
    143150                      << (*(in_RETIRE_NUM_REG_RD_LOG [i]))
    144151                      << (*(in_RETIRE_NUM_REG_RE_LOG [i]));
    145152          }
     153
     154        for (uint32_t i=0; i<_param->_nb_front_end; ++i)
     155          for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
     156            sensitive << (*(in_RETIRE_EVENT_STATE [i][j]));
    146157       
    147158# ifdef SYSTEMCASS_SPECIFIC
  • 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

    r88 r104  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910#include "Behavioural/include/Allocation.h"
    1011
     
    100101      ALLOC1_SIGNAL_IN ( in_RETIRE_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id);
    101102      ALLOC1_SIGNAL_IN ( in_RETIRE_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id  );
    102       ALLOC1_SIGNAL_IN ( in_RETIRE_EVENT_STATE       ,"event_state"       ,Tevent_state_t    ,_param->_size_event_state );
    103103      ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RD          ,"write_rd"          ,Tcontrol_t        ,1);
    104104      ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RE          ,"write_re"          ,Tcontrol_t        ,1);
     
    111111    }
    112112
     113    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     114    {
     115      ALLOC2_INTERFACE("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
     116
     117      _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL        ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     118      _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK        ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
     119      _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE      ,"state"             ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     120    }
     121
    113122    if (usage_is_set(_usage,USE_SYSTEMC))
    114123      {
    115     internal_RENAME_ACK = new Tcontrol_t [_param->_nb_inst_insert];
    116     internal_INSERT_ACK = new Tcontrol_t [_param->_nb_inst_insert];
    117     internal_RETIRE_ACK = new Tcontrol_t [_param->_nb_inst_retire];
     124    ALLOC1(internal_RENAME_ACK       ,Tcontrol_t,_param->_nb_inst_insert);
     125    ALLOC1(internal_INSERT_ACK       ,Tcontrol_t,_param->_nb_inst_insert);
     126    ALLOC1(internal_RETIRE_ACK       ,Tcontrol_t,_param->_nb_inst_retire);
     127    ALLOC2(internal_RETIRE_EVENT_ACK ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]);
    118128
    119129    rat_gpr                       = new Tgeneral_address_t ** [_param->_nb_front_end];
  • 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

    r88 r104  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    6566        if (_param->_have_port_context_id)
    6667        delete []  in_RETIRE_CONTEXT_ID        ;
    67         delete []  in_RETIRE_EVENT_STATE       ;
    6868        delete []  in_RETIRE_WRITE_RD          ;
    6969        delete []  in_RETIRE_WRITE_RE          ;
     
    7575        delete [] out_RETIRE_RESTORE_RE_PHY_OLD;
    7676
    77         delete [] internal_RENAME_ACK;
    78         delete [] internal_INSERT_ACK;
    79         delete [] internal_RETIRE_ACK;
     77        DELETE1(internal_RENAME_ACK                    ,_param->_nb_inst_insert);
     78        DELETE1(internal_INSERT_ACK                    ,_param->_nb_inst_insert);
     79        DELETE1(internal_RETIRE_ACK                    ,_param->_nb_inst_retire);
     80        DELETE2(internal_RETIRE_EVENT_ACK              ,_param->_nb_front_end,_param->_nb_context[it1]);
     81
     82        DELETE2_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     83        DELETE2_SIGNAL(out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     84        DELETE2_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
    8085       
    8186        delete [] rat_gpr             ;
  • 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_genMealy_retire.cpp

    r88 r104  
    4343
    4444        // init -> need't restore old value
    45         Tcontrol_t     retire_restore_rd_phy_old = false;
    46         Tcontrol_t     retire_restore_re_phy_old = false;
    47         Tevent_state_t event_state               = PORT_READ(in_RETIRE_EVENT_STATE [i]);
     45        Tcontrol_t retire_restore_rd_phy_old = false;
     46        Tcontrol_t retire_restore_re_phy_old = false;
     47
     48        Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RETIRE_FRONT_END_ID [i]):0;
     49        Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RETIRE_CONTEXT_ID   [i]):0;
    4850
    4951        // Test if event -> need restore ?
    50         if (event_state != EVENT_STATE_NO_EVENT)
     52        if (PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]) != EVENT_STATE_NO_EVENT)
    5153          {
    52             Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RETIRE_FRONT_END_ID [i]):0;
    53             Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RETIRE_CONTEXT_ID   [i]):0;
    54 
    5554            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * Have event");
    5655            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * front_end_id         : %d",front_end_id);
    5756            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * context_id           : %d",context_id  );
    5857                       
    59             // Test if event have just occure -> reset update_table
    60             if (event_state == EVENT_STATE_EVENT)
    61               {
    62                 // Reset update_table
    63                 for (uint32_t j=0; j<_param->_nb_general_register_logic; j++)
    64                   internal_rat_gpr_update_table[front_end_id][context_id][j] = 0;
    65                 for (uint32_t j=0; j<_param->_nb_special_register_logic; j++)
    66                   internal_rat_spr_update_table[front_end_id][context_id][j] = 0;
    67               }
    68            
    6958            // Test and update update table
    7059            if (PORT_READ(in_RETIRE_WRITE_RD [i]))
  • 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_transition.cpp

    r100 r104  
    6060          if (PORT_READ(in_INSERT_VAL [i]) and internal_INSERT_ACK  [i])
    6161            {
     62              log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"  * INSERT [%d]",i);
     63
    6264              Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RENAME_FRONT_END_ID [i]):0;
    6365              Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RENAME_CONTEXT_ID   [i]):0;
     
    7173
    7274        // =====================================================
     75        // ====[ RETIRE_EVENT ]=================================
     76        // =====================================================
     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            if (PORT_READ(in_RETIRE_EVENT_VAL [i][j]) and internal_RETIRE_EVENT_ACK [i][j])
     80              // Test if event have just occure
     81              if (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) == EVENT_STATE_EVENT)
     82                {
     83                  log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * Reset Update Table");
     84                 
     85                  // Reset update_table
     86                  for (uint32_t k=0; k<_param->_nb_general_register_logic; k++)
     87                    rat_gpr_update_table [i][j][k] = 0;
     88                  for (uint32_t k=0; k<_param->_nb_special_register_logic; k++)
     89                    rat_spr_update_table [i][j][k] = 0;
     90                }
     91
     92        // =====================================================
    7393        // ====[ RETIRE ]=======================================
    7494        // =====================================================
     
    7898          if (PORT_READ(in_RETIRE_VAL [i]) and internal_RETIRE_ACK [i])
    7999            {
     100              log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"  * RETIRE [%d]",i);
     101
    80102              // if no event : no effect, because the RAT content the most recently register
    81103              // but if they have a event (exception or miss speculation), the rat must restore the oldest value
    82104              // To restore the oldest valid value, we use the rat_update_table. if the bit is unset, also they have none update on this register
    83105              // the retire interface became of the Re Order Buffer, also is in program sequence !
    84               if (PORT_READ(in_RETIRE_EVENT_STATE [i]) != EVENT_STATE_NO_EVENT)
     106
     107              Tcontext_t         front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RETIRE_FRONT_END_ID [i]):0;
     108              Tcontext_t         context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RETIRE_CONTEXT_ID   [i]):0;
     109              Tevent_state_t     event_state  = PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]);
     110
     111              if (event_state != EVENT_STATE_NO_EVENT)
    85112                {
    86                   Tcontext_t         front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RETIRE_FRONT_END_ID [i]):0;
    87                   Tcontext_t         context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RETIRE_CONTEXT_ID   [i]):0;
    88 
    89                   // Test if event have just occure
    90                   if (PORT_READ(in_RETIRE_EVENT_STATE [i]) == EVENT_STATE_EVENT)
    91                     {
    92                       // Reset update_table
    93                       for (uint32_t j=0; j<_param->_nb_general_register_logic; j++)
    94                         rat_gpr_update_table[front_end_id][context_id][j] = 0;
    95                       for (uint32_t j=0; j<_param->_nb_special_register_logic; j++)
    96                         rat_spr_update_table[front_end_id][context_id][j] = 0;
    97                     }
     113                  log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * front_end_id : %d",front_end_id);
     114                  log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * context_id   : %d",context_id);
     115                  log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * event_state  : %d",event_state);
    98116
    99117                  // Test if write and have not a previous update
     
    102120                      Tgeneral_address_t rd_log = PORT_READ(in_RETIRE_NUM_REG_RD_LOG [i]);
    103121                     
    104                       log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"  * retire[%d]",i);
    105                       log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * front_end_id : %d",front_end_id);
    106                       log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * context_id   : %d",context_id  );
    107                       log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * rd_log       : %d",rd_log      );
     122                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * retire RD");
     123                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * rd_log       : %d",rd_log);
    108124                     
    109125//                    if (RETIRE_RESTORE_RD_PHY_OLD [i])
    110                       if (rat_gpr_update_table[front_end_id][context_id][rd_log] == 0)
    111                         {
    112                           rat_gpr             [front_end_id][context_id][rd_log] = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]);
    113                           rat_gpr_update_table[front_end_id][context_id][rd_log] = 1;
     126                      if (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0)
     127                        {                     
     128                          rat_gpr              [front_end_id][context_id][rd_log] = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]);
     129                          rat_gpr_update_table [front_end_id][context_id][rd_log] = 1;
    114130                        }
    115131                    }
     
    119135                      Tspecial_address_t re_log = PORT_READ(in_RETIRE_NUM_REG_RE_LOG [i]);
    120136
     137                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * retire RE");
     138                      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * re_log       : %d",re_log);
     139
    121140//                    if (RETIRE_RESTORE_RE_PHY_OLD [i])
    122                       if (rat_spr_update_table[front_end_id][context_id][re_log] == 0)
    123                         {
    124                           rat_spr             [front_end_id][context_id][re_log] = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);
    125                           rat_spr_update_table[front_end_id][context_id][re_log] = 1;
     141                      if (rat_spr_update_table [front_end_id][context_id][re_log] == 0)
     142                        {                     
     143                          rat_spr              [front_end_id][context_id][re_log] = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);
     144                          rat_spr_update_table [front_end_id][context_id][re_log] = 1;
    126145                        }
    127146                    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/test.cpp

    r88 r104  
    9191  ALLOC1_SC_SIGNAL( in_RETIRE_FRONT_END_ID      ," in_RETIRE_FRONT_END_ID      ",Tcontext_t        ,_param->_nb_inst_retire);
    9292  ALLOC1_SC_SIGNAL( in_RETIRE_CONTEXT_ID        ," in_RETIRE_CONTEXT_ID        ",Tcontext_t        ,_param->_nb_inst_retire);
    93   ALLOC1_SC_SIGNAL( in_RETIRE_EVENT_STATE       ," in_RETIRE_EVENT_STATE       ",Tevent_state_t    ,_param->_nb_inst_retire);
    9493  ALLOC1_SC_SIGNAL( in_RETIRE_READ_RA           ," in_RETIRE_READ_RA           ",Tcontrol_t        ,_param->_nb_inst_retire);
    9594  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RA_PHY    ," in_RETIRE_NUM_REG_RA_PHY    ",Tgeneral_address_t,_param->_nb_inst_retire);
     
    106105  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD," in_RETIRE_NUM_REG_RE_PHY_OLD",Tspecial_address_t,_param->_nb_inst_retire);
    107106  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW," in_RETIRE_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_nb_inst_retire);
     107
     108  ALLOC2_SC_SIGNAL( in_RETIRE_EVENT_VAL            ," in_RETIRE_EVENT_VAL            ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_context[it1]);
     109  ALLOC2_SC_SIGNAL(out_RETIRE_EVENT_ACK            ,"out_RETIRE_EVENT_ACK            ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_context[it1]);
     110  ALLOC2_SC_SIGNAL( in_RETIRE_EVENT_STATE          ," in_RETIRE_EVENT_STATE          ",Tevent_state_t    ,_param->_nb_front_end,_param->_nb_context[it1]);
    108111 
    109112  /********************************************************
     
    163166  if (_param->_have_port_context_id)
    164167  INSTANCE1_SC_SIGNAL(_Register_translation_unit, in_RETIRE_CONTEXT_ID        ,_param->_nb_inst_retire);
    165   INSTANCE1_SC_SIGNAL(_Register_translation_unit, in_RETIRE_EVENT_STATE       ,_param->_nb_inst_retire);
    166168  INSTANCE1_SC_SIGNAL(_Register_translation_unit, in_RETIRE_READ_RA           ,_param->_nb_inst_retire);
    167169  INSTANCE1_SC_SIGNAL(_Register_translation_unit, in_RETIRE_NUM_REG_RA_PHY    ,_param->_nb_inst_retire);
     
    178180  INSTANCE1_SC_SIGNAL(_Register_translation_unit, in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire);
    179181  INSTANCE1_SC_SIGNAL(_Register_translation_unit, in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire);
     182
     183  INSTANCE2_SC_SIGNAL(_Register_translation_unit, in_RETIRE_EVENT_VAL         ,_param->_nb_front_end, _param->_nb_context[it1]);
     184  INSTANCE2_SC_SIGNAL(_Register_translation_unit,out_RETIRE_EVENT_ACK         ,_param->_nb_front_end, _param->_nb_context[it1]);
     185  INSTANCE2_SC_SIGNAL(_Register_translation_unit, in_RETIRE_EVENT_STATE       ,_param->_nb_front_end, _param->_nb_context[it1]);
    180186
    181187  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
     
    264270  delete []  in_RETIRE_FRONT_END_ID      ;
    265271  delete []  in_RETIRE_CONTEXT_ID        ;
    266   delete []  in_RETIRE_EVENT_STATE       ;
    267272  delete []  in_RETIRE_READ_RA           ;
    268273  delete []  in_RETIRE_NUM_REG_RA_PHY    ;
     
    279284  delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    280285  delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
     286
     287  DELETE2_SC_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1]);
     288  DELETE2_SC_SIGNAL(out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1]);
     289  DELETE2_SC_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1]);
    281290#endif
    282291
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Register_translation_unit.h

    r82 r104  
    111111  public    : SC_IN (Tcontext_t        )   **  in_RETIRE_FRONT_END_ID      ;//[nb_inst_retire]
    112112  public    : SC_IN (Tcontext_t        )   **  in_RETIRE_CONTEXT_ID        ;//[nb_inst_retire]
    113   public    : SC_IN (Tevent_state_t    )   **  in_RETIRE_EVENT_STATE       ;//[nb_inst_retire]
    114113  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RA           ;//[nb_inst_retire]
    115114  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RA_PHY    ;//[nb_inst_retire]
     
    127126  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_NEW;//[nb_inst_retire]
    128127
     128    // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     129  public    : SC_IN (Tcontrol_t        )  ***  in_RETIRE_EVENT_VAL         ;//[nb_front_end][nb_context]
     130  public    : SC_OUT(Tcontrol_t        )  *** out_RETIRE_EVENT_ACK         ;//[nb_front_end][nb_context]
     131  public    : SC_IN (Tevent_state_t    )  ***  in_RETIRE_EVENT_STATE       ;//[nb_front_end][nb_context]
     132
    129133    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    130134  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::dependency_checking_unit::Dependency_checking_unit                   * _component_dependency_checking_unit;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp

    r98 r104  
    110110      ALLOC1_SIGNAL_IN ( in_RETIRE_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id          );
    111111      ALLOC1_SIGNAL_IN ( in_RETIRE_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id            );
    112       ALLOC1_SIGNAL_IN ( in_RETIRE_EVENT_STATE       ,"event_state"       ,Tevent_state_t    ,_param->_size_event_state           );
    113112      ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RA           ,"read_ra"           ,Tcontrol_t        ,1                                   );
    114113      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RA_PHY    ,"num_reg_ra_phy"    ,Tgeneral_address_t,_param->_size_general_register      );
     
    126125      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register      );
    127126    }
     127
     128    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     129    {
     130      ALLOC2_INTERFACE("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
     131
     132      _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     133      _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK           ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
     134      _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE      ,"state"             ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
     135    }
     136
    128137    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    129138    std::string name;
     
    329338          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        ,
    330339                              dest, "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        );
    331           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_EVENT_STATE"       ,
    332                               dest, "in_RETIRE_"+toString(i)+"_EVENT_STATE"       );
    333340          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RD"          ,
    334341                              dest, "in_RETIRE_"+toString(i)+"_WRITE_RD"          );
     
    356363                                   dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD");
    357364        }
     365
     366      for (uint32_t i=0; i<_param->_nb_front_end; i++)
     367        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
     368          {
     369            dest = _name;
     370           
     371#ifdef POSITION
     372            _component->interface_map (src ,"retire_event_"+toString(i)+"_"+toString(j),
     373                                       dest,"retire_event_"+toString(i)+"_"+toString(j));
     374#endif     
     375            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"  ,
     376                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"  );
     377            PORT_MAP(_component,src ,"out_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"  ,
     378                                dest,"out_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"  );
     379            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE",
     380                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE");
     381          }
    358382    }
    359383   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_deallocation.cpp

    r88 r104  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Register_translation_unit.h"
     9#include "Behavioural/include/Allocation.h"
    910
    1011namespace morpheo                    {
     
    7576        if (_param->_have_port_context_id)
    7677        delete []  in_RETIRE_CONTEXT_ID        ;
    77         delete []  in_RETIRE_EVENT_STATE       ;
    7878        delete []  in_RETIRE_READ_RA           ;
    7979        delete []  in_RETIRE_NUM_REG_RA_PHY    ;
     
    9090        delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
    9191        delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
     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);
    9296      }
     97
    9398    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    9499
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/src/test.cpp

    r88 r104  
    115115  ALLOC1_SC_SIGNAL( in_RETIRE_STORE_QUEUE_PTR_WRITE," in_RETIRE_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t        ,_param->_nb_inst_retire);
    116116  ALLOC1_SC_SIGNAL( in_RETIRE_LOAD_QUEUE_PTR_WRITE ," in_RETIRE_LOAD_QUEUE_PTR_WRITE ",Tlsq_ptr_t        ,_param->_nb_inst_retire);
    117   ALLOC1_SC_SIGNAL( in_RETIRE_EVENT_STATE          ," in_RETIRE_EVENT_STATE          ",Tevent_state_t    ,_param->_nb_inst_retire);
    118117  ALLOC1_SC_SIGNAL( in_RETIRE_READ_RA              ," in_RETIRE_READ_RA              ",Tcontrol_t        ,_param->_nb_inst_retire);
    119118  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RA_PHY       ," in_RETIRE_NUM_REG_RA_PHY       ",Tgeneral_address_t,_param->_nb_inst_retire);
     
    130129  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD   ," in_RETIRE_NUM_REG_RE_PHY_OLD   ",Tspecial_address_t,_param->_nb_inst_retire);
    131130  ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW   ," in_RETIRE_NUM_REG_RE_PHY_NEW   ",Tspecial_address_t,_param->_nb_inst_retire);
     131  ALLOC2_SC_SIGNAL( in_RETIRE_EVENT_VAL            ," in_RETIRE_EVENT_VAL            ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_context[it1]);
     132  ALLOC2_SC_SIGNAL(out_RETIRE_EVENT_ACK            ,"out_RETIRE_EVENT_ACK            ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_context[it1]);
     133  ALLOC2_SC_SIGNAL( in_RETIRE_EVENT_STATE          ," in_RETIRE_EVENT_STATE          ",Tevent_state_t    ,_param->_nb_front_end,_param->_nb_context[it1]);
    132134  ALLOC2_SC_SIGNAL( in_SPR_READ_SR                 ," in_SPR_READ_SR                 ",Tspr_t            ,_param->_nb_front_end,_param->_nb_context[it1]);
    133135 
     
    220222  if (_param->_have_port_load_queue_ptr)
    221223  INSTANCE1_SC_SIGNAL(_Rename_unit, in_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire);
    222   INSTANCE1_SC_SIGNAL(_Rename_unit, in_RETIRE_EVENT_STATE          ,_param->_nb_inst_retire);
    223224  INSTANCE1_SC_SIGNAL(_Rename_unit, in_RETIRE_READ_RA              ,_param->_nb_inst_retire);
    224225  INSTANCE1_SC_SIGNAL(_Rename_unit, in_RETIRE_NUM_REG_RA_PHY       ,_param->_nb_inst_retire);
     
    235236  INSTANCE1_SC_SIGNAL(_Rename_unit, in_RETIRE_NUM_REG_RE_PHY_OLD   ,_param->_nb_inst_retire);
    236237  INSTANCE1_SC_SIGNAL(_Rename_unit, in_RETIRE_NUM_REG_RE_PHY_NEW   ,_param->_nb_inst_retire);
     238
     239  INSTANCE2_SC_SIGNAL(_Rename_unit, in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1]);
     240  INSTANCE2_SC_SIGNAL(_Rename_unit,out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1]);
     241  INSTANCE2_SC_SIGNAL(_Rename_unit, in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1]);
    237242
    238243  INSTANCE2_SC_SIGNAL(_Rename_unit,in_SPR_READ_SR                  ,_param->_nb_front_end, _param->_nb_context[it1]);
     
    352357  DELETE1_SC_SIGNAL( in_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire);
    353358  DELETE1_SC_SIGNAL( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire);
    354   DELETE1_SC_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_inst_retire);
    355359  DELETE1_SC_SIGNAL( in_RETIRE_READ_RA              ,_param->_nb_inst_retire);
    356360  DELETE1_SC_SIGNAL( in_RETIRE_NUM_REG_RA_PHY       ,_param->_nb_inst_retire);
     
    368372  DELETE1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW   ,_param->_nb_inst_retire);
    369373 
     374  DELETE2_SC_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1]);
     375  DELETE2_SC_SIGNAL(out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1]);
     376  DELETE2_SC_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1]);
     377
    370378  DELETE2_SC_SIGNAL(in_SPR_READ_SR                  ,_param->_nb_front_end, _param->_nb_context[it1]);
    371379    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Rename_unit.h

    r97 r104  
    140140  public    : SC_IN (Tlsq_ptr_t        )   **  in_RETIRE_STORE_QUEUE_PTR_WRITE;//[nb_inst_retire]
    141141  public    : SC_IN (Tlsq_ptr_t        )   **  in_RETIRE_LOAD_QUEUE_PTR_WRITE ;//[nb_inst_retire]
    142   public    : SC_IN (Tevent_state_t    )   **  in_RETIRE_EVENT_STATE          ;//[nb_inst_retire]
    143142  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_READ_RA              ;//[nb_inst_retire]
    144143  public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RA_PHY       ;//[nb_inst_retire]
     
    156155  public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_NEW   ;//[nb_inst_retire]
    157156
     157    // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     158  public    : SC_IN (Tcontrol_t        )  ***  in_RETIRE_EVENT_VAL            ;//[nb_front_end][nb_context]
     159  public    : SC_OUT(Tcontrol_t        )  *** out_RETIRE_EVENT_ACK            ;//[nb_front_end][nb_context]
     160  public    : SC_IN (Tevent_state_t    )  ***  in_RETIRE_EVENT_STATE          ;//[nb_front_end][nb_context]
     161
    158162    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    159163  public    : SC_IN (Tspr_t            )  ***  in_SPR_READ_SR                 ;//[nb_front_end][nb_context]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_allocation.cpp

    r97 r104  
    139139      ALLOC1_SIGNAL_IN ( in_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr       );
    140140      ALLOC1_SIGNAL_IN ( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr        );
    141       ALLOC1_SIGNAL_IN ( in_RETIRE_EVENT_STATE          ,"event_state"          ,Tevent_state_t    ,_param->_size_event_state           );
    142141      ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1                                   );
    143142      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RA_PHY       ,"num_reg_ra_phy"       ,Tgeneral_address_t,_param->_size_general_register      );
     
    154153      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD   ,"num_reg_re_phy_old"   ,Tspecial_address_t,_param->_size_special_register      );
    155154      ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW   ,"num_reg_re_phy_new"   ,Tspecial_address_t,_param->_size_special_register      );
     155    }
     156
     157    // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     158    {
     159      ALLOC2_INTERFACE("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);
     160
     161      _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL           ,VAL,_param->_nb_front_end, _param->_nb_context[it1]);
     162      _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK           ,ACK,_param->_nb_front_end, _param->_nb_context[it1]);
     163      _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE         ,"state"                ,Tevent_state_t    ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]);
    156164    }
    157165
     
    537545          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        ,
    538546                              dest, "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        );
    539           PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_EVENT_STATE"       ,
    540                               dest, "in_RETIRE_"+toString(i)+"_EVENT_STATE"       );
    541547          PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_READ_RA"           ,
    542548                              dest, "in_RETIRE_"+toString(i)+"_READ_RA"           );
     
    578584          COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK",dest, "in_RETIRE_"+toString(i)+"_REGISTER_TRANSLATION_ACK");
    579585        }
     586
     587      for (uint32_t i=0; i<_param->_nb_front_end; i++)
     588        for (uint32_t j=0; j<_param->_nb_context[i]; j++)
     589          {
     590            dest = _name;
     591           
     592#ifdef POSITION
     593            _component->interface_map (src ,"retire_event_"+toString(i)+"_"+toString(j),
     594                                       dest,"retire_event_"+toString(i)+"_"+toString(j));
     595#endif     
     596            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"  ,
     597                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_VAL"  );
     598            PORT_MAP(_component,src ,"out_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"  ,
     599                                dest,"out_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_ACK"  );
     600            PORT_MAP(_component,src , "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE",
     601                                dest, "in_RETIRE_EVENT_"+toString(i)+"_"+toString(j)+"_STATE");
     602          }
    580603    }
    581604
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_deallocation.cpp

    r88 r104  
    9797        DELETE1_SIGNAL( in_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr       );
    9898        DELETE1_SIGNAL( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr        );
    99         DELETE1_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_inst_retire,_param->_size_event_state           );
    10099        DELETE1_SIGNAL( in_RETIRE_READ_RA              ,_param->_nb_inst_retire,1                                   );
    101100        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RA_PHY       ,_param->_nb_inst_retire,_param->_size_general_register      );
     
    112111        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD   ,_param->_nb_inst_retire,_param->_size_special_register      );
    113112        DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW   ,_param->_nb_inst_retire,_param->_size_special_register      );
     113
     114        DELETE2_SIGNAL( in_RETIRE_EVENT_VAL            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     115        DELETE2_SIGNAL(out_RETIRE_EVENT_ACK            ,_param->_nb_front_end, _param->_nb_context[it1],1);
     116        DELETE2_SIGNAL( in_RETIRE_EVENT_STATE          ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);
    114117       
    115118        DELETE2_SIGNAL(in_SPR_READ_SR                  ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_spr);
Note: See TracChangeset for help on using the changeset viewer.