Index: trunk/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h
===================================================================
--- trunk/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h	(revision 537)
+++ trunk/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h	(revision 549)
@@ -516,5 +516,5 @@
 
       void print_stats(bool activity_counters, bool stats);
-      void print_trace();
+      void print_trace( size_t detailed = 0 );
       void cache_monitor(addr_t addr);
       void start_monitor(addr_t addr, addr_t length);
Index: trunk/modules/vci_mem_cache/caba/source/include/xram_transaction.h
===================================================================
--- trunk/modules/vci_mem_cache/caba/source/include/xram_transaction.h	(revision 537)
+++ trunk/modules/vci_mem_cache/caba/source/include/xram_transaction.h	(revision 549)
@@ -29,5 +29,5 @@
     bool 		        proc_read;	    // read request from processor
     size_t 	            read_length;    // length of the read (for the response)
-    size_t 	            word_index;    	// index of the first read word (for the response)
+    size_t 	            word_index;    	// index of the first read word (for response)
     std::vector<data_t> wdata;          // write buffer (one cache line)
     std::vector<be_t>   wdata_be;    	// be for each data in the write buffer
@@ -48,6 +48,5 @@
     /////////////////////////////////////////////////////////////////////
     // The alloc() function initializes the vectors of an entry
-    // Its arguments are :
-    // - n_words : number of words per line in the cache
+    // The "n_words" argument is the number of words in a cache line.
     /////////////////////////////////////////////////////////////////////
     void alloc(size_t n_words)
@@ -64,6 +63,4 @@
     ////////////////////////////////////////////////////////////////////
     // The copy() function copies an existing entry
-    // Its arguments are :
-    // - source : the transaction tab entry to copy
     ////////////////////////////////////////////////////////////////////
     void copy(const TransactionTabEntry &source)
@@ -86,32 +83,30 @@
 
     ////////////////////////////////////////////////////////////////////
-    // The print() function prints the entry 
-    ////////////////////////////////////////////////////////////////////
-    void print()
-    {
-        std::cout << "------- TRT entry -------" << std::endl;
-        std::cout << "valid       = " << valid        << std::endl;
-        std::cout << "xram_read   = " << xram_read    << std::endl;
-        std::cout << "nline       = " << std::hex << nline << std::endl;
-        std::cout << "srcid       = " << srcid        << std::endl;
-        std::cout << "trdid       = " << trdid        << std::endl;
-        std::cout << "pktid       = " << pktid        << std::endl;
-        std::cout << "proc_read   = " << proc_read    << std::endl;
-        std::cout << "read_length = " << read_length  << std::endl;
-        std::cout << "word_index  = " << word_index   << std::endl; 
-        for(size_t i=0; i<wdata_be.size() ; i++)
-        {
-            std::cout << "wdata_be[" << std::dec << i << "] = " 
-                      << std::hex << wdata_be[i] << std::endl;
-        }
-        for(size_t i=0; i<wdata.size() ; i++)
-        {
-            std::cout << "wdata[" << std::dec << i << "] = " 
-                      << std::hex << wdata[i] << std::endl;
-        }
-        std::cout << "rerror      = " << rerror       << std::endl;
-        std::cout << "ll_key      = " << ll_key       << std::endl;
-        std::cout << "config      = " << config       << std::endl;
-        std::cout << std::endl;
+    // The print() function prints the entry identified by "index". 
+    ////////////////////////////////////////////////////////////////////
+    void print( size_t index, size_t mode )
+    {
+        std::cout << "  TRT[" << std::dec << index << "] "
+                  << " valid = " << valid
+                  << " / error = " << rerror 
+                  << " / get = " << xram_read 
+                  << " / config = " << config << std::hex
+                  << " / address = " << nline*4*wdata.size()
+                  << " / srcid = " << srcid << std::endl;
+        if ( mode )
+        {
+            std::cout << "        trdid = " << trdid
+                      << " / pktid = " << pktid << std::dec 
+                      << " / proc_read = " << proc_read 
+                      << " / read_length = " << read_length
+                      << " / word_index  = " << word_index << std::hex 
+                      << " / ll_key = " << ll_key << std::endl;
+            std::cout << "        wdata = ";
+            for(size_t i=0; i<wdata.size() ; i++)
+            {
+                std::cout << std::hex << wdata[i] << " / ";
+            }
+            std::cout << std::endl;
+        }
     }
 
@@ -228,15 +223,14 @@
     }
     /////////////////////////////////////////////////////////////////////
-    // The print() function prints a transaction tab entry
-    // Arguments :
-    // - index : the index of the entry to print
-    /////////////////////////////////////////////////////////////////////
-    void print(const size_t index)
-    {
-        assert( (index < size_tab) and
-        "MEMC ERROR: The selected entry is out of range in TRT write_data_mask()");
-
-        tab[index].print();
-        return;
+    // The print() function prints TRT content.
+    // Detailed content if detailed argument is non zero.
+    /////////////////////////////////////////////////////////////////////
+    void print( size_t detailed = 0 )
+    {
+        std::cout << "  < TRT content in " <<  tab_name << " >" << std::endl;
+        for ( size_t id = 0 ; id < size_tab ; id++ )
+        {
+            tab[id].print( id , detailed );
+        }
     }
     /////////////////////////////////////////////////////////////////////
Index: trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp
===================================================================
--- trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp	(revision 537)
+++ trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp	(revision 549)
@@ -654,5 +654,5 @@
 
     //////////////////////////////////////////////////
-    tmpl(void)::print_trace()
+    tmpl(void)::print_trace( size_t detailed )
     //////////////////////////////////////////////////
     {
@@ -676,4 +676,6 @@
             << " | " << alloc_ivt_fsm_str[r_alloc_ivt_fsm.read()]
             << " | " << alloc_heap_fsm_str[r_alloc_heap_fsm.read()] << std::endl;
+
+        if ( detailed ) m_trt.print(0);
     }
 
@@ -4011,5 +4013,5 @@
 
                         assert( ((p_vci_ixr.rerror.read() & 0x1) == 0) and
-                                "MEMC ERROR in IXR_RSP state: XRAM response error !");
+                        "MEMC ERROR in IXR_RSP state: XRAM response error !");
 
                         if (p_vci_ixr.reop.read())   // PUT
@@ -4018,7 +4020,7 @@
 
 #if DEBUG_MEMC_IXR_RSP
-                            if (m_debug)
-                                std::cout << "  <MEMC " << name()
-                                    << " IXR_RSP_IDLE> Response from XRAM to a put transaction" << std::endl;
+if (m_debug)
+std::cout << "  <MEMC " << name()
+          << " IXR_RSP_IDLE> Response from XRAM to a put transaction" << std::endl;
 #endif
                         }
@@ -4028,67 +4030,66 @@
 
 #if DEBUG_MEMC_IXR_RSP
-                            if (m_debug)
-                                std::cout << "  <MEMC " << name()
-                                    << " IXR_RSP_IDLE> Response from XRAM to a get transaction" << std::endl;
-#endif
-                        }
-                    }
-                    break;
-                }
-                ////////////////////////
+if (m_debug)
+std::cout << "  <MEMC " << name()
+          << " IXR_RSP_IDLE> Response from XRAM to a get transaction" << std::endl;
+#endif
+                        }
+                    }
+                    break;
+                }
+            ////////////////////////
             case IXR_RSP_TRT_ERASE:   // erase the entry in the TRT
-                // decrease the line counter if config request
-                {
-                    if (r_alloc_trt_fsm.read() == ALLOC_TRT_IXR_RSP)
-                    {
-                        size_t  index = r_ixr_rsp_trt_index.read(); 
-                        if (m_trt.is_config(index)) r_config_rsp_lines = r_config_rsp_lines.read() - 1;
-                        m_trt.erase(index);
+                                      // decrease the line counter if config request
+            {
+                if (r_alloc_trt_fsm.read() == ALLOC_TRT_IXR_RSP)
+                {
+                    size_t  index = r_ixr_rsp_trt_index.read(); 
+                    if (m_trt.is_config(index)) 
+                        r_config_rsp_lines = r_config_rsp_lines.read() - 1;
+                    m_trt.erase(index);
+                    r_ixr_rsp_fsm = IXR_RSP_IDLE;
+
+#if DEBUG_MEMC_IXR_RSP
+if (m_debug)
+std::cout << "  <MEMC " << name() << " IXR_RSP_TRT_ERASE> Erase TRT entry "
+          << r_ixr_rsp_trt_index.read() << std::endl;
+#endif
+                }
+                break;
+            }
+            //////////////////////
+            case IXR_RSP_TRT_READ:    // write a 64 bits data word in TRT
+            {
+                if ((r_alloc_trt_fsm.read() == ALLOC_TRT_IXR_RSP) and  p_vci_ixr.rspval)
+                {
+                    size_t      index    = r_ixr_rsp_trt_index.read();
+                    size_t      word     = r_ixr_rsp_cpt.read();
+                    bool        eop      = p_vci_ixr.reop.read();
+                    wide_data_t data     = p_vci_ixr.rdata.read();
+                    bool        error    = ((p_vci_ixr.rerror.read() & 0x1) == 1);
+
+                    assert(((eop == (word == (m_words-2))) or error) and
+                    "MEMC ERROR in IXR_RSP_TRT_READ state : invalid response from XRAM");
+
+                    m_trt.write_rsp( index, word, data );
+
+                    r_ixr_rsp_cpt = word + 2;
+
+                    if (eop )
+                    {
+                        r_ixr_rsp_to_xram_rsp_rok[r_ixr_rsp_trt_index.read()] = true;
                         r_ixr_rsp_fsm = IXR_RSP_IDLE;
+                    }
 
 #if DEBUG_MEMC_IXR_RSP
-                        if (m_debug)
-                            std::cout << "  <MEMC " << name() << " IXR_RSP_TRT_ERASE> Erase TRT entry "
-                                << r_ixr_rsp_trt_index.read() << std::endl;
-#endif
-                    }
-                    break;
-                }
-                //////////////////////
-            case IXR_RSP_TRT_READ:    // write a 64 bits data word in TRT
-                {
-                    if ((r_alloc_trt_fsm.read() == ALLOC_TRT_IXR_RSP) and  p_vci_ixr.rspval)
-                    {
-                        size_t      index    = r_ixr_rsp_trt_index.read();
-                        size_t      word     = r_ixr_rsp_cpt.read();
-                        bool        eop      = p_vci_ixr.reop.read();
-                        wide_data_t data     = p_vci_ixr.rdata.read();
-                        bool        error    = ((p_vci_ixr.rerror.read() & 0x1) == 1);
-
-                        assert(((eop == (word == (m_words-2))) or error) and
-                                "MEMC ERROR in IXR_RSP_TRT_READ state : invalid response from XRAM");
-
-                        m_trt.write_rsp( index,
-                                word,
-                                data );
-
-                        r_ixr_rsp_cpt = word + 2;
-
-                        if (eop )
-                        {
-                            r_ixr_rsp_to_xram_rsp_rok[r_ixr_rsp_trt_index.read()] = true;
-                            r_ixr_rsp_fsm = IXR_RSP_IDLE;
-                        }
-
-#if DEBUG_MEMC_IXR_RSP
-                        if (m_debug)
-                            std::cout << "  <MEMC " << name() << " IXR_RSP_TRT_READ> Writing 2 words in TRT : "
-                                << " index = " << std::dec << index
-                                << " / word = " << word
-                                << " / data = " << std::hex << data << std::endl;
-#endif
-                    }
-                    break;
-                }
+if (m_debug)
+std::cout << "  <MEMC " << name() << " IXR_RSP_TRT_READ> Writing 2 words in TRT : "
+          << " index = " << std::dec << index
+          << " / word = " << word
+          << " / data = " << std::hex << data << std::endl;
+#endif
+                }
+                break;
+            }
         } // end swich r_ixr_rsp_fsm
 
