Index: /trunk/modules/vci_mem_cache_v4/caba/source/include/mem_cache_directory_v4.h
===================================================================
--- /trunk/modules/vci_mem_cache_v4/caba/source/include/mem_cache_directory_v4.h	(revision 141)
+++ /trunk/modules/vci_mem_cache_v4/caba/source/include/mem_cache_directory_v4.h	(revision 142)
@@ -8,4 +8,5 @@
 
 #define L1_MULTI_CACHE      1
+//#define RANDOM_EVICTION
 
 namespace soclib { namespace caba {
@@ -189,4 +190,5 @@
     size_t					m_words;
     size_t					m_width;
+    uint32_t                lfsr;
 
     // the directory & lru tables
@@ -205,4 +207,5 @@
       m_words = words;
       m_width = address_width;
+      lfsr = -1;
 
       m_dir_tab = new DirectoryEntry*[sets];
@@ -324,4 +327,11 @@
         }
       }
+
+#ifdef RANDOM_EVICTION
+      lfsr = (lfsr >> 1) ^ ((-(lfsr & 1)) & 0xd0000001);
+      way = lfsr % m_ways;
+      return DirectoryEntry(m_dir_tab[set][way]);
+#endif
+
       for(size_t i=0; i<m_ways; i++){
         if(!(m_lru_tab[set][i].recent) && !(m_dir_tab[set][i].lock)){
