diff --git a/MPSoC/soclib/soclib/module/network_component/vci_vgsb/caba/source/include/vci_vgsb.h b/MPSoC/soclib/soclib/module/network_component/vci_vgsb/caba/source/include/vci_vgsb.h
index 242e4c34daccaf25ef05388ededc9f924260a23b..1721e7146df003afba9c9317d81547d8ff42d9d8 100644
--- a/MPSoC/soclib/soclib/module/network_component/vci_vgsb/caba/source/include/vci_vgsb.h
+++ b/MPSoC/soclib/soclib/module/network_component/vci_vgsb/caba/source/include/vci_vgsb.h
@@ -102,9 +102,9 @@ class VciVgsb
 	sc_signal<uint32_t>						r_cycle;
 	
 	// constants
-	const soclib::common::AddressDecodingTable<uint32_t, int> 	m_routing_table;
-	const size_t 							m_nb_initiator;	
-	const size_t 							m_nb_target;
+	const soclib::common::AddressDecodingTable<uint64_t, size_t> m_routing_table;
+	const size_t 							                     m_nb_initiator;	
+	const size_t 							                     m_nb_target;
 
 protected:
 
@@ -122,7 +122,8 @@ public:
 	VciVgsb( sc_module_name                 name,
              soclib::common::MappingTable 	&maptab,
              size_t	                        nb_master,
-             size_t	                        nb_slave );
+             size_t	                        nb_slave,
+             size_t                         default_target = 0 );
 
 	~VciVgsb();
 
@@ -132,7 +133,7 @@ public:
 	void genMealy_rspack();
 	void genMealy_cmdval();
 	void genMealy_cmdack();
-        void print_trace();
+    void print_trace();
 
 }; // end class VciVgsb
 
diff --git a/MPSoC/soclib/soclib/module/network_component/vci_vgsb/caba/source/src/vci_vgsb.cpp b/MPSoC/soclib/soclib/module/network_component/vci_vgsb/caba/source/src/vci_vgsb.cpp
index f6556802090b7ffa6d8b6ec47e50de02122d75b2..76c8dec316765746e88f15aed5a52d2ab8cb01f5 100644
--- a/MPSoC/soclib/soclib/module/network_component/vci_vgsb/caba/source/src/vci_vgsb.cpp
+++ b/MPSoC/soclib/soclib/module/network_component/vci_vgsb/caba/source/src/vci_vgsb.cpp
@@ -37,24 +37,30 @@ namespace soclib { namespace caba {
 
 ////////////////////////////
 template<typename vci_param>
-VciVgsb<vci_param>::VciVgsb (	sc_module_name 		name,
-                        	MappingTable 		&maptab,
-                        	size_t 			nb_master,
-                        	size_t 			nb_slave)
+VciVgsb<vci_param>::VciVgsb ( sc_module_name    name,
+                       	      MappingTable      &maptab,
+                              size_t            nb_master,
+                              size_t            nb_target,
+                              size_t            default_target_id )
     : sc_core::sc_module(name),
-      r_fsm("r_fsm"),
-      r_initiator_index("r_initiator_index"),
-      r_target_index("r_target_index"),
-      r_vci_counter(soclib::common::alloc_elems<sc_signal<uint32_t> >("r_vci_counter", nb_master, nb_slave)),
-      r_cycle("r_cycle"),
-      m_routing_table(maptab.getRoutingTable( IntTab() ) ),
-      m_nb_initiator(nb_master),
-      m_nb_target(nb_slave),
-      p_clk("clk"),
-      p_resetn("resetn"),
-      p_to_target(soclib::common::alloc_elems<soclib::caba::VciInitiator<vci_param> >("p_to_target", nb_slave)),
-      p_to_initiator(soclib::common::alloc_elems<soclib::caba::VciTarget<vci_param> >("p_to_initiator", nb_master))
+      r_fsm( "r_fsm" ),
+      r_initiator_index( "r_initiator_index" ),
+      r_target_index( "r_target_index" ),
+      r_vci_counter(alloc_elems<sc_signal<uint32_t> >("r_vci_counter", nb_master, nb_target)),
+      r_cycle( "r_cycle" ),
+      m_routing_table( maptab.getGlobalIndexFromAddress( default_target_id) ),
+      m_nb_initiator( nb_master ),
+      m_nb_target( nb_target ),
+      p_clk( "clk" ),
+      p_resetn( "resetn" ),
+      p_to_target( alloc_elems<VciInitiator<vci_param> >("p_to_target", nb_target) ),
+      p_to_initiator( alloc_elems<VciTarget<vci_param> >("p_to_initiator", nb_master) )
 {
+    std::cout << "  - Building VciVgsb : " << name << std::dec << std::endl
+              << "    => targets        = "  << nb_target << std::endl
+              << "    => initiators     = "  << nb_master << std::endl
+              << "    => default target = "  << default_target_id << std::endl;
+
 	SC_METHOD(transition);
 	dont_initialize();
 	sensitive << p_clk.pos();
@@ -62,7 +68,7 @@ VciVgsb<vci_param>::VciVgsb (	sc_module_name 		name,
 	SC_METHOD(genMealy_rspval);
 	dont_initialize();
 	sensitive << p_clk.neg();
-	for ( size_t i=0 ; i<nb_slave  ; i++ ) sensitive << p_to_target[i];
+	for ( size_t i=0 ; i<nb_target  ; i++ ) sensitive << p_to_target[i];
 
 	SC_METHOD(genMealy_rspack);
 	dont_initialize();
@@ -77,9 +83,9 @@ VciVgsb<vci_param>::VciVgsb (	sc_module_name 		name,
 	SC_METHOD(genMealy_cmdack);
 	dont_initialize();
 	sensitive << p_clk.neg();
-	for ( size_t i=0 ; i<nb_slave  ; i++ ) sensitive << p_to_target[i];
+	for ( size_t i=0 ; i<nb_target  ; i++ ) sensitive << p_to_target[i];
 
-	if ( !m_routing_table.isAllBelow( nb_slave ) ) {
+	if ( !m_routing_table.isAllBelow( nb_target ) ) {
 		std::cout << "error in vci_gsb component" << std::endl;
 		std::cout << "one target index is larger than the number of targets" << std::endl;
 		exit(0);