Ignore:
Timestamp:
Feb 27, 2009, 7:37:40 PM (15 years ago)
Author:
rosiere
Message:

1) Decod_queue : multi implementation (one_fifo, multi_fifo)
2) Issue_queue : multi implementation (in_order, out_of_order)
3) Direction : Add Meta predictor
4) Context_State : re add Branch_complete, More priority to Load miss (is not speculative)
5) Return_Address_Stack : update reg_PREDICT pointer on decod miss prediction
6) UPT : Fix bug in multi event
7) Prediction_glue : in read_stack case, insert in UPT pc_next
8) Rename select : when rob have an event (need flush), read_r{a,b,c} and write_r{d,e} is set at 0

File:
1 edited

Legend:

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

    r110 r111  
    7575    if (usage_is_set(_usage,USE_SYSTEMC))
    7676      {
    77         log_printf(INFO,Issue_queue,FUNCTION,_("<%s> : Method - transition"),_name.c_str());
     77        // Function pointer
     78        switch (_param->_queue_scheme)
     79          {
     80          case ISSUE_QUEUE_SCHEME_IN_ORDER        :
     81            {
     82              function_transition         = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Issue_queue::function_in_order_transition        ;
     83              function_genMoore           = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Issue_queue::function_in_order_genMoore          ;
     84              function_genMealy_issue_in  = NULL;
     85              function_genMealy_issue_out = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Issue_queue::function_in_order_genMealy_issue_out;
     86             
     87              break;
     88            }
     89          case ISSUE_QUEUE_SCHEME_OUT_OF_ORDER    :
     90            {
     91              function_transition         = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Issue_queue::function_out_of_order_transition        ;
     92              function_genMoore           = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Issue_queue::function_out_of_order_genMoore          ;
     93              function_genMealy_issue_in  = NULL;
     94              function_genMealy_issue_out = NULL;
     95             
     96              break;
     97            }
     98          default :
     99            {
     100              break;
     101            }
     102          }
    78103
    79         SC_METHOD (transition);
    80         dont_initialize ();
    81         sensitive << (*(in_CLOCK)).pos();
    82        
     104        if (function_transition != NULL)
     105          {
     106            log_printf(INFO,Issue_queue,FUNCTION,_("<%s> : Method - transition"),_name.c_str());
     107           
     108            SC_METHOD (transition);
     109            dont_initialize ();
     110            sensitive << (*(in_CLOCK)).pos();
     111           
    83112# ifdef SYSTEMCASS_SPECIFIC
    84         // List dependency information
     113            // List dependency information
    85114# endif   
     115          }
    86116
    87         log_printf(INFO,Issue_queue,FUNCTION,_("<%s> : Method - genMoore"),_name.c_str());
     117        if (function_genMoore != NULL)
     118          {
     119            log_printf(INFO,Issue_queue,FUNCTION,_("<%s> : Method - genMoore"),_name.c_str());
     120           
     121            SC_METHOD (genMoore);
     122            dont_initialize ();
     123            sensitive << (*(in_CLOCK)).neg(); // need internal register
     124           
     125# ifdef SYSTEMCASS_SPECIFIC
     126            // List dependency information
     127# endif   
     128          }
    88129
    89         SC_METHOD (genMoore);
    90         dont_initialize ();
    91         sensitive << (*(in_CLOCK)).neg(); // need internal register
    92        
     130        if (function_genMealy_issue_in != NULL)
     131          {
     132            log_printf(INFO,Issue_queue,FUNCTION,_("<%s> : Method - genMealy_issue_in"),_name.c_str());
     133           
     134            SC_METHOD (genMealy_issue_in);
     135            dont_initialize ();
     136            sensitive << (*(in_CLOCK)).neg(); // need internal register
     137           
    93138# ifdef SYSTEMCASS_SPECIFIC
    94         // List dependency information
     139            // List dependency information
    95140# endif   
     141          }
     142
     143        if (function_genMealy_issue_out != NULL)
     144          {
     145            log_printf(INFO,Issue_queue,FUNCTION,_("<%s> : Method - genMealy_issue_out"),_name.c_str());
     146           
     147            SC_METHOD (genMealy_issue_out);
     148            dont_initialize ();
     149            sensitive << (*(in_CLOCK)).neg(); // need internal register
     150
     151            if (_param->_queue_scheme == ISSUE_QUEUE_SCHEME_IN_ORDER)
     152              {
     153                for (uint32_t i=0; i<_param->_nb_inst_issue; ++i)
     154                  sensitive << (*(in_ISSUE_OUT_ACK [i]));
     155              }
     156           
     157# ifdef SYSTEMCASS_SPECIFIC
     158            // List dependency information
     159# endif   
     160          }
    96161
    97162#endif
Note: See TracChangeset for help on using the changeset viewer.