From 2f9d8bff5b67e7a64a0269f24dd7c472d3de3533 Mon Sep 17 00:00:00 2001 From: Derek Hower Date: Wed, 8 Jul 2009 00:31:33 -0500 Subject: slicc: Fixed MI_example bug. The directory was not writing data to DRAM after a PUTX. --- src/mem/protocol/MI_example-dir.sm | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'src/mem/protocol/MI_example-dir.sm') diff --git a/src/mem/protocol/MI_example-dir.sm b/src/mem/protocol/MI_example-dir.sm index f597ab73c..29678ffc4 100644 --- a/src/mem/protocol/MI_example-dir.sm +++ b/src/mem/protocol/MI_example-dir.sm @@ -374,6 +374,13 @@ machine(Directory, "Directory protocol") : LATENCY_TO_MEM_CTRL_LATENCY LATENCY_D } } + 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); } @@ -478,6 +485,10 @@ machine(Directory, "Directory protocol") : LATENCY_TO_MEM_CTRL_LATENCY LATENCY_D 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) { @@ -548,27 +559,20 @@ machine(Directory, "Directory protocol") : LATENCY_TO_MEM_CTRL_LATENCY LATENCY_D } 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; @@ -577,15 +581,16 @@ machine(Directory, "Directory protocol") : LATENCY_TO_MEM_CTRL_LATENCY LATENCY_D 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; } -- cgit v1.2.3