Index: /branches/reconfiguration/platforms/tsar_generic_iob/arch.py
===================================================================
--- /branches/reconfiguration/platforms/tsar_generic_iob/arch.py	(revision 768)
+++ /branches/reconfiguration/platforms/tsar_generic_iob/arch.py	(revision 769)
@@ -109,7 +109,9 @@
     pic_size  = 0x1000                     # 4 Kbytes
 
+    sim_base  = 0x00B9000000 + offset_io
+    sim_size  = 0x1000                     # 4 kbytes
+
     iob_base  = 0x00BE000000 + offset_io
     iob_size  = 0x1000                     # 4 kbytes
-
 
     ### GIET_VM specifics virtual segments
@@ -179,4 +181,6 @@
     pic = mapping.addPeriph( 'PIC', base = pic_base, size = pic_size, ptype = 'PIC', channels = 32 )
 
+    sim = mapping.addPeriph( 'SIM', base = sim_base, size = sim_size, ptype = 'SIM' )
+
     mapping.addIrq( pic, index = 0, isrtype = 'ISR_NIC_RX', channel = 0 )
     mapping.addIrq( pic, index = 1, isrtype = 'ISR_NIC_RX', channel = 1 )
@@ -304,4 +308,7 @@
                        identity = True )
 
+    mapping.addGlobal( 'seg_sim', sim_base, sim_size, '__W_',
+                       vtype = 'PERI', x = 0, y = 0, pseg = 'SIM',
+                       identity = True )
 
     ### global vsegs for internal peripherals, and for schedulers
Index: /branches/reconfiguration/platforms/tsar_generic_iob/run.py
===================================================================
--- /branches/reconfiguration/platforms/tsar_generic_iob/run.py	(revision 768)
+++ /branches/reconfiguration/platforms/tsar_generic_iob/run.py	(revision 769)
@@ -62,5 +62,5 @@
             "-SOFT"   , "soft/build/soft.elf",
             "-DISK"   , "/dev/null",
-            "-NCYCLES", "500000"],
+            "-NCYCLES", "10000000"],
             stdout=log_file,
             stderr=log_file,
Index: /branches/reconfiguration/platforms/tsar_generic_iob/top.cpp
===================================================================
--- /branches/reconfiguration/platforms/tsar_generic_iob/top.cpp	(revision 768)
+++ /branches/reconfiguration/platforms/tsar_generic_iob/top.cpp	(revision 769)
@@ -134,4 +134,5 @@
 #include "vci_iox_network.h"
 #include "vci_iopic.h"
+#include "vci_simhelper.h"
 
 #include "alloc_elems.h"
@@ -303,6 +304,7 @@
 #define IOX_MTTY_TGT_ID              4
 #define IOX_IOPI_TGT_ID              5
-#define IOX_IOB0_TGT_ID              6
-#define IOX_IOB1_TGT_ID              7
+#define IOX_SIMH_TGT_ID              6
+#define IOX_IOB0_TGT_ID              7
+#define IOX_IOB1_TGT_ID              8
 
 #define IOX_BDEV_INI_ID              0
@@ -597,4 +599,9 @@
             maptab_int.add(Segment(spic.str(), SEG_PIC_BASE+offset, SEG_PIC_SIZE,
                         IntTab(cluster(x,y), INT_IOBX_TGT_ID), not cacheable));
+
+            std::ostringstream    ssim;
+            ssim << "int_seg_simh_" << x << "_" << y;
+            maptab_int.add(Segment(ssim.str(), SEG_SIM_BASE+offset, SEG_SIM_SIZE,
+                        IntTab(cluster(x,y), INT_IOBX_TGT_ID), not cacheable));
          }
 
@@ -710,4 +717,6 @@
     maptab_iox.add(Segment("iox_seg_iopi_0", SEG_PIC_BASE + iob0_base, SEG_PIC_SIZE,
                    IntTab(0, IOX_IOPI_TGT_ID), false));
+    maptab_iox.add(Segment("iox_seg_simh_0", SEG_SIM_BASE + iob0_base, SEG_SIM_SIZE,
+                   IntTab(0, IOX_SIMH_TGT_ID), false));
 
     if ( cluster_iob0 != cluster_iob1 )
@@ -728,4 +737,6 @@
         maptab_iox.add(Segment("iox_seg_iopi_1", SEG_PIC_BASE + iob1_base, SEG_PIC_SIZE,
                    IntTab(0, IOX_IOPI_TGT_ID), false));
+        maptab_iox.add(Segment("iox_seg_simh_1", SEG_SIM_BASE + iob1_base, SEG_SIM_SIZE,
+                   IntTab(0, IOX_SIMH_TGT_ID), false));
     }
 
@@ -822,4 +833,5 @@
     VciSignals<vci_param_ext>         signal_vci_tgt_cdma("signal_vci_tgt_cdma");
     VciSignals<vci_param_ext>         signal_vci_tgt_iopi("signal_vci_ini_iopi");
+    VciSignals<vci_param_ext>         signal_vci_tgt_simh("signal_vci_ini_simh");
 
    // Horizontal inter-clusters INT network DSPIN
@@ -910,5 +922,5 @@
 
    const size_t nb_iox_initiators = (cluster_iob0 != cluster_iob1) ? 5 : 4;
-   const size_t nb_iox_targets = (cluster_iob0 != cluster_iob1) ? 8 : 7;
+   const size_t nb_iox_targets = (cluster_iob0 != cluster_iob1) ? 9 : 8;
 
    // IOX network
@@ -981,4 +993,10 @@
                                        32 );        // number of input HWI
 
+   // Simhelper
+   VciSimhelper<vci_param_ext>* simh;
+   simh = new VciSimhelper<vci_param_ext>("simh",
+                                          IntTab(0, IOX_SIMH_TGT_ID),
+                                          maptab_iox );
+
    // Clusters
    TsarIobCluster<vci_param_int,
@@ -1111,4 +1129,5 @@
     iox_network->p_to_tgt[IOX_CDMA_TGT_ID]               (signal_vci_tgt_cdma);
     iox_network->p_to_tgt[IOX_IOPI_TGT_ID]               (signal_vci_tgt_iopi);
+    iox_network->p_to_tgt[IOX_SIMH_TGT_ID]               (signal_vci_tgt_simh);
 
     if (cluster_iob0 != cluster_iob1)
@@ -1186,4 +1205,8 @@
     std::cout << "  - IOPIC connected" << std::endl;
 
+    // Simhelper connexion
+    simh->p_clk(signal_clk);
+    simh->p_resetn(signal_resetn);
+    simh->p_vci(signal_vci_tgt_simh);
 
     // IOB0 cluster connexion to IOX network
@@ -1532,4 +1555,7 @@
             signal_vci_ini_iopi.print_trace("[SIG]IOPI_INI");
             signal_vci_tgt_iopi.print_trace("[SIG]IOPI_TGT");
+
+            signal_vci_tgt_simh.print_trace("[SIG]SIMH_TGT");
+
             iox_network->print_trace();
 
@@ -1553,4 +1579,6 @@
    try {
       return _main(argc, argv);
+   } catch (soclib::exception::RunTimeError &e) {
+      std::cout << "RunTimeError: " << e.what() << std::endl;
    } catch (std::exception &e) {
       std::cout << e.what() << std::endl;
Index: /branches/reconfiguration/platforms/tsar_generic_iob/top.desc
===================================================================
--- /branches/reconfiguration/platforms/tsar_generic_iob/top.desc	(revision 768)
+++ /branches/reconfiguration/platforms/tsar_generic_iob/top.desc	(revision 769)
@@ -2,5 +2,5 @@
 # -*- python -*-
 
-# VCI parameters 
+# VCI parameters
 vci_cell_size_int   = 4
 vci_cell_size_ext   = 8
@@ -16,5 +16,5 @@
 vci_wrplen_size     = 1
 
-# internal DSPIN network parameters 
+# internal DSPIN network parameters
 int_dspin_cmd_flit_size = 39
 int_dspin_rsp_flit_size = 32
@@ -26,61 +26,65 @@
 todo = Platform('caba', 'top.cpp',
 
-	uses = [
+    uses = [
             # cluster
-            Uses('caba:reconfiguration:tsar_iob_cluster', 
+            Uses('caba:reconfiguration:tsar_iob_cluster',
                   vci_data_width_int  = vci_cell_size_int,
-                  vci_data_width_ext  = vci_cell_size_ext, 
+                  vci_data_width_ext  = vci_cell_size_ext,
                   dspin_int_cmd_width = int_dspin_cmd_flit_size,
                   dspin_int_rsp_width = int_dspin_rsp_flit_size,
                   dspin_ram_cmd_width = ram_dspin_cmd_flit_size,
                   dspin_ram_rsp_width = ram_dspin_rsp_flit_size),
-                  
+
             # IOX Network
-            Uses('caba:vci_iox_network', 
+            Uses('caba:vci_iox_network',
                   cell_size = vci_cell_size_ext),
 
             # ROM
-            Uses('caba:vci_simple_rom', 
+            Uses('caba:vci_simple_rom',
                   cell_size   = vci_cell_size_ext),
 
             # Frame Buffer
-            Uses('caba:vci_framebuffer', 
+            Uses('caba:vci_framebuffer',
                   cell_size = vci_cell_size_ext),
 
             # Block Device
-            Uses('caba:vci_block_device_tsar', 
+            Uses('caba:vci_block_device_tsar',
                   cell_size = vci_cell_size_ext),
 
-            # NIC 
-            Uses('caba:vci_multi_nic', 
+            # NIC
+            Uses('caba:vci_multi_nic',
                   cell_size = vci_cell_size_ext),
 
             # Chained DMA
-            Uses('caba:vci_chbuf_dma', 
+            Uses('caba:vci_chbuf_dma',
                   cell_size = vci_cell_size_ext),
 
             # TTY
-            Uses('caba:vci_multi_tty', 
+            Uses('caba:vci_multi_tty',
                   cell_size = vci_cell_size_ext),
 
             # IOPIC
-            Uses('caba:vci_iopic', 
+            Uses('caba:vci_iopic',
                   cell_size = vci_cell_size_ext),
 
-	        Uses('common:elf_file_loader'),
+            # SIMHELPER
+            Uses('caba:vci_simhelper',
+                  cell_size = vci_cell_size_ext),
+
+            Uses('common:elf_file_loader'),
             Uses('common:plain_file_loader'),
            ],
 
     # default VCI parameters (global variables)
-    cell_size   = vci_cell_size_int,  
-	plen_size   = vci_plen_size,
-	addr_size   = vci_addr_size,
-	rerror_size = vci_rerror_size,
-	clen_size   = vci_clen_size,
-	rflag_size  = vci_rflag_size,
-	srcid_size  = vci_srcid_size,
-	pktid_size  = vci_pktid_size,
-	trdid_size  = vci_trdid_size,
-	wrplen_size = vci_wrplen_size,
+    cell_size   = vci_cell_size_int,
+    plen_size   = vci_plen_size,
+    addr_size   = vci_addr_size,
+    rerror_size = vci_rerror_size,
+    clen_size   = vci_clen_size,
+    rflag_size  = vci_rflag_size,
+    srcid_size  = vci_srcid_size,
+    pktid_size  = vci_pktid_size,
+    trdid_size  = vci_trdid_size,
+    wrplen_size = vci_wrplen_size,
 
 )
