source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_genMealy_decod_event.cpp @ 102

Last change on this file since 102 was 102, checked in by rosiere, 15 years ago

Previous commit with new files :P

  • Property svn:keywords set to Id
File size: 2.1 KB
Line 
1#ifdef SYSTEMC
2/*
3 * $Id: Context_State_genMealy_decod_event.cpp 102 2009-01-15 17:24:46Z rosiere $
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_front_end {
15namespace front_end {
16namespace context_state {
17
18
19#undef  FUNCTION
20#define FUNCTION "Context_State::genMealy_decod_event"
21  void Context_State::genMealy_decod_event (void)
22  {
23    log_begin(Context_State,FUNCTION);
24    log_function(Context_State,FUNCTION,_name.c_str());
25
26    for (uint32_t i=0; i<_param->_nb_decod_unit; i++)
27      {
28        Tcontrol_t ack = 1;
29        if (PORT_READ(in_DECOD_EVENT_VAL [i]))
30          {
31            Tcontext_t    context_id = (_param->_have_port_context_id)?PORT_READ(in_DECOD_EVENT_CONTEXT_ID [i]):0;
32            Tevent_type_t event_type = PORT_READ(in_DECOD_EVENT_TYPE [i]);
33            Tcounter_t    inst_all   = PORT_READ(in_NB_INST_COMMIT_ALL[context_id]) + PORT_READ(in_NB_INST_DECOD_ALL [context_id]);
34            Tcounter_t    inst_mem   = PORT_READ(in_NB_INST_COMMIT_MEM[context_id]) + PORT_READ(in_NB_INST_DECOD_ALL [context_id]);
35
36            switch (event_type)
37              {
38              case EVENT_TYPE_SPR_ACCESS         : ack = (inst_all == 0); break;
39              case EVENT_TYPE_MSYNC              : ack = (inst_mem == 0); break;
40              case EVENT_TYPE_PSYNC              : ack = (inst_all == 0); break;
41              case EVENT_TYPE_CSYNC              : ack = (inst_all == 0); break;
42//            case EVENT_TYPE_NONE               :
43//            case EVENT_TYPE_MISS_SPECULATION   :
44//            case EVENT_TYPE_EXCEPTION          :
45//            case EVENT_TYPE_BRANCH_NO_ACCURATE :
46              default : break; // ack == 1
47              }
48          }
49
50        internal_DECOD_EVENT_ACK [i] = ack;
51        PORT_WRITE(out_DECOD_EVENT_ACK [i], internal_DECOD_EVENT_ACK [i]);
52      }
53
54    log_end(Context_State,FUNCTION);
55  };
56
57}; // end namespace context_state
58}; // end namespace front_end
59}; // end namespace multi_front_end
60}; // end namespace core
61
62}; // end namespace behavioural
63}; // end namespace morpheo             
64#endif
Note: See TracBrowser for help on using the repository browser.