Ignore:
Timestamp:
Jan 15, 2009, 6:19:08 PM (15 years ago)
Author:
rosiere
Message:

1) Add soc test
2) fix bug (Pc management, Decod and execute, Update prediction ...)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_genMealy_decod_out.cpp

    r88 r101  
    4242            Tdepth_t   depth           = reg_QUEUE->front()->_depth         [i];
    4343            Tdepth_t   depth_min       = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MIN [context]):0;
    44             Tdepth_t   depth_max       = PORT_READ(in_DEPTH_MAX[context]);
     44            Tdepth_t   depth_max       = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MAX [context]):0;
     45            Tcontrol_t depth_full      = PORT_READ(in_DEPTH_FULL[context]);
    4546
    4647            // is a valid instruction ?
    4748            // If DEPTH_CURRENT :
    4849            // equal at     DEPTH_MIN            -> not speculative
    49             // not include ]DEPTH_MIN:DEPTH_MAX[ -> previous branch miss
    50             //     include ]DEPTH_MIN:DEPTH_MAX[ -> speculative
     50            // not include ]DEPTH_MIN:DEPTH_MAX] -> previous branch miss
     51            //     include ]DEPTH_MIN:DEPTH_MAX] -> speculative
    5152
    5253            // All case
     
    5859            // ....... max ...X... min ....... KO
    5960
    60             Tcontrol_t is_valid        = ((depth == depth_min) or
    61                                           ((depth_min < depth_max)?
    62                                            (depth<depth_max):
    63                                            ((depth > depth_min) or (depth < depth_max))));
     61            Tcontrol_t   is_valid      = ((depth == depth_min) or
     62                                          depth_full or
     63                                          ((depth_min <= depth_max)?
     64                                           ((depth >= depth_min) and (depth <=depth_max)):
     65                                           ((depth >= depth_min) or  (depth <=depth_max))));
     66//          Tcontrol_t is_valid        = ((depth == depth_min) or
     67//                                           ((depth_min < depth_max)?
     68//                                            (depth<=depth_max):
     69//                                            ((depth > depth_min) or (depth <= depth_max))));
    6470//          Tcontrol_t is_valid        = depth <= depth_max;
    6571
    66             log_printf(TRACE,Decod_queue,FUNCTION,_("    * is_valid : %d"),is_valid);
    67 
     72            log_printf(TRACE,Decod_queue,FUNCTION,"    * is_valid : %d",is_valid);
     73            log_printf(TRACE,Decod_queue,FUNCTION,"      * context   : %d",context);
     74            log_printf(TRACE,Decod_queue,FUNCTION,"      * depth     : %d",depth);
     75            log_printf(TRACE,Decod_queue,FUNCTION,"      * depth_min : %d",depth_min);
     76            log_printf(TRACE,Decod_queue,FUNCTION,"      * depth_max : %d",depth_max);
     77            log_printf(TRACE,Decod_queue,FUNCTION,"      * depth_full: %d",depth_full);
     78            log_printf(TRACE,Decod_queue,FUNCTION,"      * address   : 0x%x (0x%x)",reg_QUEUE->front()->_address[i],reg_QUEUE->front()->_address[i]<<2);
    6879            internal_DECOD_OUT_VAL [i] = 1; // in all case, val is set (entry is not empty, and instruction is valid)
    6980            if (is_valid)
     
    8192    for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
    8293      {
    83         log_printf(TRACE,Decod_queue,FUNCTION,_("  * DECOD_OUT_VAL : %d"),val [i]);
     94        log_printf(TRACE,Decod_queue,FUNCTION,"  * DECOD_OUT_VAL : %d",val [i]);
    8495
    8596        PORT_WRITE(out_DECOD_OUT_VAL [i],val [i]);
Note: See TracChangeset for help on using the changeset viewer.