Index: trunk/modules/vci_synthetic_initator/caba/sources/include/vci_synthetic_initiator.h
===================================================================
--- trunk/modules/vci_synthetic_initator/caba/sources/include/vci_synthetic_initiator.h	(revision 110)
+++ trunk/modules/vci_synthetic_initator/caba/sources/include/vci_synthetic_initiator.h	(revision 111)
@@ -39,4 +39,5 @@
 #include "int_tab.h"
 #include "mapping_table.h"
+#include "arithmetics.h"
 
 namespace soclib {  namespace caba {
Index: trunk/modules/vci_synthetic_initator/caba/sources/src/vci_synthetic_initiator.cpp
===================================================================
--- trunk/modules/vci_synthetic_initator/caba/sources/src/vci_synthetic_initiator.cpp	(revision 110)
+++ trunk/modules/vci_synthetic_initator/caba/sources/src/vci_synthetic_initiator.cpp	(revision 111)
@@ -134,5 +134,6 @@
 		  << " : " << m_cpt_cycles << " cycles " 
 		  << " : state = " << state_str[r_vci_fsm] 
-		  << " Adresse to send : " << m_address_to_send << std::endl;
+		  << " Adresse to send : " << m_address_to_send 
+		  << " Number of broadcast to receive : " << m_bc_nrsp << std::endl;
   }
 
@@ -188,9 +189,9 @@
 	  if (m_date_fifo.rok()){
 	    if (r_broadcast_req.read()){
-	      m_address_to_send = (((((((((m_xmin << 5) | m_xmax ) << 5 ) | m_ymin ) << 5 ) | m_ymax ) << 5 ) << vci_param::N-(4*5) ) | 0x3) | 0 ;
+	      m_address_to_send = 0x3 | (0x7c1f << vci_param::N-20) ;
 	      r_vci_fsm = VCI_BC_SEND ;
 	    } else {
 	      r_vci_fsm = VCI_SINGLE_SEND ;
-	      m_address_to_send = destAdress() << 32-10;
+	      m_address_to_send = destAdress() << (vci_param::N)-(soclib::common::uint32_log2((uint32_t)m_xmesh)+soclib::common::uint32_log2((uint32_t)m_ymesh));
 	      m_count = 0;
 	    }
@@ -229,7 +230,9 @@
       case VCI_BC_SEND:
         {
-	  m_bc_nrsp = (m_xmax - m_xmin) * (m_ymax - m_ymin);
-	  r_vci_fsm = VCI_BC_SEND;
-          break;
+	  if (p_vci.cmdack.read()) {
+	    m_bc_nrsp = (m_xmax - m_xmin) * (m_ymax - m_ymin) ;
+	    r_vci_fsm = VCI_BC_RECEIVE;
+            break;
+	  }
         }
         ////////////////////
@@ -237,5 +240,5 @@
         {
 	  if (p_vci.rspval.read()){
-	    if (m_bc_nrsp == 0) {
+	    if (m_bc_nrsp == 1) {
 	      r_broadcast_req = false;
 	      m_address_to_send = 0;
