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 179)
+++ /trunk/modules/vci_synthetic_initator/caba/sources/src/vci_synthetic_initiator.cpp	(revision 180)
@@ -150,6 +150,9 @@
   //////////////////////////////////
   {
+	double latency = (double)r_latency_bc.read();
+	double nb      = (double)r_nb_bc.read();
+	std::cout << "Latency BC : " <<std::dec << latency << " nb_bc : " << nb << std::endl;
 	if(m_bc_period)
-	  return ((double)r_latency_bc.read()/(double)r_nb_bc.read());
+	  return (latency/nb);
 	else
 	  return 0;
@@ -176,5 +179,6 @@
 		  << " Number of packets sent : " << std::dec << r_nb_single.read() << " " << r_cmd_trdid.read() 
 		  << " Number of BC sent : " << r_nb_bc.read()
-		  << " Cycles to the next BC : " << r_time_to_next_bc.read() << std::endl;
+		  << " Cycles to the next BC : " << r_time_to_next_bc.read()  
+		  << " FIFO status : " << r_date_fifo.filled_status() << std::endl;
 	for(int i = 0; i < (1<<vci_param::T) ; i++){
 	  std::cout << "ID : " << i << " " << (uint64_t)(r_pending_date[i].read()) << std::endl;
@@ -207,7 +211,7 @@
       // Initializing seed for random numbers generation
 
-#ifndef DETERMINISTIC
-      srand(time(NULL));
-#endif
+//#ifndef DETERMINISTIC
+//      srand(time(NULL));
+//#endif
 
       // Initializing FSMs
@@ -228,8 +232,15 @@
       
       r_cmd_seed       		= (uint32_t)m_srcid;
-
-#ifndef RANDOM_PERIOD
-      r_time_to_next_bc		= m_bc_period;
-#endif
+      
+      //std::cout << name() << " " << std::dec << m_bc_period << std::endl;
+
+      if (m_bc_period){
+        uint32_t a = (uint32_t)(rand()%(2*m_bc_period));
+	//std::cout << name() << " " << std::dec << a << std::endl;
+        r_time_to_next_bc		= a;
+      } else {
+	//std::cout << "c'est 0 " << std::endl;
+        r_time_to_next_bc		= 0;
+      }
 
       return;
@@ -257,4 +268,5 @@
 	      if ( r_pending_fsm[0].read() == false )	// no current broadcast
               {
+		//std::cout << name() << "SENDING BC" << std::endl;
 	        r_cmd_fsm = VCI_BC_SEND ;
 		r_cmd_address = 0x3 | (0x7c1f << vci_param::N-20) ;
@@ -311,4 +323,5 @@
 	  if (p_vci.cmdack.read()) 
           {
+	    //std::cout << std::dec << r_cpt_cycles.read() << "ns " << name() << " BC SEND " << r_nb_bc.read() << " " << r_time_to_next_bc.read() << std::endl;
 	    r_bc_nrsp = (m_xmax - m_xmin) * (m_ymax - m_ymin) ;
 	    r_pending_fsm[0] = true;
@@ -336,4 +349,5 @@
 	  r_pending_fsm[0] = false;
           r_latency_bc = r_latency_bc.read() + (r_cpt_cycles.read() - r_pending_date[0].read());
+	  //std::cout << std::dec << r_cpt_cycles.read() << "ns " << name() << " BC done " << std::endl;
 	}
       }
@@ -358,5 +372,8 @@
       {
         r_nb_bc = r_nb_bc.read() + 1;
-        r_cpt_period = 0;
+//        r_cpt_period = 0;
+//#ifdef RANDOM_PERIOD
+//	r_time_to_next_bc = (uint32_t)(rand()%(2*m_bc_period));
+//#endif
       }
     }
