Index: branches/RWT/modules/vci_cc_vcache_wrapper/caba/source/include/vci_cc_vcache_wrapper.h
===================================================================
--- branches/RWT/modules/vci_cc_vcache_wrapper/caba/source/include/vci_cc_vcache_wrapper.h	(revision 615)
+++ branches/RWT/modules/vci_cc_vcache_wrapper/caba/source/include/vci_cc_vcache_wrapper.h	(revision 645)
@@ -541,6 +541,7 @@
     //bool                    *r_dcache_in_tlb;           // copy exist in dtlb or itlb
     //bool                    *r_dcache_contains_ptd;     // cache line contains a PTD
-    int                     *r_dcache_content_state;    // content state of one cache line
-    int                     *r_dcache_dirty_word;    // content state of one cache line
+    int                     *r_dcache_content_state; // content state of one cache line
+    int                     *r_dcache_dirty_word;    
+    bool                    *r_dcache_zombi_ncc;     
     //////////////////////////////////////////////////////////////////////////////////////
 
@@ -644,67 +645,67 @@
     // Activity counters
     ////////////////////////////////
-    uint32_t m_cpt_dcache_data_read;        // DCACHE DATA READ
-    uint32_t m_cpt_dcache_data_write;       // DCACHE DATA WRITE
-    uint32_t m_cpt_dcache_dir_read;         // DCACHE DIR READ
-    uint32_t m_cpt_dcache_dir_write;        // DCACHE DIR WRITE
-
-    uint32_t m_cpt_icache_data_read;        // ICACHE DATA READ
-    uint32_t m_cpt_icache_data_write;       // ICACHE DATA WRITE
-    uint32_t m_cpt_icache_dir_read;         // ICACHE DIR READ
-    uint32_t m_cpt_icache_dir_write;        // ICACHE DIR WRITE
-
-    uint32_t m_cpt_frz_cycles;	            // number of cycles where the cpu is frozen
-    uint32_t m_cpt_total_cycles;	        // total number of cycles
+    uint32_t m_cpt_dcache_data_read;           // DCACHE DATA READ
+    uint32_t m_cpt_dcache_data_write;          // DCACHE DATA WRITE
+    uint32_t m_cpt_dcache_dir_read;            // DCACHE DIR READ
+    uint32_t m_cpt_dcache_dir_write;           // DCACHE DIR WRITE
+
+    uint32_t m_cpt_icache_data_read;           // ICACHE DATA READ
+    uint32_t m_cpt_icache_data_write;          // ICACHE DATA WRITE
+    uint32_t m_cpt_icache_dir_read;            // ICACHE DIR READ
+    uint32_t m_cpt_icache_dir_write;           // ICACHE DIR WRITE
+
+    uint32_t m_cpt_frz_cycles;	               // number of cycles where the cpu is frozen
+    uint32_t m_cpt_total_cycles;	           // total number of cycles
 
     // Cache activity counters
-    uint32_t m_cpt_data_read;               // total number of read data
-    uint32_t m_cpt_data_write;              // total number of write data
+    uint32_t m_cpt_data_read;                  // total number of read data
+    uint32_t m_cpt_data_write;                 // total number of write data
     uint32_t m_cpt_data_write_back;
     uint32_t m_cpt_data_cleanup;
     uint32_t m_cpt_data_sc;
-    uint32_t m_cpt_data_miss;               // number of read miss
-    uint32_t m_cpt_ins_miss;                // number of instruction miss
-    uint32_t m_cpt_unc_read;                // number of read uncached
-    uint32_t m_cpt_write_cached;            // number of cached write
-    uint32_t m_cpt_ins_read;                // number of instruction read
-    uint32_t m_cpt_ins_spc_miss;            // number of speculative instruction miss
-
-    uint32_t m_cost_write_frz;              // number of frozen cycles related to write buffer
-    uint32_t m_cost_data_miss_frz;          // number of frozen cycles related to data miss
-    uint32_t m_cost_unc_read_frz;           // number of frozen cycles related to uncached read
-    uint32_t m_cost_ins_miss_frz;           // number of frozen cycles related to ins miss
-
-    uint32_t m_cpt_imiss_transaction;       // number of VCI instruction miss transactions
-    uint32_t m_cpt_dmiss_transaction;       // number of VCI data miss transactions
-    uint32_t m_cpt_unc_transaction;         // number of VCI uncached read transactions
-    uint32_t m_cpt_dunc_transaction;         // number of VCI uncached read transactions
-    uint32_t m_cpt_ll_transaction;         // number of VCI uncached read transactions
-    uint32_t m_cpt_write_transaction;       // number of VCI write transactions
+    uint32_t m_cpt_data_miss;                  // number of read miss
+    uint32_t m_cpt_ins_miss;                   // number of instruction miss
+    uint32_t m_cpt_unc_read;                   // number of read uncached
+    uint32_t m_cpt_write_cached;               // number of cached write
+    uint32_t m_cpt_ins_read;                   // number of instruction read
+    uint32_t m_cpt_ins_spc_miss;               // number of speculative instruction miss
+
+    uint32_t m_cost_write_frz;                 // number of frozen cycles related to write buffer
+    uint32_t m_cost_data_miss_frz;             // number of frozen cycles related to data miss
+    uint32_t m_cost_unc_read_frz;              // number of frozen cycles related to uncached read
+    uint32_t m_cost_ins_miss_frz;              // number of frozen cycles related to ins miss
+
+    uint32_t m_cpt_imiss_transaction;          // number of VCI instruction miss transactions
+    uint32_t m_cpt_dmiss_transaction;          // number of VCI data miss transactions
+    uint32_t m_cpt_unc_transaction;            // number of VCI uncached read transactions
+    uint32_t m_cpt_dunc_transaction;           // number of VCI uncached read transactions
+    uint32_t m_cpt_ll_transaction;             // number of VCI uncached read transactions
+    uint32_t m_cpt_write_transaction;          // number of VCI write transactions
     uint32_t m_cpt_icache_unc_transaction;
 
-    uint32_t m_cost_imiss_transaction;      // cumulated duration for VCI IMISS transactions
-    uint32_t m_cost_dmiss_transaction;      // cumulated duration for VCI DMISS transactions
-    uint32_t m_cost_unc_transaction;        // cumulated duration for VCI UNC transactions
-    uint32_t m_cost_write_transaction;      // cumulated duration for VCI WRITE transactions
-    uint32_t m_cost_icache_unc_transaction; // cumulated duration for VCI IUNC transactions
-    uint32_t m_length_write_transaction;    // cumulated length for VCI WRITE transactions
+    uint32_t m_cost_imiss_transaction;         // cumulated duration for VCI IMISS transactions
+    uint32_t m_cost_dmiss_transaction;         // cumulated duration for VCI DMISS transactions
+    uint32_t m_cost_unc_transaction;           // cumulated duration for VCI UNC transactions
+    uint32_t m_cost_write_transaction;         // cumulated duration for VCI WRITE transactions
+    uint32_t m_cost_icache_unc_transaction;    // cumulated duration for VCI IUNC transactions
+    uint32_t m_length_write_transaction;       // cumulated length for VCI WRITE transactions
 
     // TLB activity counters
-    uint32_t m_cpt_ins_tlb_read;            // number of instruction tlb read
-    uint32_t m_cpt_ins_tlb_miss;            // number of instruction tlb miss
-    uint32_t m_cpt_ins_tlb_update_acc;      // number of instruction tlb update
-    uint32_t m_cpt_ins_tlb_occup_cache;     // number of instruction tlb occupy data cache line
-    uint32_t m_cpt_ins_tlb_hit_dcache;      // number of instruction tlb hit in data cache
-
-    uint32_t m_cpt_data_tlb_read;           // number of data tlb read
-    uint32_t m_cpt_data_tlb_miss;           // number of data tlb miss
-    uint32_t m_cpt_data_tlb_update_acc;     // number of data tlb update
-    uint32_t m_cpt_data_tlb_update_dirty;   // number of data tlb update dirty
-    uint32_t m_cpt_data_tlb_hit_dcache;     // number of data tlb hit in data cache
-    uint32_t m_cpt_data_tlb_occup_cache;    // number of data tlb occupy data cache line
+    uint32_t m_cpt_ins_tlb_read;               // number of instruction tlb read
+    uint32_t m_cpt_ins_tlb_miss;               // number of instruction tlb miss
+    uint32_t m_cpt_ins_tlb_update_acc;         // number of instruction tlb update
+    uint32_t m_cpt_ins_tlb_occup_cache;        // number of instruction tlb occupy data cache line
+    uint32_t m_cpt_ins_tlb_hit_dcache;         // number of instruction tlb hit in data cache
+
+    uint32_t m_cpt_data_tlb_read;              // number of data tlb read
+    uint32_t m_cpt_data_tlb_miss;              // number of data tlb miss
+    uint32_t m_cpt_data_tlb_update_acc;        // number of data tlb update
+    uint32_t m_cpt_data_tlb_update_dirty;      // number of data tlb update dirty
+    uint32_t m_cpt_data_tlb_hit_dcache;        // number of data tlb hit in data cache
+    uint32_t m_cpt_data_tlb_occup_cache;       // number of data tlb occupy data cache line
     uint32_t m_cpt_tlb_occup_dcache;
 
-    uint32_t m_cost_ins_tlb_miss_frz;       // number of frozen cycles related to instruction tlb miss
-    uint32_t m_cost_data_tlb_miss_frz;      // number of frozen cycles related to data tlb miss
+    uint32_t m_cost_ins_tlb_miss_frz;          // number of frozen cycles related to instruction tlb miss
+    uint32_t m_cost_data_tlb_miss_frz;         // number of frozen cycles related to data tlb miss
     uint32_t m_cost_ins_tlb_update_acc_frz;    // number of frozen cycles related to instruction tlb update acc
     uint32_t m_cost_data_tlb_update_acc_frz;   // number of frozen cycles related to data tlb update acc
@@ -722,40 +723,43 @@
     uint32_t m_cpt_dtlb_sc_dirty_transaction;  // number of dtlb sc dirty transactions
 
-    uint32_t m_cost_itlbmiss_transaction;       // cumulated duration for VCI instruction TLB miss transactions
-    uint32_t m_cost_itlb_ll_transaction;        // cumulated duration for VCI instruction TLB ll acc transactions
-    uint32_t m_cost_itlb_sc_transaction;        // cumulated duration for VCI instruction TLB sc acc transactions
-    uint32_t m_cost_dtlbmiss_transaction;       // cumulated duration for VCI data TLB miss transactions
-    uint32_t m_cost_dtlb_ll_transaction;        // cumulated duration for VCI data TLB ll acc transactions
-    uint32_t m_cost_dtlb_sc_transaction;        // cumulated duration for VCI data TLB sc acc transactions
-    uint32_t m_cost_dtlb_ll_dirty_transaction;  // cumulated duration for VCI data TLB ll dirty transactions
-    uint32_t m_cost_dtlb_sc_dirty_transaction;  // cumulated duration for VCI data TLB sc dirty transactions
+    uint32_t m_cost_itlbmiss_transaction;      // cumulated duration for VCI instruction TLB miss transactions
+    uint32_t m_cost_itlb_ll_transaction;       // cumulated duration for VCI instruction TLB ll acc transactions
+    uint32_t m_cost_itlb_sc_transaction;       // cumulated duration for VCI instruction TLB sc acc transactions
+    uint32_t m_cost_dtlbmiss_transaction;      // cumulated duration for VCI data TLB miss transactions
+    uint32_t m_cost_dtlb_ll_transaction;       // cumulated duration for VCI data TLB ll acc transactions
+    uint32_t m_cost_dtlb_sc_transaction;       // cumulated duration for VCI data TLB sc acc transactions
+    uint32_t m_cost_dtlb_ll_dirty_transaction; // cumulated duration for VCI data TLB ll dirty transactions
+    uint32_t m_cost_dtlb_sc_dirty_transaction; // cumulated duration for VCI data TLB sc dirty transactions
 
     // coherence activity counters
-    uint32_t m_cpt_cc_update_icache;            // number of coherence update instruction commands
-    uint32_t m_cpt_cc_update_dcache;            // number of coherence update data commands
-    uint32_t m_cpt_cc_inval_icache;             // number of coherence inval instruction commands
-    uint32_t m_cpt_cc_inval_dcache;             // number of coherence inval data commands
-    uint32_t m_cpt_cc_broadcast;                // number of coherence broadcast commands
-
-    uint32_t m_cost_updt_data_frz;              // number of frozen cycles related to coherence update data packets
-    uint32_t m_cost_inval_ins_frz;              // number of frozen cycles related to coherence inval instruction packets
-    uint32_t m_cost_inval_data_frz;             // number of frozen cycles related to coherence inval data packets
-    uint32_t m_cost_broadcast_frz;              // number of frozen cycles related to coherence broadcast packets
-
-    uint32_t m_cpt_cc_cleanup_ins;              // number of coherence cleanup packets
-    uint32_t m_cpt_cc_cleanup_data;             // number of coherence cleanup packets
-    uint32_t m_cpt_cleanup_data_not_dirty;
-    uint32_t m_cpt_cleanup_data_dirty_word;
-
-    uint32_t m_cpt_icleanup_transaction;        // number of instruction cleanup transactions
-    uint32_t m_cpt_dcleanup_transaction;        // number of instructinumber of data cleanup transactions
-    uint32_t m_cost_icleanup_transaction;       // cumulated duration for VCI instruction cleanup transactions
-    uint32_t m_cost_dcleanup_transaction;       // cumulated duration for VCI data cleanup transactions
-
-    uint32_t m_cost_ins_tlb_inval_frz;      // number of frozen cycles related to checking ins tlb invalidate
-    uint32_t m_cpt_ins_tlb_inval;           // number of ins tlb invalidate
-
-    uint32_t m_cost_data_tlb_inval_frz;     // number of frozen cycles related to checking data tlb invalidate
-    uint32_t m_cpt_data_tlb_inval;          // number of data tlb invalidate
+    uint32_t m_cpt_cc_update_icache;           // number of coherence update instruction commands
+    uint32_t m_cpt_cc_update_dcache;           // number of coherence update data commands
+    uint32_t m_cpt_cc_inval_icache;            // number of coherence inval instruction commands
+    uint32_t m_cpt_cc_inval_dcache;            // number of coherence inval data commands
+    uint32_t m_cpt_cc_broadcast;               // number of coherence broadcast commands
+
+    uint32_t m_cost_updt_data_frz;             // number of frozen cycles related to coherence update data packets
+    uint32_t m_cost_inval_ins_frz;             // number of frozen cycles related to coherence inval instruction packets
+    uint32_t m_cost_inval_data_frz;            // number of frozen cycles related to coherence inval data packets
+    uint32_t m_cost_broadcast_frz;             // number of frozen cycles related to coherence broadcast packets
+
+    uint32_t m_cpt_cc_cleanup_ins;             // number of coherence cleanup packets
+    uint32_t m_cpt_cc_cleanup_data;            // number of coherence cleanup packets
+    uint32_t m_cpt_cleanup_data_not_dirty;     // number of total cleanup data without extra data flits
+    uint32_t m_cpt_cleanup_data_dirty_word;    // number of total words dirty in cleanup data
+    uint32_t m_cpt_data_write_miss;            // number of total write miss
+    uint32_t m_cpt_data_write_on_zombi;        // number of frozen cycles related to blocked write on line NCC/CC ZOMBI
+    uint32_t m_cpt_data_write_on_zombi_ncc;    // number of frozen cycles related to blocked write on line NCC ZOMBI
+
+    uint32_t m_cpt_icleanup_transaction;       // number of instruction cleanup transactions
+    uint32_t m_cpt_dcleanup_transaction;       // number of instructinumber of data cleanup transactions
+    uint32_t m_cost_icleanup_transaction;      // cumulated duration for VCI instruction cleanup transactions
+    uint32_t m_cost_dcleanup_transaction;      // cumulated duration for VCI data cleanup transactions
+
+    uint32_t m_cost_ins_tlb_inval_frz;         // number of frozen cycles related to checking ins tlb invalidate
+    uint32_t m_cpt_ins_tlb_inval;              // number of ins tlb invalidate
+
+    uint32_t m_cost_data_tlb_inval_frz;        // number of frozen cycles related to checking data tlb invalidate
+    uint32_t m_cpt_data_tlb_inval;             // number of data tlb invalidate
 
     // FSM activity counters
