Index: /trunk/platforms/tsar_generic_xbar/scripts/counter_defs.py
===================================================================
--- /trunk/platforms/tsar_generic_xbar/scripts/counter_defs.py	(revision 789)
+++ /trunk/platforms/tsar_generic_xbar/scripts/counter_defs.py	(revision 790)
@@ -30,6 +30,6 @@
 m_app_name['fft'] = "FFT"
 m_app_name['radix'] = "Radix"
-m_app_name['fft_ga'] = "FFT"
-m_app_name['radix_ga'] = "Radix"
+m_app_name['fft_ga'] = "FFT (opt.)"
+m_app_name['radix_ga'] = "Radix (opt.)"
 
 m_metric_id = {}
@@ -73,13 +73,18 @@
 m_metric_tag['broadcast']          = "[080]"
 m_metric_tag['write_broadcast']    = "[081]"
+m_metric_tag['getm_broadcast']     = "[082]"
 
 m_metric_tag['local_cleanup']      = "[090]"
 m_metric_tag['remote_cleanup']     = "[091]"
 m_metric_tag['cleanup_cost']       = "[092]"
-m_metric_tag['cleanup_data_flits'] = "[093]"
+m_metric_tag['local_cleanup_d']    = "[093]"
+m_metric_tag['remote_cleanup_d']   = "[094]"
+m_metric_tag['cleanup_d_cost']     = "[095]"
 
 m_metric_tag['read_miss']          = "[100]"
 m_metric_tag['write_miss']         = "[101]"
 m_metric_tag['write_dirty']        = "[102]"
+m_metric_tag['getm_miss']          = "[103]"
+
 m_metric_tag['read_hit_trt']       = "[110]" # Reads blocked by a hit in the TRT
 m_metric_tag['trans_full_trt']     = "[111]" # Transactions blocked because the TRT is full
@@ -91,18 +96,13 @@
 m_metric_tag['ncc_to_cc_write']    = "[141]"
 
-m_metric_tag['total_read']         = "[500]"
-m_metric_tag['total_write']        = "[501]"
-m_metric_tag['total_ll']           = "[502]"
-m_metric_tag['total_sc']           = "[503]"
-m_metric_tag['total_cas']          = "[504]"
-m_metric_tag['total_update']       = "[505]"
-m_metric_tag['total_m_inv']        = "[506]"
-m_metric_tag['total_cleanup']      = "[507]"
-m_metric_tag['total_direct']       = "[508]"
-m_metric_tag['total_ncc_to_cc']    = "[509]"
-
-m_metric_tag['nonwrite_broadcast'] = "[600]"
-m_metric_tag['broadcast_cost']     = "[601]"
-m_metric_tag['direct_cost']        = "[602]"
+m_metric_tag['local_getm']         = "[150]"
+m_metric_tag['remote_getm']        = "[151]"
+m_metric_tag['getm_cost']          = "[152]"
+
+m_metric_tag['local_inval_ro']     = "[160]"
+m_metric_tag['remote_inval_ro']    = "[161]"
+m_metric_tag['inval_ro_cost']      = "[162]"
+
+
 
 all_metrics = m_metric_tag.keys()
@@ -110,72 +110,88 @@
 
 m_metric_name = {}
-m_metric_name['counter_reset']      = "Counters reset at cycle"
-m_metric_name['ncycles']            = "Number of Cycles"
-
-m_metric_name['local_read']         = "Number of Local Reads (Miss in L1)"
-m_metric_name['remote_read']        = "Number of Remote Reads (Miss in L1)"
-m_metric_name['read_cost']          = "Read Cost"
-
-m_metric_name['local_write']        = "Number of Local Writes"
-m_metric_name['remote_write']       = "Number of Remote Writes"
-m_metric_name['write_flits_local']  = "Number of Local Write Flits"
-m_metric_name['write_flits_remote'] = "Number of Remote Write Flits"
-m_metric_name['write_cost']         = "Write Cost"
-
-m_metric_name['local_ll']           = "Number of Local LL"
-m_metric_name['remote_ll']          = "Number of Remote LL"
-m_metric_name['ll_cost']            = "LL Cost"
-
-m_metric_name['local_sc']           = "Number of Local SC"
-m_metric_name['remote_sc']          = "Number of Remote SC"
-m_metric_name['sc_cost']            = "SC Cost"
-
-m_metric_name['local_cas']          = "Number of Local CAS"
-m_metric_name['remote_cas']         = "Number of Remote CAS"
-m_metric_name['cas_cost']           = "CAS Cost"
-
-m_metric_name['req_trig_update']    = "Number of Requests Triggering an Update"
-m_metric_name['local_update']       = "Number of Local Updates"
-m_metric_name['remote_update']      = "Number of Remote Updates"
-m_metric_name['update_cost']        = "Update Cost"
-
-m_metric_name['req_trig_m_inv']     = "Number of Requests Triggering a M.inv"
-m_metric_name['local_m_inv']        = "Number of Local Multi Inval"
-m_metric_name['remote_m_inv']       = "Number of Remote Multi Inval"
-m_metric_name['m_inv_cost']         = "Multi Inval Cost"
-
-m_metric_name['broadcast']          = "Total Number of Broadcasts"
-m_metric_name['write_broadcast']    = "Number of Broadcasts Trig. by Writes"
-m_metric_name['nonwrite_broadcast'] = "Number of Broadcasts not Trig. by Writes"
-
-m_metric_name['local_cleanup']      = "Number of Local Cleanups"
-m_metric_name['remote_cleanup']     = "Number of Remote Cleanups"
-m_metric_name['cleanup_cost']       = "Cleanup Cost"
-
-m_metric_name['read_miss']          = "Number of Read Miss (in L2)"
-m_metric_name['write_miss']         = "Number of Write Miss (in L2)"
-m_metric_name['write_dirty']        = "Number of Write Dirty (from L2 to Memory)"
-m_metric_name['read_hit_trt']       = "Number of Reads Blocked by a Hit in TRT" # Reads blocked by a hit in the TRT
-m_metric_name['trans_full_trt']     = "Number of Transactions Blocked because the TRT is Full" # Transactions blocked because the TRT is full
-m_metric_name['put']                = "Number of PUT to Memory"
-m_metric_name['get']                = "Number of GET from Memory"
-m_metric_name['min_heap_slots_av']  = "Minimum Number of Heap Slots available"
-
-m_metric_name['ncc_to_cc_read']     = "Number or Reads trig. NCC to CC"
-m_metric_name['ncc_to_cc_write']    = "Number of Writes trig. NCC to CC"
-
-m_metric_name['total_read']         = "Total Number of Reads"
-m_metric_name['total_write']        = "Total Number of Writes"
-m_metric_name['total_ll']           = "Total Number of LL"
-m_metric_name['total_sc']           = "Total Number of SC"
-m_metric_name['total_cas']          = "Total Number of CAS"
-m_metric_name['total_update']       = "Total Number of Updates"
-m_metric_name['total_m_inv']        = "Total Number of Multi Inval"
-m_metric_name['total_cleanup']      = "Total Number of Cleanups"
-m_metric_name['total_direct']       = "Total Number of Direct Requests"
-m_metric_name['total_ncc_to_cc']    = "Total Number of NCC to CC Changes"
-m_metric_name['broadcast_cost']     = "Broadcast Cost"
-m_metric_name['direct_cost']        = "Direct Requests Cost"
-m_metric_name['total_stacked']      = "??" # Normalization factor, does not have a name (unused)
+m_metric_name['counter_reset']       = "Counters reset at cycle"
+m_metric_name['ncycles']             = "Number of Cycles"
+
+m_metric_name['local_read']          = "Number of Local Reads (Miss in L1)"
+m_metric_name['remote_read']         = "Number of Remote Reads (Miss in L1)"
+m_metric_name['read_cost']           = "Read Cost"
+
+m_metric_name['local_write']         = "Number of Local Writes"
+m_metric_name['remote_write']        = "Number of Remote Writes"
+m_metric_name['write_flits_local']   = "Number of Local Write Flits"
+m_metric_name['write_flits_remote']  = "Number of Remote Write Flits"
+m_metric_name['write_cost']          = "Write Cost"
+
+m_metric_name['local_ll']            = "Number of Local LL"
+m_metric_name['remote_ll']           = "Number of Remote LL"
+m_metric_name['ll_cost']             = "LL Cost"
+
+m_metric_name['local_sc']            = "Number of Local SC"
+m_metric_name['remote_sc']           = "Number of Remote SC"
+m_metric_name['sc_cost']             = "SC Cost"
+
+m_metric_name['local_cas']           = "Number of Local CAS"
+m_metric_name['remote_cas']          = "Number of Remote CAS"
+m_metric_name['cas_cost']            = "CAS Cost"
+
+m_metric_name['req_trig_update']     = "Number of Requests Triggering an Update"
+m_metric_name['local_update']        = "Number of Local Updates"
+m_metric_name['remote_update']       = "Number of Remote Updates"
+m_metric_name['update_cost']         = "Update Cost"
+
+m_metric_name['req_trig_m_inv']      = "Number of Requests Triggering a M.inv"
+m_metric_name['local_m_inv']         = "Number of Local Multi Inval"
+m_metric_name['remote_m_inv']        = "Number of Remote Multi Inval"
+m_metric_name['m_inv_cost']          = "Multi Inval Cost"
+
+m_metric_name['broadcast']           = "Total Number of Broadcasts"
+m_metric_name['write_broadcast']     = "Number of Broadcasts Trig. by Writes"
+m_metric_name['nonwrite_broadcast']  = "Number of Broadcasts not Trig. by Writes"
+m_metric_name['getm_broadcast']      = "Number of Broadcasts Trig. by GetM"
+
+m_metric_name['local_cleanup']       = "Number of Local Cleanups"
+m_metric_name['remote_cleanup']      = "Number of Remote Cleanups"
+m_metric_name['cleanup_cost']        = "Cleanup Cost"
+m_metric_name['local_cleanup_d']     = "Number of Local Cleanups with Data"
+m_metric_name['remote_cleanup_d']    = "Number of Remote Cleanups with Data"
+m_metric_name['cleanup_d_cost']      = "Cleanup with Data Cost"
+
+m_metric_name['read_miss']           = "Number of Read Miss (in L2)"
+m_metric_name['write_miss']          = "Number of Write Miss (in L2)"
+m_metric_name['write_dirty']         = "Number of Write Dirty (from L2 to Memory)"
+m_metric_name['getm_miss']           = "Number of GetM Miss (in L2)"
+
+m_metric_name['read_hit_trt']        = "Number of Reads Blocked by a Hit in TRT" # Reads blocked by a hit in the TRT
+m_metric_name['trans_full_trt']      = "Number of Transactions Blocked because the TRT is Full" # Transactions blocked because the TRT is full
+m_metric_name['put']                 = "Number of PUT to Memory"
+m_metric_name['get']                 = "Number of GET from Memory"
+m_metric_name['min_heap_slots_av']   = "Minimum Number of Heap Slots available"
+
+m_metric_name['ncc_to_cc_read']      = "Number or Reads trig. NCC to CC"
+m_metric_name['ncc_to_cc_write']     = "Number of Writes trig. NCC to CC"
+
+m_metric_name['local_getm']          = "Number of Local GetM"
+m_metric_name['remote_getm']         = "Number of Remote GetM"
+m_metric_name['getm_cost']           = "GetM Cost"
+
+m_metric_name['local_inval_ro']      = "Number of Local Inval RO"
+m_metric_name['remote_inval_ro']     = "Number of Remote Inval RO"
+m_metric_name['inval_ro_cost']       = "Inval RO Cost"
+
+
+m_metric_name['total_read']          = "Total Number of Reads"
+m_metric_name['total_write']         = "Total Number of Writes"
+m_metric_name['total_ll']            = "Total Number of LL"
+m_metric_name['total_sc']            = "Total Number of SC"
+m_metric_name['total_cas']           = "Total Number of CAS"
+m_metric_name['total_update']        = "Total Number of Updates"
+m_metric_name['total_m_inv']         = "Total Number of Multi Inval"
+m_metric_name['total_cleanup']       = "Total Number of Cleanups"
+m_metric_name['total_cleanup_d']     = "Total Number of Cleanups with Data"
+m_metric_name['total_direct']        = "Total Number of Direct Requests"
+m_metric_name['total_ncc_to_cc']     = "Total Number of NCC to CC Changes"
+m_metric_name['broadcast_cost']      = "Broadcast Cost"
+m_metric_name['direct_cost']         = "Direct Requests Cost"
+m_metric_name['total_stacked']       = "??" # Normalization factor, does not have a name (unused)
 
 
Index: /trunk/platforms/tsar_generic_xbar/scripts/create_graphs.py
===================================================================
--- /trunk/platforms/tsar_generic_xbar/scripts/create_graphs.py	(revision 789)
+++ /trunk/platforms/tsar_generic_xbar/scripts/create_graphs.py	(revision 790)
@@ -8,10 +8,10 @@
 
 #apps = [ 'histogram', 'mandel', 'filter', 'radix', 'fft_ga' ]
-apps = [ 'histogram', 'mandel', 'filter', 'radix', 'radix_ga', 'fft', 'fft_ga', 'filt_ga', 'kmeans', 'pca', 'lu' ]
-#apps = [ 'fft' ]
+#apps = [ 'histogram', 'mandel', 'filter', 'radix', 'radix_ga', 'fft', 'fft_ga', 'filt_ga', 'kmeans', 'pca', 'lu' ]
+apps = [ 'fft', 'fft_ga' ]
 nb_procs = [ 1, 4, 8, 16, 32, 64, 128, 256 ]
-single_protocols = ['dhccp']
-#joint_protocols = ['dhccp', 'rwt']
-joint_protocols = []
+single_protocols = ['dhccp', 'rwt']
+joint_protocols = ['dhccp', 'rwt']
+#joint_protocols = []
 
 top_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "..")
@@ -123,19 +123,23 @@
       for i in nb_procs:
          x, y = get_x_y(i)
-         metrics_val[prot][app][i]['total_read']      = metrics_val[prot][app][i]['local_read']     + metrics_val[prot][app][i]['remote_read']
-         metrics_val[prot][app][i]['total_write']     = metrics_val[prot][app][i]['local_write']    + metrics_val[prot][app][i]['remote_write']
-         metrics_val[prot][app][i]['total_ll']        = metrics_val[prot][app][i]['local_ll']       + metrics_val[prot][app][i]['remote_ll']
-         metrics_val[prot][app][i]['total_sc']        = metrics_val[prot][app][i]['local_sc']       + metrics_val[prot][app][i]['remote_sc']
-         metrics_val[prot][app][i]['total_cas']       = metrics_val[prot][app][i]['local_cas']      + metrics_val[prot][app][i]['remote_cas']
-         metrics_val[prot][app][i]['total_update']    = metrics_val[prot][app][i]['local_update']   + metrics_val[prot][app][i]['remote_update']
-         metrics_val[prot][app][i]['total_m_inv']     = metrics_val[prot][app][i]['local_m_inv']    + metrics_val[prot][app][i]['remote_m_inv']
-         metrics_val[prot][app][i]['total_cleanup']   = metrics_val[prot][app][i]['local_cleanup']  + metrics_val[prot][app][i]['remote_cleanup']
-         metrics_val[prot][app][i]['total_direct']    = metrics_val[prot][app][i]['total_read']     + metrics_val[prot][app][i]['total_write']
-         metrics_val[prot][app][i]['total_ncc_to_cc'] = metrics_val[prot][app][i]['ncc_to_cc_read'] + metrics_val[prot][app][i]['ncc_to_cc_write']
-         metrics_val[prot][app][i]['direct_cost']     = metrics_val[prot][app][i]['read_cost']      + metrics_val[prot][app][i]['write_cost']
+         metrics_val[prot][app][i]['total_read']      = metrics_val[prot][app][i]['local_read']      + metrics_val[prot][app][i]['remote_read']
+         metrics_val[prot][app][i]['total_write']     = metrics_val[prot][app][i]['local_write']     + metrics_val[prot][app][i]['remote_write']
+         metrics_val[prot][app][i]['total_ll']        = metrics_val[prot][app][i]['local_ll']        + metrics_val[prot][app][i]['remote_ll']
+         metrics_val[prot][app][i]['total_sc']        = metrics_val[prot][app][i]['local_sc']        + metrics_val[prot][app][i]['remote_sc']
+         metrics_val[prot][app][i]['total_cas']       = metrics_val[prot][app][i]['local_cas']       + metrics_val[prot][app][i]['remote_cas']
+         metrics_val[prot][app][i]['total_update']    = metrics_val[prot][app][i]['local_update']    + metrics_val[prot][app][i]['remote_update']
+         metrics_val[prot][app][i]['total_m_inv']     = metrics_val[prot][app][i]['local_m_inv']     + metrics_val[prot][app][i]['remote_m_inv']
+         metrics_val[prot][app][i]['total_cleanup']   = metrics_val[prot][app][i]['local_cleanup']   + metrics_val[prot][app][i]['remote_cleanup']
+         metrics_val[prot][app][i]['total_cleanup_d'] = metrics_val[prot][app][i]['local_cleanup_d'] + metrics_val[prot][app][i]['remote_cleanup_d']
+         metrics_val[prot][app][i]['total_getm']      = metrics_val[prot][app][i]['local_getm']      + metrics_val[prot][app][i]['remote_getm']
+         metrics_val[prot][app][i]['total_inval_ro']  = metrics_val[prot][app][i]['local_inval_ro']  + metrics_val[prot][app][i]['remote_inval_ro']
+         metrics_val[prot][app][i]['total_direct']    = metrics_val[prot][app][i]['total_read']      + metrics_val[prot][app][i]['total_write']
+         metrics_val[prot][app][i]['total_ncc_to_cc'] = metrics_val[prot][app][i]['ncc_to_cc_read']  + metrics_val[prot][app][i]['ncc_to_cc_write']
+         metrics_val[prot][app][i]['direct_cost']     = metrics_val[prot][app][i]['read_cost']       + metrics_val[prot][app][i]['write_cost']
          metrics_val[prot][app][i]['broadcast_cost']  = metrics_val[prot][app][i]['broadcast'] * (x * y - 1)
          if metrics_val[prot][app][i]['broadcast'] < metrics_val[prot][app][i]['write_broadcast']:
             # test to patch a bug in mem_cache
             metrics_val[prot][app][i]['nonwrite_broadcast'] = 0
+            print "*** Error which should not happen anymore: incorrect number of Broadcasts/Write Broadcasts"
          else:
             metrics_val[prot][app][i]['nonwrite_broadcast'] = metrics_val[prot][app][i]['broadcast'] - metrics_val[prot][app][i]['write_broadcast']
Index: /trunk/platforms/tsar_generic_xbar/scripts/run_simus.py
===================================================================
--- /trunk/platforms/tsar_generic_xbar/scripts/run_simus.py	(revision 789)
+++ /trunk/platforms/tsar_generic_xbar/scripts/run_simus.py	(revision 790)
@@ -15,5 +15,5 @@
 rerun_stats = False
 use_omp = False
-protocol = 'rwt'
+protocol = 'dhccp'
 
 #apps = [ 'histogram', 'mandel', 'filter', 'radix_ga', 'fft_ga', 'kmeans' ]
@@ -32,5 +32,5 @@
 # to come: 'barnes', 'fmm', 'ocean', 'raytrace', 'radiosity', 'waters', 'watern'
 
-all_protocols = [ 'dhccp', 'rwt', 'mesi' ]
+all_protocols = [ 'dhccp', 'rwt', 'hmesi' ]
 
 top_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "..")
@@ -92,10 +92,10 @@
         sys.exit()
 
-if protocol == "mesi":
-    if mesi_dir == "":
-        print "*** Error: variable mesi_dir not defined in config file"
-        sys.exit()
-    if not os.path.exists(mesi_dir):
-        print "*** Error: variable mesi_dir does not define a valid path"
+if protocol == "hmesi":
+    if hmesi_dir == "":
+        print "*** Error: variable hmesi_dir not defined in config file"
+        sys.exit()
+    if not os.path.exists(hmesi_dir):
+        print "*** Error: variable hmesi_dir does not define a valid path"
         sys.exit()
 
@@ -177,6 +177,6 @@
     elif protocol == "rwt":
         arch_dir = rwt_dir
-    elif protocol == "mesi":
-        archi_dir = mesi_dir
+    elif protocol == "hmesi":
+        arch_dir = hmesi_dir
     else:
         assert(False)
