Index: /branches/fault_tolerance/platform/tsar_generic_iob/Makefile
===================================================================
--- /branches/fault_tolerance/platform/tsar_generic_iob/Makefile	(revision 657)
+++ /branches/fault_tolerance/platform/tsar_generic_iob/Makefile	(revision 658)
@@ -4,4 +4,5 @@
 MAKE      := make
 TARGET    := simul.x
+ARGS      ?=
 
 all: $(TARGET) preloader tags
@@ -37,4 +38,5 @@
 SIMULATOR_ARGS += -DISK soft/disk.dmg
 SIMULATOR_ARGS += -XSIZE 2 -YSIZE 2 -NPROCS 1
+SIMULATOR_ARGS += $(ARGS)
 
 run: $(TARGET) $(PRELOADER_NAME)
Index: /branches/fault_tolerance/platform/tsar_generic_iob/conf/preloader_4c1p/defs_platform.h
===================================================================
--- /branches/fault_tolerance/platform/tsar_generic_iob/conf/preloader_4c1p/defs_platform.h	(revision 657)
+++ /branches/fault_tolerance/platform/tsar_generic_iob/conf/preloader_4c1p/defs_platform.h	(revision 658)
@@ -14,4 +14,5 @@
 #define IOC_PADDR_BASE   0xB3000000
 #define TTY_PADDR_BASE   0xB4000000
+#define RDK_PADDR_BASE   0xFFFFFFFF // not used
 
 #define SYSCLK_FREQ		 50000000
Index: /branches/fault_tolerance/platform/tsar_generic_iob/top.cpp
===================================================================
--- /branches/fault_tolerance/platform/tsar_generic_iob/top.cpp	(revision 657)
+++ /branches/fault_tolerance/platform/tsar_generic_iob/top.cpp	(revision 658)
@@ -126,5 +126,4 @@
 #include "vci_multi_tty.h"
 #include "vci_multi_nic.h"
-#include "vci_simple_rom.h"
 #include "vci_block_device_tsar.h"
 #include "vci_framebuffer.h"
@@ -233,11 +232,11 @@
 
 #define BROM_BASE 0x00BFC00000
-#define BROM_SIZE 0x0000100000 // 1 M Kbytes
+#define BROM_SIZE 0x0000010000 // 64 Kbytes
 
 #define IOBX_BASE 0x00BE000000
-#define IOBX_SIZE 0x0000001000 // 4 K Kbytes
+#define IOBX_SIZE 0x0000001000 // 4  Kbytes
 
 #define BDEV_BASE 0x00B3000000
-#define BDEV_SIZE 0x0000008000 // 4 Kbytes
+#define BDEV_SIZE 0x0000008000 // 4  Kbytes
 
 #define MTTY_BASE 0x00B4000000
@@ -305,6 +304,7 @@
 #define INT_MEMC_TGT_ID 0
 #define INT_XICU_TGT_ID 1
-#define INT_MDMA_TGT_ID 2
-#define INT_IOBX_TGT_ID 3
+#define INT_BROM_TGT_ID 2
+#define INT_MDMA_TGT_ID 3
+#define INT_IOBX_TGT_ID 4
 
 #define INT_PROC_INI_ID 0 // from 0 to 7
@@ -331,6 +331,5 @@
 #define IOX_MNIC_TGT_ID 4
 #define IOX_CDMA_TGT_ID 5
-#define IOX_BROM_TGT_ID 6
-#define IOX_MTTY_TGT_ID 7
+#define IOX_MTTY_TGT_ID 6
 
 #define IOX_IOB0_INI_ID 0 // Don't change this value
@@ -552,5 +551,5 @@
          bool cacheable = true;
 
-         // the four following segments are defined in all clusters
+         // the five following segments are defined in all clusters
 
          std::ostringstream smemc_conf;
@@ -572,4 +571,10 @@
                                 not cacheable));
 
+         std::ostringstream sbrom;
+         sbrom << "int_seg_brom_" << x << "_" << y;
+         maptab_int.add(Segment(sbrom.str(), BROM_BASE+offset, BROM_SIZE,
+                                IntTab(cluster(x,y),INT_BROM_TGT_ID),
+                                cacheable));
+
          std::ostringstream smdma;
          smdma << "int_seg_mdma_" << x << "_" << y;
@@ -611,10 +616,4 @@
                                    IntTab(cluster(x,y), INT_IOBX_TGT_ID),
                                    not cacheable));
-
-            std::ostringstream srom;
-            srom << "int_seg_brom_" << x << "_" << y;
-            maptab_int.add(Segment(srom.str(), BROM_BASE+offset, BROM_SIZE,
-                                   IntTab(cluster(x,y), INT_IOBX_TGT_ID),
-                                   cacheable ));
 
             std::ostringstream sdma;
@@ -728,8 +727,4 @@
     maptab_iox.add(Segment("iox_seg_cdma_1", CDMA_BASE + iob1_base, CDMA_SIZE,
                            IntTab(cluster_iob1, IOX_CDMA_TGT_ID), false));
-    maptab_iox.add(Segment("iox_seg_brom_0", BROM_BASE + iob0_base, BROM_SIZE,
-                           IntTab(cluster_iob0,IOX_BROM_TGT_ID), false));
-    maptab_iox.add(Segment("iox_seg_brom_1", BROM_BASE + iob1_base, BROM_SIZE,
-                           IntTab(cluster_iob1,IOX_BROM_TGT_ID), false));
 
     // Each physical RAM can be accessed through IOB0, or through IOB1.
@@ -832,5 +827,4 @@
     VciSignals<vci_param_ext> signal_vci_tgt_fbuf("signal_vci_tgt_fbuf");
     VciSignals<vci_param_ext> signal_vci_tgt_mnic("signal_vci_tgt_mnic");
-    VciSignals<vci_param_ext> signal_vci_tgt_brom("signal_vci_tgt_brom");
     VciSignals<vci_param_ext> signal_vci_tgt_bdev("signal_vci_tgt_bdev");
     VciSignals<vci_param_ext> signal_vci_tgt_cdma("signal_vci_tgt_cdma");
@@ -947,12 +941,7 @@
    iox_network = new VciIoxNetwork<vci_param_ext>("iox_network",
                                                   maptab_iox,
-                                                  8,   // number of targets
+                                                  7,   // number of targets
                                                   4 ); // number of initiators
-   // boot ROM
-   VciSimpleRom<vci_param_ext>*  brom;
-   brom = new VciSimpleRom<vci_param_ext>("brom",
-                                          IntTab(0, IOX_BROM_TGT_ID),
-                                          maptab_iox,
-                                          loader );
+
    // Network Controller
    VciMultiNic<vci_param_ext>*  mnic;
@@ -1060,4 +1049,5 @@
                .int_mdma_tgtid    = INT_MDMA_TGT_ID,
                .int_iobx_tgtid    = INT_IOBX_TGT_ID,
+               .int_brom_tgtid    = INT_BROM_TGT_ID,
                .int_proc_srcid    = INT_PROC_INI_ID,
                .int_mdma_srcid    = INT_MDMA_INI_ID,
@@ -1109,5 +1099,4 @@
     iox_network->p_to_tgt[IOX_FBUF_TGT_ID] (signal_vci_tgt_fbuf);
     iox_network->p_to_tgt[IOX_MNIC_TGT_ID] (signal_vci_tgt_mnic);
-    iox_network->p_to_tgt[IOX_BROM_TGT_ID] (signal_vci_tgt_brom);
     iox_network->p_to_tgt[IOX_BDEV_TGT_ID] (signal_vci_tgt_bdev);
     iox_network->p_to_tgt[IOX_CDMA_TGT_ID] (signal_vci_tgt_cdma);
@@ -1144,11 +1133,4 @@
 
     std::cout << "  - MNIC connected" << std::endl;
-
-    // BROM connexion
-    brom->p_clk    (signal_clk);
-    brom->p_resetn (signal_resetn);
-    brom->p_vci    (signal_vci_tgt_brom);
-
-    std::cout << "  - BROM connected" << std::endl;
 
     // MTTY connexion
@@ -1635,7 +1617,4 @@
                 signal_vci_ini_cdma.print_trace("[SIG]IOX_CDMA_INI");
 
-//              brom->print_trace();
-//              signal_vci_tgt_brom.print_trace("[SIG]IOX_BROM_TGT");
-
 //              mtty->print_trace();
 //              signal_vci_tgt_mtty.print_trace("[SIG]IOX_MTTY_TGT");
@@ -1660,5 +1639,4 @@
 
    delete iox_network;
-   delete brom;
    delete mnic;
    delete fbuf;
Index: /branches/fault_tolerance/platform/tsar_generic_iob/top.desc
===================================================================
--- /branches/fault_tolerance/platform/tsar_generic_iob/top.desc	(revision 657)
+++ /branches/fault_tolerance/platform/tsar_generic_iob/top.desc	(revision 658)
@@ -40,8 +40,4 @@
                   cell_size = vci_cell_size_ext),
 
-            # ROM
-            Uses('caba:vci_simple_rom', 
-                  cell_size   = vci_cell_size_ext),
-
             # Frame Buffer
             Uses('caba:vci_framebuffer', 
Index: /branches/fault_tolerance/platform/tsar_generic_iob/tsar_iob_cluster/caba/metadata/tsar_iob_cluster.sd
===================================================================
--- /branches/fault_tolerance/platform/tsar_generic_iob/tsar_iob_cluster/caba/metadata/tsar_iob_cluster.sd	(revision 657)
+++ /branches/fault_tolerance/platform/tsar_generic_iob/tsar_iob_cluster/caba/metadata/tsar_iob_cluster.sd	(revision 658)
@@ -45,4 +45,7 @@
 
         Uses('caba:vci_xicu',
+              cell_size          = parameter.Reference('vci_data_width_int')),
+
+		Uses('caba:vci_simple_rom',
               cell_size          = parameter.Reference('vci_data_width_int')),
 
Index: /branches/fault_tolerance/platform/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h
===================================================================
--- /branches/fault_tolerance/platform/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h	(revision 657)
+++ /branches/fault_tolerance/platform/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h	(revision 658)
@@ -21,4 +21,5 @@
 #include "mips32.h"
 #include "vci_simple_ram.h"
+#include "vci_simple_rom.h"
 #include "vci_xicu.h"
 #include "dspin_local_crossbar.h"
@@ -102,4 +103,5 @@
       VciSignals<vci_param_int> signal_int_vci_tgt_memc;
       VciSignals<vci_param_int> signal_int_vci_tgt_xicu;
+      VciSignals<vci_param_int> signal_int_vci_tgt_brom;
       VciSignals<vci_param_int> signal_int_vci_tgt_mdma;
       VciSignals<vci_param_int> signal_int_vci_tgt_iobx;
@@ -118,4 +120,6 @@
       DspinSignals<dspin_int_cmd_width> signal_int_dspin_cmd_xicu_t;
       DspinSignals<dspin_int_rsp_width> signal_int_dspin_rsp_xicu_t;
+      DspinSignals<dspin_int_cmd_width> signal_int_dspin_cmd_brom_t;
+      DspinSignals<dspin_int_rsp_width> signal_int_dspin_rsp_brom_t;
       DspinSignals<dspin_int_cmd_width> signal_int_dspin_cmd_mdma_t;
       DspinSignals<dspin_int_rsp_width> signal_int_dspin_rsp_mdma_t;
@@ -179,4 +183,7 @@
       VciIntDspinTargetWrapperType*    mdma_int_wt;
 
+      VciSimpleRom<vci_param_int>*     brom;
+      VciIntDspinTargetWrapperType*    brom_int_wt;
+
       DspinLocalCrossbar<dspin_int_cmd_width>* int_xbar_cmd_d;
       DspinLocalCrossbar<dspin_int_rsp_width>* int_xbar_rsp_d;
@@ -225,4 +232,5 @@
          size_t int_mdma_tgtid;
          size_t int_iobx_tgtid;
+         size_t int_brom_tgtid;
          size_t int_proc_srcid;
          size_t int_mdma_srcid;
Index: /branches/fault_tolerance/platform/tsar_generic_iob/tsar_iob_cluster/caba/source/src/tsar_iob_cluster.cpp
===================================================================
--- /branches/fault_tolerance/platform/tsar_generic_iob/tsar_iob_cluster/caba/source/src/tsar_iob_cluster.cpp	(revision 657)
+++ /branches/fault_tolerance/platform/tsar_generic_iob/tsar_iob_cluster/caba/source/src/tsar_iob_cluster.cpp	(revision 658)
@@ -160,4 +160,18 @@
          params.x_width + params.y_width + params.l_width);
 
+   ///////////   LOCAL ROM
+   brom = new VciSimpleRom<vci_param_int>(
+         "brom",
+         IntTab(cluster_id, params.int_brom_tgtid),
+         params.mt_int,
+         params.loader,
+         params.x_width + params.y_width);
+
+   std::ostringstream s_wt_brom;
+   s_wt_brom << "brom_wt_" << params.x_id << "_" << params.y_id;
+   brom_int_wt = new VciIntDspinTargetWrapperType (
+         s_wt_brom.str().c_str(),
+         params.x_width + params.y_width + params.l_width);
+
    ///////////   XICU
    std::ostringstream s_xicu;
@@ -201,9 +215,9 @@
    ///////////  Direct LOCAL_XBAR(S)
    size_t nb_direct_initiators = params.nb_procs + 1;
-   size_t nb_direct_targets    = 3;
+   size_t nb_direct_targets    = 4;
    if ((cluster_id == cluster_iob0) or (cluster_id == cluster_iob1))
    {
       nb_direct_initiators = params.nb_procs + 2;
-      nb_direct_targets    = 4;
+      nb_direct_targets    = 5;
    }
 
@@ -462,4 +476,6 @@
    int_xbar_cmd_d->p_local_out[params.int_xicu_tgtid](
          signal_int_dspin_cmd_xicu_t);
+   int_xbar_cmd_d->p_local_out[params.int_brom_tgtid](
+         signal_int_dspin_cmd_brom_t);
    int_xbar_cmd_d->p_local_out[params.int_mdma_tgtid](
          signal_int_dspin_cmd_mdma_t);
@@ -490,4 +506,6 @@
    int_xbar_rsp_d->p_local_in[params.int_xicu_tgtid](
          signal_int_dspin_rsp_xicu_t);
+   int_xbar_rsp_d->p_local_in[params.int_brom_tgtid](
+         signal_int_dspin_rsp_brom_t);
    int_xbar_rsp_d->p_local_in[params.int_mdma_tgtid](
          signal_int_dspin_rsp_mdma_t);
@@ -609,4 +627,16 @@
    memc_ram_wi->p_vci       (signal_ram_vci_ini_memc);
 
+   //////////////////////////////////// BROM
+   brom->p_clk              (this->p_clk);
+   brom->p_resetn           (this->p_resetn);
+   brom->p_vci              (signal_int_vci_tgt_brom);
+
+   //wrapper to INT network
+   brom_int_wt->p_clk       (this->p_clk);
+   brom_int_wt->p_resetn    (this->p_resetn);
+   brom_int_wt->p_dspin_cmd (signal_int_dspin_cmd_brom_t);
+   brom_int_wt->p_dspin_rsp (signal_int_dspin_rsp_brom_t);
+   brom_int_wt->p_vci       (signal_int_vci_tgt_brom);
+
    //////////////////////////////////// XRAM
    xram->p_clk              (this->p_clk);
@@ -726,4 +756,6 @@
    delete xicu;
    delete xicu_int_wt;
+   delete brom;
+   delete brom_int_wt;
    delete mdma;
    delete mdma_int_wt;
