Index: branches/MESI/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h
===================================================================
--- branches/MESI/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h	(revision 686)
+++ branches/MESI/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h	(revision 700)
@@ -290,5 +290,5 @@
         CAS_DIR_HIT_COMPARE,
         CAS_DIR_HIT_WRITE,
-        CAS_MULTI_INVAL_IVT_LOCK,
+        CAS_INVAL_IVT_LOCK,
         CAS_WAIT,
         CAS_MULTI_INVAL_HEAP_LOCK,
@@ -296,9 +296,4 @@
         CAS_HEAP_NEXT,
         CAS_HEAP_LAST,
-        CAS_BC_TRT_LOCK,
-        CAS_BC_IVT_LOCK,
-        CAS_BC_DIR_INVAL,
-        CAS_BC_CC_SEND,
-        CAS_BC_XRAM_REQ,
         CAS_RSP_FAIL,
         CAS_RSP_SUCCESS,
@@ -361,12 +356,4 @@
       };
 
-//      /* States of the ALLOC_UPT fsm */
-//      enum alloc_upt_fsm_state_e
-//      {
-//        ALLOC_UPT_WRITE,
-//        ALLOC_UPT_CAS,
-//        ALLOC_UPT_MULTI_ACK
-//      };
-//
       /* States of the ALLOC_IVT fsm */
       enum alloc_ivt_fsm_state_e
@@ -435,7 +422,14 @@
       // Counters accessible in software (not yet but eventually)
       uint32_t     m_cpt_reset_count;    // Last cycle at which counters have been reset
-      uint32_t     m_cpt_read_local;     // Number of local READ transactions
-      uint32_t     m_cpt_read_remote;    // number of remote READ transactions
-      uint32_t     m_cpt_read_cost;      // Number of (flits * distance) for READs
+      uint32_t     m_cpt_read_miss_local;     // Number of local READ transactions
+      uint32_t     m_cpt_read_miss_remote;    // number of remote READ transactions
+      uint32_t     m_cpt_read_miss_cost;      // Number of (flits * distance) for READs
+
+      uint32_t     m_cpt_getm_miss_local;     // Number of local getm miss  transactions
+      uint32_t     m_cpt_getm_miss_remote;    // number of remote getm miss transactions
+
+      uint32_t     m_cpt_getm_hit_local;     // Number of local getm hit transactions
+      uint32_t     m_cpt_getm_hit_remote;    // number of remote getm hit transactions
+      uint32_t     m_cpt_getm_cost;          // Number of (flits * distance) for getm 
 
       uint32_t     m_cpt_write_local;    // Number of local WRITE transactions
@@ -471,11 +465,27 @@
       uint32_t     m_cpt_cleanup_local;  // Number of local CLEANUP transactions
       uint32_t     m_cpt_cleanup_remote; // Number of remote CLEANUP transactions
+      uint32_t     m_cpt_cleanup_with_data;
       uint32_t     m_cpt_cleanup_cost;   // Number of (flits * distance) for CLEANUPs
 
+      uint32_t     m_cpt_multi_ack_miss;  // Number of local CLEANUP transactions
+      uint32_t     m_cpt_multi_ack_hit;   // Number of local CLEANUP transactions
+      uint32_t     m_cpt_multi_ack_hit_with_data; // Number of remote CLEANUP transactions
+    
       // Counters not accessible by software
       uint32_t     m_cpt_read_miss;      // Number of MISS READ
-      uint32_t     m_cpt_write_miss;    // Number of MISS WRITE
-      uint32_t     m_cpt_write_dirty;   // Cumulated length for WRITE transactions
+      uint32_t     m_cpt_getm_miss;      // Number of getm miss
+      uint32_t     m_cpt_getm_broadcast; // Number of BROADCAST INVAL because getm
+      uint32_t     m_cpt_getm_minval;    // Number of MULTI INVAL because getm
+      uint32_t     m_cpt_write_miss;     // Number of MISS WRITE
+      uint32_t     m_cpt_write_dirty;    // Cumulated length for WRITE transactions
       uint32_t     m_cpt_write_broadcast;// Number of BROADCAST INVAL because write
+      uint32_t     m_cpt_write_minval;   // Number of MULTI INVAL because write
+      uint32_t     m_cpt_cas_broadcast;  // Number of BROADCAST INVAL because cas
+      uint32_t     m_cpt_cas_minval;     // Number of MULTI INVAL because cas
+      uint32_t     m_cpt_cas_miss;
+
+      uint32_t     m_cpt_read_locked_rb; // Read blocked by a locked ligne
+      uint32_t     m_cpt_cas_locked_rb;       // cas  blocked by a locked ligne
+      uint32_t     m_cpt_write_locked_rb;     // wt   blocked by a locked ligne
 
       uint32_t     m_cpt_trt_rb;        // Read blocked by a hit in trt
@@ -492,5 +502,7 @@
       uint32_t     m_cpt_cleanup_fsm_dir_lock;     // wait DIR LOCK
       uint32_t     m_cpt_cleanup_fsm_n_dir_lock;   // NB DIR LOCK
-      
+      uint32_t     m_cpt_multi_ack_fsm_dir_lock;     // wait DIR LOCK
+      uint32_t     m_cpt_multi_ack_fsm_n_dir_lock;   // NB DIR LOCK
+
       uint32_t     m_cpt_dir_unused;            // NB cycles DIR LOCK unused
       uint32_t     m_cpt_read_fsm_dir_used;     // NB cycles DIR LOCK used
@@ -499,4 +511,5 @@
       uint32_t     m_cpt_xram_rsp_fsm_dir_used; // NB cycles DIR LOCK used
       uint32_t     m_cpt_cleanup_fsm_dir_used;  // NB cycles DIR LOCK used
+      uint32_t     m_cpt_multi_ack_fsm_dir_used;  // NB cycles DIR LOCK used
 
       uint32_t     m_cpt_read_fsm_trt_lock;      // wait TRT LOCK
@@ -510,5 +523,6 @@
       uint32_t     m_cpt_cas_fsm_n_trt_lock;       // NB TRT LOCK
       uint32_t     m_cpt_xram_rsp_fsm_n_trt_lock;  // NB TRT LOCK
-      uint32_t     m_cpt_ixr_fsm_n_trt_lock;       // NB TRT LOCK
+      uint32_t     m_cpt_ixr_cmd_fsm_n_trt_lock;   // NB TRT LOCK
+      uint32_t     m_cpt_ixr_rsp_fsm_n_trt_lock;   // NB TRT LOCK
 
       uint32_t     m_cpt_read_fsm_trt_used;      // NB cycles TRT LOCK used
@@ -516,28 +530,17 @@
       uint32_t     m_cpt_cas_fsm_trt_used;       // NB cycles TRT LOCK used
       uint32_t     m_cpt_xram_rsp_fsm_trt_used;  // NB cycles TRT LOCK used
-      uint32_t     m_cpt_ixr_fsm_trt_used;       // NB cycles TRT LOCK used
+      uint32_t     m_cpt_ixr_cmd_fsm_trt_used;   // NB cycles TRT LOCK used
+      uint32_t     m_cpt_ixr_rsp_fsm_trt_used;   // NB cycles TRT LOCK used
+      uint32_t     m_cpt_cleanup_fsm_trt_used;   // NB cycles TRT LOCK used
       
       uint32_t     m_cpt_trt_unused;            // NB cycles TRT LOCK unused
 
-      uint32_t     m_cpt_write_fsm_upt_lock;     // wait UPT LOCK
-      uint32_t     m_cpt_xram_rsp_fsm_upt_lock;  // wait UPT LOCK
-      uint32_t     m_cpt_multi_ack_fsm_upt_lock; // wait UPT LOCK
-      uint32_t     m_cpt_cleanup_fsm_ivt_lock;   // wait UPT LOCK
-      uint32_t     m_cpt_cas_fsm_upt_lock;       // wait UPT LOCK
+      uint32_t     m_cpt_cleanup_fsm_ivt_lock;   // wait ivt LOCK
+      uint32_t     m_cpt_cleanup_fsm_n_ivt_lock;   // NB cycles UPT LOCK used
       
-      uint32_t     m_cpt_write_fsm_n_upt_lock;     // NB UPT LOCK
-      uint32_t     m_cpt_xram_rsp_fsm_n_upt_lock;  // NB UPT LOCK
-      uint32_t     m_cpt_multi_ack_fsm_n_upt_lock; // NB UPT LOCK
-      uint32_t     m_cpt_cleanup_fsm_n_upt_lock;   // NB UPT LOCK
-      uint32_t     m_cpt_cas_fsm_n_upt_lock;       // NB UPT LOCK
-      
-      uint32_t     m_cpt_write_fsm_upt_used;     // NB cycles UPT LOCK used
-      uint32_t     m_cpt_xram_rsp_fsm_upt_used;  // NB cycles UPT LOCK used
-      uint32_t     m_cpt_multi_ack_fsm_upt_used; // NB cycles UPT LOCK used
-      uint32_t     m_cpt_cleanup_fsm_ivt_used;   // NB cycles UPT LOCK used
-      uint32_t     m_cpt_cas_fsm_upt_used;       // NB cycles UPT LOCK used
-      
+      uint32_t     m_cpt_multi_ack_fsm_ivt_lock;   // wait ivt LOCK
+      uint32_t     m_cpt_multi_ack_fsm_n_ivt_lock;   // NB cycles UPT LOCK used
+
       uint32_t     m_cpt_ivt_unused;            // NB cycles UPT LOCK unused
-      uint32_t     m_cpt_upt_unused;            // NB cycles UPT LOCK unused
 
       uint32_t     m_cpt_read_fsm_heap_lock;     // wait HEAP LOCK
@@ -546,4 +549,5 @@
       uint32_t     m_cpt_cleanup_fsm_heap_lock;  // wait HEAP LOCK
       uint32_t     m_cpt_xram_rsp_fsm_heap_lock; // wait HEAP LOCK
+      uint32_t     m_cpt_multi_ack_fsm_heap_lock; // wait HEAP LOCK
       
       uint32_t     m_cpt_read_fsm_n_heap_lock;     // NB HEAP LOCK
@@ -552,4 +556,5 @@
       uint32_t     m_cpt_cleanup_fsm_n_heap_lock;  // NB HEAP LOCK
       uint32_t     m_cpt_xram_rsp_fsm_n_heap_lock; // NB HEAP LOCK
+      uint32_t     m_cpt_multi_ack_fsm_n_heap_lock; // NB HEAP LOCK
       
       uint32_t     m_cpt_read_fsm_heap_used;     // NB cycles HEAP LOCK used
@@ -558,29 +563,8 @@
       uint32_t     m_cpt_cleanup_fsm_heap_used;  // NB cycles HEAP LOCK used
       uint32_t     m_cpt_xram_rsp_fsm_heap_used; // NB cycles HEAP LOCK used
+      uint32_t     m_cpt_multi_ack_fsm_heap_used; // NB cycles HEAP LOCK used
       
       uint32_t     m_cpt_heap_unused;            // NB cycles HEAP LOCK unused
-
-      //RWT
-      uint32_t     m_cpt_cleanup_data;   
-      uint32_t     m_cpt_ncc_to_cc_read;         // NB change from NCC to CC caused by a READ
-      uint32_t     m_cpt_ncc_to_cc_write;        // NB change from NCC to CC caused by a WRITE
-      uint32_t     m_cpt_ncc_to_cc;              // NB change from NCC to CC
-
-      uint32_t     m_cpt_read_data_unc;
-      uint32_t     m_cpt_read_data_miss_CC;
-      uint32_t     m_cpt_read_ins_unc;
-      uint32_t     m_cpt_read_ins_miss;
-      uint32_t     m_cpt_read_ll_CC;
-      uint32_t     m_cpt_read_data_miss_NCC;
-      uint32_t     m_cpt_read_ll_NCC;
-      uint32_t     m_cpt_read_WTF;
-
-      uint32_t     m_cpt_update_flits;  // Number of flits for UPDATEs
-      uint32_t     m_cpt_inval_cost;    // Number of (flits * distance) for INVALs
-
-      uint32_t     m_cpt_get;
-      uint32_t     m_cpt_put;
-
-      size_t       m_prev_count;
+      uint32_t     m_cpt_slot_inval;           
 
       protected:
