Ignore:
Timestamp:
Jan 8, 2009, 2:06:27 PM (15 years ago)
Author:
rosiere
Message:

1) Bug fix (Operation, Instruction)
2) Modif Return Address Stack
3) Add Soft Test
4) Add Soc Test

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

    • Property svn:ignore set to
      Makefile.flags
      Makefile.tools
      Makefile.tools_path
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_genMealy_predict.cpp

    r81 r100  
    2222  void Return_Address_Stack::genMealy_predict (void)
    2323  {
    24     log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin");
     24    log_begin(Return_Address_Stack,FUNCTION);
     25    log_function(Return_Address_Stack,FUNCTION,_name.c_str());
    2526
    2627#ifdef DEBUG_TEST
     28    // just to test if have many transaction on a same context
    2729    bool context_valid [_param->_nb_context];
    2830    for (uint32_t i=0; i<_param->_nb_context; i++)
     
    3234    for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
    3335      {
     36        // Read context number
    3437        Tcontext_t context = (_param->_have_port_context_id)?PORT_READ(in_PREDICT_CONTEXT_ID [i]):0;
    35 
     38       
    3639#ifdef DEBUG_TEST
    3740        if (PORT_READ(in_PREDICT_VAL [i]))
     
    4245          }
    4346#endif
    44 
     47       
     48        // Get top
    4549        Tptr_t     top  = reg_PREDICT_TOP[context];
    4650        Tcontrol_t push = PORT_READ(in_PREDICT_PUSH [i]);
    4751
    48         // if push : value is hit
    49         // if pop  : val and not miss
    50         internal_PREDICT_HIT [i] = (push or (reg_stack[context][top]._val and not reg_stack[context][top]._miss and (reg_PREDICT_NB_ELT[context]>0)));
     52        // Hit :
     53        //   * if push : value is hit
     54        //   * if pop  : no empty
     55        internal_PREDICT_HIT [i] = (push or (reg_PREDICT_NB_ELT[context]>0));
     56
    5157        PORT_WRITE(out_PREDICT_HIT         [i], internal_PREDICT_HIT [i]);
    5258
    5359        // if pop  : address_pop   = stack [top]
    54         // if push : stock [top+1] = address_push; also stock [top+1] is erase ! give the old value at the update table
     60        // if push : stock [top+1] = address_push; also stack [top+1] is erase ! save the old value in the update table
    5561        if (push)
    5662          top = (top+1)%_param->_size_queue[context];
     
    6066      }
    6167
    62     log_printf(FUNC,Return_Address_Stack,FUNCTION,"End");
     68    log_end(Return_Address_Stack,FUNCTION);
    6369  };
    6470
Note: See TracChangeset for help on using the changeset viewer.