Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info	(revision 137)
@@ -0,0 +1,11 @@
+
+# RegisterFile_Monolithic_0
+target_dep	all	RegisterFile_Monolithic_0.ngc
+target_dep	RegisterFile_Monolithic_0.ngc	RegisterFile_Monolithic_0.prj
+target_dep	RegisterFile_Monolithic_0.prj	RegisterFile_Monolithic_0_Pack.vhdl RegisterFile_Monolithic_0.vhdl
+
+# RegisterFile_Monolithic_1
+target_dep	all	RegisterFile_Monolithic_1.ngc
+target_dep	RegisterFile_Monolithic_1.ngc	RegisterFile_Monolithic_1.prj
+target_dep	RegisterFile_Monolithic_1.prj	RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl
+
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h	(revision 137)
@@ -21,13 +21,14 @@
   class Parameters : public morpheo::behavioural::Parameters
   {
-  public : const uint32_t    _nb_port_read ;
-  public : const uint32_t    _nb_port_write;
-  public : const uint32_t    _nb_port_read_write;
-  public : const uint32_t    _nb_word      ;
-  public : const uint32_t    _size_word    ;
-  public : const uint32_t    _size_address ;
-  public : const bool        _have_port_address;
-  public : const bool        _have_init_value;
-  public : const std::string _init_value;
+  public : uint32_t    _nb_port_read ;
+  public : uint32_t    _nb_port_write;
+  public : uint32_t    _nb_port_read_write;
+  public : uint32_t    _nb_word      ;
+  public : uint32_t    _size_word    ;
+  public : std::string _init_value   ;
+
+  public : uint32_t    _size_address ;
+  public : bool        _have_port_address;
+  public : bool        _have_init_value;
 
   public : Parameters (uint32_t    nb_port_read ,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp	(revision 137)
@@ -7,4 +7,5 @@
 
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h"
+#include "Common/include/Log2.h"
 
 namespace morpheo                    {
@@ -20,15 +21,17 @@
 			  uint32_t    size_word    ,
                           std::string init_value
-			  ) :
-    _nb_port_read      (nb_port_read ),
-    _nb_port_write     (nb_port_write),
-    _nb_port_read_write(nb_port_read_write),
-    _nb_word           (nb_word      ),
-    _size_word         (size_word    ),
-    _size_address      (static_cast<uint32_t>(log2(_nb_word))),
-    _have_port_address (_size_address != 0),
-    _have_init_value   (init_value != ""),
-    _init_value        (init_value)
+			  )
   { 
+    _nb_port_read       = nb_port_read ;
+    _nb_port_write      = nb_port_write;
+    _nb_port_read_write = nb_port_read_write;
+    _nb_word            = nb_word      ;
+    _size_word          = size_word    ;
+    _init_value         = init_value   ;
+
+    _size_address       = log2(_nb_word);
+    _have_port_address  = _size_address != 0;
+    _have_init_value    = init_value != "";
+
     test();
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/16x_1r_1w.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/16x_1r_1w.cfg	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/16x_1r_1w.cfg	(revision 137)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+12	12	*2	# nb_port_read
+6	6	*2	# nb_port_write
+256	256	+1	# nb_word
+32	32	*2 	# size_word
+16	16	*2	# nb_bank
+1  	1   	*2	# nb_port_read_by_bank
+1 	1	*2	# nb_port_write_by_bank
+0	0	+1	# crossbar
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/16x_2r_1w.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/16x_2r_1w.cfg	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/16x_2r_1w.cfg	(revision 137)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+12	12	*2	# nb_port_read
+6	6	*2	# nb_port_write
+256	256	+1	# nb_word
+32	32	*2 	# size_word
+16	16	*2	# nb_bank
+2  	2   	*2	# nb_port_read_by_bank
+1 	1	*2	# nb_port_write_by_bank
+0	0	+1	# crossbar
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/2x_10r_5w.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/2x_10r_5w.cfg	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/2x_10r_5w.cfg	(revision 137)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+12	12	*2	# nb_port_read
+6	6	*2	# nb_port_write
+256	256	+1	# nb_word
+32	32	*2 	# size_word
+2	2	*2	# nb_bank
+10  	10  	*2	# nb_port_read_by_bank
+5 	5	*2	# nb_port_write_by_bank
+0	0	+1	# crossbar
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/2x_6r_3w.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/2x_6r_3w.cfg	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/2x_6r_3w.cfg	(revision 137)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+12	12	*2	# nb_port_read
+6	6	*2	# nb_port_write
+256	256	+1	# nb_word
+32	32	*2 	# size_word
+2	2	*2	# nb_bank
+6  	6   	*2	# nb_port_read_by_bank
+3 	3	*2	# nb_port_write_by_bank
+0	0	+1	# crossbar
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/2x_8r_4w.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/2x_8r_4w.cfg	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/2x_8r_4w.cfg	(revision 137)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+12	12	*2	# nb_port_read
+6	6	*2	# nb_port_write
+256	256	+1	# nb_word
+32	32	*2 	# size_word
+2	2	*2	# nb_bank
+8  	8   	*2	# nb_port_read_by_bank
+4 	4	*2	# nb_port_write_by_bank
+0	0	+1	# crossbar
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/32x_1r_1w.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/32x_1r_1w.cfg	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/32x_1r_1w.cfg	(revision 137)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+12	12	*2	# nb_port_read
+6	6	*2	# nb_port_write
+256	256	+1	# nb_word
+32	32	*2 	# size_word
+32	32	*2	# nb_bank
+1  	1   	*2	# nb_port_read_by_bank
+1 	1	*2	# nb_port_write_by_bank
+0	0	+1	# crossbar
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/4x_4r_2w.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/4x_4r_2w.cfg	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/4x_4r_2w.cfg	(revision 137)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+12	12	*2	# nb_port_read
+6	6	*2	# nb_port_write
+256	256	+1	# nb_word
+32	32	*2 	# size_word
+4	4	*2	# nb_bank
+4  	4   	*2	# nb_port_read_by_bank
+2 	2	*2	# nb_port_write_by_bank
+0	0	+1	# crossbar
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/4x_6r_3w.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/4x_6r_3w.cfg	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/4x_6r_3w.cfg	(revision 137)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+12	12	*2	# nb_port_read
+6	6	*2	# nb_port_write
+256	256	+1	# nb_word
+32	32	*2 	# size_word
+4	4	*2	# nb_bank
+6  	6   	*2	# nb_port_read_by_bank
+3 	3	*2	# nb_port_write_by_bank
+0	0	+1	# crossbar
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/4x_8r_4w.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/4x_8r_4w.cfg	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/4x_8r_4w.cfg	(revision 137)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+12	12	*2	# nb_port_read
+6	6	*2	# nb_port_write
+256	256	+1	# nb_word
+32	32	*2 	# size_word
+4	4	*2	# nb_bank
+8  	8   	*2	# nb_port_read_by_bank
+4 	4	*2	# nb_port_write_by_bank
+0	0	+1	# crossbar
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/8x_2r_1w.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/8x_2r_1w.cfg	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/8x_2r_1w.cfg	(revision 137)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+12	12	*2	# nb_port_read
+6	6	*2	# nb_port_write
+256	256	+1	# nb_word
+32	32	*2 	# size_word
+8	8	*2	# nb_bank
+2  	2   	*2	# nb_port_read_by_bank
+1 	1	*2	# nb_port_write_by_bank
+0	0	+1	# crossbar
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/8x_4r_2w.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/8x_4r_2w.cfg	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/8x_4r_2w.cfg	(revision 137)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+12	12	*2	# nb_port_read
+6	6	*2	# nb_port_write
+256	256	+1	# nb_word
+32	32	*2 	# size_word
+8	8	*2	# nb_bank
+4  	4   	*2	# nb_port_read_by_bank
+2 	2	*2	# nb_port_write_by_bank
+0	0	+1	# crossbar
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/mkf.info
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/mkf.info	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/mkf.info	(revision 137)
@@ -0,0 +1,56 @@
+
+# RegisterFile_Multi_Banked_00
+target_dep	all	RegisterFile_Multi_Banked_00.ngc
+target_dep	RegisterFile_Multi_Banked_00.ngc	RegisterFile_Multi_Banked_00.prj
+target_dep	RegisterFile_Multi_Banked_00.prj	RegisterFile_Multi_Banked_00_bank_Pack.vhdl RegisterFile_Multi_Banked_00_bank.vhdl RegisterFile_Multi_Banked_00_Pack.vhdl RegisterFile_Multi_Banked_00_select_12_ports_Pack.vhdl RegisterFile_Multi_Banked_00_select_12_ports.vhdl RegisterFile_Multi_Banked_00_select_6_ports_Pack.vhdl RegisterFile_Multi_Banked_00_select_6_ports.vhdl RegisterFile_Multi_Banked_00.vhdl
+
+# RegisterFile_Multi_Banked_01
+target_dep	all	RegisterFile_Multi_Banked_01.ngc
+target_dep	RegisterFile_Multi_Banked_01.ngc	RegisterFile_Multi_Banked_01.prj
+target_dep	RegisterFile_Multi_Banked_01.prj	RegisterFile_Multi_Banked_01_bank_Pack.vhdl RegisterFile_Multi_Banked_01_bank.vhdl RegisterFile_Multi_Banked_01_Pack.vhdl RegisterFile_Multi_Banked_01_select_6_ports_Pack.vhdl RegisterFile_Multi_Banked_01_select_6_ports.vhdl RegisterFile_Multi_Banked_01.vhdl
+
+# RegisterFile_Multi_Banked_02
+target_dep	all	RegisterFile_Multi_Banked_02.ngc
+target_dep	RegisterFile_Multi_Banked_02.ngc	RegisterFile_Multi_Banked_02.prj
+target_dep	RegisterFile_Multi_Banked_02.prj	RegisterFile_Multi_Banked_02_bank_Pack.vhdl RegisterFile_Multi_Banked_02_bank.vhdl RegisterFile_Multi_Banked_02_Pack.vhdl RegisterFile_Multi_Banked_02_select_1_ports_Pack.vhdl RegisterFile_Multi_Banked_02_select_1_ports.vhdl RegisterFile_Multi_Banked_02_select_2_ports_Pack.vhdl RegisterFile_Multi_Banked_02_select_2_ports.vhdl RegisterFile_Multi_Banked_02.vhdl
+
+# RegisterFile_Multi_Banked_03
+target_dep	all	RegisterFile_Multi_Banked_03.ngc
+target_dep	RegisterFile_Multi_Banked_03.ngc	RegisterFile_Multi_Banked_03.prj
+target_dep	RegisterFile_Multi_Banked_03.prj	RegisterFile_Multi_Banked_03_bank_Pack.vhdl RegisterFile_Multi_Banked_03_bank.vhdl RegisterFile_Multi_Banked_03_Pack.vhdl RegisterFile_Multi_Banked_03_select_2_ports_Pack.vhdl RegisterFile_Multi_Banked_03_select_2_ports.vhdl RegisterFile_Multi_Banked_03.vhdl
+
+# RegisterFile_Multi_Banked_04
+target_dep	all	RegisterFile_Multi_Banked_04.ngc
+target_dep	RegisterFile_Multi_Banked_04.ngc	RegisterFile_Multi_Banked_04.prj
+target_dep	RegisterFile_Multi_Banked_04.prj	RegisterFile_Multi_Banked_04_bank_Pack.vhdl RegisterFile_Multi_Banked_04_bank.vhdl RegisterFile_Multi_Banked_04_Pack.vhdl RegisterFile_Multi_Banked_04_select_1_ports_Pack.vhdl RegisterFile_Multi_Banked_04_select_1_ports.vhdl RegisterFile_Multi_Banked_04_select_2_ports_Pack.vhdl RegisterFile_Multi_Banked_04_select_2_ports.vhdl RegisterFile_Multi_Banked_04.vhdl
+
+# RegisterFile_Multi_Banked_05
+target_dep	all	RegisterFile_Multi_Banked_05.ngc
+target_dep	RegisterFile_Multi_Banked_05.ngc	RegisterFile_Multi_Banked_05.prj
+target_dep	RegisterFile_Multi_Banked_05.prj	RegisterFile_Multi_Banked_05_bank_Pack.vhdl RegisterFile_Multi_Banked_05_bank.vhdl RegisterFile_Multi_Banked_05_Pack.vhdl RegisterFile_Multi_Banked_05_select_12_ports_Pack.vhdl RegisterFile_Multi_Banked_05_select_12_ports.vhdl RegisterFile_Multi_Banked_05_select_6_ports_Pack.vhdl RegisterFile_Multi_Banked_05_select_6_ports.vhdl RegisterFile_Multi_Banked_05.vhdl
+
+# RegisterFile_Multi_Banked_06
+target_dep	all	RegisterFile_Multi_Banked_06.ngc
+target_dep	RegisterFile_Multi_Banked_06.ngc	RegisterFile_Multi_Banked_06.prj
+target_dep	RegisterFile_Multi_Banked_06.prj	RegisterFile_Multi_Banked_06_bank_Pack.vhdl RegisterFile_Multi_Banked_06_bank.vhdl RegisterFile_Multi_Banked_06_Pack.vhdl RegisterFile_Multi_Banked_06_select_3_ports_Pack.vhdl RegisterFile_Multi_Banked_06_select_3_ports.vhdl RegisterFile_Multi_Banked_06.vhdl
+
+# RegisterFile_Multi_Banked_07
+target_dep	all	RegisterFile_Multi_Banked_07.ngc
+target_dep	RegisterFile_Multi_Banked_07.ngc	RegisterFile_Multi_Banked_07.prj
+target_dep	RegisterFile_Multi_Banked_07.prj	RegisterFile_Multi_Banked_07_bank_Pack.vhdl RegisterFile_Multi_Banked_07_bank.vhdl RegisterFile_Multi_Banked_07_Pack.vhdl RegisterFile_Multi_Banked_07_select_2_ports_Pack.vhdl RegisterFile_Multi_Banked_07_select_2_ports.vhdl RegisterFile_Multi_Banked_07.vhdl
+
+# RegisterFile_Multi_Banked_08
+target_dep	all	RegisterFile_Multi_Banked_08.ngc
+target_dep	RegisterFile_Multi_Banked_08.ngc	RegisterFile_Multi_Banked_08.prj
+target_dep	RegisterFile_Multi_Banked_08.prj	RegisterFile_Multi_Banked_08_bank_Pack.vhdl RegisterFile_Multi_Banked_08_bank.vhdl RegisterFile_Multi_Banked_08_Pack.vhdl RegisterFile_Multi_Banked_08_select_1_ports_Pack.vhdl RegisterFile_Multi_Banked_08_select_1_ports.vhdl RegisterFile_Multi_Banked_08_select_2_ports_Pack.vhdl RegisterFile_Multi_Banked_08_select_2_ports.vhdl RegisterFile_Multi_Banked_08.vhdl
+
+# RegisterFile_Multi_Banked_09
+target_dep	all	RegisterFile_Multi_Banked_09.ngc
+target_dep	RegisterFile_Multi_Banked_09.ngc	RegisterFile_Multi_Banked_09.prj
+target_dep	RegisterFile_Multi_Banked_09.prj	RegisterFile_Multi_Banked_09_bank_Pack.vhdl RegisterFile_Multi_Banked_09_bank.vhdl RegisterFile_Multi_Banked_09_Pack.vhdl RegisterFile_Multi_Banked_09_select_6_ports_Pack.vhdl RegisterFile_Multi_Banked_09_select_6_ports.vhdl RegisterFile_Multi_Banked_09.vhdl
+
+# RegisterFile_Multi_Banked_10
+target_dep	all	RegisterFile_Multi_Banked_10.ngc
+target_dep	RegisterFile_Multi_Banked_10.ngc	RegisterFile_Multi_Banked_10.prj
+target_dep	RegisterFile_Multi_Banked_10.prj	RegisterFile_Multi_Banked_10_bank_Pack.vhdl RegisterFile_Multi_Banked_10_bank.vhdl RegisterFile_Multi_Banked_10_Pack.vhdl RegisterFile_Multi_Banked_10_select_3_ports_Pack.vhdl RegisterFile_Multi_Banked_10_select_3_ports.vhdl RegisterFile_Multi_Banked_10.vhdl
+
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h	(revision 137)
@@ -24,33 +24,33 @@
   {
     //-----[ fields ]------------------------------------------------------------
-  public : const uint32_t    _nb_port_read         ; // Global read  port
-  public : const uint32_t    _nb_port_write        ; // Global write port
-  public : const uint32_t    _nb_word              ;
-  public : const uint32_t    _size_word            ;
-  public : const uint32_t    _nb_bank              ; // Number of bank (All bank is identical)
-  public : const uint32_t    _nb_port_read_by_bank ; // Local  read  port
-  public : const uint32_t    _nb_port_write_by_bank; // Local  write port
-  public : const Tcrossbar_t _crossbar             ;
-  public : const bool        _have_init_value;
-  public : const std::string _init_value;
+  public : uint32_t    _nb_port_read         ; // Global read  port
+  public : uint32_t    _nb_port_write        ; // Global write port
+  public : uint32_t    _nb_word              ;
+  public : uint32_t    _size_word            ;
+  public : uint32_t    _nb_bank              ; // Number of bank (All bank is identical)
+  public : uint32_t    _nb_port_read_by_bank ; // Local  read  port
+  public : uint32_t    _nb_port_write_by_bank; // Local  write port
+  public : Tcrossbar_t _crossbar             ;
+  public : std::string _init_value           ;
 
-  public : const uint32_t    _size_address         ;
-  public : const uint32_t    _size_address_by_bank ;
+  public : uint32_t    _size_address         ;
+  public : uint32_t    _size_address_by_bank ;
 
-  public : const uint32_t    _bank_shift           ;
-  public : const Taddress_t  _bank_mask            ;
-  public : const uint32_t    _num_reg_shift        ;
-  public : const Taddress_t  _num_reg_mask         ;
+  public : uint32_t    _bank_shift           ;
+  public : Taddress_t  _bank_mask            ;
+  public : uint32_t    _num_reg_shift        ;
+  public : Taddress_t  _num_reg_mask         ;
 
-  public : const uint32_t    _nb_word_by_bank      ;
+  public : uint32_t    _nb_word_by_bank      ;
 
-  public : const bool        _have_port_address     ;
-  public : const bool        _have_bank_port_address;
+  public : bool        _have_port_address     ;
+  public : bool        _have_bank_port_address;
+  public : bool        _have_init_value       ;
 
     // A lot of table to the partial crossbar
-  public :       uint32_t  * _link_port_read_to_bank_read  ;
-//public :       uint32_t  * _link_port_read_to_num_bank   ;
-  public :       uint32_t  * _link_port_write_to_bank_write;
-//public :       uint32_t  * _link_port_write_to_num_bank  ;
+  public : uint32_t  * _link_port_read_to_bank_read  ;
+//public : uint32_t  * _link_port_read_to_num_bank   ;
+  public : uint32_t  * _link_port_write_to_bank_write;
+//public : uint32_t  * _link_port_write_to_num_bank  ;
 
     //-----[ methods ]-----------------------------------------------------------
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h	(revision 137)
@@ -48,4 +48,9 @@
 #ifdef STATISTICS
   public    : Stat                           * _stat;
+
+  private   : counter_t                      * _stat_nb_read;
+  private   : counter_t                      * _stat_nb_write;
+  private   : counter_t                      * _stat_nb_conflict_on_read;
+  private   : counter_t                      * _stat_nb_conflict_on_write;
 #endif
 
@@ -80,4 +85,9 @@
   private   : Taddress_t                    * internal_WRITE_BANK;
   private   : Taddress_t                    * internal_WRITE_NUM_REG;
+
+#ifdef STATISTICS
+  private   : bool                          * internal_READ_VAL;
+//private   : Taddress_t                    * internal_READ_BANK;
+#endif
 
         // function pointer
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp	(revision 137)
@@ -8,4 +8,5 @@
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h"
 #include "Common/include/BitManipulation.h"
+#include "Common/include/Log2.h"
 
 namespace morpheo {
@@ -25,30 +26,32 @@
 			  Tcrossbar_t crossbar             ,
                           std::string init_value
-                          ):
-    _nb_port_read          (nb_port_read         ),
-    _nb_port_write         (nb_port_write        ),
-    _nb_word               (nb_word              ),
-    _size_word             (size_word            ),
-    _nb_bank               (nb_bank              ),
-    _nb_port_read_by_bank  (nb_port_read_by_bank ),
-    _nb_port_write_by_bank (nb_port_write_by_bank),
-    _crossbar              (crossbar             ),
-    _have_init_value       (init_value != ""     ),
-    _init_value            (init_value           ),
-    _size_address          (static_cast<uint32_t>(ceil(log2(_nb_word)))),
-    _size_address_by_bank  (_size_address - static_cast<uint32_t>(ceil(log2(_nb_bank)))),
+                          )
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","Begin");
+
+    _nb_port_read           = nb_port_read         ;
+    _nb_port_write          = nb_port_write        ;
+    _nb_word                = nb_word              ;
+    _size_word              = size_word            ;
+    _nb_bank                = nb_bank              ;
+    _nb_port_read_by_bank   = nb_port_read_by_bank ;
+    _nb_port_write_by_bank  = nb_port_write_by_bank;
+    _crossbar               = crossbar             ;
+    _init_value             = init_value           ;
+
+    _size_address           = log2(_nb_word);
+    _size_address_by_bank   = _size_address - log2(_nb_bank);
 
     // Address : [....................]  [size_address-1:0]
     // Bank    : [....]                  [size_address-1:size_address-1-log2(nb_bank)]
     // num_reg :      ]...............]  [size_address-2-log2(nb_bank):0]
-    _bank_shift            (_size_address_by_bank),
-    _bank_mask             (gen_mask<Taddress_t>(static_cast<Taddress_t>(ceil(log2(_nb_bank))))),
-    _num_reg_shift         (0),
-    _num_reg_mask          (gen_mask<Taddress_t>(_size_address_by_bank)),
-    _nb_word_by_bank       (_nb_word / _nb_bank),
-    _have_port_address     (_size_address         != 0),
-    _have_bank_port_address(_size_address_by_bank != 0)
-  {
-    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","Begin");
+    _bank_shift             = _size_address_by_bank;
+    _bank_mask              = gen_mask<Taddress_t>(log2(_nb_bank));
+    _num_reg_shift          = 0;
+    _num_reg_mask           = gen_mask<Taddress_t>(_size_address_by_bank);
+    _nb_word_by_bank        = _nb_word / _nb_bank;
+    _have_port_address      = _size_address         != 0;
+    _have_bank_port_address = _size_address_by_bank != 0;
+    _have_init_value        = init_value != ""     ;
 
     if (_crossbar == PARTIAL_CROSSBAR)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp	(revision 137)
@@ -77,4 +77,8 @@
         ALLOC1(internal_WRITE_BANK   ,Taddress_t,_param->_nb_port_write);
         ALLOC1(internal_WRITE_NUM_REG,Taddress_t,_param->_nb_port_write);
+
+#ifdef STATISTICS
+        ALLOC1(internal_READ_VAL     ,bool      ,_param->_nb_port_read);
+#endif
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp	(revision 137)
@@ -40,4 +40,9 @@
         DELETE1(internal_WRITE_BANK     ,_param->_nb_port_write);
         DELETE1(internal_WRITE_NUM_REG  ,_param->_nb_port_write);
+
+#ifdef STATISTICS
+        DELETE1(internal_READ_VAL       ,_param->_nb_port_read);
+#endif
+
       }       
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_read.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_read.cpp	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_read.cpp	(revision 137)
@@ -38,4 +38,8 @@
 	bool ack = false;
 
+#ifdef STATISTICS
+	internal_READ_VAL  [i] = false;
+#endif
+
 	log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION,"  * read [%d] : %d",i,val);
 
@@ -72,4 +76,7 @@
 		    log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION,"    * data      : %d",data);
 
+#ifdef STATISTICS
+		    internal_READ_VAL  [i] = true;
+#endif
 		    PORT_WRITE(out_READ_DATA [i], data);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_read.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_read.cpp	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_read.cpp	(revision 137)
@@ -37,4 +37,8 @@
 	bool ack = false;
 
+#ifdef STATISTICS
+	internal_READ_VAL  [i] = false;
+#endif
+
 	log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION,"  * read [%d] : %d",i,val);
 
@@ -73,4 +77,8 @@
 		    log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION,"    * data      : %d",data);
 
+#ifdef STATISTICS
+		    internal_READ_VAL  [i] = true;
+#endif
+
 		    PORT_WRITE(out_READ_DATA [i], data);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_statistics_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_statistics_declaration.cpp	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_statistics_declaration.cpp	(revision 137)
@@ -24,4 +24,20 @@
 		      "RegisterFile_Multi_Banked",
 		      param_statistics);
+
+//     _stat_nb_read              = _stat->create_variable("nb_read" );
+//     _stat_nb_write             = _stat->create_variable("nb_write");
+//     _stat_nb_conflict_on_read  = _stat->create_variable("nb_conflict_on_read" );
+//     _stat_nb_conflict_on_write = _stat->create_variable("nb_conflict_on_write");
+
+    _stat_nb_read              = _stat->create_counter("nb_read"             ,"","");
+    _stat_nb_write             = _stat->create_counter("nb_write"            ,"","");
+    _stat_nb_conflict_on_read  = _stat->create_counter("nb_conflict_on_read" ,"","");
+    _stat_nb_conflict_on_write = _stat->create_counter("nb_conflict_on_write","","");
+
+    _stat->create_expr_average_by_cycle("average_read" , "nb_read" , "", _("Average read by cycle" ));
+    _stat->create_expr_average_by_cycle("average_write", "nb_write", "", _("Average write by cycle"));
+
+    _stat->create_expr_percent         ("percent_conflict_on_read" , "nb_conflict_on_read" , "+ nb_read  nb_conflict_on_read" , _("Percent conflit on read port" ));
+    _stat->create_expr_percent         ("percent_conflict_on_write", "nb_conflict_on_write", "+ nb_write nb_conflict_on_write", _("Percent conflit on write port"));
     
     log_printf(FUNC,RegisterFile_Multi_Banked,FUNCTION,"End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_transition.cpp	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_transition.cpp	(revision 137)
@@ -51,5 +51,29 @@
                 reg_DATA[internal_WRITE_BANK[i]][internal_WRITE_NUM_REG[i]] = data;
               }
+
+#ifdef STATISTICS
+	    if (usage_is_set(_usage,USE_STATISTICS))
+	      if (PORT_READ(in_WRITE_VAL [i]))
+		{
+		  if (internal_WRITE_VAL [i] == 1)
+		    (*_stat_nb_write) ++;
+		  else
+		    (*_stat_nb_conflict_on_write) ++;
+		}		  
+#endif    
           }
+
+#ifdef STATISTICS
+	if (usage_is_set(_usage,USE_STATISTICS))
+	  for (uint32_t i=0; i<_param->_nb_port_read; i++)
+	    if (PORT_READ(in_READ_VAL [i]))
+	      {
+		if (internal_READ_VAL [i] == 1)
+		  (*_stat_nb_read) ++;
+		else
+		  (*_stat_nb_conflict_on_read) ++;
+	      }		  
+#endif    
+
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_body.cpp	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_body.cpp	(revision 137)
@@ -88,6 +88,6 @@
 		std::string   index     = (_param->_crossbar == FULL_CROSSBAR)?("_"+toString(j)):"";
 
-		vhdl->set_body("\t"+separator+" in_VAL_"+toString(k)+"     \t=>\tinternal_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
-		vhdl->set_body("\t,out_ACK_"+toString(k)+"     \t=>\tinternal_SELECT_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
+		vhdl->set_body("\t"+separator+" in_"+toString(k)+"_VAL     \t=>\tinternal_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
+		vhdl->set_body("\t,out_"+toString(k)+"_ACK     \t=>\tinternal_SELECT_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
 	      }
 	    vhdl->set_body(");");
@@ -107,6 +107,6 @@
 		std::string   index     = (_param->_crossbar == FULL_CROSSBAR)?("_"+toString(j)):"";
 		
-		vhdl->set_body("\t"+separator+" in_VAL_"+toString(k)+"     \t=>\tinternal_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
-		vhdl->set_body("\t,out_ACK_"+toString(k)+"     \t=>\tinternal_SELECT_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
+		vhdl->set_body("\t"+separator+" in_"+toString(k)+"_VAL     \t=>\tinternal_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
+		vhdl->set_body("\t,out_"+toString(k)+"_ACK     \t=>\tinternal_SELECT_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
 	      }
 	    vhdl->set_body(");");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/mkf.info
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/mkf.info	(revision 137)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/mkf.info	(revision 137)
@@ -0,0 +1,6 @@
+
+# RegisterFile_0
+target_dep	all	RegisterFile_0.ngc
+target_dep	RegisterFile_0.ngc	RegisterFile_0.prj
+target_dep	RegisterFile_0.prj	RegisterFile_0_Pack.vhdl RegisterFile_0.vhdl
+
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/test.cpp	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/test.cpp	(revision 137)
@@ -26,5 +26,5 @@
   Tusage_t _usage = USE_ALL;
 
-//   _usage = usage_unset(_usage,USE_SYSTEMC              );
+  _usage = usage_unset(_usage,USE_SYSTEMC              );
 //   _usage = usage_unset(_usage,USE_VHDL                 );
 //   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h	(revision 137)
@@ -26,11 +26,11 @@
   {
     //-----[ fields ]------------------------------------------------------------
-  public : const Tinstance_t _instance;
-  public : const uint32_t    _nb_port_read ;
-  public : const uint32_t    _nb_port_write;
-  public : const uint32_t    _nb_word      ;
-  public : const uint32_t    _size_word    ;
-  public : const uint32_t    _size_address ;
-  public : const bool        _have_port_address;
+  public : Tinstance_t _instance;
+  public : uint32_t    _nb_port_read ;
+  public : uint32_t    _nb_port_write;
+  public : uint32_t    _nb_word      ;
+  public : uint32_t    _size_word    ;
+  public : uint32_t    _size_address ;
+  public : bool        _have_port_address;
 
   public : morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * _param_registerfile_monolithic;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp	(revision 132)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp	(revision 137)
@@ -14,14 +14,15 @@
 
 
-  Parameters::Parameters (morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * param) :
-    _instance          (instance_RegisterFile_Monolithic),
-    _nb_port_read      (param->_nb_port_read ),
-    _nb_port_write     (param->_nb_port_write),
-    _nb_word           (param->_nb_word      ), 
-    _size_word         (param->_size_word    ), 
-    _size_address      (param->_size_address ),
-    _have_port_address (param->_have_port_address)
+  Parameters::Parameters (morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * param)
   {
     log_printf(FUNC,RegisterFile,"Parameters","Begin");
+
+    _instance          = instance_RegisterFile_Monolithic;
+    _nb_port_read      = param->_nb_port_read ;
+    _nb_port_write     = param->_nb_port_write;
+    _nb_word           = param->_nb_word      ; 
+    _size_word         = param->_size_word    ; 
+    _size_address      = param->_size_address ;
+    _have_port_address = param->_have_port_address;
 
     _param_registerfile_monolithic   = param;
