Index: trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/metadata/tsar_xbar_cluster.sd
===================================================================
--- trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/metadata/tsar_xbar_cluster.sd	(revision 379)
+++ trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/metadata/tsar_xbar_cluster.sd	(revision 389)
@@ -3,52 +3,71 @@
 
 Module('caba:tsar_xbar_cluster',
-	classname = 'soclib::caba::TsarXbarCluster',
-	tmpl_parameters = [
-		parameter.Module('vci_param', default = 'caba:vci_param'),
-		parameter.Module('iss_t'),
-		parameter.Int('cmd_width'),
-		parameter.Int('rsp_width'),
-		],
-	header_files = [ '../source/include/tsar_xbar_cluster.h', ],
-	implementation_files = [ '../source/src/tsar_xbar_cluster.cpp', ],
-	uses = [
-		Uses('caba:base_module'),
-		Uses('common:mapping_table'),
-		Uses('common:iss2'),
-		Uses('caba:vci_cc_vcache_wrapper', 
-                     iss_t = 'common:gdb_iss', 
-                     gdb_iss_t = 'common:mips32el'),
-		Uses('caba:vci_mem_cache'),
-		Uses('caba:vci_simple_ram'),
+    classname = 'soclib::caba::TsarXbarCluster',
+    tmpl_parameters = [
+        parameter.Module('iss_t'),
+        parameter.Int('cmd_width'),
+        parameter.Int('rsp_width'),
+        ],
+    header_files = [ '../source/include/tsar_xbar_cluster.h', ],
+    implementation_files = [ '../source/src/tsar_xbar_cluster.cpp', ],
+    uses = [
+        Uses('caba:base_module'),
+        Uses('common:mapping_table'),
+        Uses('common:iss2'),
+        Uses('caba:vci_cc_vcache_wrapper', 
+              vci_param       = 'caba:vci_param',
+              dspin_in_width  = parameter.Reference('cmd_width'),
+              dspin_out_width = parameter.Reference('rsp_width'),
+              iss_t           = 'common:gdb_iss', 
+              gdb_iss_t       = 'common:mips32el'
+            ),
+        Uses('caba:vci_mem_cache',
+              vci_param_int   = 'caba:vci_param',
+              vci_param_ext   = 'caba:vci_param_bis',
+              dspin_in_width  = parameter.Reference('rsp_width'),
+              dspin_out_width = parameter.Reference('cmd_width')
+            ),
+        Uses('caba:vci_simple_ram',
+              vci_param       = 'caba:vci_param_bis'
+            ),
+        Uses('caba:vci_simple_ram',
+              vci_param       = 'caba:vci_param'
+            ),
         Uses('caba:vci_xicu'),
         Uses('caba:dspin_local_crossbar', 
-              flit_width = parameter.Reference('cmd_width')),
+              flit_width      = parameter.Reference('cmd_width')
+            ),
         Uses('caba:dspin_local_crossbar', 
-              flit_width = parameter.Reference('rsp_width')),
+              flit_width      = parameter.Reference('rsp_width')
+            ),
         Uses('caba:vci_dspin_initiator_wrapper', 
               dspin_cmd_width = parameter.Reference('cmd_width'),
-              dspin_rsp_width = parameter.Reference('rsp_width')),
+              dspin_rsp_width = parameter.Reference('rsp_width')
+            ),
         Uses('caba:vci_dspin_target_wrapper',
               dspin_cmd_width = parameter.Reference('cmd_width'),
-              dspin_rsp_width = parameter.Reference('rsp_width')),
+              dspin_rsp_width = parameter.Reference('rsp_width')
+            ),
         Uses('caba:virtual_dspin_router', 
-                     flit_width = parameter.Reference('cmd_width')),
+              flit_width      = parameter.Reference('cmd_width')
+            ),
         Uses('caba:virtual_dspin_router', 
-                     flit_width = parameter.Reference('rsp_width')),
-		Uses('caba:vci_multi_tty'),
-		Uses('caba:vci_framebuffer'),
-		Uses('caba:vci_multi_nic'),
-		Uses('caba:vci_block_device_tsar'),
-		Uses('caba:vci_multi_dma'),
-		Uses('common:elf_file_loader'),
-		],
-	ports = [
-		Port('caba:bit_in', 'p_resetn', auto = 'resetn'),
-		Port('caba:clock_in', 'p_clk', auto = 'clock'),
-		Port('caba:dspin_output', 'p_cmd_out', [2, 4], dspin_data_size = parameter.Reference('cmd_width')),
-		Port('caba:dspin_input', 'p_cmd_in', [2, 4], dspin_data_size = parameter.Reference('cmd_width')),
-		Port('caba:dspin_output', 'p_rsp_out', [2, 4], dspin_data_size = parameter.Reference('rsp_width')), 
-		Port('caba:dspin_input', 'p_rsp_in', [2, 4], dspin_data_size = parameter.Reference('rsp_width')),
-		],
+              flit_width      = parameter.Reference('rsp_width')
+            ),
+        Uses('caba:vci_multi_tty'),
+        Uses('caba:vci_framebuffer'),
+        Uses('caba:vci_multi_nic'),
+        Uses('caba:vci_block_device_tsar'),
+        Uses('caba:vci_multi_dma'),
+        Uses('common:elf_file_loader'),
+        ],
+    ports = [
+        Port('caba:bit_in'      , 'p_resetn' , auto = 'resetn'),
+        Port('caba:clock_in'    , 'p_clk'    , auto = 'clock'),
+        Port('caba:dspin_output', 'p_cmd_out', [2, 4], dspin_data_size = parameter.Reference('cmd_width')),
+        Port('caba:dspin_input' , 'p_cmd_in' , [2, 4], dspin_data_size = parameter.Reference('cmd_width')),
+        Port('caba:dspin_output', 'p_rsp_out', [2, 4], dspin_data_size = parameter.Reference('rsp_width')), 
+        Port('caba:dspin_input' , 'p_rsp_in' , [2, 4], dspin_data_size = parameter.Reference('rsp_width')),
+        ],
 )
 
Index: trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/include/tsar_xbar_cluster.h
===================================================================
--- trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/include/tsar_xbar_cluster.h	(revision 379)
+++ trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/include/tsar_xbar_cluster.h	(revision 389)
@@ -34,133 +34,184 @@
 #include "vci_cc_vcache_wrapper.h"
 
-namespace soclib { namespace caba	{
+///////////////////////////////////////////////////////////
+//          VCI parameters for DIRECT network          
+///////////////////////////////////////////////////////////
+#define cell_width            4
+#define address_width         32
+#define plen_width            8
+#define error_width           2
+#define clen_width            1
+#define rflag_width           1
+#define srcid_width           14
+#define pktid_width           4
+#define trdid_width           4
+#define wrplen_width          1
+
+///////////////////////////////////////////////////////////
+//          VCI parameters for EXTERNAL network          
+///////////////////////////////////////////////////////////
+#define cell_width_ext        8 
+#define address_width_ext     address_width 
+#define plen_width_ext        plen_width   
+#define error_width_ext       error_width  
+#define clen_width_ext        clen_width   
+#define rflag_width_ext       rflag_width  
+#define srcid_width_ext       srcid_width  
+#define pktid_width_ext       pktid_width  
+#define trdid_width_ext       trdid_width  
+#define wrplen_width_ext      wrplen_width 
+
+namespace soclib { namespace caba {
 
 ///////////////////////////////////////////////////////////////////////////
-template<typename vci_param, typename iss_t, int cmd_width, int rsp_width>
+template<
+    typename iss_t, int cmd_width, int rsp_width
+    >
 class TsarXbarCluster 
 ///////////////////////////////////////////////////////////////////////////
     : public soclib::caba::BaseModule
 {
+    // Define VCI parameters
+    typedef soclib::caba::VciParams<cell_width,
+            plen_width,
+            address_width,
+            error_width,                                   
+            clen_width,
+            rflag_width,
+            srcid_width,
+            pktid_width,
+            trdid_width,
+            wrplen_width> vci_param_d;
+
+    typedef soclib::caba::VciParamsBis<cell_width_ext,
+            plen_width_ext,
+            address_width_ext,
+            error_width_ext,                                   
+            clen_width_ext,
+            rflag_width_ext,
+            srcid_width_ext,
+            pktid_width_ext,
+            trdid_width_ext,
+            wrplen_width_ext> vci_param_x;
 
   public:
 
-	// Ports
-    sc_in<bool>                             		p_clk;
-    sc_in<bool>                             		p_resetn;
-	soclib::caba::DspinOutput<cmd_width>   			**p_cmd_out;
-	soclib::caba::DspinInput<cmd_width>    			**p_cmd_in;
-    soclib::caba::DspinOutput<rsp_width>           	**p_rsp_out;
-    soclib::caba::DspinInput<rsp_width>            	**p_rsp_in;
+    // Ports
+    sc_in<bool>                                     p_clk;
+    sc_in<bool>                                     p_resetn;
+    soclib::caba::DspinOutput<cmd_width>            **p_cmd_out;
+    soclib::caba::DspinInput<cmd_width>             **p_cmd_in;
+    soclib::caba::DspinOutput<rsp_width>            **p_rsp_out;
+    soclib::caba::DspinInput<rsp_width>             **p_rsp_in;
 
     // interrupt signals
-	sc_signal<bool>     	signal_false;
-	sc_signal<bool> 		signal_proc_it[8];
-	sc_signal<bool> 		signal_irq_mdma[8];
-	sc_signal<bool>			signal_irq_mtty[23];
-	sc_signal<bool> 		signal_irq_mnic_rx[8];	// unused
-	sc_signal<bool> 		signal_irq_mnic_tx[8];	// unused
-	sc_signal<bool> 		signal_irq_bdev;
-	
-	// DSPIN signals between DSPIN routers and local_crossbars
-	DspinSignals<cmd_width> 	signal_dspin_cmd_l2g_d; 
-	DspinSignals<cmd_width> 	signal_dspin_cmd_g2l_d; 
-	DspinSignals<cmd_width> 	signal_dspin_m2p_l2g_c;
-	DspinSignals<cmd_width> 	signal_dspin_m2p_g2l_c; 
-	DspinSignals<rsp_width> 	signal_dspin_rsp_l2g_d; 
-	DspinSignals<rsp_width> 	signal_dspin_rsp_g2l_d; 
-	DspinSignals<rsp_width> 	signal_dspin_p2m_l2g_c;
-	DspinSignals<rsp_width> 	signal_dspin_p2m_g2l_c;
-
-	// Direct VCI signals to VCI/DSPIN wrappers
-	VciSignals<vci_param> 		signal_vci_ini_proc[8]; 
-	VciSignals<vci_param>  		signal_vci_ini_mdma; 
-	VciSignals<vci_param>  		signal_vci_ini_bdev; 
-
-	VciSignals<vci_param>		signal_vci_tgt_memc;
-	VciSignals<vci_param> 		signal_vci_tgt_xicu;
-	VciSignals<vci_param> 		signal_vci_tgt_mdma;
-	VciSignals<vci_param> 		signal_vci_tgt_mtty;
-	VciSignals<vci_param> 		signal_vci_tgt_bdev;
-	VciSignals<vci_param> 		signal_vci_tgt_brom;
-	VciSignals<vci_param> 		signal_vci_tgt_fbuf;
-	VciSignals<vci_param> 		signal_vci_tgt_mnic;
-
-	// Direct DSPIN signals to local crossbars
-	DspinSignals<cmd_width>     signal_dspin_cmd_proc_i[8];
-	DspinSignals<rsp_width>     signal_dspin_rsp_proc_i[8];
-	DspinSignals<cmd_width>     signal_dspin_cmd_mdma_i;
-	DspinSignals<rsp_width>     signal_dspin_rsp_mdma_i;
-	DspinSignals<cmd_width>     signal_dspin_cmd_bdev_i;
-	DspinSignals<rsp_width>     signal_dspin_rsp_bdev_i;
-
-	DspinSignals<cmd_width>     signal_dspin_cmd_memc_t;
-	DspinSignals<rsp_width>     signal_dspin_rsp_memc_t;
-	DspinSignals<cmd_width>     signal_dspin_cmd_xicu_t;
-	DspinSignals<rsp_width>     signal_dspin_rsp_xicu_t;
-	DspinSignals<cmd_width>     signal_dspin_cmd_mdma_t;
-	DspinSignals<rsp_width>     signal_dspin_rsp_mdma_t;
-	DspinSignals<cmd_width>     signal_dspin_cmd_mtty_t;
-	DspinSignals<rsp_width>     signal_dspin_rsp_mtty_t;
-	DspinSignals<cmd_width>     signal_dspin_cmd_bdev_t;
-	DspinSignals<rsp_width>     signal_dspin_rsp_bdev_t;
-	DspinSignals<cmd_width>     signal_dspin_cmd_brom_t;
-	DspinSignals<rsp_width>     signal_dspin_rsp_brom_t;
-	DspinSignals<cmd_width>     signal_dspin_cmd_fbuf_t;
-	DspinSignals<rsp_width>     signal_dspin_rsp_fbuf_t;
-	DspinSignals<cmd_width>     signal_dspin_cmd_mnic_t;
-	DspinSignals<rsp_width>     signal_dspin_rsp_mnic_t;
-
-	// Coherence DSPIN signals to local crossbar
-	DspinSignals<cmd_width>     signal_dspin_m2p_memc;
-	DspinSignals<rsp_width>     signal_dspin_p2m_memc;
-	DspinSignals<cmd_width>     signal_dspin_m2p_proc[8];
-	DspinSignals<rsp_width>     signal_dspin_p2m_proc[8];
-
-	// external RAM VCI signal
-	VciSignals<vci_param> 		signal_vci_xram;
-	
+    sc_signal<bool>             signal_false;
+    sc_signal<bool>             signal_proc_it[8];
+    sc_signal<bool>             signal_irq_mdma[8];
+    sc_signal<bool>             signal_irq_mtty[23];
+    sc_signal<bool>             signal_irq_mnic_rx[8];  // unused
+    sc_signal<bool>             signal_irq_mnic_tx[8];  // unused
+    sc_signal<bool>             signal_irq_bdev;
+    
+    // DSPIN signals between DSPIN routers and local_crossbars
+    DspinSignals<cmd_width>     signal_dspin_cmd_l2g_d; 
+    DspinSignals<cmd_width>     signal_dspin_cmd_g2l_d; 
+    DspinSignals<cmd_width>     signal_dspin_m2p_l2g_c;
+    DspinSignals<cmd_width>     signal_dspin_m2p_g2l_c; 
+    DspinSignals<rsp_width>     signal_dspin_rsp_l2g_d; 
+    DspinSignals<rsp_width>     signal_dspin_rsp_g2l_d; 
+    DspinSignals<rsp_width>     signal_dspin_p2m_l2g_c;
+    DspinSignals<rsp_width>     signal_dspin_p2m_g2l_c;
+
+    // Direct VCI signals to VCI/DSPIN wrappers
+    VciSignals<vci_param_d>     signal_vci_ini_proc[8]; 
+    VciSignals<vci_param_d>     signal_vci_ini_mdma; 
+    VciSignals<vci_param_d>     signal_vci_ini_bdev; 
+
+    VciSignals<vci_param_d>     signal_vci_tgt_memc;
+    VciSignals<vci_param_d>     signal_vci_tgt_xicu;
+    VciSignals<vci_param_d>     signal_vci_tgt_mdma;
+    VciSignals<vci_param_d>     signal_vci_tgt_mtty;
+    VciSignals<vci_param_d>     signal_vci_tgt_bdev;
+    VciSignals<vci_param_d>     signal_vci_tgt_brom;
+    VciSignals<vci_param_d>     signal_vci_tgt_fbuf;
+    VciSignals<vci_param_d>     signal_vci_tgt_mnic;
+
+    // Direct DSPIN signals to local crossbars
+    DspinSignals<cmd_width>     signal_dspin_cmd_proc_i[8];
+    DspinSignals<rsp_width>     signal_dspin_rsp_proc_i[8];
+    DspinSignals<cmd_width>     signal_dspin_cmd_mdma_i;
+    DspinSignals<rsp_width>     signal_dspin_rsp_mdma_i;
+    DspinSignals<cmd_width>     signal_dspin_cmd_bdev_i;
+    DspinSignals<rsp_width>     signal_dspin_rsp_bdev_i;
+
+    DspinSignals<cmd_width>     signal_dspin_cmd_memc_t;
+    DspinSignals<rsp_width>     signal_dspin_rsp_memc_t;
+    DspinSignals<cmd_width>     signal_dspin_cmd_xicu_t;
+    DspinSignals<rsp_width>     signal_dspin_rsp_xicu_t;
+    DspinSignals<cmd_width>     signal_dspin_cmd_mdma_t;
+    DspinSignals<rsp_width>     signal_dspin_rsp_mdma_t;
+    DspinSignals<cmd_width>     signal_dspin_cmd_mtty_t;
+    DspinSignals<rsp_width>     signal_dspin_rsp_mtty_t;
+    DspinSignals<cmd_width>     signal_dspin_cmd_bdev_t;
+    DspinSignals<rsp_width>     signal_dspin_rsp_bdev_t;
+    DspinSignals<cmd_width>     signal_dspin_cmd_brom_t;
+    DspinSignals<rsp_width>     signal_dspin_rsp_brom_t;
+    DspinSignals<cmd_width>     signal_dspin_cmd_fbuf_t;
+    DspinSignals<rsp_width>     signal_dspin_rsp_fbuf_t;
+    DspinSignals<cmd_width>     signal_dspin_cmd_mnic_t;
+    DspinSignals<rsp_width>     signal_dspin_rsp_mnic_t;
+
+    // Coherence DSPIN signals to local crossbar
+    DspinSignals<cmd_width>     signal_dspin_m2p_memc;
+    DspinSignals<rsp_width>     signal_dspin_p2m_memc;
+    DspinSignals<cmd_width>     signal_dspin_m2p_proc[8];
+    DspinSignals<rsp_width>     signal_dspin_p2m_proc[8];
+
+    // external RAM VCI signal
+    VciSignals<vci_param_x>   signal_vci_xram;
+    
     // Components
 
-    VciCcVCacheWrapper<vci_param, iss_t>*                 	    proc[8];
-    VciDspinInitiatorWrapper<vci_param,cmd_width,rsp_width>*    wi_proc[4];
-
-    VciMemCache<vci_param>*                               	    memc;
-    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_memc;
-
-    VciXicu<vci_param>*                                     	xicu;
-    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_xicu;
-
-    VciMultiDma<vci_param>*                                     mdma;
-    VciDspinInitiatorWrapper<vci_param,cmd_width,rsp_width>*    wi_mdma;
-    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_mdma;
-
-    VciSimpleRam<vci_param>*                                    xram;
-    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_xram;
-
-    VciSimpleRam<vci_param>*                                    brom;
-    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_brom;
-
-    VciMultiTty<vci_param>*                                     mtty;
-    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_mtty;
-
-    VciFrameBuffer<vci_param>*                                  fbuf;
-    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_fbuf;
-
-    VciMultiNic<vci_param>*                                     mnic;
-    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_mnic;
-
-    VciBlockDeviceTsar<vci_param>*                              bdev;
-    VciDspinInitiatorWrapper<vci_param,cmd_width,rsp_width>*    wi_bdev;
-    VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>*       wt_bdev;
-
-    DspinLocalCrossbar<cmd_width>*                              xbar_cmd_d;
-    DspinLocalCrossbar<rsp_width>*                              xbar_rsp_d;
-    DspinLocalCrossbar<cmd_width>*                              xbar_m2p_c;
-    DspinLocalCrossbar<rsp_width>*                              xbar_p2m_c;
-
-    VirtualDspinRouter<cmd_width>*	                        	router_cmd;
-    VirtualDspinRouter<rsp_width>*                              router_rsp;
-
-	TsarXbarCluster( sc_module_name                     insname,
+    VciCcVCacheWrapper<vci_param_d, cmd_width, rsp_width, iss_t>* proc[8];
+    VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>*    wi_proc[4];
+
+    VciMemCache<vci_param_d, vci_param_x, rsp_width, cmd_width> * memc;
+    VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_memc;
+
+    VciXicu<vci_param_d>*                                         xicu;
+    VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_xicu;
+
+    VciMultiDma<vci_param_d>*                                     mdma;
+    VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>*    wi_mdma;
+    VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_mdma;
+
+    VciSimpleRam<vci_param_x>*                                    xram;
+
+    VciSimpleRam<vci_param_d>*                                    brom;
+    VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_brom;
+
+    VciMultiTty<vci_param_d>*                                     mtty;
+    VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_mtty;
+
+    VciFrameBuffer<vci_param_d>*                                  fbuf;
+    VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_fbuf;
+
+    VciMultiNic<vci_param_d>*                                     mnic;
+    VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_mnic;
+
+    VciBlockDeviceTsar<vci_param_d>*                              bdev;
+    VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>*    wi_bdev;
+    VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>*       wt_bdev;
+
+    DspinLocalCrossbar<cmd_width>*                                xbar_cmd_d;
+    DspinLocalCrossbar<rsp_width>*                                xbar_rsp_d;
+    DspinLocalCrossbar<cmd_width>*                                xbar_m2p_c;
+    DspinLocalCrossbar<rsp_width>*                                xbar_p2m_c;
+
+    VirtualDspinRouter<cmd_width>*                                router_cmd;
+    VirtualDspinRouter<rsp_width>*                                router_rsp;
+
+    TsarXbarCluster( sc_module_name                     insname,
                      size_t                             nb_procs,      // number of processors 
                      size_t                             nb_ttys,       // number of TTY terminals 
@@ -171,11 +222,11 @@
                      const soclib::common::MappingTable &mtd,          // direct mapping table
                      const soclib::common::MappingTable &mtx,          // xram mapping table
-                     size_t	                            x_width,       // x field number of bits
-                     size_t	                            y_width,       // y field number of bits
-                     size_t	                            l_width,       // l field number of bits
-                     size_t	                            tgtid_memc,
-                     size_t	                            tgtid_xicu,
+                     size_t                             x_width,       // x field number of bits
+                     size_t                             y_width,       // y field number of bits
+                     size_t                             l_width,       // l field number of bits
+                     size_t                             tgtid_memc,
+                     size_t                             tgtid_xicu,
                      size_t                             tgtid_mdma,
-                     size_t	                            tgtid_fbuf,
+                     size_t                             tgtid_fbuf,
                      size_t                             tgtid_mtty,
                      size_t                             tgtid_brom,
@@ -187,7 +238,7 @@
                      size_t                             l1_i_sets, 
                      size_t                             l1_d_ways,
-                     size_t                             l1_d_sets,	
+                     size_t                             l1_d_sets,  
                      size_t                             xram_latency,  // external ram latency
-                     bool                               io,	           // I/O cluster if true
+                     bool                               io,            // I/O cluster if true
                      size_t                             xfb,           // frame buffer pixels
                      size_t                             yfb,           // frame buffer lines
@@ -197,6 +248,6 @@
                      char*                              nic_rx_name,   // file name rx packets
                      char*                              nic_tx_name,   // file name tx packets
-                     uint32_t							nic_timeout,   // number of cycles
-			         const Loader                       &loader,       // loader for BROM
+                     uint32_t                           nic_timeout,   // number of cycles
+                     const Loader                       &loader,       // loader for BROM
                      uint32_t                           frozen_cycles, // max frozen cycles
                      uint32_t                           start_debug_cycle,
@@ -204,5 +255,5 @@
                      bool                               proc_debug_ok); 
 
-	~TsarXbarCluster();
+    ~TsarXbarCluster();
 };
 }}
Index: trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp
===================================================================
--- trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp	(revision 379)
+++ trunk/platforms/tsar_generic_xbar/tsar_xbar_cluster/caba/source/src/tsar_xbar_cluster.cpp	(revision 389)
@@ -26,4 +26,10 @@
 #include "../include/tsar_xbar_cluster.h"
 
+#define tmpl(x) template<\
+   typename iss_t,int cmd_width, int rsp_width> \
+   x TsarXbarCluster<\
+   iss_t, cmd_width, rsp_width\
+   >
+
 namespace soclib {
 namespace caba  {
@@ -32,6 +38,5 @@
 //                 Constructor
 //////////////////////////////////////////////////////////////////////////
-template<typename vci_param, typename iss_t, int cmd_width, int rsp_width>
-TsarXbarCluster<vci_param, iss_t, cmd_width, rsp_width>::TsarXbarCluster(
+tmpl(/**/)::TsarXbarCluster(
          sc_module_name                     insname,
          size_t                             nb_procs,
@@ -103,5 +108,5 @@
         std::ostringstream sproc;
         sproc << "proc_" << p;
-        proc[p] = new VciCcVCacheWrapper<vci_param, iss_t>(
+        proc[p] = new VciCcVCacheWrapper<vci_param_d, cmd_width, rsp_width, iss_t>(
                       sproc.str().c_str(),
                       cluster_id*nb_procs + p,        // GLOBAL PROC_ID
@@ -125,5 +130,5 @@
         std::ostringstream swip;
         swip << "wi_proc_" << x_id << "_" << y_id << p;
-        wi_proc[p] = new VciDspinInitiatorWrapper<vci_param,cmd_width,rsp_width>(
+        wi_proc[p] = new VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>(
                      swip.str().c_str(),
                      x_width + y_width + l_width);
@@ -133,5 +138,5 @@
     std::cout << "  - building memc_" << x_id << "_" << y_id << std::endl;
 
-    memc = new VciMemCache<vci_param>(
+    memc = new VciMemCache<vci_param_d, vci_param_x, rsp_width, cmd_width>(
                      "memc",
                      mtd,                                // Mapping Table direct space
@@ -148,5 +153,5 @@
                      memc_debug_ok );
 
-    wt_memc = new VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>(
+    wt_memc = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>(
                      "wt_memc",
                      x_width + y_width + l_width);
@@ -155,5 +160,5 @@
     std::cout << "  - building xram_" << x_id << "_" << y_id << std::endl;
 
-    xram = new VciSimpleRam<vci_param>(
+    xram = new VciSimpleRam<vci_param_x>(
                      "xram",
                      IntTab(cluster_id),
@@ -165,5 +170,5 @@
     std::cout << "  - building xicu_" << x_id << "_" << y_id << std::endl;
 
-    xicu = new VciXicu<vci_param>(
+    xicu = new VciXicu<vci_param_d>(
                      "xicu",
                      mtd,                               // mapping table
@@ -171,8 +176,8 @@
                      nb_procs,                          // number of timer IRQs
                      32,                                // number of hard IRQs
-                     0,                                 // number of soft IRQs
+                     32,                                // number of soft IRQs
                      nb_procs);                         // number of output IRQs
 
-    wt_xicu = new VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>(
+    wt_xicu = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>(
                      "wt_xicu",
                      x_width + y_width + l_width);
@@ -181,5 +186,5 @@
     std::cout << "  - building mdma_" << x_id << "_" << y_id << std::endl;
 
-    mdma = new VciMultiDma<vci_param>(
+    mdma = new VciMultiDma<vci_param_d>(
                      "mdma",
                      mtd,
@@ -189,9 +194,9 @@
                      nb_dmas);                            // number of IRQs
 
-    wt_mdma = new VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>(
+    wt_mdma = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>(
                      "wt_mdma",
                      x_width + y_width + l_width);
 
-    wi_mdma = new VciDspinInitiatorWrapper<vci_param,cmd_width,rsp_width>(
+    wi_mdma = new VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>(
                      "wi_mdma",
                      x_width + y_width + l_width);
@@ -285,5 +290,5 @@
         std::cout << "  - building brom" << std::endl;
 
-        brom = new VciSimpleRam<vci_param>(
+        brom = new VciSimpleRam<vci_param_d>(
                         "brom",
                         IntTab(cluster_id, tgtid_brom),
@@ -291,5 +296,5 @@
                         loader);
 
-        wt_brom = new VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>("wt_brom",
+        wt_brom = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>("wt_brom",
                      x_width + y_width + l_width);
 
@@ -297,5 +302,5 @@
         std::cout << "  - building fbuf" << std::endl;
 
-        fbuf = new VciFrameBuffer<vci_param>(
+        fbuf = new VciFrameBuffer<vci_param_d>(
                         "fbuf",
                         IntTab(cluster_id, tgtid_fbuf),
@@ -303,5 +308,5 @@
                         xfb, yfb); 
 
-        wt_fbuf = new VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>("wt_fbuf",
+        wt_fbuf = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>("wt_fbuf",
                      x_width + y_width + l_width);
 
@@ -309,5 +314,5 @@
         std::cout << "  - building bdev" << std::endl;
 
-        bdev = new VciBlockDeviceTsar<vci_param>(
+        bdev = new VciBlockDeviceTsar<vci_param_d>(
                         "bdev",
                         mtd,
@@ -318,7 +323,7 @@
                         64);            // burst size
 
-        wt_bdev = new VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>("wt_bdev",
-                     x_width + y_width + l_width);
-        wi_bdev = new VciDspinInitiatorWrapper<vci_param,cmd_width,rsp_width>("wi_bdev",
+        wt_bdev = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>("wt_bdev",
+                     x_width + y_width + l_width);
+        wi_bdev = new VciDspinInitiatorWrapper<vci_param_d,cmd_width,rsp_width>("wi_bdev",
                      x_width + y_width + l_width);
 
@@ -326,5 +331,5 @@
         std::cout << "  - building mnic" << std::endl;
 
-        mnic = new VciMultiNic<vci_param>(
+        mnic = new VciMultiNic<vci_param_d>(
                         "mnic",
                         IntTab(cluster_id, tgtid_mnic),
@@ -336,5 +341,5 @@
                         0 );           // mac_2 address
 
-        wt_mnic = new VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>("wt_mnic",
+        wt_mnic = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>("wt_mnic",
                      x_width + y_width + l_width);
 
@@ -349,5 +354,5 @@
             vect_names.push_back(term_name.str().c_str());
         }
-        mtty = new VciMultiTty<vci_param>(
+        mtty = new VciMultiTty<vci_param_d>(
                         "mtty",
                         IntTab(cluster_id, tgtid_mtty),
@@ -355,5 +360,5 @@
                         vect_names);
 
-        wt_mtty = new VciDspinTargetWrapper<vci_param,cmd_width,rsp_width>("wt_mtty",
+        wt_mtty = new VciDspinTargetWrapper<vci_param_d,cmd_width,rsp_width>("wt_mtty",
                      x_width + y_width + l_width);
 
@@ -677,7 +682,5 @@
 //    destructor
 ///////////////////////////////////////////////////////////////////////////
-template<typename vci_param, typename iss_t, int cmd_width, int rsp_width>
-TsarXbarCluster<vci_param, iss_t, cmd_width, rsp_width>::~TsarXbarCluster() {}
-
+tmpl(/**/)::~TsarXbarCluster() {}
 }
 }
