}
}
+ action(v_allocateTBEFromRequestNet, "\v", desc="Allocate TBE") {
+ peek(requestQueue_in, RequestMsg) {
+ TBEs.allocate(address);
+ TBEs[address].DataBlk := in_msg.DataBlk;
+ }
+ }
+
action(w_deallocateTBE, "w", desc="Deallocate TBE") {
TBEs.deallocate(address);
}
memQueue_in.dequeue();
}
+ action(w_writeDataToMemoryFromTBE, "\w", desc="Write date to directory memory from TBE") {
+ directory[address].DataBlk := TBEs[address].DataBlk;
+ }
+
// TRANSITIONS
transition({M_DRD, M_DWR}, GETX) {
}
transition(M_DWR, PUTX, M_DWRI) {
- dwt_writeDMADataFromTBE;
qw_queueMemoryWBRequest_partialTBE;
- //a_sendWriteBackAck;
c_clearOwner;
- //da_sendDMAAck;
w_deallocateTBE;
i_popIncomingRequestQueue;
}
transition(M_DWRI, Memory_Ack, I) {
- //dwt_writeDMADataFromTBE;
+ w_writeDataToMemoryFromTBE;
l_sendWriteBackAck;
- //c_clearOwner;
da_sendDMAAck;
- //w_deallocateTBE;
+ w_deallocateTBE;
l_popMemQueue;
}
-
-
-
transition(M, GETX, M) {
f_forwardRequest;
e_ownerIsRequestor;
transition(M, PUTX, MI) {
c_clearOwner;
-// l_writeDataToMemory;
+ v_allocateTBEFromRequestNet;
l_queueMemoryWBRequest;
-// a_sendWriteBackAck;
d_deallocateDirectory;
i_popIncomingRequestQueue;
}
transition(MI, Memory_Ack, I) {
+ w_writeDataToMemoryFromTBE;
l_sendWriteBackAck;
+ w_deallocateTBE;
l_popMemQueue;
}