Ignore:
Timestamp:
May 21, 2009, 12:01:32 AM (15 years ago)
Author:
rosiere
Message:

1) Stat List : scan all queue to find free register
2) Write_queue : test "genMealy" add bypass [0]
3) Functionnal_unit : add const parameters to add or not the pipeline_in
4) Load Store Unit : if load make an exception, free nb_check
5) Debug, change test to add model

File:
1 edited

Legend:

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

    r105 r118  
    2828    // ===================================================================
    2929    {
     30      log_printf(TRACE,Commit_unit,FUNCTION,"  * REEXECUTE [0]");
     31
    3032      // Store instruction comming Out Of Order in Load Store Unit.
    3133      // Must be executed in no speculative mode. Also, send a signal when an Store is in head of ROB
    3234
    33       Tcontrol_t val = false;
    34 
    35       if (not _rob[reg_NUM_BANK_HEAD].empty())
    36         {
    37           entry_t    * entry = _rob [reg_NUM_BANK_HEAD].front();
     35      Tcontrol_t val      = false;
     36      uint32_t   num_bank = reg_NUM_BANK_HEAD;
     37
     38      if (not _rob[num_bank].empty())
     39        {
     40          log_printf(TRACE,Commit_unit,FUNCTION,"    * ROB is not empty");
     41          log_printf(TRACE,Commit_unit,FUNCTION,"    * num_bank      : %d",num_bank);
     42
     43          entry_t    * entry = _rob [num_bank].front();
    3844          rob_state_t  state = entry->state;
    3945
     
    4147          val   = ((state == ROB_STORE_HEAD_OK) or
    4248                   (state == ROB_STORE_HEAD_KO));
    43          
     49
     50          log_printf(TRACE,Commit_unit,FUNCTION,"    * val           : %d",val);
    4451          if (val)
    4552            {
     53              Tpacket_t packet_id = ((entry->ptr << _param->_shift_num_slot) | num_bank);
     54
     55              log_printf(TRACE,Commit_unit,FUNCTION,"    * packet_id     : %d",packet_id);
     56         
    4657              // Reexecute store
    4758              if (_param->_have_port_context_id)
     
    5061              PORT_WRITE(out_REEXECUTE_FRONT_END_ID          [0], entry->front_end_id         );
    5162              if (_param->_have_port_rob_ptr  )
    52               PORT_WRITE(out_REEXECUTE_PACKET_ID             [0], entry->ptr                  );
     63              PORT_WRITE(out_REEXECUTE_PACKET_ID             [0], packet_id                   );
    5364              PORT_WRITE(out_REEXECUTE_TYPE                  [0], entry->type                 );
    5465              PORT_WRITE(out_REEXECUTE_STORE_QUEUE_PTR_WRITE [0], entry->store_queue_ptr_write);
     
    5869 
    5970      internal_REEXECUTE_VAL      [0] = val;
    60       internal_REEXECUTE_NUM_BANK [0] = reg_NUM_BANK_HEAD;
     71      internal_REEXECUTE_NUM_BANK [0] = num_bank;
    6172     
    6273      PORT_WRITE(out_REEXECUTE_VAL[0], internal_REEXECUTE_VAL [0]);
Note: See TracChangeset for help on using the changeset viewer.