Dear list,
I've been working on a new protocol and I was
trying to add new transitions in the MSI_MOSI_CMP_directory protocol like
this:
transition({L2_I, L2_NP}, L2_SomeEvent, L2_IM)
{ someAction;
}
transition(L2_IM, L2_SomeOtherEvent, L2_M)
{ someOtherAction; }
However, when testing with a simple trace, I found that although the state
of a line appears to have changed from L2_NP to L2_IM, later on when
L2_SomeOtherEvent occurs, it refuses to change its state to L2_M and
complains about still being in state L2_NP and hence invalid transition, as
follows:
1635 1
0 L2Cache L2_SomeEvent L2_NP>L2_IM
[0x400, line 0x400] Warning: in fn TransitionResult
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State,
L2Cache_State&, const Ad dress&) in
generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1650: m_id is
1 Warning: in fn TransitionResult
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State,
L2Cache_State&, const Ad dress&) in
generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1651: m_version is
0 Warning: in fn TransitionResult
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State,
L2Cache_State&, const Ad dress&) in
generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1652:
g_eventQueue_ptr->getTime() is 1635 Warning: in fn TransitionResult
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State,
L2Cache_State&, const Ad dress&) in
generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1653: addr is [0x400,
line 0x400] Warning: in fn TransitionResult
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State,
L2Cache_State&, const Ad dress&) in
generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1654: event is
L2_MigrationDone Warning: in fn TransitionResult
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State,
L2Cache_State&, const Ad dress&) in
generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1655: state is
L2_NP Fatal Error: in fn TransitionResult
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State,
L2Cache_State&, cons t Address&) in
generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1656: Invalid
transition
I wonder what else is needed to change the state of a line in addition to
the transition() statement. Have anyone met with this problem before? Please
advice!
Thanks a lot!!
Lei
|