Index: /soft/giet_vm/giet_xml/xml_driver.c
===================================================================
--- /soft/giet_vm/giet_xml/xml_driver.c	(revision 471)
+++ /soft/giet_vm/giet_xml/xml_driver.c	(revision 472)
@@ -34,4 +34,5 @@
         "MEMSPACE",   // Memspace
         "SCHED",      // Scheduler
+        "HEAP",       // Heap     
     };
 
Index: /soft/giet_vm/giet_xml/xml_parser.c
===================================================================
--- /soft/giet_vm/giet_xml/xml_parser.c	(revision 471)
+++ /soft/giet_vm/giet_xml/xml_parser.c	(revision 472)
@@ -341,7 +341,5 @@
                     if ( (type == PERIPH_TYPE_DMA) ||
                          (type == PERIPH_TYPE_MMC) ||
-                         (type == PERIPH_TYPE_ICU) ||
-                         (type == PERIPH_TYPE_XCU) ||
-                         (type == PERIPH_TYPE_TIM) )   // replicated peripheral
+                         (type == PERIPH_TYPE_XCU) )   // replicated peripheral
                     {
                         cluster_xy = (cluster[cluster_id]->x << header->y_width) +
@@ -772,4 +770,5 @@
     else if (ok && (strcmp(str, "MEMSPACE") == 0)) { vobj[vobj_index]->type = VOBJ_TYPE_MEMSPACE; }
     else if (ok && (strcmp(str, "SCHED")    == 0)) { vobj[vobj_index]->type = VOBJ_TYPE_SCHED;    }
+    else if (ok && (strcmp(str, "HEAP")     == 0)) { vobj[vobj_index]->type = VOBJ_TYPE_HEAP;     }
     else 
     {
@@ -1586,5 +1585,5 @@
 
 
-        // The DMA, ICU, MMC, TIM, XCU peripherals can be replicated in all clusters
+        // The DMA, MMC, XCU peripherals can be replicated in all clusters
         // but no more than one component of each type per cluster
 
@@ -1599,22 +1598,4 @@
         }
         //////////////////////////////////
-        else if (strcmp(str, "ICU") == 0) 
-        {
-            periph[periph_index]->type = PERIPH_TYPE_ICU;
-            if (found_icu || use_xcu)  error = 1; 
-            found_icu = 1;
-
-            if ( periph[periph_index]->channels < 
-                 (header->irq_per_proc * cluster[cluster_index]->procs) )
-            {
-                printf("[XML ERROR] ICU channels smaller than PROCS * IRQ_PER_PROC\n");
-                printf(" - icu channels = %d\n - nprocs = %d\n - irq_per_proc = %d\n",
-                       periph[periph_index]->channels, 
-                       cluster[cluster_index]->procs, 
-                       header->irq_per_proc );
-                exit(1);
-            }
-        }
-        //////////////////////////////////
         else if (strcmp(str, "MMC") == 0) 
         {
@@ -1623,13 +1604,4 @@
             found_mmc = 1;
             if ( periph[periph_index]->channels != 1 ) error = 1;
-        }
-        //////////////////////////////////
-        else if (strcmp(str, "TIM") == 0 ) 
-        {
-            periph[periph_index]->type = PERIPH_TYPE_TIM;
-            if (found_timer || use_xcu)  error = 1; 
-            found_timer = 1;
-            if (tim_channels < periph[periph_index]->channels) 
-                tim_channels = periph[periph_index]->channels;
         }
         //////////////////////////////////
@@ -1686,10 +1658,9 @@
         if (strcmp(tag, "irq") == 0) 
         {
-            if ( (periph[periph_index]->type != PERIPH_TYPE_ICU) &&
-                 (periph[periph_index]->type != PERIPH_TYPE_XCU) &&
+            if ( (periph[periph_index]->type != PERIPH_TYPE_XCU) &&
                  (periph[periph_index]->type != PERIPH_TYPE_PIC) )
             {
                 printf("[XML ERROR] periph %d in cluster(%d,%d) "
-                       " only ICU, XCU and PIC can contain IRQs",
+                       " only XCU and PIC can contain IRQs",
                 periph_loc_index, cluster[cluster_index]->x, cluster[cluster_index]->y);
                 exit(1);
@@ -2823,7 +2794,5 @@
     // replicated peripherals
     ld_write(fdout, "seg_dma_base            ",   periph_vbase_array[PERIPH_TYPE_DMA]);
-    ld_write(fdout, "seg_icu_base            ",   periph_vbase_array[PERIPH_TYPE_ICU]);
     ld_write(fdout, "seg_mmc_base            ",   periph_vbase_array[PERIPH_TYPE_MMC]);
-    ld_write(fdout, "seg_tim_base            ",   periph_vbase_array[PERIPH_TYPE_TIM]);
     ld_write(fdout, "seg_xcu_base            ",   periph_vbase_array[PERIPH_TYPE_XCU]);
 
