Ignore:
Timestamp:
Apr 20, 2009, 11:29:17 PM (15 years ago)
Author:
rosiere
Message:

1) Write queue with mealy
2) Network : fix bug
3) leak memory

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

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_deallocation.cpp

    r112 r115  
    187187       
    188188        // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     189        for (uint32_t i=0; i<_param->_nb_bank; ++i)
     190          while(not _rob[i].empty())
     191            {
     192              entry_t * entry = _rob[i].front();
     193              delete entry;
     194              _rob[i].pop_front();
     195            }
     196
    189197        DELETE2(_nb_cycle_idle           ,_param->_nb_front_end,_param->_nb_context [it1]);
    190198        DELETE1(_rob                     ,_param->_nb_bank);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp

    r114 r115  
    2828      {
    2929        // Clear all bank
    30         for (uint32_t i=0; i<_param->_nb_bank; i++)
     30        for (uint32_t i=0; i<_param->_nb_bank; ++i)
    3131          {
    32             _rob [i].clear();
     32            while(not _rob[i].empty())
     33              {
     34                delete _rob[i].front();
     35                _rob[i].pop_front();
     36              }
    3337            reg_BANK_PTR [i] = 0;
    3438          }
     
    126130
    127131                  Texception_t exception    = PORT_READ(in_INSERT_EXCEPTION    [x][y]);
     132                  Tcontrol_t   no_execute   = PORT_READ(in_INSERT_NO_EXECUTE   [x][y]);
    128133
    129134                  log_printf(TRACE,Commit_unit,FUNCTION,"    * front_end_id   : %d",front_end_id);
     
    147152                  entry->exception               = exception;
    148153                  entry->exception_use           = PORT_READ(in_INSERT_EXCEPTION_USE         [x][y]);
    149                   entry->use_store_queue         = (type == TYPE_MEMORY) and (    is_store);
    150                   entry->use_load_queue          = (type == TYPE_MEMORY) and (not is_store);
     154                  entry->use_store_queue         = (type == TYPE_MEMORY) and (    is_store) and (not no_execute);
     155                  entry->use_load_queue          = (type == TYPE_MEMORY) and (not is_store) and (not no_execute);
    151156                  entry->store_queue_ptr_write   = PORT_READ(in_INSERT_STORE_QUEUE_PTR_WRITE [x][y]);
    152157                  entry->load_queue_ptr_write    = (_param->_have_port_load_queue_ptr)?PORT_READ(in_INSERT_LOAD_QUEUE_PTR_WRITE [x][y]):0;
     
    200205                      if (exception == EXCEPTION_NONE)
    201206                        {
    202                           Tcontrol_t no_execute = PORT_READ(in_INSERT_NO_EXECUTE [x][y]);
    203207                          // no_execute : l.j, l.nop, l.rfe
    204208                         
     
    208212                            {
    209213                            case TYPE_BRANCH : {entry->state=(no_execute==1)?ROB_BRANCH_COMPLETE:ROB_BRANCH_WAIT_END  ; break;}
    210                             case TYPE_MEMORY : {entry->state=(is_store  ==1)?ROB_STORE_WAIT_HEAD_OK:ROB_OTHER_WAIT_END; break;}
     214                            case TYPE_MEMORY : {entry->state=(no_execute==1)?ROB_END_OK_SPECULATIVE:(entry->state=(is_store  ==1)?ROB_STORE_WAIT_HEAD_OK:ROB_OTHER_WAIT_END); break;}
    211215                            default          : {entry->state=(no_execute==1)?ROB_END_OK_SPECULATIVE:ROB_OTHER_WAIT_END; break;}
    212216                            }
     
    331335                      default :
    332336                        {
    333                           throw ERRORMORPHEO(FUNCTION,toString(_("Commit : invalid state value (%s).\n"),toString(state).c_str()));
     337                          throw ERRORMORPHEO(FUNCTION,toString(_("Commit [%d] : Bank [%d][%d], invalid state value (%s).\n"),x,i,j,toString(state).c_str()));
    334338                          break;
    335339                        }
     
    442446                reg_NUM_BANK_HEAD = (reg_NUM_BANK_HEAD+1)%_param->_nb_bank;
    443447               
     448                delete entry;
    444449                _rob [num_bank].pop_front();
    445                 delete entry;
    446450               
    447451                // Transaction on retire interface : reset watch dog timer.
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_function_in_order_genMealy_issue_out.cpp

    r111 r115  
    9898              entry_t* entry = _issue_queue [num_bank].front();
    9999             
     100              // have valid instruction, search a valid issue slot.
    100101              for (uint32_t j=0; j<_param->_nb_inst_issue; j++)
    101102                {
    102                   log_printf(TRACE,Issue_queue,FUNCTION,"    * Issue [%d]",j);
    103                   log_printf(TRACE,Issue_queue,FUNCTION,"      * issue_ack            : %d",PORT_READ(in_ISSUE_OUT_ACK [j]));
    104                   log_printf(TRACE,Issue_queue,FUNCTION,"      * previous transaction : %d",val[j]);
    105                   log_printf(TRACE,Issue_queue,FUNCTION,"      * can issue type       : %d",_param->_table_issue_type [j][entry->_type]);
     103                  Tcontrol_t issue_ack = PORT_READ(in_ISSUE_OUT_ACK [j]);
     104
     105                  log_printf(TRACE,Issue_queue,FUNCTION,"      * Issue [%d]",j);
     106                  log_printf(TRACE,Issue_queue,FUNCTION,"        * issue_ack            : %d",issue_ack);
     107                  log_printf(TRACE,Issue_queue,FUNCTION,"        * previous transaction : %d",val[j]);
     108                  log_printf(TRACE,Issue_queue,FUNCTION,"        * can issue type       : %d",_param->_table_issue_type [j][entry->_type]);
    106109
    107110                  // test if no previous transaction and can accept this type
    108                   if ((val[j] == 0) and
     111                  if (not val[j] and
    109112                      _param->_table_issue_type [j][entry->_type] and
    110                       PORT_READ(in_ISSUE_OUT_ACK [j]))
     113                      issue_ack)
    111114                    {
    112                       log_printf(TRACE,Issue_queue,FUNCTION,"    * find : %d",j);
     115                      log_printf(TRACE,Issue_queue,FUNCTION,"        * find !!!");
    113116                     
    114117                      // find a issue port
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_deallocation.cpp

    r112 r115  
    9999        // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    100100        for (uint32_t i=0; i<_param->_nb_bank; i++)
    101           if (not _reexecute_queue [i].empty() and (_reexecute_queue [i].front()->state == STATE_EMPTY))
     101          while (not _reexecute_queue [i].empty())
    102102            {
    103               entry_t * entry = _reexecute_queue [i].front();
     103              delete _reexecute_queue [i].front();
    104104              _reexecute_queue [i].pop_front();
    105               delete entry;
    106105            }
    107106        DELETE1(_reexecute_queue                ,_param->_nb_bank);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/SelfTest/src/test.cpp

    r108 r115  
    227227            in_RENAME_IN_VAL          [i][j]->write((rand()%100)<percent_transaction_rename_in);
    228228            in_RENAME_IN_FRONT_END_ID [i][j]->write(range<Tcontext_t        >(rand(),_param->_size_front_end_id          ));
    229             in_RENAME_IN_CONTEXT_ID   [i][j]->write(range<Tcontext_t        >(rand(),log2(_param->_nb_context[i])        ));
     229            in_RENAME_IN_CONTEXT_ID   [i][j]->write(rand()%_param->_nb_context[i]);
    230230            in_RENAME_IN_DEPTH        [i][j]->write(range<Tdepth_t          >(rand(),_param->_size_depth                 ));
    231231            in_RENAME_IN_TYPE         [i][j]->write(range<Ttype_t           >(rand(),_param->_size_type                  ));
     
    293293                      find = true;
    294294                     
     295                      Tcontext_t context_id = (_param->_have_port_context_id)?in_RENAME_IN_CONTEXT_ID [x][y]->read():0;
     296
    295297                      if (_param->_have_port_front_end_id)
    296298                      TEST(Tcontext_t        ,out_RENAME_OUT_FRONT_END_ID [i]->read(),in_RENAME_IN_FRONT_END_ID [x][y]->read());
    297299                      if (_param->_have_port_context_id)
    298                       TEST(Tcontext_t        ,out_RENAME_OUT_CONTEXT_ID   [i]->read(),in_RENAME_IN_CONTEXT_ID   [x][y]->read());
     300                      TEST(Tcontext_t        ,out_RENAME_OUT_CONTEXT_ID   [i]->read(),context_id);
    299301                      if (_param->_have_port_depth)
    300302                      TEST(Tdepth_t          ,out_RENAME_OUT_DEPTH        [i]->read(),in_RENAME_IN_DEPTH        [x][y]->read());
    301303                      TEST(Ttype_t           ,out_RENAME_OUT_TYPE         [i]->read(),in_RENAME_IN_TYPE         [x][y]->read());
    302304                      TEST(Toperation_t      ,out_RENAME_OUT_OPERATION    [i]->read(),in_RENAME_IN_OPERATION    [x][y]->read());
    303                       TEST(Tcontrol_t        ,out_RENAME_OUT_NO_EXECUTE   [i]->read(),in_RENAME_IN_NO_EXECUTE   [x][y]->read());
     305                      Tcontrol_t have_event = in_RETIRE_EVENT_STATE[x][context_id]->read() != EVENT_STATE_NO_EVENT;
     306                      Tcontrol_t no_execute = in_RENAME_IN_NO_EXECUTE   [x][y]->read() or have_event;
     307                      TEST(Tcontrol_t        ,out_RENAME_OUT_NO_EXECUTE   [i]->read(),no_execute);
    304308                      TEST(Tcontrol_t        ,out_RENAME_OUT_IS_DELAY_SLOT[i]->read(),in_RENAME_IN_IS_DELAY_SLOT[x][y]->read());
    305309                      TEST(Tcontrol_t        ,out_RENAME_OUT_HAS_IMMEDIAT [i]->read(),in_RENAME_IN_HAS_IMMEDIAT [x][y]->read());
    306310                      TEST(Tgeneral_data_t   ,out_RENAME_OUT_IMMEDIAT     [i]->read(),in_RENAME_IN_IMMEDIAT     [x][y]->read());
    307                       TEST(Tcontrol_t        ,out_RENAME_OUT_READ_RA      [i]->read(),in_RENAME_IN_READ_RA      [x][y]->read());
     311                      TEST(Tcontrol_t        ,out_RENAME_OUT_READ_RA      [i]->read(),in_RENAME_IN_READ_RA      [x][y]->read() and not have_event);
    308312                      TEST(Tgeneral_address_t,out_RENAME_OUT_NUM_REG_RA   [i]->read(),in_RENAME_IN_NUM_REG_RA   [x][y]->read());
    309                       TEST(Tcontrol_t        ,out_RENAME_OUT_READ_RB      [i]->read(),in_RENAME_IN_READ_RB      [x][y]->read());
     313                      TEST(Tcontrol_t        ,out_RENAME_OUT_READ_RB      [i]->read(),in_RENAME_IN_READ_RB      [x][y]->read() and not have_event);
    310314                      TEST(Tgeneral_address_t,out_RENAME_OUT_NUM_REG_RB   [i]->read(),in_RENAME_IN_NUM_REG_RB   [x][y]->read());
    311                       TEST(Tcontrol_t        ,out_RENAME_OUT_READ_RC      [i]->read(),in_RENAME_IN_READ_RC      [x][y]->read());
     315                      TEST(Tcontrol_t        ,out_RENAME_OUT_READ_RC      [i]->read(),in_RENAME_IN_READ_RC      [x][y]->read() and not have_event);
    312316                      TEST(Tspecial_address_t,out_RENAME_OUT_NUM_REG_RC   [i]->read(),in_RENAME_IN_NUM_REG_RC   [x][y]->read());
    313                       TEST(Tcontrol_t        ,out_RENAME_OUT_WRITE_RD     [i]->read(),in_RENAME_IN_WRITE_RD     [x][y]->read());
     317                      TEST(Tcontrol_t        ,out_RENAME_OUT_WRITE_RD     [i]->read(),in_RENAME_IN_WRITE_RD     [x][y]->read() and not have_event);
    314318                      TEST(Tgeneral_address_t,out_RENAME_OUT_NUM_REG_RD   [i]->read(),in_RENAME_IN_NUM_REG_RD   [x][y]->read());
    315                       TEST(Tcontrol_t        ,out_RENAME_OUT_WRITE_RE     [i]->read(),in_RENAME_IN_WRITE_RE     [x][y]->read());
     319                      TEST(Tcontrol_t        ,out_RENAME_OUT_WRITE_RE     [i]->read(),in_RENAME_IN_WRITE_RE     [x][y]->read() and not have_event);
    316320                      TEST(Tspecial_address_t,out_RENAME_OUT_NUM_REG_RE   [i]->read(),in_RENAME_IN_NUM_REG_RE   [x][y]->read());
    317321                      TEST(Texception_t      ,out_RENAME_OUT_EXCEPTION_USE[i]->read(),in_RENAME_IN_EXCEPTION_USE[x][y]->read());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp

    r112 r115  
    6464
    6565                log_printf(TRACE,Rename_select,FUNCTION,"      * in_RENAME_OUT_ACK    : %d",PORT_READ(in_RENAME_OUT_ACK[i]));
    66 
    6766                Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RENAME_IN_FRONT_END_ID [x][y]):0;
    6867                Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RENAME_IN_CONTEXT_ID   [x][y]):0;
     68
     69                log_printf(TRACE,Rename_select,FUNCTION,"      * front_end_id         : %d",front_end_id);
     70                log_printf(TRACE,Rename_select,FUNCTION,"      * context_id           : %d",context_id);
    6971               
    70                 Tcontrol_t no_execute   = (PORT_READ(in_RENAME_IN_NO_EXECUTE [x][y]));
    71 //              Tcontrol_t read_ra      = (PORT_READ(in_RENAME_IN_READ_RA    [x][y]));
    72 //              Tcontrol_t read_rb      = (PORT_READ(in_RENAME_IN_READ_RB    [x][y]));
    73 //              Tcontrol_t read_rc      = (PORT_READ(in_RENAME_IN_READ_RC    [x][y]));
    74 //              Tcontrol_t write_rd     = (PORT_READ(in_RENAME_IN_WRITE_RD   [x][y]));
    75 //              Tcontrol_t write_re     = (PORT_READ(in_RENAME_IN_WRITE_RE   [x][y]));
     72                // Test if ROB is Flushed
     73                Tevent_state_t event_state         = PORT_READ(in_RETIRE_EVENT_STATE [x][context_id]);
     74                Tcontrol_t     have_event          = (event_state != EVENT_STATE_NO_EVENT);
     75                Tcontrol_t     can_register_access = not have_event;
     76                Tcontrol_t     no_execute          = (PORT_READ(in_RENAME_IN_NO_EXECUTE [x][y]) or have_event);
     77                Tcontrol_t     read_ra             = (PORT_READ(in_RENAME_IN_READ_RA    [x][y]) and can_register_access);
     78                Tcontrol_t     read_rb             = (PORT_READ(in_RENAME_IN_READ_RB    [x][y]) and can_register_access);
     79                Tcontrol_t     read_rc             = (PORT_READ(in_RENAME_IN_READ_RC    [x][y]) and can_register_access);
     80                Tcontrol_t     write_rd            = (PORT_READ(in_RENAME_IN_WRITE_RD   [x][y]) and can_register_access);
     81                Tcontrol_t     write_re            = (PORT_READ(in_RENAME_IN_WRITE_RE   [x][y]) and can_register_access);
     82//              Tcontrol_t     read_ra             = (PORT_READ(in_RENAME_IN_READ_RA    [x][y]));
     83//              Tcontrol_t     read_rb             = (PORT_READ(in_RENAME_IN_READ_RB    [x][y]));
     84//              Tcontrol_t     read_rc             = (PORT_READ(in_RENAME_IN_READ_RC    [x][y]));
     85//              Tcontrol_t     write_rd            = (PORT_READ(in_RENAME_IN_WRITE_RD   [x][y]));
     86//              Tcontrol_t     write_re            = (PORT_READ(in_RENAME_IN_WRITE_RE   [x][y]));
    7687
    77                 // Test if ROB is Flushed
    78                 Tevent_state_t event_state         = PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]);
    79                 Tcontrol_t     can_register_access = (event_state == EVENT_STATE_NO_EVENT);
     88                log_printf(TRACE,Rename_select,FUNCTION,"      * event_state          : %d",event_state);
     89                log_printf(TRACE,Rename_select,FUNCTION,"      * no_execute (before)  : %d",PORT_READ(in_RENAME_IN_NO_EXECUTE [x][y]));
     90                log_printf(TRACE,Rename_select,FUNCTION,"      * no_execute (after)   : %d",no_execute);
    8091
    81                 Tcontrol_t read_ra  = (PORT_READ(in_RENAME_IN_READ_RA  [x][y]) and can_register_access);
    82                 Tcontrol_t read_rb  = (PORT_READ(in_RENAME_IN_READ_RB  [x][y]) and can_register_access);
    83                 Tcontrol_t read_rc  = (PORT_READ(in_RENAME_IN_READ_RC  [x][y]) and can_register_access);
    84                 Tcontrol_t write_rd = (PORT_READ(in_RENAME_IN_WRITE_RD [x][y]) and can_register_access);
    85                 Tcontrol_t write_re = (PORT_READ(in_RENAME_IN_WRITE_RE [x][y]) and can_register_access);
    86                
    8792                if (_param->_have_port_front_end_id)
    8893                PORT_WRITE(out_RENAME_OUT_FRONT_END_ID [i],front_end_id);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/SelfTest/src/test.cpp

    r88 r115  
    5858  ALLOC1_SC_SIGNAL(out_INSERT_EXCEPTION                               ,"out_INSERT_EXCEPTION                              ",Texception_t      ,_param->_nb_inst_insert);
    5959  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW                      ,"out_INSERT_NUM_REG_RE_PHY_NEW                     ",Tspecial_address_t,_param->_nb_inst_insert);
     60  ALLOC1_SC_SIGNAL(out_INSERT_NO_EXECUTE                              ,"out_INSERT_NO_EXECUTE                             ",Tcontrol_t        ,_param->_nb_inst_insert);
     61
    6062  ALLOC1_SC_SIGNAL( in_INSERT_RENAME_SELECT_VAL                       ," in_INSERT_RENAME_SELECT_VAL                      ",Tcontrol_t        ,_param->_nb_inst_insert);
    6163  ALLOC1_SC_SIGNAL(out_INSERT_RENAME_SELECT_ACK                       ,"out_INSERT_RENAME_SELECT_ACK                      ",Tcontrol_t        ,_param->_nb_inst_insert);
     
    6769//   ALLOC1_SC_SIGNAL( in_INSERT_RENAME_SELECT_EXCEPTION_USE             ," in_INSERT_RENAME_SELECT_EXCEPTION_USE            ",Texception_t      ,_param->_nb_inst_insert);
    6870  ALLOC1_SC_SIGNAL( in_INSERT_RENAME_SELECT_EXCEPTION                 ," in_INSERT_RENAME_SELECT_EXCEPTION                ",Texception_t      ,_param->_nb_inst_insert);
     71  ALLOC1_SC_SIGNAL( in_INSERT_RENAME_SELECT_NO_EXECUTE                ," in_INSERT_RENAME_SELECT_NO_EXECUTE               ",Tcontrol_t        ,_param->_nb_inst_insert);
     72
    6973  ALLOC1_SC_SIGNAL(out_INSERT_REGISTER_TRANSLATION_VAL                ,"out_INSERT_REGISTER_TRANSLATION_VAL               ",Tcontrol_t        ,_param->_nb_inst_insert);
    7074  ALLOC1_SC_SIGNAL( in_INSERT_REGISTER_TRANSLATION_ACK                ," in_INSERT_REGISTER_TRANSLATION_ACK               ",Tcontrol_t        ,_param->_nb_inst_insert);
     
    109113  INSTANCE1_SC_SIGNAL(_Rename_unit_Glue,out_INSERT_EXCEPTION                              ,_param->_nb_inst_insert);
    110114  INSTANCE1_SC_SIGNAL(_Rename_unit_Glue,out_INSERT_NUM_REG_RE_PHY_NEW                     ,_param->_nb_inst_insert);
     115  INSTANCE1_SC_SIGNAL(_Rename_unit_Glue,out_INSERT_NO_EXECUTE                             ,_param->_nb_inst_insert);
     116
    111117  INSTANCE1_SC_SIGNAL(_Rename_unit_Glue, in_INSERT_RENAME_SELECT_VAL                      ,_param->_nb_inst_insert);
    112118  INSTANCE1_SC_SIGNAL(_Rename_unit_Glue,out_INSERT_RENAME_SELECT_ACK                      ,_param->_nb_inst_insert);
     
    120126//   INSTANCE1_SC_SIGNAL(_Rename_unit_Glue, in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,_param->_nb_inst_insert);
    121127  INSTANCE1_SC_SIGNAL(_Rename_unit_Glue, in_INSERT_RENAME_SELECT_EXCEPTION                ,_param->_nb_inst_insert);
     128  INSTANCE1_SC_SIGNAL(_Rename_unit_Glue, in_INSERT_RENAME_SELECT_NO_EXECUTE               ,_param->_nb_inst_insert);
     129
    122130  INSTANCE1_SC_SIGNAL(_Rename_unit_Glue,out_INSERT_REGISTER_TRANSLATION_VAL               ,_param->_nb_inst_insert);
    123131  INSTANCE1_SC_SIGNAL(_Rename_unit_Glue, in_INSERT_REGISTER_TRANSLATION_ACK               ,_param->_nb_inst_insert);
     
    201209  DELETE1_SC_SIGNAL(out_INSERT_EXCEPTION                              ,_param->_nb_inst_insert);
    202210  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW                     ,_param->_nb_inst_insert);
     211  DELETE1_SC_SIGNAL(out_INSERT_NO_EXECUTE                             ,_param->_nb_inst_insert);
     212
    203213  DELETE1_SC_SIGNAL( in_INSERT_RENAME_SELECT_VAL                      ,_param->_nb_inst_insert);
    204214  DELETE1_SC_SIGNAL(out_INSERT_RENAME_SELECT_ACK                      ,_param->_nb_inst_insert);
     
    210220//   DELETE1_SC_SIGNAL( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,_param->_nb_inst_insert);
    211221  DELETE1_SC_SIGNAL( in_INSERT_RENAME_SELECT_EXCEPTION                ,_param->_nb_inst_insert);
     222  DELETE1_SC_SIGNAL( in_INSERT_RENAME_SELECT_NO_EXECUTE               ,_param->_nb_inst_insert);
     223
    212224  DELETE1_SC_SIGNAL(out_INSERT_REGISTER_TRANSLATION_VAL               ,_param->_nb_inst_insert);
    213225  DELETE1_SC_SIGNAL( in_INSERT_REGISTER_TRANSLATION_ACK               ,_param->_nb_inst_insert);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/include/Rename_unit_Glue.h

    r88 r115  
    7575  public    : SC_OUT(Texception_t      )   ** out_INSERT_EXCEPTION                              ;//[nb_inst_insert]
    7676  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RE_PHY_NEW                     ;//[nb_inst_insert]
     77  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_NO_EXECUTE                             ;//[nb_inst_insert]
    7778                                                                                               
    7879  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_RENAME_SELECT_VAL                      ;//[nb_inst_insert]
     
    8586  public    : SC_IN (Texception_t      )   **  in_INSERT_RENAME_SELECT_EXCEPTION_USE            ;//[nb_inst_insert]
    8687  public    : SC_IN (Texception_t      )   **  in_INSERT_RENAME_SELECT_EXCEPTION                ;//[nb_inst_insert]
     88  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_RENAME_SELECT_NO_EXECUTE               ;//[nb_inst_insert]
    8789                                                                                               
    8890  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_REGISTER_TRANSLATION_VAL               ;//[nb_inst_insert]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue.cpp

    r88 r115  
    106106          //<< (*(in_INSERT_ACK                          [i]))
    107107            << (*(in_INSERT_RENAME_SELECT_VAL            [i]))
     108            << (*(in_INSERT_RENAME_SELECT_NO_EXECUTE     [i]))
    108109            << (*(in_INSERT_REGISTER_TRANSLATION_ACK     [i]))
    109110            << (*(in_INSERT_LOAD_STORE_QUEUE_POINTER_ACK [i]))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_allocation.cpp

    r112 r115  
    7171      ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION                              ,"EXCEPTION"                              ,Texception_t      ,_param->_size_exception);
    7272      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
    7375      ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_VAL                      ,"RENAME_SELECT_VAL"                      ,Tcontrol_t        ,1);
    7476      ALLOC1_SIGNAL_OUT(out_INSERT_RENAME_SELECT_ACK                      ,"RENAME_SELECT_ACK"                      ,Tcontrol_t        ,1);
     
    8082//    ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,"RENAME_SELECT_EXCEPTION_USE"            ,Texception_t      ,_param->_size_exception_use);
    8183      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
    8286      ALLOC1_SIGNAL_OUT(out_INSERT_REGISTER_TRANSLATION_VAL               ,"REGISTER_TRANSLATION_VAL"               ,Tcontrol_t        ,1);
    8387      ALLOC1_SIGNAL_IN ( in_INSERT_REGISTER_TRANSLATION_ACK               ,"REGISTER_TRANSLATION_ACK"               ,Tcontrol_t        ,1);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_deallocation.cpp

    r88 r115  
    3939        DELETE1_SIGNAL(out_INSERT_EXCEPTION                              ,_param->_nb_inst_insert,_param->_size_exception);
    4040        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
    4143        DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_VAL                      ,_param->_nb_inst_insert,1);
    4244        DELETE1_SIGNAL(out_INSERT_RENAME_SELECT_ACK                      ,_param->_nb_inst_insert,1);
     
    4850//      DELETE1_SIGNAL( in_INSERT_RENAME_SELECT_EXCEPTION_USE            ,_param->_nb_inst_insert,_param->_size_exception_use);
    4951        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
    5054        DELETE1_SIGNAL(out_INSERT_REGISTER_TRANSLATION_VAL               ,_param->_nb_inst_insert,1);
    5155        DELETE1_SIGNAL( in_INSERT_REGISTER_TRANSLATION_ACK               ,_param->_nb_inst_insert,1);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_genMealy_insert_valack.cpp

    r110 r115  
    3131      {
    3232      //Tcontrol_t ACK                          = PORT_READ(in_INSERT_ACK                          [i]);
     33        Tcontrol_t NO_EXECUTE                   = PORT_READ(in_INSERT_RENAME_SELECT_NO_EXECUTE     [i]);
    3334        Tcontrol_t RENAME_SELECT_VAL            = PORT_READ(in_INSERT_RENAME_SELECT_VAL            [i]);
    3435        Tcontrol_t REGISTER_TRANSLATION_ACK     = PORT_READ(in_INSERT_REGISTER_TRANSLATION_ACK     [i]);
     
    5455//                                                 ACK                          and
    5556                                                   RENAME_SELECT_VAL            and
    56                                                    REGISTER_TRANSLATION_ACK     );
     57                                                   REGISTER_TRANSLATION_ACK     and
     58                                                   not NO_EXECUTE               );
    5759
    5860        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"  * insert [%d]",i);
     61        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"    * no_execute                   (r) : %d",NO_EXECUTE);
    5962        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"    * rename_select_val            (r) : %d",RENAME_SELECT_VAL           );
    6063        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"    * rename_select_ack            (w) : %d",RENAME_SELECT_ACK           );
     
    6467        log_printf(TRACE,Rename_unit_Glue,FUNCTION,"    * load_store_queue_pointer_ack (r) : %d",LOAD_STORE_QUEUE_POINTER_ACK);
    6568       
     69        PORT_WRITE(out_INSERT_NO_EXECUTE                   [i], NO_EXECUTE                  );
    6670//      PORT_WRITE(out_INSERT_VAL                          [i], VAL                         );
    6771        PORT_WRITE(out_INSERT_RENAME_SELECT_ACK            [i], RENAME_SELECT_ACK           );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_allocation.cpp

    r112 r115  
    362362#endif
    363363
    364           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NO_EXECUTE"  ,
    365                               dest,"out_INSERT_"    +toString(i)+"_NO_EXECUTE"  );
    366364          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_IS_DELAY_SLOT",
    367365                              dest,"out_INSERT_"    +toString(i)+"_IS_DELAY_SLOT");
     
    435433          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_EXCEPTION"    ,
    436434                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_EXCEPTION"    );
     435          COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+              "_NO_EXECUTE"   ,
     436                                   dest, "in_INSERT_"    +toString(i)+"_RENAME_SELECT_NO_EXECUTE"   );
    437437        }
    438438
     
    782782          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
    783783                              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
    784          
     784          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NO_EXECUTE"  ,
     785                              dest,"out_INSERT_"+toString(i)+"_NO_EXECUTE"  );
    785786         
    786787          //    in_INSERT_RENAME_SELECT_VAL                       - rename_select
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/SelfTest/src/main.cpp

    r88 r115  
    7676     
    7777      test (name,param);
     78
     79      delete param;
    7880    }
    7981  catch (morpheo::ErrorMorpheo & error)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_deallocation.cpp

    r112 r115  
    7171          {
    7272            for (uint32_t k=0; k<NB_GROUP; k++)
    73               {
    74                 if (_spr [i][j][k] != NULL)
    75                   {
    76                     for (uint32_t l=0; l<NB_REG_GROUP[k]; l++)
    77                       if (_spr [i][j][k][l] != NULL)
    78                         delete _spr [i][j][k][l];
    79                     delete [] _spr [i][j][k];
    80                   }
    81               }
     73              if (_spr [i][j][k] != NULL)
     74                {
     75                  for (uint32_t l=0; l<NB_REG_GROUP[k]; l++)
     76                    if (_spr [i][j][k][l] != NULL)
     77                      delete _spr [i][j][k][l];
     78                  delete [] _spr [i][j][k];
     79                }
    8280            delete [] _spr [i][j];
    8381          }     
Note: See TracChangeset for help on using the changeset viewer.