Index: branches/MESI/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp
===================================================================
--- branches/MESI/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp	(revision 788)
+++ branches/MESI/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp	(revision 813)
@@ -2176,5 +2176,8 @@
                     size_t way = 0;
                     addr_t multi_ack_address = r_multi_ack_nline.read() * m_words * 4;
-                    bool match_ll = ((r_multi_ack_pktid.read() & 0x07) == TYPE_LL);
+                    bool cached_read = ((r_multi_ack_pktid.read() & 0x7) != 0) 
+                                   and ((r_multi_ack_pktid.read() & 0x7) != 0x2) 
+                                   and ((r_multi_ack_pktid.read() & 0x7) != 0x6);
+
                     DirectoryEntry entry     = m_cache_directory.read(multi_ack_address , way);
                     r_multi_ack_tag          = entry.tag;
@@ -2210,5 +2213,5 @@
                         r_multi_ack_fsm = MULTI_ACK_IVT_CHANGE; 
                     }
-                    else if (not entry.count or match_ll) // The line has been already evicted from cache L1
+                    else if (not entry.count or not cached_read) // The line has been already evicted from cache L1
                     {
                         assert(((entry.count == 1) or (entry.count == 0)) && "multi ack for a ll request, count is 1");
@@ -2257,5 +2260,7 @@
                     }
 
-                    bool match_ll = ((r_multi_ack_pktid.read() & 0x07) == TYPE_LL);
+                    bool cached_read = ((r_multi_ack_pktid.read() & 0x7) != 0) 
+                                   and ((r_multi_ack_pktid.read() & 0x7) != 0x2) 
+                                   and ((r_multi_ack_pktid.read() & 0x7) != 0x6);
 
                     if (r_multi_ack_need_data.read())
@@ -2283,5 +2288,5 @@
                     entry.ptr    = 0;
 
-                    if (match_ll)
+                    if (not cached_read)
                     {
                         entry.owner.srcid = r_multi_ack_copy.read();
@@ -5364,5 +5369,7 @@
                             << " / is_cnt = " << std::dec << victim.is_cnt
                             << " / set = " << set
-                            << "/ count = " << victim.count
+                            << " / count = " << victim.count
+                            << " / owner.srcid = " << victim.owner.srcid
+                            << " / nline = " << victim.tag*m_sets + set
                             << " / inval_required = " << inval << std::endl;
 #endif
@@ -5668,7 +5675,7 @@
 
                         if (r_xram_rsp_victim_dirty.read() and (r_xram_rsp_victim_state.read() == ENTRY_SHARED))  
-                                                     r_xram_rsp_fsm = XRAM_RSP_WRITE_DIRTY;
+                                                      r_xram_rsp_fsm = XRAM_RSP_WRITE_DIRTY;
                         else if (not_last_multi_req)  r_xram_rsp_fsm = XRAM_RSP_HEAP_REQ;
-                        else                         r_xram_rsp_fsm = XRAM_RSP_IDLE;
+                        else                          r_xram_rsp_fsm = XRAM_RSP_IDLE;
 
                         // std::cout << "cleanup sent for trt index =" << r_xram_rsp_trt_index.read() << std::endl;
@@ -5677,4 +5684,5 @@
                             std::cout << "  <MEMC " << name() << " XRAM_RSP_INVAL>"
                                 << " Send an inval request to CC_SEND FSM"
+                                << " / srcid = " << r_xram_rsp_victim_copy.read()
                                 << " / address = " << r_xram_rsp_victim_nline.read()*m_words*4 << std::endl;
 #endif
@@ -5746,5 +5754,5 @@
                         HeapEntry entry = m_heap.read(r_xram_rsp_next_ptr.read());
 
-                        xram_rsp_to_cc_send_fifo_srcid    = entry.owner.srcid;
+                        xram_rsp_to_cc_send_fifo_srcid = entry.owner.srcid;
                         xram_rsp_to_cc_send_fifo_inst  = entry.owner.inst;
                         xram_rsp_to_cc_send_fifo_put   = true;
@@ -6316,5 +6324,7 @@
                     addr_t cleanup_address = r_cleanup_nline.read() * m_words * 4;
 
-                    bool match_ll = ((r_cleanup_locked_pktid.read() & 0x07) == TYPE_LL);
+                    bool cached_read = ((r_cleanup_locked_pktid.read() & 0x7) != 0) 
+                                   and ((r_cleanup_locked_pktid.read() & 0x7) != 0x2) 
+                                   and ((r_cleanup_locked_pktid.read() & 0x7) != 0x6);
 
                     DirectoryEntry      entry;
@@ -6367,5 +6377,5 @@
                     {
                         entry.state = ENTRY_SHARED;
-                        if (match_ll)
+                        if (not cached_read)
                         {
                             entry.count       = 0;
