Index: /trunk/modules/vci_block_device_tsar/caba/source/src/vci_block_device_tsar.cpp
===================================================================
--- /trunk/modules/vci_block_device_tsar/caba/source/src/vci_block_device_tsar.cpp	(revision 432)
+++ /trunk/modules/vci_block_device_tsar/caba/source/src/vci_block_device_tsar.cpp	(revision 433)
@@ -226,5 +226,5 @@
             r_block_count   = 0;
             r_burst_count   = 0;
-            r_words_count    = 0;
+            r_words_count   = 0;
             r_latency_count = m_latency;
 
@@ -603,5 +603,4 @@
         p_vci_initiator.pktid   = TYPE_WRITE;
         p_vci_initiator.plen    = (sc_dt::sc_uint<vci_param::K>)(r_burst_nwords.read()<<2);
-        p_vci_initiator.eop     = ( r_words_count.read() == (r_burst_nwords.read() - 1) );
         if ( (vci_param::B == 8) and ((r_burst_nwords.read() - r_words_count.read()) > 1) )  
         {
@@ -609,4 +608,5 @@
                                    (((uint64_t)r_local_buffer[r_index.read()+1]) << 32); 
             p_vci_initiator.be    = 0xFF;
+            p_vci_initiator.eop   = ( (r_burst_nwords.read() - r_words_count.read()) <= 2 );
         }
         else
@@ -614,4 +614,5 @@
             p_vci_initiator.wdata = r_local_buffer[r_index.read()];
             p_vci_initiator.be    = 0xF;
+            p_vci_initiator.eop   = ( r_words_count.read() == (r_burst_nwords.read() - 1) );
         }
         break;
@@ -628,9 +629,10 @@
 
     // IRQ signal
-    if(((r_initiator_fsm == M_READ_SUCCESS)    ||
-			    (r_initiator_fsm == M_WRITE_SUCCESS)   ||
-			    (r_initiator_fsm == M_READ_ERROR)      ||
-			    (r_initiator_fsm == M_WRITE_ERROR) ) &&  r_irq_enable) p_irq = true;
-    else			                               p_irq = false;
+    if ( ((r_initiator_fsm == M_READ_SUCCESS)  ||
+	      (r_initiator_fsm == M_WRITE_SUCCESS) ||
+          (r_initiator_fsm == M_READ_ERROR)    ||
+          (r_initiator_fsm == M_WRITE_ERROR) ) &&  
+         r_irq_enable.read() ) p_irq = true;
+    else			           p_irq = false;
 } // end GenMoore()
 
@@ -658,4 +660,6 @@
 	p_irq("p_irq") 
 {
+    std::cout << "  - Building VciBlockDeviceTsar " << name << std::endl;
+
 	SC_METHOD(transition);
     dont_initialize();
@@ -686,4 +690,7 @@
 		    exit(1);
 	    }
+        std::cout << "    => segment " << seg->name()
+                  << " / base = " << std::hex << seg->baseAddress()
+                  << " / size = " << seg->size() << std::endl; 
     }
 
@@ -708,6 +715,5 @@
 	}
 
-    if( (burst_size != 4 ) && 
-		(burst_size != 8 ) && 
+    if( (burst_size != 8 ) && 
 		(burst_size != 16) && 
 		(burst_size != 32) && 
@@ -715,5 +721,5 @@
 	{
 		std::cout << "Error in component VciBlockDeviceTsar : " << name 
-		          << " The burst size must be 4, 8, 16, 32 or 64 bytes" << std::endl;
+		          << " The burst size must be 8, 16, 32 or 64 bytes" << std::endl;
 		exit(1);
 	}
