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 434)
+++ trunk/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h	(revision 439)
@@ -90,4 +90,5 @@
       enum tgt_rsp_fsm_state_e
       {
+        TGT_RSP_CONFIG_IDLE,
         TGT_RSP_TGT_CMD_IDLE,
         TGT_RSP_READ_IDLE,
@@ -97,4 +98,5 @@
         TGT_RSP_MULTI_ACK_IDLE,
         TGT_RSP_CLEANUP_IDLE,
+        TGT_RSP_CONFIG,
         TGT_RSP_TGT_CMD,
         TGT_RSP_READ,
@@ -118,8 +120,13 @@
       enum cc_send_fsm_state_e
       {
+        CC_SEND_CONFIG_IDLE,
         CC_SEND_XRAM_RSP_IDLE,
         CC_SEND_WRITE_IDLE,
         CC_SEND_CAS_IDLE,
         CC_SEND_CLEANUP_IDLE,
+        CC_SEND_CONFIG_INVAL_HEADER,
+        CC_SEND_CONFIG_INVAL_NLINE,
+        CC_SEND_CONFIG_BRDCAST_HEADER,
+        CC_SEND_CONFIG_BRDCAST_NLINE,
         CC_SEND_CLEANUP_ACK,
         CC_SEND_XRAM_RSP_BRDCAST_HEADER,
@@ -158,14 +165,12 @@
         CONFIG_DIR_REQ,
         CONFIG_DIR_ACCESS,
-        CONFIG_DIR_INVAL,
-        CONFIG_BC_UPT_LOCK,
+        CONFIG_DIR_UPT_LOCK,
         CONFIG_BC_SEND,
         CONFIG_BC_WAIT,
-        
-        CONFIG_UPT_WAIT,
-
-        CONFIG_UPT_LOCK,
-
-        CONFIG_HEAP_REQ
+        CONFIG_INV_SEND,
+        CONFIG_HEAP_REQ,
+        CONFIG_HEAP_SCAN,
+        CONFIG_HEAP_LAST,
+        CONFIG_INV_WAIT
       };
 
@@ -345,5 +350,6 @@
         ALLOC_HEAP_CAS,
         ALLOC_HEAP_CLEANUP,
-        ALLOC_HEAP_XRAM_RSP
+        ALLOC_HEAP_XRAM_RSP,
+        ALLOC_HEAP_CONFIG
       };
 
@@ -568,16 +574,21 @@
       ///////////////////////////////////////////////////////
 
-      sc_signal<int>      r_config_fsm;        // FSM state
-      sc_signal<bool>     r_config_lock;       // lock protecting exclusive access
-      sc_signal<int>      r_config_cmd;        // config request status
-      sc_signal<addr_t>   r_config_address;    // target buffer physical address
-      sc_signal<size_t>   r_config_srcid;      // config request srcid
-      sc_signal<size_t>   r_config_trdid;      // config request trdid
-      sc_signal<size_t>   r_config_pktid;      // config request pktid
-      sc_signal<size_t>   r_config_nlines;     // number of lines covering the buffer
-      sc_signal<size_t>   r_config_way;        // selected way
-      sc_signal<size_t>   r_config_count;      // number of copies
+      sc_signal<int>      r_config_fsm;            // FSM state
+      sc_signal<bool>     r_config_lock;           // lock protecting exclusive access
+      sc_signal<int>      r_config_cmd;            // config request status
+      sc_signal<addr_t>   r_config_address;        // target buffer physical address
+      sc_signal<size_t>   r_config_srcid;          // config request srcid
+      sc_signal<size_t>   r_config_trdid;          // config request trdid
+      sc_signal<size_t>   r_config_pktid;          // config request pktid
+      sc_signal<size_t>   r_config_nlines;         // number of lines covering the buffer
+      sc_signal<size_t>   r_config_dir_way;        // DIR: selected way
+      sc_signal<size_t>   r_config_dir_count;      // DIR: number of copies
+      sc_signal<bool>     r_config_dir_is_cnt;     // DIR: counter mode (broadcast required)
+      sc_signal<size_t>   r_config_dir_copy_srcid; // DIR: first copy SRCID
+      sc_signal<bool>     r_config_dir_copy_inst;  // DIR: first copy L1 type
+      sc_signal<size_t>   r_config_dir_next_ptr;   // DIR: index of next copy in HEAP
+      sc_signal<size_t>   r_config_heap_next;      // current pointer to scan HEAP
+
       sc_signal<size_t>   r_config_upt_index;  // UPT index
-      sc_signal<bool>     r_config_is_cnt;     // counter mode (broadcast required)
 
       // Buffer between CONFIG fsm and TGT_RSP fsm (send a done response to L1 cache)
@@ -591,6 +602,12 @@
       sc_signal<bool>     r_config_to_cc_send_multi_req;    // multi-inval request
       sc_signal<bool>     r_config_to_cc_send_brdcast_req;  // broadcast-inval request
-      sc_signal<size_t>   r_config_to_cc_send_nline;        // line index
+      sc_signal<addr_t>   r_config_to_cc_send_nline;        // line index
       sc_signal<size_t>   r_config_to_cc_send_trdid;        // UPT index
+      GenericFifo<bool>   m_config_to_cc_send_inst_fifo;    // fifo for the L1 type
+      GenericFifo<size_t> m_config_to_cc_send_srcid_fifo;   // fifo for owners srcid
+
+#if L1_MULTI_CACHE
+      GenericFifo<size_t> m_config_to_cc_send_cache_id_fifo; // fifo for cache_id
+#endif
 
       ///////////////////////////////////////////////////////
