Index: trunk/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h
===================================================================
--- trunk/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h	(revision 482)
+++ trunk/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h	(revision 483)
@@ -104,7 +104,5 @@
         TGT_RSP_XRAM,
         TGT_RSP_MULTI_ACK,
-        TGT_RSP_CLEANUP,
-        TGT_RSP_UPT_LOCK,
-        TGT_RSP_IVT_LOCK
+        TGT_RSP_CLEANUP
       };
 
@@ -335,6 +333,5 @@
         ALLOC_UPT_WRITE,
         ALLOC_UPT_CAS,
-        ALLOC_UPT_MULTI_ACK,
-        ALLOC_UPT_TGT_RSP
+        ALLOC_UPT_MULTI_ACK
       };
 
@@ -346,6 +343,5 @@
         ALLOC_IVT_CLEANUP,
         ALLOC_IVT_CAS,
-        ALLOC_IVT_CONFIG,
-        ALLOC_IVT_TGT_RSP
+        ALLOC_IVT_CONFIG
       };
 
@@ -496,6 +492,4 @@
       void genMoore();
       void check_monitor(addr_t addr, data_t data, bool read);
-      bool hit_cleanup_req(size_t *index);
-      bool hit_multi_ack_req(size_t *index);
 
       // Component attributes
@@ -516,5 +510,4 @@
       TransactionTab                     m_trt;              // xram transaction table
       uint32_t                           m_upt_lines;
-      uint32_t                           m_ivt_lines;
       UpdateTab                          m_upt;              // pending update
       UpdateTab                          m_ivt;              // pending invalidate
@@ -743,5 +736,5 @@
 
       // Buffer between MULTI_ACK fsm and TGT_RSP fsm (complete write/update transaction)
-      sc_signal<bool>     *r_multi_ack_to_tgt_rsp_req;  // valid request
+      sc_signal<bool>     r_multi_ack_to_tgt_rsp_req;   // valid request
       sc_signal<size_t>   r_multi_ack_to_tgt_rsp_srcid; // Transaction srcid
       sc_signal<size_t>   r_multi_ack_to_tgt_rsp_trdid; // Transaction trdid
@@ -791,5 +784,5 @@
        
       // Buffer between CLEANUP fsm and TGT_RSP fsm (acknowledge a write command from L1)
-      sc_signal<bool>     *r_cleanup_to_tgt_rsp_req;   // valid request
+      sc_signal<bool>     r_cleanup_to_tgt_rsp_req;   // valid request
       sc_signal<size_t>   r_cleanup_to_tgt_rsp_srcid; // transaction srcid
       sc_signal<size_t>   r_cleanup_to_tgt_rsp_trdid; // transaction trdid
@@ -926,6 +919,4 @@
       sc_signal<int>      r_tgt_rsp_fsm;
       sc_signal<size_t>   r_tgt_rsp_cpt;
-      sc_signal<size_t>   r_tgt_rsp_prio_multi_ack;
-      sc_signal<size_t>   r_tgt_rsp_prio_cleanup;
       sc_signal<bool>     r_tgt_rsp_key_sent;
 
Index: trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp
===================================================================
--- trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp	(revision 482)
+++ trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp	(revision 483)
@@ -84,7 +84,5 @@
   "TGT_RSP_XRAM",
   "TGT_RSP_MULTI_ACK",
-  "TGT_RSP_CLEANUP",
-  "TGT_RSP_UPT_LOCK",
-  "TGT_RSP_IVT_LOCK"
+  "TGT_RSP_CLEANUP"
 };
 const char *cc_receive_fsm_str[] =
@@ -287,6 +285,5 @@
   "ALLOC_UPT_WRITE",
   "ALLOC_UPT_CAS",
-  "ALLOC_UPT_MULTI_ACK",
-  "ALLOC_UPT_TGT_RSP"
+  "ALLOC_UPT_MULTI_ACK"
 };
 const char *alloc_ivt_fsm_str[] =
@@ -296,6 +293,5 @@
   "ALLOC_IVT_CLEANUP",
   "ALLOC_IVT_CAS",
-  "ALLOC_IVT_CONFIG",
-  "ALLOC_IVT_TGT_RSP"
+  "ALLOC_IVT_CONFIG"
 };
 const char *alloc_heap_fsm_str[] =
@@ -365,5 +361,4 @@
     m_trt(this->name(), trt_lines, nwords),
     m_upt_lines(upt_lines),
-    m_ivt_lines(ivt_lines),
     m_upt(upt_lines),
     m_ivt(ivt_lines),
@@ -507,7 +502,4 @@
         i++;
     }
-    // Allocation for MULTI_ACK FSM
-    r_multi_ack_to_tgt_rsp_req = new sc_signal<bool>[m_upt_lines];
-    r_cleanup_to_tgt_rsp_req   = new sc_signal<bool>[m_ivt_lines];
 
     // Allocation for IXR_RSP FSM
@@ -579,39 +571,4 @@
               << " at cycle " << std::dec << m_cpt_cycles << std::endl;
   }
-}
-// Index is the value of the current priority
-///////////////////////////////////////////////////////////////////////
-tmpl(bool) ::hit_cleanup_req(size_t *index)
-///////////////////////////////////////////////////////////////////////
-{
-  size_t i = *index;
-  do
-  {
-    if(r_cleanup_to_tgt_rsp_req[i].read())
-    {
-      *index = i;
-      return true;
-    }
-    i = (i + 1) % m_ivt_lines;
-  } while (i != *index);
-  return false;
-}
-
-// Index is the value of the current priority
-///////////////////////////////////////////////////////////////////////
-tmpl(bool) ::hit_multi_ack_req(size_t *index)
-///////////////////////////////////////////////////////////////////////
-{
-  size_t i = *index;
-  do
-  {
-    if(r_multi_ack_to_tgt_rsp_req[i].read())
-    {
-      *index = i;
-      return true;
-    }
-    i = (i + 1) % m_upt_lines;
-  } while (i != *index);
-  return false;
 }
 
@@ -717,6 +674,5 @@
 {
   delete [] r_ixr_rsp_to_xram_rsp_rok;
-  delete [] r_multi_ack_to_tgt_rsp_req;
-  delete [] r_cleanup_to_tgt_rsp_req;
+
   delete [] r_xram_rsp_victim_data;
   delete [] r_xram_rsp_to_tgt_rsp_data;
@@ -820,13 +776,9 @@
 #endif
 
+    r_cleanup_to_tgt_rsp_req      = false;
+
     m_cc_receive_to_cleanup_fifo.init();
-    for(size_t i = 0; i < m_upt_lines; i++)
-    {
-      r_multi_ack_to_tgt_rsp_req[i] = false;
-    }
-    for(size_t i = 0; i < m_ivt_lines; i++)
-    {
-      r_cleanup_to_tgt_rsp_req[i] = false;
-    }
+
+    r_multi_ack_to_tgt_rsp_req     = false;
 
     m_cc_receive_to_multi_ack_fifo.init();
@@ -866,7 +818,5 @@
     r_alloc_heap_reset_cpt = 0;
 
-    r_tgt_rsp_key_sent        = false;
-    r_tgt_rsp_prio_multi_ack  = 0;
-    r_tgt_rsp_prio_cleanup  = 0;
+    r_tgt_rsp_key_sent  = false;
 
     // Activity counters
@@ -1387,6 +1337,4 @@
         size_t count = 0;
         bool valid   = m_upt.decrement(r_multi_ack_upt_index.read(), count);
-        
-        bool need_rsp     = m_upt.need_rsp(r_multi_ack_upt_index.read());
 
         if(not valid)
@@ -1398,9 +1346,5 @@
         }
 
-        if(count == 0 and need_rsp)
-        {
-          r_multi_ack_fsm = MULTI_ACK_WRITE_RSP;
-        }
-        else if(count == 0)
+        if(count == 0)
         {
           r_multi_ack_fsm = MULTI_ACK_UPT_CLEAR;
@@ -1436,4 +1380,5 @@
         r_multi_ack_pktid = m_upt.pktid(r_multi_ack_upt_index.read());
         r_multi_ack_nline = m_upt.nline(r_multi_ack_upt_index.read());
+        bool need_rsp     = m_upt.need_rsp(r_multi_ack_upt_index.read());
         bool need_ack     = m_upt.need_ack(r_multi_ack_upt_index.read());
 
@@ -1441,5 +1386,6 @@
         m_upt.clear(r_multi_ack_upt_index.read());
 
-        if ( need_ack )      r_multi_ack_fsm = MULTI_ACK_CONFIG_ACK;
+        if      ( need_rsp ) r_multi_ack_fsm = MULTI_ACK_WRITE_RSP;
+        else if ( need_ack ) r_multi_ack_fsm = MULTI_ACK_CONFIG_ACK;
         else                 r_multi_ack_fsm = MULTI_ACK_IDLE;
 
@@ -1454,13 +1400,19 @@
     /////////////////////////
     case MULTI_ACK_WRITE_RSP:     // Post a response request to TGT_RSP FSM
-    {
-        r_multi_ack_to_tgt_rsp_req[r_multi_ack_upt_index.read()]   = true;
-        r_multi_ack_fsm = MULTI_ACK_IDLE;
+                                  // Wait if pending request 
+    {
+        if ( r_multi_ack_to_tgt_rsp_req.read() ) break;
+
+        r_multi_ack_to_tgt_rsp_req   = true;
+        r_multi_ack_to_tgt_rsp_srcid = r_multi_ack_srcid.read();
+        r_multi_ack_to_tgt_rsp_trdid = r_multi_ack_trdid.read();
+        r_multi_ack_to_tgt_rsp_pktid = r_multi_ack_pktid.read();
+        r_multi_ack_fsm              = MULTI_ACK_IDLE;
 
 #if DEBUG_MEMC_MULTI_ACK
 if(m_debug)
 std::cout << "  <MEMC " << name() << " MULTI_ACK_WRITE_RSP>"
-          << " Request TGT_RSP FSM to send a response" 
-          << " / Request for upt index " << r_multi_ack_upt_index.read() << std::endl;
+          << " Request TGT_RSP FSM to send a response to srcid "
+          << std::hex << r_multi_ack_srcid.read() << std::endl;
 #endif
         break;
@@ -4961,10 +4913,6 @@
       size_t count = 0;
       m_ivt.decrement(r_cleanup_index.read(), count);
-      
-      if((count == 0) and r_cleanup_need_rsp.read())   // multi inval transaction completed
-      {
-        r_cleanup_fsm = CLEANUP_WRITE_RSP;
-      }
-      else if(count == 0)   // multi inval transaction completed
+
+      if(count == 0)   // multi inval transaction completed
       {
         r_cleanup_fsm = CLEANUP_IVT_CLEAR;
@@ -5000,5 +4948,6 @@
       m_ivt.clear(r_cleanup_index.read());
 
-      if ( r_cleanup_need_ack.read() )      r_cleanup_fsm = CLEANUP_CONFIG_ACK;
+      if      ( r_cleanup_need_rsp.read() ) r_cleanup_fsm = CLEANUP_WRITE_RSP;
+      else if ( r_cleanup_need_ack.read() ) r_cleanup_fsm = CLEANUP_CONFIG_ACK;
       else                                  r_cleanup_fsm = CLEANUP_SEND_CLACK;
 
@@ -5015,7 +4964,11 @@
                                // wait if pending request to the TGT_RSP FSM
     {
+      if(r_cleanup_to_tgt_rsp_req.read()) break;
 
       // no pending request
-      r_cleanup_to_tgt_rsp_req[r_cleanup_index.read()]     = true;
+      r_cleanup_to_tgt_rsp_req     = true;
+      r_cleanup_to_tgt_rsp_srcid   = r_cleanup_write_srcid.read();
+      r_cleanup_to_tgt_rsp_trdid   = r_cleanup_write_trdid.read();
+      r_cleanup_to_tgt_rsp_pktid   = r_cleanup_write_pktid.read();
 
       r_cleanup_fsm                = CLEANUP_SEND_CLACK;
@@ -5024,6 +4977,8 @@
 if(m_debug)
 std::cout << "  <MEMC " << name() << " CLEANUP_WRITE_RSP>"
-          << " Send a response to a previous write request"
-          << std::endl;
+          << " Send a response to a previous write request: "
+          << " rsrcid = "   << std::hex << r_cleanup_write_srcid.read()
+          << " / rtrdid = " << r_cleanup_write_trdid.read()
+          << " / rpktid = " << r_cleanup_write_pktid.read() << std::endl;
 #endif
       break;
@@ -6530,6 +6485,4 @@
     case TGT_RSP_CONFIG_IDLE:  // tgt_cmd requests have the highest priority
     {
-      size_t prio_multi_ack = r_tgt_rsp_prio_multi_ack.read();
-      size_t prio_cleanup   = r_tgt_rsp_prio_cleanup.read();
       if(r_tgt_cmd_to_tgt_rsp_req) r_tgt_rsp_fsm = TGT_RSP_TGT_CMD;
       else if(r_read_to_tgt_rsp_req)
@@ -6545,15 +6498,6 @@
         r_tgt_rsp_cpt = r_xram_rsp_to_tgt_rsp_word.read();
       }
-      else if(hit_multi_ack_req(&prio_multi_ack))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_UPT_LOCK;
-        // update rr priority
-        r_tgt_rsp_prio_multi_ack = prio_multi_ack;
-      }
-      else if(hit_cleanup_req(&prio_cleanup))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_IVT_LOCK;
-        r_tgt_rsp_prio_cleanup = prio_cleanup;
-      }
+      else if(r_multi_ack_to_tgt_rsp_req) r_tgt_rsp_fsm = TGT_RSP_MULTI_ACK;
+      else if(r_cleanup_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_CLEANUP;
       else if(r_config_to_tgt_rsp_req)    r_tgt_rsp_fsm = TGT_RSP_CONFIG;
       break;
@@ -6562,6 +6506,4 @@
     case TGT_RSP_TGT_CMD_IDLE: // read requests have the highest priority
     {
-      size_t prio_multi_ack = r_tgt_rsp_prio_multi_ack.read();
-      size_t prio_cleanup   = r_tgt_rsp_prio_cleanup.read();
       if(r_read_to_tgt_rsp_req)
       {
@@ -6576,15 +6518,6 @@
         r_tgt_rsp_cpt = r_xram_rsp_to_tgt_rsp_word.read();
       }
-      else if(hit_multi_ack_req(&prio_multi_ack))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_UPT_LOCK;
-        // update rr priority
-        r_tgt_rsp_prio_multi_ack = prio_multi_ack;
-      }
-      else if(hit_cleanup_req(&prio_cleanup))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_IVT_LOCK;
-        r_tgt_rsp_prio_cleanup = prio_cleanup;
-      }
+      else if(r_multi_ack_to_tgt_rsp_req) r_tgt_rsp_fsm = TGT_RSP_MULTI_ACK;
+      else if(r_cleanup_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_CLEANUP;
       else if(r_config_to_tgt_rsp_req)    r_tgt_rsp_fsm = TGT_RSP_CONFIG;
       else if(r_tgt_cmd_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_TGT_CMD;
@@ -6594,6 +6527,4 @@
     case TGT_RSP_READ_IDLE: // write requests have the highest priority
     {
-      size_t prio_multi_ack = r_tgt_rsp_prio_multi_ack.read();
-      size_t prio_cleanup   = r_tgt_rsp_prio_cleanup.read();
       if(r_write_to_tgt_rsp_req)          r_tgt_rsp_fsm = TGT_RSP_WRITE;
       else if(r_cas_to_tgt_rsp_req)       r_tgt_rsp_fsm = TGT_RSP_CAS;
@@ -6603,15 +6534,6 @@
         r_tgt_rsp_cpt = r_xram_rsp_to_tgt_rsp_word.read();
       }
-      else if(hit_multi_ack_req(&prio_multi_ack))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_UPT_LOCK;
-        // update rr priority
-        r_tgt_rsp_prio_multi_ack = prio_multi_ack;
-      }
-      else if(hit_cleanup_req(&prio_cleanup))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_IVT_LOCK;
-        r_tgt_rsp_prio_cleanup = prio_cleanup;
-      }
+      else if(r_multi_ack_to_tgt_rsp_req) r_tgt_rsp_fsm = TGT_RSP_MULTI_ACK;
+      else if(r_cleanup_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_CLEANUP;
       else if(r_config_to_tgt_rsp_req)    r_tgt_rsp_fsm = TGT_RSP_CONFIG;
       else if(r_tgt_cmd_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_TGT_CMD;
@@ -6626,6 +6548,4 @@
     case TGT_RSP_WRITE_IDLE: // cas requests have the highest priority
     {
-      size_t prio_multi_ack = r_tgt_rsp_prio_multi_ack.read();
-      size_t prio_cleanup   = r_tgt_rsp_prio_cleanup.read();
       if(r_cas_to_tgt_rsp_req)            r_tgt_rsp_fsm = TGT_RSP_CAS;
       else if(r_xram_rsp_to_tgt_rsp_req)
@@ -6634,15 +6554,6 @@
         r_tgt_rsp_cpt = r_xram_rsp_to_tgt_rsp_word.read();
       }
-      else if(hit_multi_ack_req(&prio_multi_ack))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_UPT_LOCK;
-        // update rr priority
-        r_tgt_rsp_prio_multi_ack = prio_multi_ack;
-      }
-      else if(hit_cleanup_req(&prio_cleanup))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_IVT_LOCK;
-        r_tgt_rsp_prio_cleanup = prio_cleanup;
-      }
+      else if(r_multi_ack_to_tgt_rsp_req) r_tgt_rsp_fsm = TGT_RSP_MULTI_ACK;
+      else if(r_cleanup_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_CLEANUP;
       else if(r_config_to_tgt_rsp_req)    r_tgt_rsp_fsm = TGT_RSP_CONFIG;
       else if(r_tgt_cmd_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_TGT_CMD;
@@ -6658,6 +6569,4 @@
     case TGT_RSP_CAS_IDLE: // xram_rsp requests have the highest priority
     {
-      size_t prio_multi_ack = r_tgt_rsp_prio_multi_ack.read();
-      size_t prio_cleanup   = r_tgt_rsp_prio_cleanup.read();
       if(r_xram_rsp_to_tgt_rsp_req)
       {
@@ -6665,15 +6574,6 @@
         r_tgt_rsp_cpt = r_xram_rsp_to_tgt_rsp_word.read();
       }
-      else if(hit_multi_ack_req(&prio_multi_ack))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_UPT_LOCK;
-        // update rr priority
-        r_tgt_rsp_prio_multi_ack = prio_multi_ack;
-      }
-      else if(hit_cleanup_req(&prio_cleanup))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_IVT_LOCK;
-        r_tgt_rsp_prio_cleanup = prio_cleanup;
-      }
+      else if(r_multi_ack_to_tgt_rsp_req) r_tgt_rsp_fsm = TGT_RSP_MULTI_ACK   ;
+      else if(r_cleanup_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_CLEANUP;
       else if(r_config_to_tgt_rsp_req)    r_tgt_rsp_fsm = TGT_RSP_CONFIG;
       else if(r_tgt_cmd_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_TGT_CMD;
@@ -6690,18 +6590,7 @@
     case TGT_RSP_XRAM_IDLE: // multi ack requests have the highest priority
     {
-      size_t prio_multi_ack = r_tgt_rsp_prio_multi_ack.read();
-      size_t prio_cleanup   = r_tgt_rsp_prio_cleanup.read();
-
-      if(hit_multi_ack_req(&prio_multi_ack))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_UPT_LOCK;
-        // update rr priority
-        r_tgt_rsp_prio_multi_ack = prio_multi_ack;
-      }
-      else if(hit_cleanup_req(&prio_cleanup))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_IVT_LOCK;
-        r_tgt_rsp_prio_cleanup = prio_cleanup;
-      }
+
+      if(r_multi_ack_to_tgt_rsp_req)      r_tgt_rsp_fsm = TGT_RSP_MULTI_ACK   ;
+      else if(r_cleanup_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_CLEANUP;
       else if(r_config_to_tgt_rsp_req)    r_tgt_rsp_fsm = TGT_RSP_CONFIG;
       else if(r_tgt_cmd_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_TGT_CMD;
@@ -6723,11 +6612,5 @@
     case TGT_RSP_MULTI_ACK_IDLE: // cleanup requests have the highest priority
     {
-      size_t prio_multi_ack = r_tgt_rsp_prio_multi_ack.read();
-      size_t prio_cleanup   = r_tgt_rsp_prio_cleanup.read();
-      if(hit_cleanup_req(&prio_cleanup))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_IVT_LOCK;
-        r_tgt_rsp_prio_cleanup = prio_cleanup;
-      }
+      if(r_cleanup_to_tgt_rsp_req)        r_tgt_rsp_fsm = TGT_RSP_CLEANUP;
       else if(r_config_to_tgt_rsp_req)    r_tgt_rsp_fsm = TGT_RSP_CONFIG;
       else if(r_tgt_cmd_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_TGT_CMD;
@@ -6744,10 +6627,5 @@
         r_tgt_rsp_cpt = r_xram_rsp_to_tgt_rsp_word.read();
       }
-      else if(hit_multi_ack_req(&prio_multi_ack))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_UPT_LOCK;
-        // update rr priority
-        r_tgt_rsp_prio_multi_ack = prio_multi_ack;
-      }
+      else if(r_multi_ack_to_tgt_rsp_req) r_tgt_rsp_fsm = TGT_RSP_MULTI_ACK;
       break;
     }
@@ -6755,6 +6633,4 @@
     case TGT_RSP_CLEANUP_IDLE: // tgt cmd requests have the highest priority
     {
-      size_t prio_multi_ack = r_tgt_rsp_prio_multi_ack.read();
-      size_t prio_cleanup   = r_tgt_rsp_prio_cleanup.read();
       if(r_config_to_tgt_rsp_req)         r_tgt_rsp_fsm = TGT_RSP_CONFIG;
       else if(r_tgt_cmd_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_TGT_CMD;
@@ -6771,15 +6647,6 @@
         r_tgt_rsp_cpt = r_xram_rsp_to_tgt_rsp_word.read();
       }
-      else if(hit_multi_ack_req(&prio_multi_ack))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_UPT_LOCK;
-        // update rr priority
-        r_tgt_rsp_prio_multi_ack = prio_multi_ack;
-      }
-      else if(hit_cleanup_req(&prio_cleanup))
-      {
-        r_tgt_rsp_fsm = TGT_RSP_IVT_LOCK;
-        r_tgt_rsp_prio_cleanup = prio_cleanup;
-      }
+      else if(r_multi_ack_to_tgt_rsp_req) r_tgt_rsp_fsm = TGT_RSP_MULTI_ACK   ;
+      else if(r_cleanup_to_tgt_rsp_req)   r_tgt_rsp_fsm = TGT_RSP_CLEANUP;
       break;
     }
@@ -6894,20 +6761,4 @@
       break;
     }
-    
-    ///////////////////////
-    case TGT_RSP_IVT_LOCK:      // Clear IVT entry
-    {
-      if (r_alloc_ivt_fsm.read() != ALLOC_IVT_TGT_RSP) break;
-
-      r_cleanup_to_tgt_rsp_srcid = m_ivt.srcid(r_tgt_rsp_prio_cleanup.read());
-      r_cleanup_to_tgt_rsp_trdid = m_ivt.trdid(r_tgt_rsp_prio_cleanup.read());
-      r_cleanup_to_tgt_rsp_pktid = m_ivt.pktid(r_tgt_rsp_prio_cleanup.read());
-
-      m_ivt.clear(r_tgt_rsp_prio_cleanup.read());
-
-      r_tgt_rsp_fsm = TGT_RSP_CLEANUP;
-      break;
-    } 
-
     /////////////////////
     case TGT_RSP_CLEANUP:   // pas clair pour moi (AG)
@@ -6924,6 +6775,5 @@
 #endif
         r_tgt_rsp_fsm = TGT_RSP_CLEANUP_IDLE;
-        r_cleanup_to_tgt_rsp_req[r_tgt_rsp_prio_cleanup.read()] = false;
-        r_tgt_rsp_prio_cleanup = (r_tgt_rsp_prio_cleanup.read() + 1) % m_ivt_lines;
+        r_cleanup_to_tgt_rsp_req = false;
       }
       break;
@@ -6991,19 +6841,4 @@
     }
     ///////////////////////
-    case TGT_RSP_UPT_LOCK:      // Clear UPT entry
-    {
-      if (r_alloc_upt_fsm.read() != ALLOC_UPT_TGT_RSP) break;
-
-      r_multi_ack_to_tgt_rsp_srcid = m_upt.srcid(r_tgt_rsp_prio_multi_ack.read());
-      r_multi_ack_to_tgt_rsp_trdid = m_upt.trdid(r_tgt_rsp_prio_multi_ack.read());
-      r_multi_ack_to_tgt_rsp_pktid = m_upt.pktid(r_tgt_rsp_prio_multi_ack.read());
-
-      m_upt.clear(r_tgt_rsp_prio_multi_ack.read());
-
-      r_tgt_rsp_fsm = TGT_RSP_MULTI_ACK;
-      break;
-    } 
-
-    ///////////////////////
     case TGT_RSP_MULTI_ACK:    // send the write response after coherence transaction
     {
@@ -7019,6 +6854,5 @@
 #endif
         r_tgt_rsp_fsm = TGT_RSP_MULTI_ACK_IDLE;
-        r_multi_ack_to_tgt_rsp_req[r_tgt_rsp_prio_multi_ack.read()] = false;
-        r_tgt_rsp_prio_multi_ack = (r_tgt_rsp_prio_multi_ack.read() + 1) % m_upt_lines;
+        r_multi_ack_to_tgt_rsp_req = false;
       }
       break;
@@ -7048,7 +6882,4 @@
               else if (r_multi_ack_fsm.read() == MULTI_ACK_UPT_LOCK)
                   r_alloc_upt_fsm = ALLOC_UPT_MULTI_ACK;
-              
-              else if (r_tgt_rsp_fsm.read() == TGT_RSP_UPT_LOCK)
-                  r_alloc_upt_fsm = ALLOC_UPT_TGT_RSP;
           }
           break;
@@ -7060,7 +6891,4 @@
               if (r_multi_ack_fsm.read() == MULTI_ACK_UPT_LOCK)
                   r_alloc_upt_fsm = ALLOC_UPT_MULTI_ACK;
-              
-              else if (r_tgt_rsp_fsm.read() == TGT_RSP_UPT_LOCK)
-                  r_alloc_upt_fsm = ALLOC_UPT_TGT_RSP;
 
               else if (r_write_fsm.read() == WRITE_UPT_LOCK)
@@ -7074,28 +6902,9 @@
               (r_multi_ack_fsm.read() != MULTI_ACK_UPT_CLEAR))
           {
-              if (r_tgt_rsp_fsm.read() == TGT_RSP_UPT_LOCK)
-                  r_alloc_upt_fsm = ALLOC_UPT_TGT_RSP;
-              
-              else if (r_write_fsm.read() == WRITE_UPT_LOCK)
+              if (r_write_fsm.read() == WRITE_UPT_LOCK)
                   r_alloc_upt_fsm = ALLOC_UPT_WRITE;
 
               else if (r_cas_fsm.read() == CAS_UPT_LOCK)
                   r_alloc_upt_fsm = ALLOC_UPT_CAS;
-          }
-          break;
-      
-      /////////////////////////
-      case ALLOC_UPT_TGT_RSP:     // allocated to TGT_RSP FSM
-          if (r_tgt_rsp_fsm.read() != TGT_RSP_UPT_LOCK )
-          {
-              if (r_write_fsm.read() == WRITE_UPT_LOCK)
-                  r_alloc_upt_fsm = ALLOC_UPT_WRITE;
-
-              else if (r_cas_fsm.read() == CAS_UPT_LOCK)
-                  r_alloc_upt_fsm = ALLOC_UPT_CAS;
-              
-              else if (r_multi_ack_fsm.read() == MULTI_ACK_UPT_LOCK)
-                  r_alloc_upt_fsm = ALLOC_UPT_MULTI_ACK;
-              
           }
           break;
@@ -7134,7 +6943,4 @@
               else if (r_config_fsm.read() == CONFIG_DIR_IVT_LOCK)
                   r_alloc_ivt_fsm = ALLOC_IVT_CONFIG;
-              
-              else if (r_tgt_rsp_fsm.read() == TGT_RSP_IVT_LOCK)
-                  r_alloc_ivt_fsm = ALLOC_IVT_TGT_RSP;
           }
           break;
@@ -7152,7 +6958,4 @@
               else if (r_config_fsm.read() == CONFIG_DIR_IVT_LOCK)
                   r_alloc_ivt_fsm = ALLOC_IVT_CONFIG;
-              
-              else if (r_tgt_rsp_fsm.read() == TGT_RSP_IVT_LOCK)
-                  r_alloc_ivt_fsm = ALLOC_IVT_TGT_RSP;
 
               else if (r_write_fsm.read() == WRITE_BC_IVT_LOCK)
@@ -7171,7 +6974,4 @@
               else if (r_config_fsm.read() == CONFIG_DIR_IVT_LOCK)
                   r_alloc_ivt_fsm = ALLOC_IVT_CONFIG;
-              
-              else if (r_tgt_rsp_fsm.read() == TGT_RSP_IVT_LOCK)
-                  r_alloc_ivt_fsm = ALLOC_IVT_TGT_RSP;
 
               else if (r_write_fsm.read() == WRITE_BC_IVT_LOCK)
@@ -7189,7 +6989,4 @@
               if (r_config_fsm.read() == CONFIG_DIR_IVT_LOCK)
                   r_alloc_ivt_fsm = ALLOC_IVT_CONFIG;
-              
-              else if (r_tgt_rsp_fsm.read() == TGT_RSP_IVT_LOCK)
-                  r_alloc_ivt_fsm = ALLOC_IVT_TGT_RSP;
 
               else if (r_write_fsm.read() == WRITE_BC_IVT_LOCK)
@@ -7207,9 +7004,6 @@
       case ALLOC_IVT_CONFIG:           // allocated to CONFIG FSM
           if (r_config_fsm.read() != CONFIG_DIR_IVT_LOCK)
-          { 
-              if (r_tgt_rsp_fsm.read() == TGT_RSP_IVT_LOCK)
-                  r_alloc_ivt_fsm = ALLOC_IVT_TGT_RSP;
-              
-              else if (r_write_fsm.read() == WRITE_BC_IVT_LOCK)
+          {
+              if (r_write_fsm.read() == WRITE_BC_IVT_LOCK)
                   r_alloc_ivt_fsm = ALLOC_IVT_WRITE;
 
@@ -7222,25 +7016,4 @@
               else if (r_cas_fsm.read() == CAS_BC_IVT_LOCK)
                   r_alloc_ivt_fsm = ALLOC_IVT_CAS;
-          }
-          break;
-      
-      //////////////////////////
-      case ALLOC_IVT_TGT_RSP:           // allocated to TGT RSP FSM
-          if (r_tgt_rsp_fsm.read() != TGT_RSP_IVT_LOCK)
-          { 
-              if (r_write_fsm.read() == WRITE_BC_IVT_LOCK)
-                  r_alloc_ivt_fsm = ALLOC_IVT_WRITE;
-
-              else if (r_xram_rsp_fsm.read() == XRAM_RSP_INVAL_LOCK)
-                  r_alloc_ivt_fsm = ALLOC_IVT_XRAM_RSP;
-
-              else if (r_cleanup_fsm.read() == CLEANUP_IVT_LOCK)
-                  r_alloc_ivt_fsm = ALLOC_IVT_CLEANUP;
-
-              else if (r_cas_fsm.read() == CAS_BC_IVT_LOCK)
-                  r_alloc_ivt_fsm = ALLOC_IVT_CAS;
-              
-              else if (r_config_fsm.read() == CONFIG_DIR_IVT_LOCK)
-                  r_alloc_ivt_fsm = ALLOC_IVT_CONFIG;
           }
           break;
