Ignore:
Timestamp:
Jul 11, 2009, 6:39:35 PM (15 years ago)
Author:
rosiere
Message:

1) add constant method - compatibility with SystemC
2) add Script to test sensitive list
3) fix bug in sensitive list

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end
Files:
17 edited

Legend:

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

    r131 r132  
    112112        SC_METHOD (genMealy_decod_event);
    113113        dont_initialize ();
    114         sensitive << (*(in_CLOCK)).neg(); // use internal register
     114        sensitive << (*(in_CLOCK)).neg() // use internal register
     115                  << (*(in_NRESET));
     116
    115117        for (uint32_t i=0; i<_param->_nb_decod_unit; ++i)
    116118          {
     
    136138        dont_initialize ();
    137139//      sensitive << (*(in_CLOCK)).neg(); // use internal register
    138         sensitive << (*(in_COMMIT_EVENT_VAL             ));
     140        sensitive << (*(in_NRESET))
     141                  << (*(in_COMMIT_EVENT_VAL             ));
    139142        if (_param->_have_port_context_id)                                     
    140143        sensitive << (*(in_COMMIT_EVENT_CONTEXT_ID      ));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod.cpp

    r123 r132  
    8989        dont_initialize ();
    9090        sensitive << (*(in_CLOCK)).neg() //use internal register
     91                  << (*(in_NRESET))
    9192                  << (*(in_CONTEXT_EVENT_ACK));
    9293        for (uint32_t i=0; i<_param->_nb_context; i++)
     
    9899//                    << (*(in_IFETCH_ADDRESS_NEXT                [i]))
    99100                      << (*(in_IFETCH_BRANCH_STATE                [i]))
     101                      << (*(in_IFETCH_EXCEPTION                   [i]))
    100102                      << (*(in_CONTEXT_DECOD_ENABLE               [i]));
    101103            if (_param->_have_port_context_id)
     
    113115          sensitive << (*(in_DECOD_ACK            [i]))
    114116                    << (*(in_PREDICT_ACK          [i]))
    115 //                  << (*(in_PREDICT_CAN_CONTINUE [i]))
     117                    << (*(in_PREDICT_CAN_CONTINUE [i]))
    116118            ;
    117119
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/SelfTest/src/test.cpp

    r113 r132  
    2424
    2525  Tusage_t _usage = USE_ALL;
     26
     27  _model.set_model(MODEL_SYSTEMC,true);
    2628
    2729//   _usage = usage_unset(_usage,USE_SYSTEMC              );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue.cpp

    r123 r132  
    125125        SC_METHOD (genMealy_decod_out);
    126126        dont_initialize ();
    127         sensitive << (*(in_CLOCK)).neg(); // use internal register
    128 
     127        sensitive << (*(in_CLOCK)).neg() // use internal register
     128                  << (*(in_NRESET));
    129129        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
    130130          sensitive << (*(in_DECOD_OUT_ACK [i]));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue.cpp

    r131 r132  
    115115        dont_initialize ();
    116116//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
     117        sensitive << (*(in_NRESET));
    117118        for (uint32_t i=0; i<_param->_nb_decod_unit; ++i)
    118119          for (uint32_t j=0; j<_param->_nb_inst_decod[i]; ++j)
     
    129130        dont_initialize ();
    130131//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
     132        sensitive << (*(in_NRESET));
    131133        for (uint32_t i=0; i<_param->_nb_inst_branch_complete; ++i)
    132134          sensitive << (*( in_BRANCH_COMPLETE_VAL                             [i]))
     
    144146        dont_initialize ();
    145147//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
     148        sensitive << (*(in_NRESET));
    146149        for (uint32_t i=0; i<_param->_nb_context; ++i)
    147150          {
     
    170173        dont_initialize ();
    171174//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
     175        sensitive << (*(in_NRESET));
    172176        for (uint32_t i=0; i<_param->_nb_context; ++i)
    173177          {
     
    190194        dont_initialize ();
    191195//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
     196        sensitive << (*(in_NRESET));
    192197        for (uint32_t i=0; i<_param->_nb_context; ++i)
    193198            sensitive << (*( in_NB_INST_DECOD_UNIT_DECOD_ALL [i]));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/src/Address_management_genMoore.cpp

    r123 r132  
    2222  void Address_management::genMoore (void)
    2323  {
    24     log_printf(FUNC,Address_management,FUNCTION,"Begin");
     24    log_begin(Address_management,FUNCTION);
     25    log_function(Address_management,FUNCTION,_name.c_str());
    2526
    2627    if (PORT_READ(in_NRESET))
     
    5253    PORT_WRITE(out_PREDICT_PC_CURRENT           ,reg_PC_NEXT           );
    5354    PORT_WRITE(out_PREDICT_PC_CURRENT_IS_DS_TAKE,reg_PC_NEXT_IS_DS_TAKE);
     55
    5456      }
    5557    else
     
    5961      }
    6062
     63    log_printf(TRACE,Address_management,FUNCTION," * ADDRESS_VAL : %d",internal_ADDRESS_VAL);
     64    log_printf(TRACE,Address_management,FUNCTION," * PREDICT_VAL : %d",internal_PREDICT_VAL);
     65
    6166    PORT_WRITE(out_ADDRESS_VAL,internal_ADDRESS_VAL);
    6267    PORT_WRITE(out_PREDICT_VAL,internal_PREDICT_VAL);
    6368
    64     log_printf(FUNC,Address_management,FUNCTION,"End");
     69    log_end(Address_management,FUNCTION);
    6570  };
    6671
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue.cpp

    r131 r132  
    7676        log_printf(INFO,Ifetch_queue,FUNCTION,_("<%s> Method - constant"),_name.c_str());
    7777
     78#ifdef SYSTEMCASS_SPECIFIC
     79        constant();
     80#else
    7881        SC_METHOD (constant);
    7982//      dont_initialize ();
     
    8285        // List dependency information
    8386# endif   
    84 
     87#endif
    8588        log_printf(INFO,Ifetch_queue,FUNCTION,_("<%s> Method - transition"),_name.c_str());
    8689
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_genMoore.cpp

    r123 r132  
    2121  void Ifetch_queue::genMoore (void)
    2222  {
    23     log_printf(FUNC,Ifetch_queue,FUNCTION,"Begin");
     23    log_begin(Ifetch_queue,FUNCTION);
     24    log_function(Ifetch_queue,FUNCTION,_name.c_str());
    2425
    2526    if (PORT_READ(in_NRESET))
     
    3031    {
    3132      internal_ADDRESS_ACK = (_queue[reg_PTR_WRITE]->_state == IFETCH_QUEUE_STATE_EMPTY);
    32      
     33 
     34      log_printf(TRACE,Ifetch_queue,FUNCTION,"  * ADDRESS_ACK : %d",internal_ADDRESS_ACK);
     35     
    3336      if (_param->_have_port_ifetch_queue_ptr)
    3437      PORT_WRITE(out_ADDRESS_IFETCH_QUEUE_ID, reg_PTR_WRITE);
     
    4447        {
    4548          internal_DECOD_VAL [i] = ack and _queue[reg_PTR_READ]->_instruction_enable [i];
     49
     50          log_printf(TRACE,Ifetch_queue,FUNCTION,"  * DECOD_VAL [%d] : %d",i,internal_DECOD_VAL [i]);
     51
    4652          PORT_WRITE(out_DECOD_INSTRUCTION [i],         _queue[reg_PTR_READ]->_instruction        [i]);
    4753        }
     
    7076    PORT_WRITE(out_DECOD_VAL [i], internal_DECOD_VAL [i]);
    7177
    72     log_printf(FUNC,Ifetch_queue,FUNCTION,"End");
     78    log_end(Ifetch_queue,FUNCTION);
    7379  };
    7480
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/src/Ifetch_unit_Glue.cpp

    r131 r132  
    103103        dont_initialize ();
    104104//      sensitive << (*(in_CLOCK)).neg(); // don't use internal register
    105         sensitive << (*(in_ICACHE_REQ_ADDRESS_VAL))
     105        sensitive << (*(in_NRESET))
     106                  << (*(in_ICACHE_REQ_ADDRESS_VAL))
    106107                  << (*(in_ICACHE_REQ_ACK        ))
    107108                  << (*(in_ICACHE_REQ_QUEUE_ACK  ))
     
    130131        dont_initialize ();
    131132//      sensitive << (*(in_CLOCK)).neg(); // don't use internal register
    132         sensitive << (*(in_EVENT_VAL        ))
     133        sensitive << (*(in_NRESET))
     134                  << (*(in_EVENT_VAL        ))
    133135                  << (*(in_EVENT_ADDRESS_ACK))
    134136                  << (*(in_EVENT_QUEUE_ACK  ));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue.cpp

    r123 r132  
    9191        SC_METHOD (genMealy_predict);
    9292        dont_initialize ();
    93 //      sensitive << (*(in_CLOCK)).neg(); // don't use internal register
     93//      sensitive << (*(in_CLOCK)).neg(); // don't use internal register
     94        sensitive << (*(in_NRESET));
    9495
    9596        for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
     
    186187        dont_initialize ();
    187188//      sensitive << (*(in_CLOCK)).neg(); // don't use internal register
    188 
     189        sensitive << (*(in_NRESET));
     190                 
    189191        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
    190192          {
     
    228230        dont_initialize ();
    229231//      sensitive << (*(in_CLOCK)).neg(); // don't use internal register
     232        sensitive << (*(in_NRESET));
    230233
    231234        for (uint32_t i=0; i<_param->_nb_inst_update; i++)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/src/Branch_Target_Buffer_Register.cpp

    r131 r132  
    101101        SC_METHOD (genMealy_predict);
    102102        dont_initialize ();
    103         sensitive << (*(in_CLOCK)).neg(); // use internal register
     103        sensitive << (*(in_CLOCK)).neg() // use internal register
     104                  << (*(in_NRESET));
    104105        for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
    105106          {
     
    147148        SC_METHOD (genMealy_decod);
    148149        dont_initialize ();
    149         sensitive << (*(in_CLOCK)).neg(); // use internal register
     150        sensitive << (*(in_CLOCK)).neg() // use internal register
     151                  << (*(in_NRESET));
    150152        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
    151153          {
     
    179181        SC_METHOD (genMealy_update);
    180182        dont_initialize ();
    181         sensitive << (*(in_CLOCK)).neg(); // use internal register
     183        sensitive << (*(in_CLOCK)).neg() // use internal register
     184                  << (*(in_NRESET));
    182185        for (uint32_t i=0; i<_param->_nb_inst_update; i++)
    183186          {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue.cpp

    r131 r132  
    138138            dont_initialize ();
    139139//          sensitive << (*(in_CLOCK)).neg(); // don't use internal register
     140            sensitive << (*(in_NRESET));
    140141            for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
    141142              {
     
    221222            dont_initialize ();
    222223//          sensitive << (*(in_CLOCK)).neg(); // don't use internal register
     224            sensitive << (*(in_NRESET));
    223225            for (uint32_t i=0; i<_param->_nb_inst_update; i++)
    224226              sensitive << (*(in_UPDATE_VAL               [i]))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue.cpp

    r112 r132  
    8787        dont_initialize ();
    8888//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
     89        sensitive << (*(in_NRESET));
    8990        for (uint32_t i=0; i<_param->_nb_inst_update; ++i)
    9091          {
     
    100101        dont_initialize ();
    101102//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
     103        sensitive << (*(in_NRESET));
    102104        for (uint32_t i=0; i<_param->_nb_inst_update; ++i)
    103105          sensitive << (*(in_UPDATE_HISTORY     [i]))
     
    114116        dont_initialize ();
    115117//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
     118        sensitive << (*(in_NRESET));
    116119        for (uint32_t i=0; i<_param->_nb_inst_predict; ++i)
    117120          {
     
    131134        dont_initialize ();
    132135//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
     136        sensitive << (*(in_NRESET));
    133137        for (uint32_t i=0; i<_param->_nb_inst_predict; ++i)
    134138          for (uint32_t j=0; j<_param->_nb_predictor; ++j)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor.cpp

    r131 r132  
    9999        SC_METHOD (genMealy_predict);
    100100        dont_initialize ();
    101         sensitive << (*(in_CLOCK)).neg(); // need internal register
     101        sensitive << (*(in_CLOCK)).neg() // need internal register
     102                  << (*(in_NRESET));
    102103
    103104        for (uint32_t i=0; i<_param->_nb_inst_predict; ++i)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue/src/Prediction_unit_Glue.cpp

    r123 r132  
    9191       
    9292        dont_initialize ();
    93         sensitive << (*(in_CLOCK)).neg(); // use internal register
    94        
     93        sensitive << (*(in_CLOCK)).neg() // use internal register
     94                  << (*(in_NRESET));
    9595        for (uint32_t i=0; i<_param->_nb_context; i++)
    9696          {
     
    10341034        SC_METHOD (genMealy_decod);
    10351035        dont_initialize ();
    1036         sensitive << (*(in_CLOCK)).neg(); // use internal register
     1036        sensitive << (*(in_CLOCK)).neg() // use internal register
     1037                  << (*(in_NRESET));
    10371038        for (uint32_t i=0; i<_param->_nb_decod_unit; i++)
    10381039          for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++)
     
    17111712        dont_initialize ();
    17121713//      sensitive << (*(in_CLOCK)).neg(); // don't use internal register
     1714        sensitive << (*(in_NRESET));
    17131715        for (uint32_t i=0; i<_param->_nb_inst_branch_update; i++)
    17141716          sensitive << (*(in_UPDATE_BTB_ACK           [i]))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack.cpp

    r131 r132  
    100100        SC_METHOD (genMealy_decod);
    101101        dont_initialize ();
    102         sensitive << (*(in_CLOCK)).neg(); // use internal registers
     102        sensitive << (*(in_CLOCK)).neg() // use internal registers
     103                  << (*(in_NRESET));
    103104        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
    104105          {
    105106            if (_param->_have_port_context_id)
    106107            sensitive << (*( in_DECOD_CONTEXT_ID [i]));
    107             sensitive << (*( in_DECOD_PUSH       [i]));
     108            sensitive << (*( in_DECOD_VAL        [i]))
     109                      << (*( in_DECOD_PUSH       [i]));
    108110          }
    109111
     
    130132        SC_METHOD (genMealy_predict);
    131133        dont_initialize ();
    132         sensitive << (*(in_CLOCK)).neg(); // use internal registers
     134        sensitive << (*(in_CLOCK)).neg() // use internal registers
     135                  << (*(in_NRESET));
    133136        for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
    134137          {
    135138            if (_param->_have_port_context_id)
    136139            sensitive << (*( in_PREDICT_CONTEXT_ID [i]));
    137             sensitive << (*( in_PREDICT_PUSH       [i]));
     140            sensitive << (*( in_PREDICT_VAL        [i]))
     141                      << (*( in_PREDICT_PUSH       [i]));
    138142          }
    139143
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table.cpp

    r131 r132  
    112112        SC_METHOD (genMealy_predict);
    113113        dont_initialize ();
    114         sensitive << (*(in_CLOCK)).neg(); // use internal register
     114        sensitive << (*(in_CLOCK)).neg() // use internal register
     115                  << (*(in_NRESET));
    115116        for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
    116117          {
     
    134135        SC_METHOD (genMealy_decod);
    135136        dont_initialize ();
    136         sensitive << (*(in_CLOCK)).neg(); // use internal register
     137        sensitive << (*(in_CLOCK)).neg() // use internal register
     138                  << (*(in_NRESET));
    137139        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
    138140          {
     
    154156        SC_METHOD (genMealy_branch_complete);
    155157        dont_initialize ();
    156         sensitive << (*(in_CLOCK)).neg(); // use internal register
     158        sensitive << (*(in_CLOCK)).neg() // use internal register
     159                  << (*(in_NRESET));
    157160        for (uint32_t i=0; i<_param->_nb_inst_branch_complete; i++)
    158161          {
     
    161164            if (_param->_have_port_depth)
    162165            sensitive << (*(in_BRANCH_COMPLETE_DEPTH [i]));
    163             sensitive << (*(in_BRANCH_COMPLETE_NO_SEQUENCE [i]))
    164                       << (*(in_BRANCH_COMPLETE_ADDRESS [i]));
     166            sensitive << (*(in_BRANCH_COMPLETE_VAL         [i]))
     167                      << (*(in_BRANCH_COMPLETE_NO_SEQUENCE [i]))
     168                      << (*(in_BRANCH_COMPLETE_ADDRESS     [i]));
    165169          }
    166170       
Note: See TracChangeset for help on using the changeset viewer.