Index: trunk/modules/vci_io_bridge/caba/source/src/vci_io_bridge.cpp
===================================================================
--- trunk/modules/vci_io_bridge/caba/source/src/vci_io_bridge.cpp	(revision 451)
+++ trunk/modules/vci_io_bridge/caba/source/src/vci_io_bridge.cpp	(revision 549)
@@ -93,10 +93,14 @@
     };
 
-const char *miss_wti_fsm_state_str[] = {  
-        "MISS_WTI_IDLE_MISS",
-        "MISS_WTI_IDLE_WTI",
+const char *miss_wti_cmd_state_str[] = 
+    {  
+        "MISS_WTI_CMD_IDLE",
         "MISS_WTI_CMD_WTI",
+        "MISS_WTI_CMD_MISS",
+    };
+const char *miss_wti_rsp_state_str[] = 
+    {  
+        "MISS_WTI_RSP_IDLE",
         "MISS_WTI_RSP_WTI",
-        "MISS_WTI_CMD_MISS",
         "MISS_WTI_RSP_MISS",
     };
@@ -268,5 +272,6 @@
         std::cout << "    => segment " << int_seg->name()
                   << " / base = " << std::hex << int_seg->baseAddress()
-                  << " / size = " << int_seg->size() << std::endl; 
+                  << " / size = " << int_seg->size() 
+                  << " / special = " << int_seg->special() << std::endl; 
     }
 
@@ -332,5 +337,5 @@
 ////////////////////////////////////
 {
-    // b0 : IOtlb trace
+    // b0 : IOTLB trace
 
     std::cout << std::dec << "IO_BRIDGE " << name() << std::endl;
@@ -341,5 +346,6 @@
               << " | " << config_cmd_fsm_state_str[r_config_cmd_fsm.read()]
               << " | " << config_rsp_fsm_state_str[r_config_rsp_fsm.read()]
-              << " | " << miss_wti_fsm_state_str[r_miss_wti_cmd_fsm.read()]
+              << " | " << miss_wti_cmd_state_str[r_miss_wti_cmd_fsm.read()]
+              << " | " << miss_wti_rsp_state_str[r_miss_wti_rsp_fsm.read()]
               << std::endl;
 
@@ -348,8 +354,4 @@
         std::cout << "  IOTLB" << std::endl;
         r_iotlb.printTrace();
-    }
-    if(mode & 0x02)
-    {
-    	
     }
 }
@@ -1248,12 +1250,17 @@
             // chek segments
             std::list<soclib::common::Segment>::iterator seg;
-            bool found = false;
+            bool found   = false;
+            bool special = false;
             for ( seg = m_int_seglist.begin() ; 
                   seg != m_int_seglist.end() and not found ; seg++ )
             {
-                if ( seg->contains(paddr) )  found = true;
+                if ( seg->contains(paddr) )  
+                {
+                   found   = true;
+                   special = seg->special();
+                }
             }
            
-            if ( found and seg->special() )  // IO_BRIDGE itself
+            if ( found and special )  // IO_BRIDGE itself
             {
                 uint32_t      rdata  = 0;
@@ -1988,5 +1995,7 @@
 
     // VCI initiator command  on INT network 
-    // it depends on the MISS_WTI_CMD FSM state
+    // it depends on the MISS_WTI_CMD FSM state   
+    // - WTI : single flit WRITE
+    // - MISS TLB : multi-flit READ for a complete cache line
 
     // default values
@@ -1997,7 +2006,7 @@
     p_vci_ini_int.wrap    = false;
     p_vci_ini_int.clen    = 0;
-    p_vci_ini_int.contig  = false;
-    p_vci_ini_int.cons    = true;
-    p_vci_ini_int.be      = 0xFF;
+    p_vci_ini_int.contig  = true;
+    p_vci_ini_int.cons    = false;
+    p_vci_ini_int.be      = 0xF;
     
     switch ( r_miss_wti_cmd_fsm.read() ) 
