Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Constant/Constant_OpenRISC.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Constant/Constant_OpenRISC.h	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Constant/Constant_OpenRISC.h	(revision 53)
@@ -21,6 +21,6 @@
   //----------------------------------------------------[ Operation ]-----
   typedef uint8_t       Toperation_t;
-#define                 _nb_operation                 32
-#define                 _size_operation               5
+// #define                 _nb_operation                 32
+// #define                 _size_operation               5
 
 #define                 _operation_none               0x0
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Makefile.deps	(revision 53)
@@ -7,4 +7,6 @@
 # 
 # DIR_MORPHEO must be defined
+
+Meta_Predictor			= yes
 
 ifndef Behavioural
@@ -17,6 +19,4 @@
 include $(DIR_MORPHEO)/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/Makefile.deps
 endif
-
-Meta_Predictor			= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/Makefile.deps	(revision 53)
@@ -8,9 +8,9 @@
 # DIR_MORPHEO must be defined
 
+Meta_Predictor_Glue			= yes
+
 ifndef Behavioural
 include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
 endif
-
-Meta_Predictor_Glue			= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/Makefile.deps	(revision 53)
@@ -7,4 +7,6 @@
 # 
 # DIR_MORPHEO must be defined
+
+Branch_History_Table			= yes
 
 ifndef Behavioural
@@ -17,6 +19,4 @@
 include 			$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.deps
 endif
-
-Branch_History_Table			= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Makefile.deps	(revision 53)
@@ -7,4 +7,6 @@
 # 
 # DIR_MORPHEO must be defined
+
+Two_Level_Branch_Predictor			= yes
 
 ifndef Behavioural
@@ -20,6 +22,4 @@
 include $(DIR_MORPHEO)/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile.deps
 endif
-
-Two_Level_Branch_Predictor			= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/Makefile.deps	(revision 53)
@@ -7,4 +7,6 @@
 # 
 # DIR_MORPHEO must be defined
+
+Pattern_History_Table			= yes
 
 ifndef Behavioural
@@ -17,6 +19,4 @@
 include 			$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.deps
 endif
-
-Pattern_History_Table			= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile.deps	(revision 53)
@@ -8,9 +8,9 @@
 # DIR_MORPHEO must be defined
 
+Two_Level_Branch_Predictor_Glue			= yes
+
 ifndef Behavioural
 include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
 endif
-
-Two_Level_Branch_Predictor_Glue			= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile.deps	(revision 53)
@@ -8,9 +8,9 @@
 # DIR_MORPHEO must be defined
 
+Counter			= yes
+
 ifndef Behavioural
 include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
 endif
-
-Counter			= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter.cpp	(revision 53)
@@ -48,7 +48,10 @@
 
 #ifdef SYSTEMC
+
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     SC_METHOD (transition);
     dont_initialize ();
     sensitive_pos << *(in_CLOCK);
+#endif
 
     SC_METHOD (genMealy);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/Makefile.deps	(revision 53)
@@ -8,9 +8,9 @@
 # DIR_MORPHEO must be defined
 
+Group			= yes
+
 ifndef Behavioural
 include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
 endif
-
-Group			= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile	(revision 53)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libRegisterFile.a
+
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile.defs	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile.defs	(revision 53)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile.deps	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/Makefile.deps	(revision 53)
@@ -0,0 +1,48 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+RegisterFile			= yes
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+ifndef RegisterFile_Monolithic
+include                         $(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.deps
+endif
+ifndef RegisterFile_Multi_Banked
+include                         $(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.deps
+endif
+
+
+#-----[ Library ]------------------------------------------
+RegisterFile_LIBRARY		= 	-lRegisterFile				\
+					$(RegisterFile_Monolithic_LIBRARY)      \
+					$(RegisterFile_Multi_Banked_LIBRARY)    \
+					$(Behavioural_LIBRARY)	
+
+RegisterFile_DIR_LIBRARY	=	-L$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/lib	\
+					$(RegisterFile_Monolithic_DIR_LIBRARY)      \
+					$(RegisterFile_Multi_Banked_DIR_LIBRARY)    \
+					$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+RegisterFile_library		: 
+				@\
+				$(MAKE) Behavioural_library; \
+				$(MAKE) RegisterFile_Monolithic_library;\
+				$(MAKE) RegisterFile_Multi_Banked_library;\
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile --makefile=Makefile;
+	
+RegisterFile_library_clean	: 
+				@\
+				$(MAKE) Behavioural_library_clean; \
+				$(MAKE) RegisterFile_Monolithic_library_clean;\
+				$(MAKE) RegisterFile_Multi_Banked_library_clean;\
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile.deps	(revision 53)
@@ -8,4 +8,6 @@
 # DIR_MORPHEO must be defined
 
+RegisterFile_Monolithic			= yes
+
 ifndef Behavioural
 include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
@@ -15,5 +17,4 @@
 endif
 
-RegisterFile_Monolithic			= yes
 #-----[ Library ]------------------------------------------
 RegisterFile_Monolithic_LIBRARY		= 	-lRegisterFile_Monolithic		\
Index: unk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/Makefile.mkf
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/Makefile.mkf	(revision 52)
+++ 	(revision )
@@ -1,516 +1,0 @@
-#
-# Makefile generated by MKF configure script
-#
-
-all: RegisterFile_Monolithic_0.ngc RegisterFile_Monolithic_10.ngc RegisterFile_Monolithic_11.ngc RegisterFile_Monolithic_12.ngc RegisterFile_Monolithic_13.ngc RegisterFile_Monolithic_14.ngc RegisterFile_Monolithic_15.ngc RegisterFile_Monolithic_16.ngc RegisterFile_Monolithic_17.ngc RegisterFile_Monolithic_18.ngc RegisterFile_Monolithic_19.ngc RegisterFile_Monolithic_1.ngc RegisterFile_Monolithic_20.ngc RegisterFile_Monolithic_21.ngc RegisterFile_Monolithic_22.ngc RegisterFile_Monolithic_23.ngc RegisterFile_Monolithic_24.ngc RegisterFile_Monolithic_25.ngc RegisterFile_Monolithic_26.ngc RegisterFile_Monolithic_27.ngc RegisterFile_Monolithic_28.ngc RegisterFile_Monolithic_29.ngc RegisterFile_Monolithic_2.ngc RegisterFile_Monolithic_30.ngc RegisterFile_Monolithic_31.ngc RegisterFile_Monolithic_32.ngc RegisterFile_Monolithic_33.ngc RegisterFile_Monolithic_34.ngc RegisterFile_Monolithic_35.ngc RegisterFile_Monolithic_3.ngc RegisterFile_Monolithic_4.ngc RegisterFile_Monolithic_5.ngc RegisterFile_Monolithic_6.ngc RegisterFile_Monolithic_7.ngc RegisterFile_Monolithic_8.ngc RegisterFile_Monolithic_9.ngc
-
-RegisterFile_Monolithic_0.ngc: RegisterFile_Monolithic_0.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_0 -ifn RegisterFile_Monolithic_0.prj -ofn RegisterFile_Monolithic_0.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_0.prj: RegisterFile_Monolithic_0_Pack.vhdl RegisterFile_Monolithic_0.vhdl
-	for i in RegisterFile_Monolithic_0_Pack.vhdl RegisterFile_Monolithic_0.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_0.prj
-
-RegisterFile_Monolithic_0_Pack.vhdl:
-
-RegisterFile_Monolithic_0.vhdl:
-
-RegisterFile_Monolithic_10.ngc: RegisterFile_Monolithic_10.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_10 -ifn RegisterFile_Monolithic_10.prj -ofn RegisterFile_Monolithic_10.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_10.prj: RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl
-	for i in RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_10.prj
-
-RegisterFile_Monolithic_10_Pack.vhdl:
-
-RegisterFile_Monolithic_10.vhdl:
-
-RegisterFile_Monolithic_11.ngc: RegisterFile_Monolithic_11.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_11 -ifn RegisterFile_Monolithic_11.prj -ofn RegisterFile_Monolithic_11.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_11.prj: RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl
-	for i in RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_11.prj
-
-RegisterFile_Monolithic_11_Pack.vhdl:
-
-RegisterFile_Monolithic_11.vhdl:
-
-RegisterFile_Monolithic_12.ngc: RegisterFile_Monolithic_12.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_12 -ifn RegisterFile_Monolithic_12.prj -ofn RegisterFile_Monolithic_12.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_12.prj: RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl
-	for i in RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_12.prj
-
-RegisterFile_Monolithic_12_Pack.vhdl:
-
-RegisterFile_Monolithic_12.vhdl:
-
-RegisterFile_Monolithic_13.ngc: RegisterFile_Monolithic_13.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_13 -ifn RegisterFile_Monolithic_13.prj -ofn RegisterFile_Monolithic_13.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_13.prj: RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl
-	for i in RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_13.prj
-
-RegisterFile_Monolithic_13_Pack.vhdl:
-
-RegisterFile_Monolithic_13.vhdl:
-
-RegisterFile_Monolithic_14.ngc: RegisterFile_Monolithic_14.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_14 -ifn RegisterFile_Monolithic_14.prj -ofn RegisterFile_Monolithic_14.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_14.prj: RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl
-	for i in RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_14.prj
-
-RegisterFile_Monolithic_14_Pack.vhdl:
-
-RegisterFile_Monolithic_14.vhdl:
-
-RegisterFile_Monolithic_15.ngc: RegisterFile_Monolithic_15.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_15 -ifn RegisterFile_Monolithic_15.prj -ofn RegisterFile_Monolithic_15.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_15.prj: RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl
-	for i in RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_15.prj
-
-RegisterFile_Monolithic_15_Pack.vhdl:
-
-RegisterFile_Monolithic_15.vhdl:
-
-RegisterFile_Monolithic_16.ngc: RegisterFile_Monolithic_16.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_16 -ifn RegisterFile_Monolithic_16.prj -ofn RegisterFile_Monolithic_16.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_16.prj: RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl
-	for i in RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_16.prj
-
-RegisterFile_Monolithic_16_Pack.vhdl:
-
-RegisterFile_Monolithic_16.vhdl:
-
-RegisterFile_Monolithic_17.ngc: RegisterFile_Monolithic_17.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_17 -ifn RegisterFile_Monolithic_17.prj -ofn RegisterFile_Monolithic_17.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_17.prj: RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl
-	for i in RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_17.prj
-
-RegisterFile_Monolithic_17_Pack.vhdl:
-
-RegisterFile_Monolithic_17.vhdl:
-
-RegisterFile_Monolithic_18.ngc: RegisterFile_Monolithic_18.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_18 -ifn RegisterFile_Monolithic_18.prj -ofn RegisterFile_Monolithic_18.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_18.prj: RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl
-	for i in RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_18.prj
-
-RegisterFile_Monolithic_18_Pack.vhdl:
-
-RegisterFile_Monolithic_18.vhdl:
-
-RegisterFile_Monolithic_19.ngc: RegisterFile_Monolithic_19.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_19 -ifn RegisterFile_Monolithic_19.prj -ofn RegisterFile_Monolithic_19.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_19.prj: RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl
-	for i in RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_19.prj
-
-RegisterFile_Monolithic_19_Pack.vhdl:
-
-RegisterFile_Monolithic_19.vhdl:
-
-RegisterFile_Monolithic_1.ngc: RegisterFile_Monolithic_1.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_1 -ifn RegisterFile_Monolithic_1.prj -ofn RegisterFile_Monolithic_1.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_1.prj: RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl
-	for i in RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_1.prj
-
-RegisterFile_Monolithic_1_Pack.vhdl:
-
-RegisterFile_Monolithic_1.vhdl:
-
-RegisterFile_Monolithic_20.ngc: RegisterFile_Monolithic_20.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_20 -ifn RegisterFile_Monolithic_20.prj -ofn RegisterFile_Monolithic_20.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_20.prj: RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl
-	for i in RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_20.prj
-
-RegisterFile_Monolithic_20_Pack.vhdl:
-
-RegisterFile_Monolithic_20.vhdl:
-
-RegisterFile_Monolithic_21.ngc: RegisterFile_Monolithic_21.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_21 -ifn RegisterFile_Monolithic_21.prj -ofn RegisterFile_Monolithic_21.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_21.prj: RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl
-	for i in RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_21.prj
-
-RegisterFile_Monolithic_21_Pack.vhdl:
-
-RegisterFile_Monolithic_21.vhdl:
-
-RegisterFile_Monolithic_22.ngc: RegisterFile_Monolithic_22.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_22 -ifn RegisterFile_Monolithic_22.prj -ofn RegisterFile_Monolithic_22.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_22.prj: RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl
-	for i in RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_22.prj
-
-RegisterFile_Monolithic_22_Pack.vhdl:
-
-RegisterFile_Monolithic_22.vhdl:
-
-RegisterFile_Monolithic_23.ngc: RegisterFile_Monolithic_23.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_23 -ifn RegisterFile_Monolithic_23.prj -ofn RegisterFile_Monolithic_23.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_23.prj: RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl
-	for i in RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_23.prj
-
-RegisterFile_Monolithic_23_Pack.vhdl:
-
-RegisterFile_Monolithic_23.vhdl:
-
-RegisterFile_Monolithic_24.ngc: RegisterFile_Monolithic_24.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_24 -ifn RegisterFile_Monolithic_24.prj -ofn RegisterFile_Monolithic_24.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_24.prj: RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl
-	for i in RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_24.prj
-
-RegisterFile_Monolithic_24_Pack.vhdl:
-
-RegisterFile_Monolithic_24.vhdl:
-
-RegisterFile_Monolithic_25.ngc: RegisterFile_Monolithic_25.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_25 -ifn RegisterFile_Monolithic_25.prj -ofn RegisterFile_Monolithic_25.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_25.prj: RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl
-	for i in RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_25.prj
-
-RegisterFile_Monolithic_25_Pack.vhdl:
-
-RegisterFile_Monolithic_25.vhdl:
-
-RegisterFile_Monolithic_26.ngc: RegisterFile_Monolithic_26.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_26 -ifn RegisterFile_Monolithic_26.prj -ofn RegisterFile_Monolithic_26.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_26.prj: RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl
-	for i in RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_26.prj
-
-RegisterFile_Monolithic_26_Pack.vhdl:
-
-RegisterFile_Monolithic_26.vhdl:
-
-RegisterFile_Monolithic_27.ngc: RegisterFile_Monolithic_27.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_27 -ifn RegisterFile_Monolithic_27.prj -ofn RegisterFile_Monolithic_27.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_27.prj: RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl
-	for i in RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_27.prj
-
-RegisterFile_Monolithic_27_Pack.vhdl:
-
-RegisterFile_Monolithic_27.vhdl:
-
-RegisterFile_Monolithic_28.ngc: RegisterFile_Monolithic_28.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_28 -ifn RegisterFile_Monolithic_28.prj -ofn RegisterFile_Monolithic_28.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_28.prj: RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl
-	for i in RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_28.prj
-
-RegisterFile_Monolithic_28_Pack.vhdl:
-
-RegisterFile_Monolithic_28.vhdl:
-
-RegisterFile_Monolithic_29.ngc: RegisterFile_Monolithic_29.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_29 -ifn RegisterFile_Monolithic_29.prj -ofn RegisterFile_Monolithic_29.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_29.prj: RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl
-	for i in RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_29.prj
-
-RegisterFile_Monolithic_29_Pack.vhdl:
-
-RegisterFile_Monolithic_29.vhdl:
-
-RegisterFile_Monolithic_2.ngc: RegisterFile_Monolithic_2.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_2 -ifn RegisterFile_Monolithic_2.prj -ofn RegisterFile_Monolithic_2.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_2.prj: RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl RegisterFile_Monolithic_2_Pack.vhdl RegisterFile_Monolithic_2.vhdl
-	for i in RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl RegisterFile_Monolithic_2_Pack.vhdl RegisterFile_Monolithic_2.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_2.prj
-
-RegisterFile_Monolithic_2_Pack.vhdl:
-
-RegisterFile_Monolithic_2.vhdl:
-
-RegisterFile_Monolithic_30.ngc: RegisterFile_Monolithic_30.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_30 -ifn RegisterFile_Monolithic_30.prj -ofn RegisterFile_Monolithic_30.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_30.prj: RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl
-	for i in RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_30.prj
-
-RegisterFile_Monolithic_30_Pack.vhdl:
-
-RegisterFile_Monolithic_30.vhdl:
-
-RegisterFile_Monolithic_31.ngc: RegisterFile_Monolithic_31.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_31 -ifn RegisterFile_Monolithic_31.prj -ofn RegisterFile_Monolithic_31.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_31.prj: RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl
-	for i in RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_31.prj
-
-RegisterFile_Monolithic_31_Pack.vhdl:
-
-RegisterFile_Monolithic_31.vhdl:
-
-RegisterFile_Monolithic_32.ngc: RegisterFile_Monolithic_32.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_32 -ifn RegisterFile_Monolithic_32.prj -ofn RegisterFile_Monolithic_32.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_32.prj: RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl
-	for i in RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_32.prj
-
-RegisterFile_Monolithic_32_Pack.vhdl:
-
-RegisterFile_Monolithic_32.vhdl:
-
-RegisterFile_Monolithic_33.ngc: RegisterFile_Monolithic_33.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_33 -ifn RegisterFile_Monolithic_33.prj -ofn RegisterFile_Monolithic_33.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_33.prj: RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl
-	for i in RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_33.prj
-
-RegisterFile_Monolithic_33_Pack.vhdl:
-
-RegisterFile_Monolithic_33.vhdl:
-
-RegisterFile_Monolithic_34.ngc: RegisterFile_Monolithic_34.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_34 -ifn RegisterFile_Monolithic_34.prj -ofn RegisterFile_Monolithic_34.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_34.prj: RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl
-	for i in RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_34.prj
-
-RegisterFile_Monolithic_34_Pack.vhdl:
-
-RegisterFile_Monolithic_34.vhdl:
-
-RegisterFile_Monolithic_35.ngc: RegisterFile_Monolithic_35.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_35 -ifn RegisterFile_Monolithic_35.prj -ofn RegisterFile_Monolithic_35.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_35.prj: RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl
-	for i in RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_35.prj
-
-RegisterFile_Monolithic_35_Pack.vhdl:
-
-RegisterFile_Monolithic_35.vhdl:
-
-RegisterFile_Monolithic_3.ngc: RegisterFile_Monolithic_3.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_3 -ifn RegisterFile_Monolithic_3.prj -ofn RegisterFile_Monolithic_3.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_3.prj: RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl RegisterFile_Monolithic_3_Pack.vhdl RegisterFile_Monolithic_3.vhdl
-	for i in RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl RegisterFile_Monolithic_3_Pack.vhdl RegisterFile_Monolithic_3.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_3.prj
-
-RegisterFile_Monolithic_3_Pack.vhdl:
-
-RegisterFile_Monolithic_3.vhdl:
-
-RegisterFile_Monolithic_4.ngc: RegisterFile_Monolithic_4.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_4 -ifn RegisterFile_Monolithic_4.prj -ofn RegisterFile_Monolithic_4.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_4.prj: RegisterFile_Monolithic_4_Pack.vhdl RegisterFile_Monolithic_4.vhdl
-	for i in RegisterFile_Monolithic_4_Pack.vhdl RegisterFile_Monolithic_4.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_4.prj
-
-RegisterFile_Monolithic_4_Pack.vhdl:
-
-RegisterFile_Monolithic_4.vhdl:
-
-RegisterFile_Monolithic_5.ngc: RegisterFile_Monolithic_5.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_5 -ifn RegisterFile_Monolithic_5.prj -ofn RegisterFile_Monolithic_5.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_5.prj: RegisterFile_Monolithic_5_Pack.vhdl RegisterFile_Monolithic_5.vhdl
-	for i in RegisterFile_Monolithic_5_Pack.vhdl RegisterFile_Monolithic_5.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_5.prj
-
-RegisterFile_Monolithic_5_Pack.vhdl:
-
-RegisterFile_Monolithic_5.vhdl:
-
-RegisterFile_Monolithic_6.ngc: RegisterFile_Monolithic_6.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_6 -ifn RegisterFile_Monolithic_6.prj -ofn RegisterFile_Monolithic_6.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_6.prj: RegisterFile_Monolithic_6_Pack.vhdl RegisterFile_Monolithic_6.vhdl
-	for i in RegisterFile_Monolithic_6_Pack.vhdl RegisterFile_Monolithic_6.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_6.prj
-
-RegisterFile_Monolithic_6_Pack.vhdl:
-
-RegisterFile_Monolithic_6.vhdl:
-
-RegisterFile_Monolithic_7.ngc: RegisterFile_Monolithic_7.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_7 -ifn RegisterFile_Monolithic_7.prj -ofn RegisterFile_Monolithic_7.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_7.prj: RegisterFile_Monolithic_7_Pack.vhdl RegisterFile_Monolithic_7.vhdl
-	for i in RegisterFile_Monolithic_7_Pack.vhdl RegisterFile_Monolithic_7.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_7.prj
-
-RegisterFile_Monolithic_7_Pack.vhdl:
-
-RegisterFile_Monolithic_7.vhdl:
-
-RegisterFile_Monolithic_8.ngc: RegisterFile_Monolithic_8.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_8 -ifn RegisterFile_Monolithic_8.prj -ofn RegisterFile_Monolithic_8.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_8.prj: RegisterFile_Monolithic_8_Pack.vhdl RegisterFile_Monolithic_8.vhdl
-	for i in RegisterFile_Monolithic_8_Pack.vhdl RegisterFile_Monolithic_8.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_8.prj
-
-RegisterFile_Monolithic_8_Pack.vhdl:
-
-RegisterFile_Monolithic_8.vhdl:
-
-RegisterFile_Monolithic_9.ngc: RegisterFile_Monolithic_9.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Monolithic_9 -ifn RegisterFile_Monolithic_9.prj -ofn RegisterFile_Monolithic_9.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Monolithic_9.prj: RegisterFile_Monolithic_9_Pack.vhdl RegisterFile_Monolithic_9.vhdl
-	for i in RegisterFile_Monolithic_9_Pack.vhdl RegisterFile_Monolithic_9.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Monolithic_9.prj
-
-RegisterFile_Monolithic_9_Pack.vhdl:
-
-RegisterFile_Monolithic_9.vhdl:
-
-clean:
-	rm -f RegisterFile_Monolithic_0.ngc
-	rm -f RegisterFile_Monolithic_0.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_0.prj
-	rm -f RegisterFile_Monolithic_10.ngc
-	rm -f RegisterFile_Monolithic_10.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_10.prj
-	rm -f RegisterFile_Monolithic_11.ngc
-	rm -f RegisterFile_Monolithic_11.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_11.prj
-	rm -f RegisterFile_Monolithic_12.ngc
-	rm -f RegisterFile_Monolithic_12.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_12.prj
-	rm -f RegisterFile_Monolithic_13.ngc
-	rm -f RegisterFile_Monolithic_13.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_13.prj
-	rm -f RegisterFile_Monolithic_14.ngc
-	rm -f RegisterFile_Monolithic_14.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_14.prj
-	rm -f RegisterFile_Monolithic_15.ngc
-	rm -f RegisterFile_Monolithic_15.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_15.prj
-	rm -f RegisterFile_Monolithic_16.ngc
-	rm -f RegisterFile_Monolithic_16.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_16.prj
-	rm -f RegisterFile_Monolithic_17.ngc
-	rm -f RegisterFile_Monolithic_17.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_17.prj
-	rm -f RegisterFile_Monolithic_18.ngc
-	rm -f RegisterFile_Monolithic_18.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_18.prj
-	rm -f RegisterFile_Monolithic_19.ngc
-	rm -f RegisterFile_Monolithic_19.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_19.prj
-	rm -f RegisterFile_Monolithic_1.ngc
-	rm -f RegisterFile_Monolithic_1.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_1.prj
-	rm -f RegisterFile_Monolithic_20.ngc
-	rm -f RegisterFile_Monolithic_20.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_20.prj
-	rm -f RegisterFile_Monolithic_21.ngc
-	rm -f RegisterFile_Monolithic_21.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_21.prj
-	rm -f RegisterFile_Monolithic_22.ngc
-	rm -f RegisterFile_Monolithic_22.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_22.prj
-	rm -f RegisterFile_Monolithic_23.ngc
-	rm -f RegisterFile_Monolithic_23.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_23.prj
-	rm -f RegisterFile_Monolithic_24.ngc
-	rm -f RegisterFile_Monolithic_24.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_24.prj
-	rm -f RegisterFile_Monolithic_25.ngc
-	rm -f RegisterFile_Monolithic_25.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_25.prj
-	rm -f RegisterFile_Monolithic_26.ngc
-	rm -f RegisterFile_Monolithic_26.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_26.prj
-	rm -f RegisterFile_Monolithic_27.ngc
-	rm -f RegisterFile_Monolithic_27.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_27.prj
-	rm -f RegisterFile_Monolithic_28.ngc
-	rm -f RegisterFile_Monolithic_28.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_28.prj
-	rm -f RegisterFile_Monolithic_29.ngc
-	rm -f RegisterFile_Monolithic_29.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_29.prj
-	rm -f RegisterFile_Monolithic_2.ngc
-	rm -f RegisterFile_Monolithic_2.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_2.prj
-	rm -f RegisterFile_Monolithic_30.ngc
-	rm -f RegisterFile_Monolithic_30.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_30.prj
-	rm -f RegisterFile_Monolithic_31.ngc
-	rm -f RegisterFile_Monolithic_31.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_31.prj
-	rm -f RegisterFile_Monolithic_32.ngc
-	rm -f RegisterFile_Monolithic_32.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_32.prj
-	rm -f RegisterFile_Monolithic_33.ngc
-	rm -f RegisterFile_Monolithic_33.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_33.prj
-	rm -f RegisterFile_Monolithic_34.ngc
-	rm -f RegisterFile_Monolithic_34.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_34.prj
-	rm -f RegisterFile_Monolithic_35.ngc
-	rm -f RegisterFile_Monolithic_35.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_35.prj
-	rm -f RegisterFile_Monolithic_3.ngc
-	rm -f RegisterFile_Monolithic_3.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_3.prj
-	rm -f RegisterFile_Monolithic_4.ngc
-	rm -f RegisterFile_Monolithic_4.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_4.prj
-	rm -f RegisterFile_Monolithic_5.ngc
-	rm -f RegisterFile_Monolithic_5.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_5.prj
-	rm -f RegisterFile_Monolithic_6.ngc
-	rm -f RegisterFile_Monolithic_6.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_6.prj
-	rm -f RegisterFile_Monolithic_7.ngc
-	rm -f RegisterFile_Monolithic_7.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_7.prj
-	rm -f RegisterFile_Monolithic_8.ngc
-	rm -f RegisterFile_Monolithic_8.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_8.prj
-	rm -f RegisterFile_Monolithic_9.ngc
-	rm -f RegisterFile_Monolithic_9.lso
-	rm -f -r xst
-	rm -f RegisterFile_Monolithic_9.prj
-
-re: clean all
-
-install:
-
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 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h	(revision 53)
@@ -25,4 +25,5 @@
   public : const uint32_t _nb_word      ;
   public : const uint32_t _size_word    ;
+  public : const uint32_t _size_address ;
 
   public : Parameters (uint32_t nb_port_read ,
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Types.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Types.h	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Types.h	(revision 53)
@@ -19,5 +19,5 @@
   typedef uint32_t Taddress_t;
   typedef uint32_t Tdata_t;
-
+ 
 }; // end namespace registerfile_monolithic
 }; // end namespace registerfile 
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 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp	(revision 53)
@@ -22,5 +22,6 @@
     _nb_port_write     (nb_port_write),
     _nb_word           (nb_word      ),
-    _size_word         (size_word    )
+    _size_word         (size_word    ),
+    _size_address      (static_cast<uint32_t>(log2(_nb_word)))
   { 
     test();
@@ -31,5 +32,6 @@
     _nb_port_write     (param._nb_port_write),
     _nb_word           (param._nb_word      ),
-    _size_word         (param._size_word    )
+    _size_word         (param._size_word    ),
+    _size_address      (param._size_address )
   {
     test();
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp	(revision 53)
@@ -60,5 +60,5 @@
 	 in_READ_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
 	out_READ_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
-	 in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param._nb_word)));
+	 in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param._size_address);
 	out_READ_DATA    [i]  = interface->set_signal_out <Tdata_t   > ("data"   , _param._size_word);
       }
@@ -83,5 +83,5 @@
 	 in_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
 	out_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
-	 in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param._nb_word)));
+	 in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param._size_address);
 	 in_WRITE_DATA    [i]  = interface->set_signal_in  <Tdata_t   > ("data"   , _param._size_word);
       }
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp	(revision 53)
@@ -17,5 +17,5 @@
   void RegisterFile_Monolithic::genMealy_read (void)
   {
-    log_printf(FUNC,Register_File,"genMealy_read","Begin");
+    log_printf(FUNC,RegisterFile,"genMealy_read","Begin");
 
 #ifdef STATISTICS
@@ -31,5 +31,5 @@
 	    Tdata_t    data    = REGISTER_READ(reg_DATA[address]);
 
-	    log_printf(TRACE,Register_File,"genMealy_read","[%d] -> %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
+	    log_printf(TRACE,RegisterFile,"genMealy_read","[%d] -> %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
 
 #ifdef STATISTICS
@@ -41,9 +41,9 @@
 	else
 	  {
-	    //log_printf(TRACE,Register_File,"genMealy_read","Read  [%d] : No   transaction",i);
+	    //log_printf(TRACE,RegisterFile,"genMealy_read","Read  [%d] : No   transaction",i);
 	    PORT_WRITE(out_READ_DATA[i],0);
 	  }
       }
-    log_printf(FUNC,Register_File,"genMealy_read","End");
+    log_printf(FUNC,RegisterFile,"genMealy_read","End");
 	
   };
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp	(revision 53)
@@ -16,5 +16,5 @@
   void RegisterFile_Monolithic::transition (void)
   {
-    log_printf(FUNC,Register_File,"transition","Begin");
+    log_printf(FUNC,RegisterFile,"transition","Begin");
 #ifdef STATISTICS
     _stat_nb_write = 0;
@@ -33,5 +33,5 @@
 	    Tdata_t    data    = PORT_READ(in_WRITE_DATA   [i]);
 	    
-	    log_printf(TRACE,Register_File,"transition","[%d] <- %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
+	    log_printf(TRACE,RegisterFile,"transition","[%d] <- %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
 
 	    // Write in registerFile
@@ -47,5 +47,5 @@
     vhdl_testbench_transition ();
 #endif
-    log_printf(FUNC,Register_File,"transition","End");
+    log_printf(FUNC,RegisterFile,"transition","End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile	(revision 53)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libRegisterFile_Multi_Banked.a
+
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.defs	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.defs	(revision 53)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.deps	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile.deps	(revision 53)
@@ -0,0 +1,33 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+RegisterFile_Multi_Banked			= yes
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+
+#-----[ Library ]------------------------------------------
+RegisterFile_Multi_Banked_LIBRARY		= 	-lRegisterFile_Multi_Banked	\
+					$(Behavioural_LIBRARY)	
+
+RegisterFile_Multi_Banked_DIR_LIBRARY		=	-L$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/lib	\
+					$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+RegisterFile_Multi_Banked_library		: 
+				@\
+				$(MAKE) Behavioural_library; \
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked --makefile=Makefile;
+	
+RegisterFile_Multi_Banked_library_clean	: 
+				@\
+				$(MAKE) Behavioural_library_clean; \
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile	(revision 53)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(RegisterFile_Multi_Banked_LIBRARY)
+
+DIR_LIBRARY			= $(RegisterFile_Multi_Banked_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: RegisterFile_Multi_Banked_library
+
+library_clean			: RegisterFile_Multi_Banked_library_clean
+
+include                         ../Makefile.deps
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.Synthesis
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-mono_bank-mux_port.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-mono_bank-mux_port.cfg	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-mono_bank-mux_port.cfg	(revision 53)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+11	11	*2	# nb_port_read
+5	5	*2	# nb_port_write
+256  	256    	+1	# nb_word
+32	32	*2	# size_word
+1	1	*2	# nb_bank
+4 	4  	*2	# nb_port_read_by_bank
+2	2	*2	# nb_port_write_by_bank
+0	1	+1	# crossbar
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-mono_bank.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-mono_bank.cfg	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-mono_bank.cfg	(revision 53)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+11	11	*2	# nb_port_read
+5	5	*2	# nb_port_write
+256  	256    	+1	# nb_word
+32	32	*2	# size_word
+1	1	*2	# nb_bank
+11	11 	*2	# nb_port_read_by_bank
+5	5	*2	# nb_port_write_by_bank
+0	1	+1	# crossbar
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-multi_bank.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-multi_bank.cfg	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-multi_bank.cfg	(revision 53)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+11	11	*2	# nb_port_read
+5	5	*2	# nb_port_write
+256  	256    	+1	# nb_word
+32	32	*2	# size_word
+2	16	*2	# nb_bank
+3	3 	*2	# nb_port_read_by_bank
+2	2	*2	# nb_port_write_by_bank
+0	1	+1	# crossbar
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-one_reg.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-one_reg.cfg	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/config-one_reg.cfg	(revision 53)
@@ -0,0 +1,9 @@
+RegisterFile_Multi_Banked
+11	11	*2	# nb_port_read
+5	5	*2	# nb_port_write
+256  	256    	+1	# nb_word
+32	32	*2	# size_word
+256	256	*2	# nb_bank
+3	3 	*2	# nb_port_read_by_bank
+2	2	*2	# nb_port_write_by_bank
+0	1	+1	# crossbar
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/include/test.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/include/test.h	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/include/test.h	(revision 53)
@@ -0,0 +1,61 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+#include <sys/time.h>
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+using namespace morpheo::behavioural::generic;
+using namespace morpheo::behavioural::generic::registerfile;
+
+using namespace morpheo::behavioural::generic::registerfile::registerfile_multi_banked;
+
+void test    (string name,
+	      morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * param);
+
+
+class Time 
+{
+private : timeval time_begin;
+// private : timeval time_end;
+  
+public  : Time ()
+  {
+    gettimeofday(&time_begin     ,NULL);
+  };
+
+public  : ~Time ()
+  {
+    cout << *this;
+  };
+
+public  : friend ostream& operator<< (ostream& output_stream,
+				      const Time & x)
+  {
+    timeval time_end;
+    
+    gettimeofday(&time_end       ,NULL);
+    
+    uint32_t nb_cycles = static_cast<uint32_t>(sc_simulation_time());
+
+    double average = static_cast<double>(nb_cycles) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec);
+    
+    output_stream << nb_cycles << "\t(" << average << " cycles / seconds )" << endl;
+
+    return output_stream;
+  }
+};
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/main.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/main.cpp	(revision 53)
@@ -0,0 +1,80 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/include/test.h"
+
+#define NB_PARAMS 0
+
+void usage (int argc, char * argv[])
+{
+  cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
+       << "list_params is :" << endl
+       << " - nb_port_read          (uint32_t   )" << endl
+       << " - nb_port_write         (uint32_t   )" << endl
+       << " - nb_word               (uint32_t   )" << endl
+       << " - size_word             (uint32_t   )" << endl
+       << " - nb_bank               (uint32_t   )" << endl
+       << " - nb_port_read_by_bank  (uint32_t   )" << endl
+       << " - nb_port_write_by_bank (uint32_t   )" << endl
+       << " - crossbar              (Tcrossbar_t)" << endl
+       << "" << endl;
+
+  for (int i=0; i<argc; i++)
+    cerr << argv[i] << " ";
+  cerr << endl;
+
+  exit (1);
+}
+
+#ifndef SYSTEMC
+int main    (int argc, char * argv[])
+#else
+int sc_main (int argc, char * argv[])
+#endif
+{
+  if (argc < 2+NB_PARAMS)
+    usage (argc, argv);
+
+  const string   name      = argv[1];
+  const uint32_t    nb_port_read          = atoi(argv[2]);
+  const uint32_t    nb_port_write         = atoi(argv[3]);
+  const uint32_t    nb_word               = atoi(argv[4]);
+  const uint32_t    size_word             = atoi(argv[5]);
+  const uint32_t    nb_bank               = atoi(argv[6]);
+  const uint32_t    nb_port_read_by_bank  = atoi(argv[7]);
+  const uint32_t    nb_port_write_by_bank = atoi(argv[8]);
+  const Tcrossbar_t crossbar              = fromString<Tcrossbar_t>(argv[9]);
+
+  try 
+    {
+      morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * param = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters (nb_port_read         ,
+																							   nb_port_write        ,
+																							   nb_word              ,
+																							   size_word            ,
+																							   nb_bank              ,
+																							   nb_port_read_by_bank ,
+																							   nb_port_write_by_bank,
+																							   crossbar             );
+      
+      cout << param->print(1);
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      cout << "<" << name << "> : " <<  error.what ();
+      exit (EXIT_FAILURE);
+    }
+  catch (...)
+    {
+      cerr << "<" << name << "> : This test must generate a error" << endl;
+      exit (EXIT_FAILURE);
+    }
+
+  return (EXIT_SUCCESS);
+}
+
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp	(revision 53)
@@ -0,0 +1,237 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#define NB_ITERATION  1024
+#define CYCLE_MAX     (512*NB_ITERATION)
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/include/test.h"
+#include "Common/include/Test.h"
+
+
+#define LABEL(str)                                                                       \
+{                                                                                        \
+  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} " << str << endl; \
+} while(0)
+
+#define SC_START(cycle)                                        \
+do                                                             \
+{                                                              \
+  if (static_cast<uint32_t>(sc_simulation_time()) > CYCLE_MAX) \
+    {                                                          \
+      TEST_KO("Maximal cycles Reached");                       \
+    }                                                          \
+  sc_start(cycle);                                             \
+} while(0)
+
+void test (string name,
+	   morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * _param)
+{
+  cout << "<" << name << "> : Simulation SystemC" << endl;
+
+  RegisterFile_Multi_Banked * _RegisterFile_Multi_Banked = new RegisterFile_Multi_Banked (name.c_str(),
+#ifdef STATISTICS
+					     morpheo::behavioural::Parameters_Statistics(5,50),
+#endif
+					     *_param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  sc_clock                               * CLOCK;
+  sc_signal<Tcontrol_t>                  * NRESET;
+
+  sc_signal<Tcontrol_t>                    READ_VAL      [_param->_nb_port_read];
+  sc_signal<Tcontrol_t>                    READ_ACK      [_param->_nb_port_read];
+  sc_signal<Taddress_t>                    READ_ADDRESS  [_param->_nb_port_read];
+  sc_signal<Tdata_t>                       READ_DATA     [_param->_nb_port_read];
+
+  sc_signal<Tcontrol_t>                    WRITE_VAL     [_param->_nb_port_write];
+  sc_signal<Tcontrol_t>                    WRITE_ACK     [_param->_nb_port_write];
+  sc_signal<Taddress_t>                    WRITE_ADDRESS [_param->_nb_port_write];
+  sc_signal<Tdata_t>                       WRITE_DATA    [_param->_nb_port_write];
+
+  string rename;
+
+  CLOCK                                  = new sc_clock ("clock", 1.0, 0.5);
+  NRESET                                 = new sc_signal<Tcontrol_t> ("NRESET");
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  cout << "<" << name << "> Instanciation of _RegisterFile_Multi_Banked" << endl;
+  
+  (*(_RegisterFile_Multi_Banked->in_CLOCK))        (*(CLOCK));
+  (*(_RegisterFile_Multi_Banked->in_NRESET))       (*(NRESET));
+
+  for (uint32_t i=0; i<_param->_nb_port_read; i++)
+    {
+      (*(_RegisterFile_Multi_Banked-> in_READ_VAL      [i]))        (READ_VAL      [i]);
+      (*(_RegisterFile_Multi_Banked->out_READ_ACK      [i]))        (READ_ACK      [i]);
+      (*(_RegisterFile_Multi_Banked-> in_READ_ADDRESS  [i]))        (READ_ADDRESS  [i]);
+      (*(_RegisterFile_Multi_Banked->out_READ_DATA     [i]))        (READ_DATA     [i]);
+    }
+
+  for (uint32_t i=0; i<_param->_nb_port_write; i++)
+    {
+      (*(_RegisterFile_Multi_Banked-> in_WRITE_VAL     [i]))        (WRITE_VAL     [i]);
+      (*(_RegisterFile_Multi_Banked->out_WRITE_ACK     [i]))        (WRITE_ACK     [i]);
+      (*(_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS [i]))        (WRITE_ADDRESS [i]);
+      (*(_RegisterFile_Multi_Banked-> in_WRITE_DATA    [i]))        (WRITE_DATA    [i]);
+    }
+
+  cout << "<" << name << "> Start Simulation ............" << endl;
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+  const bool     simulate_read = false;
+  const uint32_t nb_request    = _param->_nb_word;
+  // random init
+  const uint32_t grain         = 0;
+  //const uint32_t grain = static_cast<uint32_t>(time(NULL));
+  
+  srand(grain);
+
+  // Initialisation
+
+  SC_START(0);
+  
+  for (uint32_t i=0; i<_param->_nb_port_write; i++)
+    WRITE_VAL [i] .write (0);
+
+  for (uint32_t i=0; i<_param->_nb_port_read; i++)
+    READ_VAL  [i] .write (0);
+
+  NRESET->write(0);
+
+  SC_START(5);
+
+  NRESET->write(1);
+
+  for (uint32_t nb_iteration=0; nb_iteration < NB_ITERATION; nb_iteration ++)
+    {
+      cout << "<" << name << "> 1) Write the RegisterFile (no read)" << endl;
+
+      Taddress_t nb_val            = 0;
+      Taddress_t nb_ack            = 0;
+      
+      Tdata_t    tab_data    [_param->_nb_word];
+      Taddress_t tab_address [nb_request      ];
+  
+      for (uint32_t i=0; i<_param->_nb_word; i++)
+	tab_data    [i]= rand()%(1<<(_param->_size_word-1));
+      for (uint32_t i=0; i<nb_request; i++)
+	tab_address [i]= rand()%(1<<(_param->_size_address));
+
+      while (nb_ack < nb_request)
+	{
+	  cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
+
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_write; num_port ++)
+	    {
+	      if ((nb_val            < nb_request) and
+		  (WRITE_VAL [num_port].read() == 0))
+		{
+		  cout << "(" << num_port << ") [" << tab_address[nb_val] << "] <= " << tab_data[tab_address[nb_val]] << endl;
+		  
+		  WRITE_VAL     [num_port] .write(1);
+		  WRITE_DATA    [num_port] .write(tab_data[tab_address[nb_val]]);
+		  WRITE_ADDRESS [num_port] .write(tab_address[nb_val]);
+
+		  nb_val ++;
+
+		  // Address can be not a multiple of nb_port_write
+		  if (nb_val >= nb_request)
+		    break;
+		}
+	    }
+	  
+	  SC_START(1);
+
+	  // reset write_val port
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_write; num_port ++)
+	    {
+	      if ((WRITE_ACK [num_port].read() == 1) and
+		  (WRITE_VAL [num_port].read() == 1))
+		{
+		  WRITE_VAL  [num_port] .write(0);
+		  nb_ack ++;
+		}
+	    }
+
+	  SC_START(0);
+	}
+      
+
+      if (simulate_read == true)
+	{
+	  cout << "<" << name << "> 2) Read the RegisterFile (no write)" << endl;
+	  
+	  nb_val = 0;
+	  nb_ack = 0;
+	  Tdata_t read_address [_param->_nb_port_read];
+
+	  while (nb_ack < nb_request)
+	    {
+	      cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
+	      
+	      for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
+		{
+		  if ((nb_val < nb_request) and
+		      (READ_VAL [num_port].read() == 0))
+		    {
+		      read_address [num_port] = tab_address[nb_val];
+		      READ_VAL     [num_port].write(1);
+		      READ_ADDRESS [num_port].write(read_address [num_port]);
+		      
+		      nb_val ++;
+		      
+		      if (nb_val >= nb_request)
+			break;
+		    }
+		}
+	      
+	      SC_START(1);
+	      
+	      // reset write_val port
+	      for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
+		{
+		  if ((READ_ACK [num_port].read() == 1) and
+		      (READ_VAL [num_port].read() == 1))
+		    {
+		      READ_VAL  [num_port] .write(0);
+		      
+		      cout << "(" << num_port << ") [" << read_address [num_port] << "] => " << READ_DATA [num_port].read() << endl;
+		      
+		      TEST(Tdata_t,READ_DATA [num_port].read(), tab_data[read_address [num_port]]);
+		      nb_ack ++;
+		    }
+		}
+	      
+	      SC_START(0);
+	    }
+	}
+    }
+  
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK("End of Simulation");
+  delete _time;
+  cout << "<" << name << "> ............ Stop Simulation" << endl;
+
+  delete CLOCK;
+  delete NRESET;
+#endif
+
+  delete _RegisterFile_Multi_Banked;
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/VERSION
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/VERSION	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/VERSION	(revision 53)
@@ -0,0 +1,4 @@
+v0.6
+
+0.5 modif vhdl_port et vhdl_testbench_port -> ajout d'une macro
+0.6 ajout de la documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/Makefile	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/Makefile	(revision 53)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/RegisterFile_Multi_Banked.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/RegisterFile_Multi_Banked.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/RegisterFile_Multi_Banked.tex	(revision 53)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/sty/header.sty	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/sty/header.sty	(revision 53)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{RegisterFile\_Multi\_Banked}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/01_introduction.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/01_introduction.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/02_features.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/02_features.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/03_description.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/03_description.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/04_pinout.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/04_pinout.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/05_parameters.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/05_parameters.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/06_performance.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/06_performance.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/07_details.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/07_details.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/08_history.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/08_history.tex	(revision 53)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/root.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/doc/tex/root.tex	(revision 53)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
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 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h	(revision 53)
@@ -0,0 +1,104 @@
+#ifndef morpheo_behavioural_generic_registerfile_registerfile_multi_banked_Parameters_h
+#define morpheo_behavioural_generic_registerfile_registerfile_multi_banked_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Common/include/FromString.h"
+#include "Behavioural/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h"
+#include <math.h>
+
+namespace morpheo {
+  typedef enum {PARTIAL_CROSSBAR,
+		FULL_CROSSBAR   } Tcrossbar_t;
+
+  template<> inline Tcrossbar_t fromString<Tcrossbar_t> (const std::string& x)
+  {
+    if ( (x.compare("0")                == 0) or
+	 (x.compare("PARTIAL_CROSSBAR") == 0))
+      return PARTIAL_CROSSBAR;
+    if ( (x.compare("1")                == 0) or
+	 (x.compare("FULL_CROSSBAR"   ) == 0))
+      return FULL_CROSSBAR;
+
+    throw (ErrorMorpheo ("<fromString> : Unknow string : \""+x+"\""));
+  };
+  
+  template<> inline std::string toString<Tcrossbar_t>   (const Tcrossbar_t& x)
+  {
+    ostringstream out;
+
+    if (x == PARTIAL_CROSSBAR)
+      out << "PARTIAL_CROSSBAR";
+    if (x == FULL_CROSSBAR)
+      out << "FULL_CROSSBAR";
+
+    return out.str();
+  };
+
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ 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 uint32_t    _size_address         ;
+  public : const 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 : const uint32_t    _nb_word_by_bank      ;
+
+    // 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  ;
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (uint32_t    nb_port_read         ,
+			uint32_t    nb_port_write        ,
+			uint32_t    nb_word              ,
+			uint32_t    size_word            ,
+			uint32_t    nb_bank              ,
+			uint32_t    nb_port_read_by_bank ,
+			uint32_t    nb_port_write_by_bank,
+			Tcrossbar_t crossbar             );
+  public : Parameters  (Parameters & param) ;
+  public : ~Parameters () ;
+
+  public : string msg_error (void);
+
+  public :        string   print      (uint32_t depth);
+  public : friend ostream& operator<< (ostream& output_stream,
+				       morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters & x);
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
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 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h	(revision 53)
@@ -0,0 +1,157 @@
+#ifndef morpheo_behavioural_generic_registerfile_registerfile_multi_banked_RegisterFile_Multi_Banked_h
+#define morpheo_behavioural_generic_registerfile_registerfile_multi_banked_RegisterFile_Multi_Banked_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h"
+#ifdef STATISTICS
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  class RegisterFile_Multi_Banked 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const string     _name;
+
+  protected : const Parameters _param;
+//#ifdef STATISTICS
+//  protected : const morpheo::behavioural::Parameters_Statistics _param_statistics;
+//#endif
+
+#ifdef STATISTICS
+  private   : Statistics                     * _stat;
+#endif
+
+  public    : Component                      * _component;
+  private   : Interfaces                     * _interfaces;
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Interface
+  public    : SC_CLOCK                      *  in_CLOCK        ;
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
+
+    // ----- Interface Read
+  public    : SC_IN       (Tcontrol_t)     **  in_READ_VAL     ;
+  public    : SC_OUT      (Tcontrol_t)     ** out_READ_ACK     ;
+  public    : SC_IN       (Taddress_t)     **  in_READ_ADDRESS ;
+  public    : SC_OUT      (Tdata_t)        ** out_READ_DATA    ;
+
+    // ----- Interface Write
+  public    : SC_IN       (Tcontrol_t)     **  in_WRITE_VAL    ;
+  public    : SC_OUT      (Tcontrol_t)     ** out_WRITE_ACK    ;
+  public    : SC_IN       (Taddress_t)     **  in_WRITE_ADDRESS;
+  public    : SC_IN       (Tdata_t)        **  in_WRITE_DATA   ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+  private   : SC_REGISTER (Tdata_t)       *** reg_DATA         ;
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  private   : bool                          * internal_WRITE_VAL;
+  private   : Taddress_t                    * internal_WRITE_BANK;
+  private   : Taddress_t                    * internal_WRITE_NUM_REG;
+
+        // function pointer
+  public    : void (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::*function_transition    ) (void);
+  public    : void (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::*function_genMealy_read ) (void);
+  public    : void (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::*function_genMealy_write) (void);
+#endif
+
+    // -----[ methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (RegisterFile_Multi_Banked);
+#endif
+  public  :          RegisterFile_Multi_Banked              (
+#ifdef SYSTEMC
+					      sc_module_name                              name,
+#else					       
+					      string                                      name,
+#endif					       
+#ifdef STATISTICS
+					      morpheo::behavioural::Parameters_Statistics param_statistics,
+#endif
+					      Parameters                                  param );
+					       
+  public  :          RegisterFile_Multi_Banked              (Parameters param );
+  public  :          ~RegisterFile_Multi_Banked             (void);
+					       
+#ifdef SYSTEMC				       
+  private : void     allocation                (void);
+  private : void     deallocation              (void);
+					       
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+
+  private : Taddress_t address_bank                 (Taddress_t address);
+  private : Taddress_t address_num_reg              (Taddress_t address);
+
+  public  : void     transition                     (void);
+  public  : void     genMealy_read                  (void);
+  public  : void     genMealy_write                 (void);
+
+  public  : void     full_crossbar_transition       (void);
+  public  : void     full_crossbar_genMealy_read    (void);
+  public  : void     full_crossbar_genMealy_write   (void);
+
+  public  : void     partial_crossbar_transition    (void);
+  public  : void     partial_crossbar_genMealy_read (void);
+  public  : void     partial_crossbar_genMealy_write(void);
+
+//#endif
+#endif					       
+#ifdef STATISTICS
+  public  : string   statistics                (uint32_t depth);
+#endif
+					       
+#if VHDL				       
+  public  : void     vhdl                      (void);
+  private : void     vhdl_declaration          (Vhdl * & vhdl);
+  private : void     vhdl_body                 (Vhdl * & vhdl);
+#endif					       
+					       
+#ifdef VHDL_TESTBENCH			       
+  private : void     vhdl_testbench_transition (void);
+#endif
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h	(revision 53)
@@ -0,0 +1,57 @@
+#ifdef STATISTICS
+#ifndef morpheo_behavioural_generic_registerfile_registerfile_multi_banked_Statistics_h
+#define morpheo_behavioural_generic_registerfile_registerfile_multi_banked_Statistics_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Statistics.h"
+#include "Behavioural/include/Parameters_Statistics.h"
+//#include "Behavioural/Generic/Group/include/Statistics.h"
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h"
+
+//using namespace morpheo::behavioural::generic::group;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  class Statistics : public morpheo::behavioural::Statistics
+  {
+    // -----[ fields ]----------------------------------------------------
+  private  : const Parameters                                   _parameters;
+
+    // -----[ methods ]---------------------------------------------------
+  public   : Statistics  (string                                      name                       ,
+			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
+			  Parameters                                  parameters
+			  );
+//public   : Statistics  (Statistics & stat);
+  public   : ~Statistics () ;
+    
+  public   : string   print_body (uint32_t depth);
+  public   : string   print      (uint32_t depth);
+  public   : void     add        ();
+
+  public   : friend ostream& operator<< (ostream& output_stream,
+					 const Statistics & x);
+
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo
+
+#endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h	(revision 53)
@@ -0,0 +1,29 @@
+#ifndef morpheo_behavioural_generic_registerfile_registerfile_multi_banked_Type_h
+#define morpheo_behavioural_generic_registerfile_registerfile_multi_banked_Type_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Types.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+  typedef uint32_t Taddress_t;
+  typedef uint32_t Tdata_t;
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
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 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp	(revision 53)
@@ -0,0 +1,170 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h"
+#include "Common/include/BitManipulation.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  Parameters::Parameters (uint32_t    nb_port_read         ,
+			  uint32_t    nb_port_write        ,
+			  uint32_t    nb_word              ,
+			  uint32_t    size_word            ,
+			  uint32_t    nb_bank              ,
+			  uint32_t    nb_port_read_by_bank ,
+			  uint32_t    nb_port_write_by_bank,
+			  Tcrossbar_t crossbar             ):
+    _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             ),
+    _size_address          (static_cast<uint32_t>(ceil(log2(_nb_word)))),
+    _size_address_by_bank  (_size_address - static_cast<uint32_t>(ceil(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)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","Begin");
+
+    if (_crossbar == PARTIAL_CROSSBAR)
+      {
+	log_printf(NONE,RegisterFile_Multi_Banked,"Parameters","Case : _crossbar == PARTIAL_CROSSBAR");
+
+	// All port_src is connected with one port_dest on each bank
+	
+	_link_port_read_to_bank_read     = new uint32_t [_nb_port_read ];
+// 	_link_port_read_to_num_bank      = new uint32_t [_nb_port_read ];
+	_link_port_write_to_bank_write   = new uint32_t [_nb_port_write];
+// 	_link_port_write_to_num_bank     = new uint32_t [_nb_port_write];
+
+// 	uint32_t _nb_port_bank_by_bank_read_port  [_nb_port_read_by_bank ];
+// 	uint32_t _nb_port_bank_by_bank_write_port [_nb_port_write_by_bank];
+	
+	// init
+// 	for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
+// 	  _nb_port_bank_by_bank_read_port  [i] = 0;
+	
+	for (uint32_t i=0; i<_nb_port_read         ;i++)
+	  {
+	    uint32_t x = i%_nb_port_read_by_bank;
+	    _link_port_read_to_bank_read [i] = x;
+// 	    _link_port_read_to_num_bank  [i] = _nb_port_bank_by_bank_read_port [x];
+// 	    _nb_port_bank_by_bank_read_port    [x] ++;
+	  }
+
+	// init
+// 	for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
+// 	  _nb_port_bank_by_bank_write_port [i] = 0;
+	
+	for (uint32_t i=0; i<_nb_port_write         ;i++)
+	  {
+	    uint32_t x = i%_nb_port_write_by_bank;
+	    _link_port_write_to_bank_write   [i] = x;
+// 	    _link_port_write_to_num_bank     [i] = _nb_port_bank_by_bank_write_port [x];
+// 	    _nb_port_bank_by_bank_write_port       [x] ++;
+	  }
+
+
+	log_printf(NONE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_read_to_bank_read");
+	for (uint32_t i=0; i<_nb_port_read         ;i++)
+	  log_printf(NONE,RegisterFile_Multi_Banked,"Parameters","   * Read  in  [%d] to out    [%d]",i,_link_port_read_to_bank_read          [i]);
+// 	log_printf(NONE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_read_to_num_bank  ");
+// 	for (uint32_t i=0; i<_nb_port_read         ;i++)
+// 	  log_printf(NONE,RegisterFile_Multi_Banked,"Parameters","   * Read  in  [%d] to bank   [%d]",i,_link_port_read_to_num_bank         [i]);
+
+	log_printf(NONE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_write_to_bank_write");
+	for (uint32_t i=0; i<_nb_port_write        ;i++)
+	  log_printf(NONE,RegisterFile_Multi_Banked,"Parameters","   * Write in  [%d] to out    [%d]",i,_link_port_write_to_bank_write          [i]);
+// 	log_printf(NONE,RegisterFile_Multi_Banked,"Parameters"," * _link_port_write_to_num_bank  ");
+// 	for (uint32_t i=0; i<_nb_port_write        ;i++)
+// 	  log_printf(NONE,RegisterFile_Multi_Banked,"Parameters","   * Write in  [%d] to bank   [%d]",i,_link_port_write_to_num_bank         [i]);
+      }
+    // else : don't allocate
+
+    test();
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","End");
+  };
+  
+  Parameters::Parameters (Parameters & param):
+    _nb_port_read          (param._nb_port_read         ),
+    _nb_port_write         (param._nb_port_write        ),
+    _nb_word               (param._nb_word              ),
+    _size_word             (param._size_word            ),
+    _nb_bank               (param._nb_bank              ),
+    _nb_port_read_by_bank  (param._nb_port_read_by_bank ),
+    _nb_port_write_by_bank (param._nb_port_write_by_bank),
+    _crossbar              (param._crossbar             ),
+    _size_address          (param._size_address         ),
+    _size_address_by_bank  (param._size_address_by_bank ),
+    _bank_shift            (param._bank_shift           ),
+    _bank_mask             (param._bank_mask            ),
+    _num_reg_shift         (param._num_reg_shift        ),
+    _num_reg_mask          (param._num_reg_mask         ),
+    _nb_word_by_bank       (param._nb_word_by_bank      )
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters (copy)","Begin");
+
+    if (_crossbar == PARTIAL_CROSSBAR)
+      {
+	// All port_src is connected with one port_dest on each bank
+	
+	_link_port_read_to_bank_read     = new uint32_t [_nb_port_read ];
+// 	_link_port_read_to_num_bank         = new uint32_t [_nb_port_read ];
+	_link_port_write_to_bank_write   = new uint32_t [_nb_port_write];
+// 	_link_port_write_to_num_bank        = new uint32_t [_nb_port_write];
+
+	for (uint32_t i=0; i<_nb_port_read         ;i++)
+	  {
+	    _link_port_read_to_bank_read   [i] = param._link_port_read_to_bank_read     [i];
+// 	    _link_port_read_to_num_bank       [i] = param._link_port_read_to_num_bank    [i];
+	  }
+	for (uint32_t i=0; i<_nb_port_write        ;i++)
+	  {
+	    _link_port_write_to_bank_write [i] = param._link_port_write_to_bank_write    [i];
+// 	    _link_port_write_to_num_bank      [i] = param._link_port_write_to_num_bank   [i];
+	  }
+      }
+
+    test();
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters (copy)","End");
+  };
+
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~Parameters","Begin");
+
+    if (_crossbar == PARTIAL_CROSSBAR)
+      {
+	delete [] _link_port_read_to_bank_read    ;
+// 	delete [] _link_port_read_to_num_bank   ;
+	delete [] _link_port_write_to_bank_write   ;
+// 	delete [] _link_port_write_to_num_bank  ;
+      }
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~Parameters","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_msg_error.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_msg_error.cpp	(revision 53)
@@ -0,0 +1,56 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Types.h"
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"msg_error","Begin");
+
+    string msg = "";
+
+    if (_nb_port_read < _nb_port_read_by_bank)
+      {
+        msg += "  - Each bank read's port must be higher at number of read port\n";
+        msg += "    * nb_port_read                    : " + toString(_nb_port_read        ) + "\n";
+        msg += "    * nb_port_read_by_bank            : " + toString(_nb_port_read_by_bank) + "\n";
+      }
+
+    if (_nb_port_write < _nb_port_write_by_bank)
+      {
+        msg += "  - Each bank write's port must be higher at number of write port\n";
+        msg += "    * nb_port_write                   : " + toString(_nb_port_write        ) + "\n";
+        msg += "    * nb_port_write_by_bank           : " + toString(_nb_port_write_by_bank) + "\n";
+      }
+    
+    if (_nb_bank < 1)
+      {
+        msg += "  - nb_bank must be higher at 1\n";
+        msg += "    * nb_bank                         : " + toString(_nb_bank             ) + "\n";
+      }
+
+    return msg;
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"msg_error","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_print.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters_print.cpp	(revision 53)
@@ -0,0 +1,61 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print","Begin");
+
+    XML xml ("registerfile_multi_banked");
+
+    xml.balise_open("registerfile_multi_banked");
+    xml.singleton_begin("nb_port_read         "); xml.attribut("value",toString(_nb_port_read         )); xml.singleton_end();
+    xml.singleton_begin("nb_port_write        "); xml.attribut("value",toString(_nb_port_write        )); xml.singleton_end();
+    xml.singleton_begin("nb_word              "); xml.attribut("value",toString(_nb_word              )); xml.singleton_end();
+    xml.singleton_begin("size_word            "); xml.attribut("value",toString(_size_word            )); xml.singleton_end();
+    xml.singleton_begin("nb_bank              "); xml.attribut("value",toString(_nb_bank              )); xml.singleton_end();
+    xml.singleton_begin("nb_port_read_by_bank "); xml.attribut("value",toString(_nb_port_read_by_bank )); xml.singleton_end();
+    xml.singleton_begin("nb_port_write_by_bank"); xml.attribut("value",toString(_nb_port_write_by_bank)); xml.singleton_end();
+    xml.singleton_begin("crossbar             "); xml.attribut("value",toString(_crossbar             )); xml.singleton_end();
+
+    xml.singleton_begin("size_address         "); xml.attribut("value",toString(_size_address         )); xml.singleton_end();
+    xml.singleton_begin("bank_shift           "); xml.attribut("value",toString(_bank_shift           )); xml.singleton_end();
+    xml.singleton_begin("bank_mask            "); xml.attribut("value",toString(_bank_mask            )); xml.singleton_end();
+    xml.singleton_begin("num_reg_shift        "); xml.attribut("value",toString(_num_reg_shift        )); xml.singleton_end();
+    xml.singleton_begin("num_reg_mask         "); xml.attribut("value",toString(_num_reg_mask         )); xml.singleton_end();
+
+    xml.balise_close();
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print","End");
+    
+    return xml.get_body(depth);
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters & x)
+  {
+    output_stream << x.print(0);
+    
+    return output_stream;
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked.cpp	(revision 53)
@@ -0,0 +1,149 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+#ifdef SYSTEMC
+  RegisterFile_Multi_Banked::RegisterFile_Multi_Banked (sc_module_name name,
+#else
+  RegisterFile_Multi_Banked::RegisterFile_Multi_Banked (string name,
+#endif
+#ifdef STATISTICS
+			      morpheo::behavioural::Parameters_Statistics             param_statistics,
+#endif
+			      morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters param ):
+			      _name              (name)
+			      ,_param            (param)
+// #ifdef STATISTICS
+// 			      ,_param_statistics (param_statistics)
+// #endif
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Begin");
+
+#ifdef SYSTEMC
+    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Allocation");
+
+    allocation ();
+#endif
+
+#ifdef STATISTICS
+    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Allocation of statistics");
+
+    // Allocation of statistics
+    _stat = new Statistics (static_cast<string>(_name),
+			    param_statistics          ,
+			    param);
+#endif
+
+#ifdef VHDL
+    // generate the vhdl
+    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Generate the vhdl");
+
+    vhdl();
+#endif
+
+#ifdef SYSTEMC
+    // Function pointer
+    if (_param._crossbar == FULL_CROSSBAR)                             
+      {
+	function_transition     = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   full_crossbar_transition;
+	function_genMealy_read  = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   full_crossbar_genMealy_read;
+	function_genMealy_write = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   full_crossbar_genMealy_write;
+      }
+    else
+      {
+	function_transition     = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   partial_crossbar_transition;
+	function_genMealy_read  = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   partial_crossbar_genMealy_read;
+	function_genMealy_write = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::   partial_crossbar_genMealy_write;
+      }
+
+    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Method - transition");
+
+    SC_METHOD (transition);
+    dont_initialize ();
+    sensitive_pos << *(in_CLOCK);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+#endif    
+
+    log_printf(INFO,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","Method - genMealy_write");
+
+    SC_METHOD (genMealy_read);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
+      sensitive << *( in_READ_VAL     [i])
+		<< *( in_READ_ADDRESS [i]);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
+      {
+	(*(out_READ_ACK  [i])) (*( in_READ_VAL     [i]));
+	(*(out_READ_ACK  [i])) (*( in_READ_ADDRESS [i]));
+	(*(out_READ_DATA [i])) (*( in_READ_VAL     [i]));
+	(*(out_READ_DATA [i])) (*( in_READ_ADDRESS [i]));
+      }
+#endif    
+
+    SC_METHOD (genMealy_write);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      sensitive << *( in_WRITE_VAL     [i])
+		<< *( in_WRITE_ADDRESS [i])
+		<< *( in_WRITE_DATA    [i]);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      {
+	(*(out_WRITE_ACK  [i])) (*( in_WRITE_VAL     [i]));
+	(*(out_WRITE_ACK  [i])) (*( in_WRITE_ADDRESS [i]));
+	(*(out_WRITE_ACK  [i])) (*( in_WRITE_DATA    [i]));
+      }
+#endif    
+
+#endif
+    log_printf(FUNC,RegisterFile_Multi_Banked,"RegisterFile_Multi_Banked","End");
+  };
+  
+  RegisterFile_Multi_Banked::~RegisterFile_Multi_Banked (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Begin");
+
+#ifdef STATISTICS
+    log_printf(INFO,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Generate Statistics file");
+
+    _stat->generate_file(statistics(0));
+    
+    delete _stat;
+#endif
+
+#ifdef SYSTEMC
+    log_printf(INFO,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","Deallocation");
+
+    deallocation ();
+#endif
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~RegisterFile_Multi_Banked","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_address_xxx.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_address_xxx.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_address_xxx.cpp	(revision 53)
@@ -0,0 +1,47 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+#include "Common/include/BitManipulation.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  Taddress_t RegisterFile_Multi_Banked::address_bank (Taddress_t address)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"address_bank","Begin");
+    
+    Taddress_t _return = _param._bank_mask & (address >> _param._bank_shift);
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"address_bank","End");
+
+    return _return;
+  };
+
+  Taddress_t RegisterFile_Multi_Banked::address_num_reg (Taddress_t address)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"address_num_reg","Begin");
+
+    Taddress_t _return = _param._num_reg_mask & (address >> _param._num_reg_shift);
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked,"address_num_reg","End");
+
+    return _return;
+  };
+
+
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
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 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp	(revision 53)
@@ -0,0 +1,129 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::allocation (void)
+  {
+    string rename;
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"allocation","Begin");
+
+    _component   = new Component ();
+
+    Entity * entity = _component->set_entity (_name       
+					      ,"RegisterFile_Multi_Banked"
+#ifdef POSITION
+					      ,Register 
+#endif
+					      );
+
+    _interfaces = entity->set_interfaces();
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+      Interface * interface = _interfaces->set_interface(""
+#ifdef POSITION
+							 ,IN
+							 ,SOUTH,
+							 "Generalist interface"
+#endif
+							 );
+
+     in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
+     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
+
+    // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+     in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param._nb_port_read];
+    out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param._nb_port_read];
+     in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param._nb_port_read];
+    out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param._nb_port_read];
+
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
+      { 
+	Interface_fifo * interface = _interfaces->set_interface("read_"+toString(i)
+#ifdef POSITION
+								, IN  
+								,WEST
+								, "Interface Read"
+#endif
+								);
+
+	 in_READ_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
+	out_READ_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
+	 in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param._nb_word)));
+	out_READ_DATA    [i]  = interface->set_signal_out <Tdata_t   > ("data"   , _param._size_word);
+      }
+
+    // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+     in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param._nb_port_write];
+    out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param._nb_port_write];
+     in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param._nb_port_write];
+     in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param._nb_port_write];
+    
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      {
+	Interface_fifo * interface = _interfaces->set_interface("write_"+toString(i)
+#ifdef POSITION
+								, IN  
+								,EAST
+								, "Interface Write"
+#endif
+								);
+
+	 in_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
+	out_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
+	 in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", static_cast<uint32_t>(log2(_param._nb_word)));
+	 in_WRITE_DATA    [i]  = interface->set_signal_in  <Tdata_t   > ("data"   , _param._size_word);
+      }
+
+    // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    reg_DATA = new SC_REGISTER (Tdata_t) ** [_param._nb_bank];
+
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      {
+	reg_DATA [i] = new SC_REGISTER (Tdata_t) * [_param._nb_word];
+	
+	for (uint32_t j=0; j<_param._nb_word; j++)
+	  {
+	    string rename = "reg_DATA_"  + toString(i) + "_"  + toString(j);
+	    reg_DATA [i][j]  = new SC_REGISTER (Tdata_t) (rename.c_str());
+	  }
+      }
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    internal_WRITE_VAL     = new bool       [_param._nb_port_write];
+    internal_WRITE_BANK    = new Taddress_t [_param._nb_port_write];
+    internal_WRITE_NUM_REG = new Taddress_t [_param._nb_port_write];
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"allocation","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#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 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp	(revision 53)
@@ -0,0 +1,58 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::deallocation (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"deallocation","Begin");
+
+    delete in_CLOCK;
+    delete in_NRESET;
+
+    // ----- Interface Read
+    delete []  in_READ_VAL    ;
+    delete [] out_READ_ACK    ;
+    delete []  in_READ_ADDRESS;
+    delete [] out_READ_DATA   ;
+
+    // ----- Interface Write
+    delete []  in_WRITE_VAL    ;
+    delete [] out_WRITE_ACK    ;
+    delete []  in_WRITE_ADDRESS;
+    delete []  in_WRITE_DATA   ;
+
+    // ----- Register
+    delete [] reg_DATA;
+
+    // ----- Internal
+    delete [] internal_WRITE_VAL;
+    delete [] internal_WRITE_BANK;
+    delete [] internal_WRITE_NUM_REG;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    delete _component;
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"deallocation","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#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 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_read.cpp	(revision 53)
@@ -0,0 +1,84 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::full_crossbar_genMealy_read (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read","Begin");
+
+    bool read_port_use [_param._nb_bank][_param._nb_port_read_by_bank];
+
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+	read_port_use [i][j]=false;
+
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
+      {
+	bool val = PORT_READ(in_READ_VAL    [i]);
+	bool ack = false;
+
+	log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read","read[%d] : %d",i,val);
+
+	if (val == true)
+	  {
+	    // Compute the adress of the bank
+	    Taddress_t address = PORT_READ(in_READ_ADDRESS[i]);
+	    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * address   : %d",address);
+	    Taddress_t bank    = address_bank    (address);
+	    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * bank      : %d",bank   );
+
+	    // Search loop
+	    for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+	      {
+		// find a unbusy port on this bank
+		if (read_port_use[bank][j] == false)
+		  {
+		    // find !!!
+		    read_port_use[bank][j] = true;
+		    ack                    = true;
+		    
+		    Taddress_t num_reg = address_num_reg (address);
+
+		    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * num_reg   : %d",num_reg);
+		    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * bank_port : %d",j);
+
+		    Tdata_t    data    = REGISTER_READ(reg_DATA[bank][num_reg]);
+		    
+		    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * data      : %d",data);
+
+		    PORT_WRITE(out_READ_DATA [i], data);
+
+		    break;
+		  }
+	      }
+	  }
+
+	// Write output
+	PORT_WRITE(out_READ_ACK [i], ack);
+      }
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_write.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_write.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_write.cpp	(revision 53)
@@ -0,0 +1,85 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::full_crossbar_genMealy_write (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"full_crossbar_genMealy_write","Begin");
+
+    bool write_port_use [_param._nb_bank][_param._nb_port_write_by_bank];
+
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
+	write_port_use [i][j]=false;
+
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      {
+	bool val = PORT_READ(in_WRITE_VAL    [i]);
+	bool ack = false;
+
+	log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_write","write[%d] : %d",i,val);
+
+	if (val == true)
+	  {
+	    val                = false;
+	    // Compute the adress of the bank
+	    Taddress_t address = PORT_READ(in_WRITE_ADDRESS[i]);
+	    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_write"," * address   : %d",address);
+	    Taddress_t bank    = address_bank    (address);
+	    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_write"," * bank      : %d",bank   );
+
+	    // Search loop
+	    for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
+	      {
+		// find a unbusy port on this bank
+		if (write_port_use[bank][j] == false)
+		  {
+		    // find !!!
+		    write_port_use[bank][j] = true;
+		    val                     = true;  
+		    ack                     = true;
+		    
+		    Taddress_t num_reg = address_num_reg (address);
+
+		    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_write"," * num_reg   : %d",num_reg);
+		    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_write"," * bank_port : %d",j      );
+		    		    
+		    internal_WRITE_NUM_REG [i] = num_reg;
+		    break;
+		  }
+	      }
+
+	    internal_WRITE_BANK [i] = bank;
+	  }
+
+	internal_WRITE_VAL [i] = val;
+
+	// Write output
+	PORT_WRITE(out_WRITE_ACK [i], ack);
+      }
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"full_crossbar_genMealy_write","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_transition.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_transition.cpp	(revision 53)
@@ -0,0 +1,33 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::full_crossbar_transition (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"full_crossbar_transition","Begin");
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"full_crossbar_transition","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_genMealy_read.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_genMealy_read.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_genMealy_read.cpp	(revision 53)
@@ -0,0 +1,37 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::genMealy_read (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"genMealy_read","Begin");
+
+    // call function pointer
+    (this->*function_genMealy_read) ();
+
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"genMealy_read","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_genMealy_write.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_genMealy_write.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_genMealy_write.cpp	(revision 53)
@@ -0,0 +1,36 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::genMealy_write (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"genMealy_write","Begin");
+
+    // call function pointer
+    (this->*function_genMealy_write) ();
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"genMealy_write","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
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 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_read.cpp	(revision 53)
@@ -0,0 +1,87 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::partial_crossbar_genMealy_read (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_read","Begin");
+
+    bool read_port_use [_param._nb_bank][_param._nb_port_read_by_bank];
+
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+	read_port_use [i][j]=false;
+
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
+      {
+	bool val = PORT_READ(in_READ_VAL    [i]);
+	bool ack = false;
+
+	log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read","read[%d] : %d",i,val);
+
+	if (val == true)
+	  {
+	    // Compute the adress of the bank
+	    Taddress_t address = PORT_READ(in_READ_ADDRESS[i]);
+	    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * address   : %d",address);
+	    Taddress_t bank    = address_bank    (address);
+	    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * bank      : %d",bank   );
+
+// 	    // Search loop
+// 	    for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
+// 	      {
+	    
+	    uint32_t j = _param._link_port_read_to_bank_read [i];
+
+		// find a unbusy port on this bank
+		if (read_port_use[bank][j] == false)
+		  {
+		    // find !!!
+		    read_port_use[bank][j] = true;
+		    ack                    = true;
+		    
+		    Taddress_t num_reg = address_num_reg (address);
+
+		    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * num_reg   : %d",num_reg);
+		    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * bank_port : %d",j);
+
+		    Tdata_t    data    = REGISTER_READ(reg_DATA[bank][num_reg]);
+		    
+		    log_printf(TRACE,RegisterFile_Multi_Banked,"full_crossbar_genMealy_read"," * data      : %d",data);
+
+		    PORT_WRITE(out_READ_DATA [i], data);
+
+// 		    break;
+		  }
+// 	      }
+	  }
+
+	// Write output
+	PORT_WRITE(out_READ_ACK [i], ack);
+      }
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_read","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_write.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_write.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_write.cpp	(revision 53)
@@ -0,0 +1,87 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::partial_crossbar_genMealy_write (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write","Begin");
+
+    bool write_port_use [_param._nb_bank][_param._nb_port_write_by_bank];
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
+	write_port_use [i][j]=false;
+
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      {
+	bool val = PORT_READ(in_WRITE_VAL    [i]);
+	bool ack = false;
+
+	log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write","write[%d] : %d",i,val);
+
+	if (val == true)
+	  {
+	    val                = false;
+	    // Compute the adress of the bank
+	    Taddress_t address = PORT_READ(in_WRITE_ADDRESS[i]);
+	    log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write"," * address   : %d",address);
+	    Taddress_t bank    = address_bank    (address);
+	    log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write"," * bank      : %d",bank   );
+
+// 	    // Search loop
+// 	    for (uint32_t j=0; j<_param._nb_port_write_by_bank; j++)
+// 	      {
+	    uint32_t j = _param._link_port_write_to_bank_write [i];
+
+		// find a unbusy port on this bank
+		if (write_port_use[bank][j] == false)
+		  {
+		    // find !!!
+		    write_port_use[bank][j] = true;
+		    val                     = true;  
+		    ack                     = true;
+		    
+		    Taddress_t num_reg = address_num_reg (address);
+
+		    log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write"," * num_reg   : %d",num_reg);
+		    log_printf(TRACE,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write"," * bank_port : %d",j      );
+		    		    
+		    internal_WRITE_NUM_REG [i] = num_reg;
+
+// 		    break;
+		  }
+// 	      }
+
+	    internal_WRITE_BANK [i] = bank;
+	  }
+
+	internal_WRITE_VAL [i] = val;
+
+	// Write output
+	PORT_WRITE(out_WRITE_ACK [i], ack);
+      }
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"partial_crossbar_genMealy_write","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_transition.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_transition.cpp	(revision 53)
@@ -0,0 +1,33 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::partial_crossbar_transition (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"partial_crossbar_transition","Begin");
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"partial_crossbar_transition","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_statistics.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_statistics.cpp	(revision 53)
@@ -0,0 +1,35 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  string RegisterFile_Multi_Banked::statistics (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"statistics","Begin");
+
+    string txt = _stat->print(depth);
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked,"statistics","End");
+
+    return txt;
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
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 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_transition.cpp	(revision 53)
@@ -0,0 +1,57 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::transition (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"transition","Begin");
+    
+    // call function pointer
+//     (this->*function_transition) ();
+
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      {
+	if (internal_WRITE_VAL [i] == 1)
+ 	  {
+	    Tdata_t data = PORT_READ(in_WRITE_DATA   [i]);
+	    
+ 	    // Write in registerFile
+ 	    REGISTER_WRITE(reg_DATA[internal_WRITE_BANK[i]][internal_WRITE_NUM_REG[i]],data);
+ 	  }
+      }
+
+
+
+#ifdef STATISTICS
+    _stat->add();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    vhdl_testbench_transition ();
+#endif
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"transition","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl.cpp	(revision 53)
@@ -0,0 +1,44 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::vhdl (void)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl","Begin");
+
+    Vhdl * vhdl = new Vhdl (_name);
+
+    _interfaces->set_port(vhdl);
+    _component->vhdl_instance(vhdl);
+
+    vhdl_declaration (vhdl);
+    vhdl_body        (vhdl);
+
+    vhdl->generate_file();
+
+    delete vhdl;
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#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 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_body.cpp	(revision 53)
@@ -0,0 +1,31 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::vhdl_body (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_body","Begin");
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_body","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_declaration.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_declaration.cpp	(revision 53)
@@ -0,0 +1,51 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::vhdl_declaration (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_declaration","Begin");
+
+    vhdl->set_type   ("Tregfile", "array (" + toString(_param._nb_word_by_bank-1) + " downto 0) of " + std_logic(_param._size_word));
+
+    vhdl->set_type   ("Tbank"   , "array (" + toString(_param._nb_bank)           + " downto 0) of Tregfile");
+
+    vhdl->set_signal ("reg_DATA", "Tbank");
+
+    for (uint32_t i=0; i<_param._nb_bank; i++)
+      {
+	for (uint32_t j=0; j<_param._nb_port_read_by_bank; j ++)
+	  {
+	    vhdl->set_signal ("internal_READ_"+toString(i)+"_"+toString(j)+"_VAL"  ,1);
+	    vhdl->set_signal ("internal_READ_"+toString(i)+"_"+toString(j)+"_PORT" ,static_cast<uint32_t>(ceil(log2(_param._nb_port_read))));
+	  }
+	for (uint32_t j=0; j<_param._nb_port_write_by_bank; j ++)
+	  {
+	    vhdl->set_signal ("internal_WRITE_"+toString(i)+"_"+toString(j)+"_VAL" ,1);
+	    vhdl->set_signal ("internal_WRITE_"+toString(i)+"_"+toString(j)+"_PORT",static_cast<uint32_t>(ceil(log2(_param._nb_port_write))));
+	  }
+      }
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_declaration","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_transition.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_testbench_transition.cpp	(revision 53)
@@ -0,0 +1,36 @@
+#ifdef VHDL_TESTBENCH
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void RegisterFile_Multi_Banked::vhdl_testbench_transition ()
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_testbench_transition","Begin");
+
+    // Evaluation before read the ouput signal
+//     sc_start(0);
+
+    _interfaces->testbench();
+
+    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_testbench_transition","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics.cpp	(revision 53)
@@ -0,0 +1,42 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  Statistics::Statistics (string                                      name                       ,
+			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
+			  Parameters                                  parameters
+			  ) :
+    morpheo::behavioural::Statistics(name                  ,
+				     parameters_statistics ),
+    _parameters(parameters)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Statistics","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked,"Statistics","End");
+  };
+  
+  Statistics::~Statistics () 
+  { 
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~Statistics","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked,"~Statistics","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_add.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_add.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_add.cpp	(revision 53)
@@ -0,0 +1,33 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  void Statistics::add ()
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"add","Begin");
+    log_printf(FUNC,RegisterFile_Multi_Banked,"add","End");
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print.cpp	(revision 53)
@@ -0,0 +1,51 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  string Statistics::print (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print","Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "<registerfile_multi_banked name=\"" << _name << "\" >" << endl
+        << print_body(depth+1) << endl
+	<< tab << "</registerfile_multi_banked>" << endl;
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print","End");
+
+    return msg.str();
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Statistics & x)
+  {
+    output_stream << x.print(0);
+
+    return output_stream;
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print_body.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Statistics_print_body.cpp	(revision 53)
@@ -0,0 +1,41 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+namespace registerfile_multi_banked {
+
+
+  string Statistics::print_body (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print_body","Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "";
+    
+    log_printf(FUNC,RegisterFile_Multi_Banked,"print_body","End");
+
+    return msg.str();
+  };
+
+}; // end namespace registerfile_multi_banked
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/Makefile	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/Makefile	(revision 53)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(RegisterFile_LIBRARY)
+
+DIR_LIBRARY			= $(RegisterFile_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: RegisterFile_library
+
+library_clean			: RegisterFile_library_clean
+
+include                         ../Makefile.deps
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.Synthesis
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-mono_bank-mux_port.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-mono_bank-mux_port.cfg	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-mono_bank-mux_port.cfg	(revision 53)
@@ -0,0 +1,10 @@
+RegisterFile
+11	11	*2	# nb_port_read
+5	5	*2	# nb_port_write
+256  	256    	+1	# nb_word
+32	32	*2	# size_word
+1	1	*2	# nb_bank
+4 	4  	*2	# nb_port_read_by_bank
+2	2	*2	# nb_port_write_by_bank
+0	1	+1	# crossbar
+0	1	+1	# Monolithic / Multi Banked
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-mono_bank.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-mono_bank.cfg	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-mono_bank.cfg	(revision 53)
@@ -0,0 +1,10 @@
+RegisterFile
+11	11	*2	# nb_port_read
+5	5	*2	# nb_port_write
+256  	256    	+1	# nb_word
+32	32	*2	# size_word
+1	1	*2	# nb_bank
+11	11 	*2	# nb_port_read_by_bank
+5	5	*2	# nb_port_write_by_bank
+0	1	+1	# crossbar
+0	1	+1	# Monolithic / Multi Banked
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-multi_bank.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-multi_bank.cfg	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-multi_bank.cfg	(revision 53)
@@ -0,0 +1,10 @@
+RegisterFile
+11	11	*2	# nb_port_read
+5	5	*2	# nb_port_write
+256  	256    	+1	# nb_word
+32	32	*2	# size_word
+2	16	*2	# nb_bank
+3	3 	*2	# nb_port_read_by_bank
+2	2	*2	# nb_port_write_by_bank
+0	1	+1	# crossbar
+0	1	+1	# Monolithic / Multi Banked
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-one_reg.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-one_reg.cfg	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/config-one_reg.cfg	(revision 53)
@@ -0,0 +1,10 @@
+RegisterFile
+11	11	*2	# nb_port_read
+5	5	*2	# nb_port_write
+256  	256    	+1	# nb_word
+32	32	*2	# size_word
+256	256	*2	# nb_bank
+3	3 	*2	# nb_port_read_by_bank
+2	2	*2	# nb_port_write_by_bank
+0	1	+1	# crossbar
+0	1	+1	# Monolithic / Multi Banked
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/include/test.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/include/test.h	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/include/test.h	(revision 53)
@@ -0,0 +1,59 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+#include <sys/time.h>
+
+#include "Behavioural/Generic/RegisterFile/include/RegisterFile.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+using namespace morpheo::behavioural::generic;
+
+using namespace morpheo::behavioural::generic::registerfile;
+
+void test    (string name,
+	      morpheo::behavioural::generic::registerfile::Parameters * param);
+
+class Time 
+{
+private : timeval time_begin;
+// private : timeval time_end;
+  
+public  : Time ()
+  {
+    gettimeofday(&time_begin     ,NULL);
+  };
+
+public  : ~Time ()
+  {
+    cout << *this;
+  };
+
+public  : friend ostream& operator<< (ostream& output_stream,
+				      const Time & x)
+  {
+    timeval time_end;
+    
+    gettimeofday(&time_end       ,NULL);
+    
+    uint32_t nb_cycles = static_cast<uint32_t>(sc_simulation_time());
+
+    double average = static_cast<double>(nb_cycles) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec);
+    
+    output_stream << nb_cycles << "\t(" << average << " cycles / seconds )" << endl;
+
+    return output_stream;
+  }
+};
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/main.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/main.cpp	(revision 53)
@@ -0,0 +1,98 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/SelfTest/include/test.h"
+
+#define NB_PARAMS 0
+
+void usage (int argc, char * argv[])
+{
+  cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
+       << "list_params is :" << endl
+       << " - nb_port_read          (uint32_t   )" << endl
+       << " - nb_port_write         (uint32_t   )" << endl
+       << " - nb_word               (uint32_t   )" << endl
+       << " - size_word             (uint32_t   )" << endl
+       << " - nb_bank               (uint32_t   )" << endl
+       << " - nb_port_read_by_bank  (uint32_t   )" << endl
+       << " - nb_port_write_by_bank (uint32_t   )" << endl
+       << " - crossbar              (Tcrossbar_t)" << endl
+       << " - instance *            (Tinstance_t)" << endl
+       << "" << endl;
+
+  for (int i=0; i<argc; i++)
+    cerr << argv[i] << " ";
+  cerr << endl;
+
+  exit (1);
+}
+
+#ifndef SYSTEMC
+int main    (int argc, char * argv[])
+#else
+int sc_main (int argc, char * argv[])
+#endif
+{
+  if (argc < 2+NB_PARAMS)
+    usage (argc, argv);
+
+  const string   name      = argv[1];
+  const uint32_t    nb_port_read          = atoi(argv[2]);
+  const uint32_t    nb_port_write         = atoi(argv[3]);
+  const uint32_t    nb_word               = atoi(argv[4]);
+  const uint32_t    size_word             = atoi(argv[5]);
+  const uint32_t    nb_bank               = atoi(argv[6]);
+  const uint32_t    nb_port_read_by_bank  = atoi(argv[7]);
+  const uint32_t    nb_port_write_by_bank = atoi(argv[8]);
+  const Tcrossbar_t crossbar              = fromString<Tcrossbar_t>(argv[9]);
+  const Tinstance_t instance              = (strcmp(argv[10], "0") == 0)?instance_RegisterFile_Monolithic:instance_RegisterFile_Multi_Banked;
+
+  try 
+    {
+      morpheo::behavioural::generic::registerfile::Parameters * param;
+
+      if (instance == instance_RegisterFile_Monolithic)
+	{
+	  morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * param1 = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters (nb_port_read         ,
+																								nb_port_write        ,
+																								nb_word              ,
+																								size_word            );
+	  
+	  param = new morpheo::behavioural::generic::registerfile::Parameters(param1);
+	}
+      else
+	{
+	  morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * param2 = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters (nb_port_read         ,
+																								nb_port_write        ,
+																								nb_word              ,
+																								size_word            ,
+																								nb_bank              ,
+																								nb_port_read_by_bank ,
+																								nb_port_write_by_bank,
+																								crossbar             );
+	  
+	  param = new morpheo::behavioural::generic::registerfile::Parameters(param2);
+	}
+      
+      cout << param->print(1);
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      cout << "<" << name << "> : " <<  error.what ();
+      exit (EXIT_FAILURE);
+    }
+  catch (...)
+    {
+      cerr << "<" << name << "> : This test must generate a error" << endl;
+      exit (EXIT_FAILURE);
+    }
+
+  return (EXIT_SUCCESS);
+}
+
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 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/test.cpp	(revision 53)
@@ -0,0 +1,237 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include "Behavioural/Generic/RegisterFile/SelfTest/include/test.h"
+#include "Common/include/Test.h"
+
+#define NB_ITERATION  1
+#define CYCLE_MAX     (256*NB_ITERATION)
+
+#define LABEL(str)                                                                       \
+{                                                                                        \
+  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} " << str << endl; \
+} while(0)
+
+#define SC_START(cycle)                                        \
+do                                                             \
+{                                                              \
+  if (static_cast<uint32_t>(sc_simulation_time()) > CYCLE_MAX) \
+    {                                                          \
+      TEST_KO("Maximal cycles Reached");                       \
+    }                                                          \
+  sc_start(cycle);                                             \
+} while(0)
+
+void test (string name,
+	   morpheo::behavioural::generic::registerfile::Parameters * _param)
+{
+  cout << "<" << name << "> : Simulation SystemC" << endl;
+
+  RegisterFile * _RegisterFile = new RegisterFile (name.c_str(),
+#ifdef STATISTICS
+					     morpheo::behavioural::Parameters_Statistics(5,50),
+#endif
+					     *_param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  sc_clock                               * CLOCK;
+  sc_signal<Tcontrol_t>                  * NRESET;
+
+  sc_signal<Tcontrol_t>                    READ_VAL      [_param->_nb_port_read];
+  sc_signal<Tcontrol_t>                    READ_ACK      [_param->_nb_port_read];
+  sc_signal<Taddress_t>                    READ_ADDRESS  [_param->_nb_port_read];
+  sc_signal<Tdata_t>                       READ_DATA     [_param->_nb_port_read];
+
+  sc_signal<Tcontrol_t>                    WRITE_VAL     [_param->_nb_port_write];
+  sc_signal<Tcontrol_t>                    WRITE_ACK     [_param->_nb_port_write];
+  sc_signal<Taddress_t>                    WRITE_ADDRESS [_param->_nb_port_write];
+  sc_signal<Tdata_t>                       WRITE_DATA    [_param->_nb_port_write];
+
+  string rename;
+
+  CLOCK                                  = new sc_clock ("clock", 1.0, 0.5);
+  NRESET                                 = new sc_signal<Tcontrol_t> ("NRESET");
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  cout << "<" << name << "> Instanciation of _RegisterFile" << endl;
+  
+  (*(_RegisterFile->in_CLOCK))        (*(CLOCK));
+  (*(_RegisterFile->in_NRESET))       (*(NRESET));
+
+  for (uint32_t i=0; i<_param->_nb_port_read; i++)
+    {
+      (*(_RegisterFile-> in_READ_VAL      [i]))        (READ_VAL      [i]);
+      (*(_RegisterFile->out_READ_ACK      [i]))        (READ_ACK      [i]);
+      (*(_RegisterFile-> in_READ_ADDRESS  [i]))        (READ_ADDRESS  [i]);
+      (*(_RegisterFile->out_READ_DATA     [i]))        (READ_DATA     [i]);
+    }
+
+  for (uint32_t i=0; i<_param->_nb_port_write; i++)
+    {
+      (*(_RegisterFile-> in_WRITE_VAL     [i]))        (WRITE_VAL     [i]);
+      (*(_RegisterFile->out_WRITE_ACK     [i]))        (WRITE_ACK     [i]);
+      (*(_RegisterFile-> in_WRITE_ADDRESS [i]))        (WRITE_ADDRESS [i]);
+      (*(_RegisterFile-> in_WRITE_DATA    [i]))        (WRITE_DATA    [i]);
+    }
+
+  cout << "<" << name << "> Start Simulation ............" << endl;
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  const bool     simulate_read = true;
+  const uint32_t nb_request    = _param->_nb_word;
+  // random init
+  const uint32_t grain         = 0;
+  //const uint32_t grain = static_cast<uint32_t>(time(NULL));
+  
+  srand(grain);
+
+  // Initialisation
+
+  SC_START(0);
+  
+  for (uint32_t i=0; i<_param->_nb_port_write; i++)
+    WRITE_VAL [i] .write (0);
+
+  for (uint32_t i=0; i<_param->_nb_port_read; i++)
+    READ_VAL  [i] .write (0);
+
+  NRESET->write(0);
+
+  SC_START(5);
+
+  NRESET->write(1);
+
+  for (uint32_t nb_iteration=0; nb_iteration < NB_ITERATION; nb_iteration ++)
+    {
+      cout << "<" << name << "> 1) Write the RegisterFile (no read)" << endl;
+
+      Taddress_t nb_val            = 0;
+      Taddress_t nb_ack            = 0;
+      
+      Tdata_t    tab_data    [_param->_nb_word];
+      Taddress_t tab_address [nb_request      ];
+  
+      for (uint32_t i=0; i<_param->_nb_word; i++)
+	tab_data    [i]= rand()%(1<<(_param->_size_word-1));
+      for (uint32_t i=0; i<nb_request; i++)
+	tab_address [i]= rand()%(1<<(_param->_size_address));
+
+      while (nb_ack < nb_request)
+	{
+	  cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
+
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_write; num_port ++)
+	    {
+	      if ((nb_val            < nb_request) and
+		  (WRITE_VAL [num_port].read() == 0))
+		{
+		  cout << "(" << num_port << ") [" << tab_address[nb_val] << "] <= " << tab_data[tab_address[nb_val]] << endl;
+		  
+		  WRITE_VAL     [num_port] .write(1);
+		  WRITE_DATA    [num_port] .write(tab_data[tab_address[nb_val]]);
+		  WRITE_ADDRESS [num_port] .write(tab_address[nb_val]);
+
+		  nb_val ++;
+
+		  // Address can be not a multiple of nb_port_write
+		  if (nb_val >= nb_request)
+		    break;
+		}
+	    }
+	  
+	  SC_START(1);
+
+	  // reset write_val port
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_write; num_port ++)
+	    {
+	      if ((WRITE_ACK [num_port].read() == 1) and
+		  (WRITE_VAL [num_port].read() == 1))
+		{
+		  WRITE_VAL  [num_port] .write(0);
+		  nb_ack ++;
+		}
+	    }
+
+	  SC_START(0);
+	}
+      
+
+      if (simulate_read == true)
+	{
+	  cout << "<" << name << "> 2) Read the RegisterFile (no write)" << endl;
+	  
+	  nb_val = 0;
+	  nb_ack = 0;
+	  Tdata_t read_address [_param->_nb_port_read];
+
+	  while (nb_ack < nb_request)
+	    {
+	      cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
+	      
+	      for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
+		{
+		  if ((nb_val < nb_request) and
+		      (READ_VAL [num_port].read() == 0))
+		    {
+		      read_address [num_port] = tab_address[nb_val];
+		      READ_VAL     [num_port].write(1);
+		      READ_ADDRESS [num_port].write(read_address [num_port]);
+		      
+		      nb_val ++;
+		      
+		      if (nb_val >= nb_request)
+			break;
+		    }
+		}
+	      
+	      SC_START(1);
+	      
+	      // reset write_val port
+	      for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
+		{
+		  if ((READ_ACK [num_port].read() == 1) and
+		      (READ_VAL [num_port].read() == 1))
+		    {
+		      READ_VAL  [num_port] .write(0);
+		      
+		      cout << "(" << num_port << ") [" << read_address [num_port] << "] => " << READ_DATA [num_port].read() << endl;
+		      
+		      TEST(Tdata_t,READ_DATA [num_port].read(), tab_data[read_address [num_port]]);
+		      nb_ack ++;
+		    }
+		}
+	      
+	      SC_START(0);
+	    }
+	}
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK ("End of Simulation");
+  delete _time;
+  cout << "<" << name << "> ............ Stop Simulation" << endl;
+
+  delete CLOCK;
+  delete NRESET;
+#endif
+
+  delete _RegisterFile;
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/VERSION
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/VERSION	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/VERSION	(revision 53)
@@ -0,0 +1,4 @@
+v0.6
+
+0.5 modif vhdl_port et vhdl_testbench_port -> ajout d'une macro
+0.6 ajout de la documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/Makefile	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/Makefile	(revision 53)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/RegisterFile.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/RegisterFile.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/RegisterFile.tex	(revision 53)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/sty/header.sty	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/sty/header.sty	(revision 53)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{RegisterFile}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/01_introduction.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/01_introduction.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/02_features.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/02_features.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/03_description.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/03_description.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/04_pinout.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/04_pinout.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/05_parameters.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/05_parameters.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/06_performance.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/06_performance.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/07_details.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/07_details.tex	(revision 53)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/08_history.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/08_history.tex	(revision 53)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/root.tex	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/doc/tex/root.tex	(revision 53)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h	(revision 53)
@@ -0,0 +1,58 @@
+#ifndef morpheo_behavioural_generic_registerfile_Parameters_h
+#define morpheo_behavioural_generic_registerfile_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h"
+#include <math.h>
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+
+  typedef enum {instance_RegisterFile_Monolithic  ,
+		instance_RegisterFile_Multi_Banked} Tinstance_t;
+
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ 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 : morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * _param_registerfile_monolithic;
+  public : morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * _param_registerfile_multi_banked;
+    
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * param);
+  public : Parameters  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * param);
+  public : Parameters  (Parameters & param) ;
+  public : ~Parameters () ;
+
+  public : string msg_error (void);
+
+  public :        string   print      (uint32_t depth);
+  public : friend ostream& operator<< (ostream& output_stream,
+				       morpheo::behavioural::generic::registerfile::Parameters & x);
+  };
+
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h	(revision 53)
@@ -0,0 +1,119 @@
+#ifndef morpheo_behavioural_generic_registerfile_RegisterFile_h
+#define morpheo_behavioural_generic_registerfile_RegisterFile_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h"
+#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
+
+#include "Behavioural/Generic/RegisterFile/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile/include/Types.h"
+#ifdef STATISTICS
+#include "Behavioural/Generic/RegisterFile/include/Statistics.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+
+
+  class RegisterFile 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const string     _name;
+
+  protected : const Parameters _param;
+//#ifdef STATISTICS
+//  protected : const morpheo::behavioural::Parameters_Statistics _param_statistics;
+//#endif
+
+  public    : Component                      * _component;
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Interface
+  public    : SC_CLOCK                      *  in_CLOCK        ;
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
+
+    // ----- Interface Read
+  public    : SC_IN       (Tcontrol_t)     **  in_READ_VAL     ;
+  public    : SC_OUT      (Tcontrol_t)     ** out_READ_ACK     ;
+  public    : SC_IN       (Taddress_t)     **  in_READ_ADDRESS ;
+  public    : SC_OUT      (Tdata_t)        ** out_READ_DATA    ;
+
+    // ----- Interface Write
+  public    : SC_IN       (Tcontrol_t)     **  in_WRITE_VAL    ;
+  public    : SC_OUT      (Tcontrol_t)     ** out_WRITE_ACK    ;
+  public    : SC_IN       (Taddress_t)     **  in_WRITE_ADDRESS;
+  public    : SC_IN       (Tdata_t)        **  in_WRITE_DATA   ;
+
+#endif
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+  protected : morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::RegisterFile_Monolithic  ::RegisterFile_Monolithic   * component_RegisterFile_Monolithic  ;
+  protected : morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked * component_RegisterFile_Multi_Banked;
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // -----[ methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (RegisterFile);
+#endif
+  public  :          RegisterFile              (
+#ifdef SYSTEMC
+					      sc_module_name                              name,
+#else					       
+					      string                                      name,
+#endif					       
+#ifdef STATISTICS
+					      morpheo::behavioural::Parameters_Statistics param_statistics,
+#endif
+					      Parameters                                  param );
+					       
+  public  :          RegisterFile              (Parameters param );
+  public  :          ~RegisterFile             (void);
+					       
+#ifdef SYSTEMC				       
+  private : void     allocation                (void);
+  private : void     deallocation              (void);
+#endif					       
+
+#ifdef STATISTICS
+  public  : string   statistics                (uint32_t depth);
+#endif
+  };
+
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Statistics.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Statistics.h	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Statistics.h	(revision 53)
@@ -0,0 +1,55 @@
+#ifdef STATISTICS
+#ifndef morpheo_behavioural_generic_registerfile_Statistics_h
+#define morpheo_behavioural_generic_registerfile_Statistics_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Statistics.h"
+#include "Behavioural/include/Parameters_Statistics.h"
+//#include "Behavioural/Generic/Group/include/Statistics.h"
+#include "Behavioural/Generic/RegisterFile/include/Parameters.h"
+
+//using namespace morpheo::behavioural::generic::group;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+
+
+  class Statistics : public morpheo::behavioural::Statistics
+  {
+    // -----[ fields ]----------------------------------------------------
+  private  : const Parameters                                   _parameters;
+
+    // -----[ methods ]---------------------------------------------------
+  public   : Statistics  (string                                      name                       ,
+			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
+			  Parameters                                  parameters
+			  );
+//public   : Statistics  (Statistics & stat);
+  public   : ~Statistics () ;
+    
+  public   : string   print_body (uint32_t depth);
+  public   : string   print      (uint32_t depth);
+  public   : void     add        ();
+
+  public   : friend ostream& operator<< (ostream& output_stream,
+					 const Statistics & x);
+
+  };
+
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo
+
+#endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Types.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Types.h	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Types.h	(revision 53)
@@ -0,0 +1,27 @@
+#ifndef morpheo_behavioural_generic_registerfile_Type_h
+#define morpheo_behavioural_generic_registerfile_Type_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Types.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+
+  typedef uint32_t Taddress_t;
+  typedef uint32_t Tdata_t;
+ 
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp	(revision 53)
@@ -0,0 +1,76 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+
+
+  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 )
+  {
+    log_printf(FUNC,RegisterFile,"Parameters","Begin");
+
+    _param_registerfile_monolithic   = param;
+    
+    test();
+
+    log_printf(FUNC,RegisterFile,"Parameters","End");
+  };
+
+  Parameters::Parameters (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * param) :
+    _instance (instance_RegisterFile_Multi_Banked),
+    _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 )
+  {
+    log_printf(FUNC,RegisterFile,"Parameters","Begin");
+
+    _param_registerfile_multi_banked = param;
+
+    test();
+
+    log_printf(FUNC,RegisterFile,"Parameters","End");
+  };
+  
+  Parameters::Parameters (Parameters & param):
+    _instance          (param._instance     ),
+    _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 )
+  {
+    log_printf(FUNC,RegisterFile,"Parameters (copy)","Begin");
+
+    _param_registerfile_multi_banked = param._param_registerfile_multi_banked;
+    _param_registerfile_monolithic   = param._param_registerfile_monolithic;
+    test();
+    log_printf(FUNC,RegisterFile,"Parameters (copy)","End");
+  };
+
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,RegisterFile,"~Parameters","Begin");
+    log_printf(FUNC,RegisterFile,"~Parameters","End");
+  };
+
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_msg_error.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_msg_error.cpp	(revision 53)
@@ -0,0 +1,35 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/include/Parameters.h"
+#include "Behavioural/Generic/RegisterFile/include/Types.h"
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+
+
+  string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,RegisterFile,"msg_error","Begin");
+
+    if (_instance == instance_RegisterFile_Monolithic)
+      return _param_registerfile_monolithic  ->msg_error();
+    else
+      return _param_registerfile_multi_banked->msg_error();
+    
+    log_printf(FUNC,RegisterFile,"msg_error","End");
+  };
+
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_print.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters_print.cpp	(revision 53)
@@ -0,0 +1,49 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+
+
+  string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile,"print","Begin");
+
+    string _return;
+
+    if (_instance == instance_RegisterFile_Monolithic)
+      _return = _param_registerfile_monolithic  ->print(depth);
+    else
+      _return = _param_registerfile_multi_banked->print(depth);
+
+    log_printf(FUNC,RegisterFile,"print","End");
+    
+    return _return;
+  };
+
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::generic::registerfile::Parameters & x)
+  {
+    if (x._instance == instance_RegisterFile_Monolithic)
+      output_stream << x._param_registerfile_monolithic  ->print(0);
+    else
+      output_stream << x._param_registerfile_multi_banked->print(0);
+    
+    return output_stream;
+  };
+
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile.cpp	(revision 53)
@@ -0,0 +1,59 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/include/RegisterFile.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+
+
+#ifdef SYSTEMC
+  RegisterFile::RegisterFile (sc_module_name name,
+#else
+  RegisterFile::RegisterFile (string name,
+#endif
+#ifdef STATISTICS
+			      morpheo::behavioural::Parameters_Statistics             param_statistics,
+#endif
+			      morpheo::behavioural::generic::registerfile::Parameters param ):
+			      _name              (name)
+			      ,_param            (param)
+// #ifdef STATISTICS
+// 			      ,_param_statistics (param_statistics)
+// #endif
+  {
+    log_printf(FUNC,RegisterFile,"RegisterFile","Begin");
+
+#ifdef SYSTEMC
+    log_printf(INFO,RegisterFile,"RegisterFile","Allocation");
+
+    allocation ();
+#endif
+
+    log_printf(FUNC,RegisterFile,"RegisterFile","End");
+  };
+  
+  RegisterFile::~RegisterFile (void)
+  {
+    log_printf(FUNC,RegisterFile,"~RegisterFile","Begin");
+
+#ifdef SYSTEMC
+    log_printf(INFO,RegisterFile,"~RegisterFile","Deallocation");
+
+    deallocation ();
+#endif
+
+    log_printf(FUNC,RegisterFile,"~RegisterFile","End");
+  };
+
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_allocation.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_allocation.cpp	(revision 53)
@@ -0,0 +1,149 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/include/RegisterFile.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+
+
+  void RegisterFile::allocation (void)
+  {
+    string rename;
+
+    log_printf(FUNC,RegisterFile,"allocation","Begin");
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      in_CLOCK              = new SC_CLOCK           ("in_CLOCK" );
+      in_NRESET             = new SC_IN (Tcontrol_t) ("in_NRESET");
+    }
+    // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+     in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param._nb_port_read];
+    out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param._nb_port_read];
+     in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param._nb_port_read];
+    out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param._nb_port_read];
+
+    for (uint32_t i=0; i<_param._nb_port_read; i++)
+      { 
+	rename =  "in_READ_"+toString(i)+"_VAL"    ;
+	 in_READ_VAL     [i]  = new SC_IN (Tcontrol_t) (rename.c_str());   
+	rename = "out_READ_"+toString(i)+"_ACK"    ;
+	out_READ_ACK     [i]  = new SC_OUT(Tcontrol_t) (rename.c_str());
+	rename =  "in_READ_"+toString(i)+"_ADDRESS";
+	 in_READ_ADDRESS [i]  = new SC_IN (Taddress_t) (rename.c_str());
+	rename = "out_READ_"+toString(i)+"_DATA"   ;
+	out_READ_DATA    [i]  = new SC_OUT(Tdata_t   ) (rename.c_str());
+      }
+
+    // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+     in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param._nb_port_write];
+    out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param._nb_port_write];
+     in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param._nb_port_write];
+     in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param._nb_port_write];
+    
+    for (uint32_t i=0; i<_param._nb_port_write; i++)
+      {
+	rename =  "in_WRITE_"+toString(i)+"_VAL"    ;
+	 in_WRITE_VAL     [i]  = new SC_IN (Tcontrol_t) (rename.c_str());
+	rename = "out_WRITE_"+toString(i)+"_ACK"    ;
+	out_WRITE_ACK     [i]  = new SC_OUT(Tcontrol_t) (rename.c_str());
+	rename =  "in_WRITE_"+toString(i)+"_ADDRESS";
+	 in_WRITE_ADDRESS [i]  = new SC_IN (Taddress_t) (rename.c_str());
+	rename =  "in_WRITE_"+toString(i)+"_DATA"   ;
+	 in_WRITE_DATA    [i]  = new SC_IN (Tdata_t   ) (rename.c_str());
+      }
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                
+    if (_param._instance == instance_RegisterFile_Monolithic)
+    // =====[ component_RegisterFile_Monolithic ]=========================
+      {
+	component_RegisterFile_Monolithic  = new morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::RegisterFile_Monolithic  ::RegisterFile_Monolithic   (_name.c_str()
+#ifdef STATISTICS
+																					       ,_param_statistics
+#endif
+																					       ,*(_param._param_registerfile_monolithic)
+																					       );
+	
+      }
+    else
+    // =====[ component_RegisterFile_Multi_Banked ]=======================
+      {
+	component_RegisterFile_Multi_Banked = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::RegisterFile_Multi_Banked::RegisterFile_Multi_Banked (_name.c_str()
+#ifdef STATISTICS
+																						,_param_statistics
+#endif
+																						,*(_param._param_registerfile_multi_banked)
+																						);
+	
+      }
+    // ~~~~~[ Component - Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    if (_param._instance == instance_RegisterFile_Monolithic)
+    // =====[ Component_RegisterFile_Monolithic - Instanciation ]=========
+      {
+	(*(component_RegisterFile_Monolithic  ->in_CLOCK )) (*(in_CLOCK ));
+	(*(component_RegisterFile_Monolithic  ->in_NRESET)) (*(in_NRESET));
+	
+	for (uint32_t i=0; i<_param._nb_port_read; i++)
+	  { 
+	    (*(component_RegisterFile_Monolithic  -> in_READ_VAL     [i])) (*( in_READ_VAL     [i]));   
+	    (*(component_RegisterFile_Monolithic  ->out_READ_ACK     [i])) (*(out_READ_ACK     [i]));
+	    (*(component_RegisterFile_Monolithic  -> in_READ_ADDRESS [i])) (*( in_READ_ADDRESS [i]));
+	    (*(component_RegisterFile_Monolithic  ->out_READ_DATA    [i])) (*(out_READ_DATA    [i]));
+	  }
+	
+	for (uint32_t i=0; i<_param._nb_port_write; i++)
+	  {
+	    (*(component_RegisterFile_Monolithic  -> in_WRITE_VAL     [i])) (*( in_WRITE_VAL     [i]));
+	    (*(component_RegisterFile_Monolithic  ->out_WRITE_ACK     [i])) (*(out_WRITE_ACK     [i]));
+	    (*(component_RegisterFile_Monolithic  -> in_WRITE_ADDRESS [i])) (*( in_WRITE_ADDRESS [i]));
+	    (*(component_RegisterFile_Monolithic  -> in_WRITE_DATA    [i])) (*( in_WRITE_DATA    [i]));
+	  }
+      }
+    else
+    // =====[ Component_RegisterFile_Multi_Banked - Instanciation ]=======
+      {
+	(*(component_RegisterFile_Multi_Banked->in_CLOCK )) (*(in_CLOCK ));
+	(*(component_RegisterFile_Multi_Banked->in_NRESET)) (*(in_NRESET));
+	
+	for (uint32_t i=0; i<_param._nb_port_read; i++)
+	  { 
+	    (*(component_RegisterFile_Multi_Banked-> in_READ_VAL     [i])) (*( in_READ_VAL     [i]));   
+	    (*(component_RegisterFile_Multi_Banked->out_READ_ACK     [i])) (*(out_READ_ACK     [i]));
+	    (*(component_RegisterFile_Multi_Banked-> in_READ_ADDRESS [i])) (*( in_READ_ADDRESS [i]));
+	    (*(component_RegisterFile_Multi_Banked->out_READ_DATA    [i])) (*(out_READ_DATA    [i]));
+	  }
+	
+	for (uint32_t i=0; i<_param._nb_port_write; i++)
+	  {
+	    (*(component_RegisterFile_Multi_Banked-> in_WRITE_VAL     [i])) (*( in_WRITE_VAL     [i]));
+	    (*(component_RegisterFile_Multi_Banked->out_WRITE_ACK     [i])) (*(out_WRITE_ACK     [i]));
+	    (*(component_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS [i])) (*( in_WRITE_ADDRESS [i]));
+	    (*(component_RegisterFile_Multi_Banked-> in_WRITE_DATA    [i])) (*( in_WRITE_DATA    [i]));
+	  }
+      }
+
+    if (_param._instance == instance_RegisterFile_Monolithic)
+      _component = component_RegisterFile_Monolithic  ->_component;
+    else
+      _component = component_RegisterFile_Multi_Banked->_component;
+
+    log_printf(FUNC,RegisterFile,"allocation","End");
+  };
+
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_deallocation.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_deallocation.cpp	(revision 53)
@@ -0,0 +1,52 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/include/RegisterFile.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+
+
+  void RegisterFile::deallocation (void)
+  {
+    log_printf(FUNC,RegisterFile,"deallocation","Begin");
+
+    delete in_CLOCK;
+    delete in_NRESET;
+    // ----- Interface Read
+    delete []  in_READ_VAL    ;
+    delete [] out_READ_ACK    ;
+    delete []  in_READ_ADDRESS;
+    delete [] out_READ_DATA   ;
+
+    // ----- Interface Write
+    delete []  in_WRITE_VAL    ;
+    delete [] out_WRITE_ACK    ;
+    delete []  in_WRITE_ADDRESS;
+    delete []  in_WRITE_DATA   ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+//   delete _component;
+
+    if (_param._instance == instance_RegisterFile_Monolithic)
+      delete component_RegisterFile_Monolithic  ;
+    else
+      delete component_RegisterFile_Multi_Banked;
+
+    log_printf(FUNC,RegisterFile,"deallocation","End");
+  };
+
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_statistics.cpp	(revision 53)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/RegisterFile_statistics.cpp	(revision 53)
@@ -0,0 +1,38 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Generic/RegisterFile/include/RegisterFile.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace registerfile {
+
+
+  string RegisterFile::statistics (uint32_t depth)
+  {
+    log_printf(FUNC,RegisterFile,"statistics","Begin");
+    
+    if (_param->_instance == instance_RegisterFile_Monilithic)
+      component_RegisterFile_Monolithic  ->statistics(depth);
+    else
+      component_RegisterFile_Multi_Banked->statistics(depth);
+
+    string txt = _stat->print(depth);
+    
+    log_printf(FUNC,RegisterFile,"statistics","End");
+
+    return txt;
+  };
+
+}; // end namespace registerfile
+}; // end namespace generic
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile.deps	(revision 53)
@@ -8,9 +8,9 @@
 # DIR_MORPHEO must be defined
 
+Select_Priority_Fixed			= yes
+
 ifndef Behavioural
 include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
 endif
-
-Select_Priority_Fixed			= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile.deps	(revision 53)
@@ -8,9 +8,9 @@
 # DIR_MORPHEO must be defined
 
+Shifter				= yes
+
 ifndef Behavioural
 include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
 endif
-
-Shifter				= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile.deps	(revision 53)
@@ -8,4 +8,6 @@
 # DIR_MORPHEO must be defined
 
+Victim_Pseudo_LRU			= yes
+
 ifndef Behavioural
 include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
@@ -15,5 +17,4 @@
 endif
 
-Victim_Pseudo_LRU			= yes
 #-----[ Library ]------------------------------------------
 Victim_Pseudo_LRU_LIBRARY		= 	-lVictim_Pseudo_LRU		\
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Common
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Common	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Common	(revision 53)
@@ -9,5 +9,5 @@
 include                         $(MORPHEO_TOPLEVEL)/Makefile.tools
 
-#-----[ Directory ]----------------------------------------
+#-----[ Directory ]----------------------------------------
 DIR_INC				= include
 DIR_SRC				= src
@@ -15,5 +15,5 @@
 DIR_SCRIPT			= $(MORPHEO_SCRIPT)
 
-#-----[ Compilation ]--------------------------------------
+#-----[ Compilation ]--------------------------------------
 INCDIR 				= $(SYSTEMC_INCDIR_$(SIMULATOR)) 	\
 				  -I$(DIR_MORPHEO) 
@@ -42,5 +42,5 @@
 LFLAGS				= $(FLAGS) $(FLAGS_COMMON) $(LIBDIR)
 
-#-----[ Variable ]-----------------------------------------
+#-----[ Variable ]-----------------------------------------
 
 ENTITY				= `$(BASENAME) $$PWD`
@@ -50,9 +50,9 @@
 HEADERS  			= $(wildcard $(DIR_INC)/*.h)
 
-#-----[ Rules ]--------------------------------------------
+#-----[ Rules ]--------------------------------------------
 .PRECIOUS			: $(DIR_OBJ)/%.o
 
 test_env			:
-				@$(ECHO) "-------------------[ $(ENTITY) ]"
+				@$(ECHO) "-------------------[ $(ENTITY) ]"
 ifeq ($(origin MORPHEO_TOPLEVEL), undefined)
 				$(error "variable MORPHEO_TOPLEVEL is undefined");
@@ -86,5 +86,5 @@
 common_help			:
 				@\
-				$(ECHO) " -----[ Common ]-------------------------------------";\
+				$(ECHO) " -----[ Common ]-------------------------------------";\
 				$(ECHO) "";\
 				$(ECHO) " * test_env             : test if environnment's variable is set";\
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest	(revision 53)
@@ -2,5 +2,5 @@
 # $Id$
 # 
-# [ Description ]
+# [ Description ]
 # 
 # Makefile
@@ -14,5 +14,5 @@
 DIR_LOG				= log
 
-#-----[ Variables ]----------------------------------------
+#-----[ Variables ]----------------------------------------
 CFG_FILE_EXTENSION		= cfg
 CFG_FILE_DEBUG       		= debug.$(CFG_FILE_EXTENSION)
@@ -25,5 +25,5 @@
 EXEC				= soft
 
-#-----[ Rules ]--------------------------------------------
+#-----[ Rules ]--------------------------------------------
 .PRECIOUS			: $(DIR_BIN)/%.x $(DIR_LOG)/%.exec.log
 .NOPARALLEL			: clean clean_all help
@@ -112,5 +112,15 @@
 				done;
 
-$(DIR_LOG)/%.exec.log		: $(DIR_CFG_GEN)/%.cfg $(DIR_BIN)/$(EXEC).x
+$(DIR_LOG)/%.exec.log		: $(DIR_CFG_GEN)/%.cfg  $(DIR_BIN)/$(EXEC).x
+				@\
+				$(ECHO) "Execute            : $*";\
+				$(EXPORT) SYSTEMC=$(SYSTEMC_$(SIMULATOR)) ; ./$(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` &> $@
+				declare -i count=`$(GREP) -ch "Test OK" $@`;		\
+				if $(TEST) $$count -ne 0;       			\
+				then echo "                     $* ... OK";           	\
+				else echo "                     $* ... KO"; exit 1;     \
+				fi;
+
+$(DIR_LOG)/%.exec.log		: $(DIR_CFG_USER)/%.cfg $(DIR_BIN)/$(EXEC).x
 				@\
 				$(ECHO) "Execute            : $*";\
@@ -155,5 +165,5 @@
 selftest_help			:
 				@\
-				$(ECHO) " -----[ Selftest ]-----------------------------------";\
+				$(ECHO) " -----[ Selftest ]-----------------------------------";\
 				$(ECHO) "";\
 				$(ECHO) " * all_selftest         : compile all c++ file and execute";\
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis	(revision 53)
@@ -2,10 +2,10 @@
 # $Id$
 # 
-# [ Description ]
+# [ Description ]
 # 
 # Makefile
 # 
 
-#-----[ Variables ]----------------------------------------
+#-----[ Variables ]----------------------------------------
 
 DIR_VHDL			= .
@@ -21,5 +21,5 @@
 FPGA_LOG_FILES			= $(patsubst $(DIR_CFG_GEN)/%.cfg,$(DIR_LOG)/%.fpga.log,$(wildcard $(DIR_CFG_GEN)/*.cfg))	\
 	  			  $(patsubst $(DIR_CFG_USER)/%.cfg,$(DIR_LOG)/%.fpga.log,$(wildcard $(DIR_CFG_USER)/*.cfg))
-#-----[ Rules ]--------------------------------------------
+#-----[ Rules ]--------------------------------------------
 .PRECIOUS			: $(DIR_LOG)/%.vhdl.log $(DIR_LOG)/%.vhdl_sim.log
 
@@ -89,5 +89,5 @@
 synthesis_help			:
 				@\
-				$(ECHO) " -----[ Synthesis ]----------------------------------";\
+				$(ECHO) " -----[ Synthesis ]----------------------------------";\
 				$(ECHO) "";\
 				$(ECHO) " * vhdl                 : compile all vhdl's file";\
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps	(revision 53)
@@ -8,9 +8,9 @@
 # DIR_MORPHEO must be defined
 
+Behavioural			= yes
+
 #ifndef Behavioural
 #include $(DIR_MORPHEO)/Behavioural/Makefile.deps
 #endif
-#
-Behavioural			= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 53)
@@ -11,14 +11,13 @@
 # systemc			- SystemC    
 # systemcass 			- SystemCASS
-# systemcass_deps		- SystemCASS, and use port dependency information instead of sensitivity list
+# systemcass_deps		- Systemcass, and use port dependency information instead of sensitivity list
 
 #-----[ Flags ]--------------------------------------------
 FLAGS				=	-DSYSTEMC		\
-					-DVHDL			\
-					-DDEBUG=DEBUG_NONE
-
+					-DDEBUG=DEBUG_TRACE
+#					-DVHDL			\
 #  					-DVHDL_TESTBENCH	\
+#					-DVHDL_TESTBENCH_ASSERT	\
 #					-DSTATISTICS 		\
-#					-DVHDL_TESTBENCH_ASSERT	\
 #					-DCONFIGURATION  	\
 #					-DPOSITION       	\
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile.deps	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile.deps	(revision 53)
@@ -8,9 +8,9 @@
 # DIR_MORPHEO must be defined
 
+@COMPONENT			= yes
+
 ifndef Behavioural
 include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
 endif
-
-@COMPONENT			= yes
 
 #-----[ Library ]------------------------------------------
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp	(revision 53)
@@ -33,9 +33,13 @@
   cout << "<" << name << "> : Simulation SystemC" << endl;
 
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
   @COMPONENT * _@COMPONENT = new @COMPONENT (name.c_str(),
 #ifdef STATISTICS
-					     morpheo::behavioural::Parameters_Statistics(5,50),
+					     _parameters_statistics,
 #endif
-					     *_param);
+					     _param);
   
 #ifdef SYSTEMC
@@ -43,11 +47,11 @@
    * Déclarations des signaux
    *********************************************************************/
-  sc_clock                               * CLOCK;
-  sc_signal<Tcontrol_t>                  * NRESET;
+  sc_clock                               * in_CLOCK;
+  sc_signal<Tcontrol_t>                  * in_NRESET;
 
   string rename;
 
-  CLOCK                                  = new sc_clock ("clock", 1.0, 0.5);
-  NRESET                                 = new sc_signal<Tcontrol_t> ("NRESET");
+  in_CLOCK                                = new sc_clock ("clock", 1.0, 0.5);
+  in_NRESET                               = new sc_signal<Tcontrol_t> ("NRESET");
   
   /********************************************************
@@ -57,6 +61,6 @@
   cout << "<" << name << "> Instanciation of _@COMPONENT" << endl;
   
-  (*(_@COMPONENT->in_CLOCK))        (*(CLOCK));
-  (*(_@COMPONENT->in_NRESET))       (*(NRESET));
+  (*(_@COMPONENT->in_CLOCK))        (*(in_CLOCK));
+  (*(_@COMPONENT->in_NRESET))       (*(in_NRESET));
 
 
@@ -100,3 +104,6 @@
 
   delete _@COMPONENT;
+#ifdef SYSTEMC
+  delete _parameters_statistics;
+#endif
 }
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/New_Component.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/New_Component.h	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/New_Component.h	(revision 53)
@@ -40,9 +40,9 @@
     // -----[ fields ]----------------------------------------------------
     // Parameters
-  protected : const string     _name;
+  protected : const string       _name;
 
-  protected : const Parameters _param;
+  protected : const Parameters * _param;
 //#ifdef STATISTICS
-//  protected : const morpheo::behavioural::Parameters_Statistics _param_statistics;
+//  protected : const morpheo::behavioural::Parameters_Statistics * _param_statistics;
 //#endif
 
@@ -74,14 +74,12 @@
   public  :          @COMPONENT              (
 #ifdef SYSTEMC
-					      sc_module_name                              name,
+					      sc_module_name                                name,
 #else					       
-					      string                                      name,
+					      string                                        name,
 #endif					       
 #ifdef STATISTICS
-					      morpheo::behavioural::Parameters_Statistics param_statistics,
+					      morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-					      Parameters                                  param );
-					       
-  public  :          @COMPONENT              (Parameters param );
+					      Parameters                                  * param );
   public  :          ~@COMPONENT             (void);
 					       
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Statistics.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Statistics.h	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/include/Statistics.h	(revision 53)
@@ -25,10 +25,10 @@
   {
     // -----[ fields ]----------------------------------------------------
-  private  : const Parameters                                   _parameters;
+  private  : const Parameters                                 * _parameters;
 
     // -----[ methods ]---------------------------------------------------
-  public   : Statistics  (string                                      name                       ,
-			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
-			  Parameters                                  parameters
+  public   : Statistics  (string                                        name                       ,
+			  morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
+			  Parameters                                  * parameters
 			  );
 //public   : Statistics  (Statistics & stat);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component.cpp	(revision 53)
@@ -12,4 +12,6 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::@COMPONENT"
 #ifdef SYSTEMC
   @COMPONENT::@COMPONENT (sc_module_name name,
@@ -18,7 +20,7 @@
 #endif
 #ifdef STATISTICS
-			      morpheo::behavioural::Parameters_Statistics             param_statistics,
+			  morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-			      morpheo::behavioural::@NAMESPACE_USE::Parameters param ):
+			  morpheo::behavioural::@NAMESPACE_USE::Parameters * param ):
 			      _name              (name)
 			      ,_param            (param)
@@ -27,8 +29,8 @@
 // #endif
   {
-    log_printf(FUNC,@COMPONENT,"@COMPONENT","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
 #ifdef SYSTEMC
-    log_printf(INFO,@COMPONENT,"@COMPONENT","Allocation");
+    log_printf(INFO,@COMPONENT,FUNCTION,"Allocation");
 
     allocation ();
@@ -36,5 +38,5 @@
 
 #ifdef STATISTICS
-    log_printf(INFO,@COMPONENT,"@COMPONENT","Allocation of statistics");
+    log_printf(INFO,@COMPONENT,FUNCTION,"Allocation of statistics");
 
     // Allocation of statistics
@@ -46,5 +48,5 @@
 #ifdef VHDL
     // generate the vhdl
-    log_printf(INFO,@COMPONENT,"@COMPONENT","Generate the vhdl");
+    log_printf(INFO,@COMPONENT,FUNCTION,"Generate the vhdl");
 
     vhdl();
@@ -53,5 +55,5 @@
 #ifdef SYSTEMC
 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-    log_printf(INFO,@COMPONENT,"@COMPONENT","Method - transition");
+    log_printf(INFO,@COMPONENT,FUNCTION,"Method - transition");
 
     SC_METHOD (transition);
@@ -65,13 +67,15 @@
 
 #endif
-    log_printf(FUNC,@COMPONENT,"@COMPONENT","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
   
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::~@COMPONENT"
   @COMPONENT::~@COMPONENT (void)
   {
-    log_printf(FUNC,@COMPONENT,"~@COMPONENT","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
 #ifdef STATISTICS
-    log_printf(INFO,@COMPONENT,"~@COMPONENT","Generate Statistics file");
+    log_printf(INFO,@COMPONENT,FUNCTION,"Generate Statistics file");
 
     _stat->generate_file(statistics(0));
@@ -81,10 +85,10 @@
 
 #ifdef SYSTEMC
-    log_printf(INFO,@COMPONENT,"~@COMPONENT","Deallocation");
+    log_printf(INFO,@COMPONENT,FUNCTION,"Deallocation");
 
     deallocation ();
 #endif
 
-    log_printf(FUNC,@COMPONENT,"~@COMPONENT","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_allocation.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_allocation.cpp	(revision 53)
@@ -13,9 +13,12 @@
 @NAMESPACE_BEGIN
 
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::allocation"
   void @COMPONENT::allocation (void)
   {
     string rename;
 
-    log_printf(FUNC,@COMPONENT,"allocation","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
     _component   = new Component ();
@@ -49,5 +52,5 @@
 #endif
 
-    log_printf(FUNC,@COMPONENT,"allocation","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_deallocation.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_deallocation.cpp	(revision 53)
@@ -1,2 +1,5 @@
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::"
+
 #ifdef SYSTEMC
 /*
@@ -13,12 +16,14 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::deallocation"
   void @COMPONENT::deallocation (void)
   {
-    log_printf(FUNC,@COMPONENT,"deallocation","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-    delete in_CLOCK;
+    delete    in_CLOCK ;
 //#endif
-    delete in_NRESET;
+    delete    in_NRESET;
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
@@ -26,5 +31,5 @@
     delete _component;
 
-    log_printf(FUNC,@COMPONENT,"deallocation","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_statistics.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_statistics.cpp	(revision 53)
@@ -13,11 +13,13 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::statistics"
   string @COMPONENT::statistics (uint32_t depth)
   {
-    log_printf(FUNC,@COMPONENT,"statistics","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
     string txt = _stat->print(depth);
     
-    log_printf(FUNC,@COMPONENT,"statistics","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
 
     return txt;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_transition.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_transition.cpp	(revision 53)
@@ -14,7 +14,9 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::transition"
   void @COMPONENT::transition (void)
   {
-    log_printf(FUNC,@COMPONENT,"transition","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
 #ifdef STATISTICS
@@ -26,5 +28,5 @@
 #endif
 
-    log_printf(FUNC,@COMPONENT,"transition","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl.cpp	(revision 53)
@@ -14,7 +14,9 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::vhdl"
   void @COMPONENT::vhdl (void)
   {
-    log_printf(FUNC,@COMPONENT,"vhdl","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
     Vhdl * vhdl = new Vhdl (_name);
@@ -30,5 +32,5 @@
     delete vhdl;
 
-    log_printf(FUNC,@COMPONENT,"vhdl","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_body.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_body.cpp	(revision 53)
@@ -13,9 +13,11 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::vhdl_body"
   void @COMPONENT::vhdl_body (Vhdl * & vhdl)
   {
-    log_printf(FUNC,@COMPONENT,"vhdl_body","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
     vhdl->set_body ("");
-    log_printf(FUNC,@COMPONENT,"vhdl_body","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_declaration.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_declaration.cpp	(revision 53)
@@ -13,8 +13,10 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::vhdl_declaration"
   void @COMPONENT::vhdl_declaration (Vhdl * & vhdl)
   {
-    log_printf(FUNC,@COMPONENT,"vhdl_declaration","Begin");
-    log_printf(FUNC,@COMPONENT,"vhdl_declaration","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_testbench_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_testbench_transition.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component_vhdl_testbench_transition.cpp	(revision 53)
@@ -13,7 +13,9 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::vhdl_testbench_transition"
   void @COMPONENT::vhdl_testbench_transition ()
   {
-    log_printf(FUNC,@COMPONENT,"vhdl_testbench_transition","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
     // Evaluation before read the ouput signal
@@ -22,5 +24,5 @@
     _interfaces->testbench();
 
-    log_printf(FUNC,@COMPONENT,"vhdl_testbench_transition","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Parameters.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Parameters.cpp	(revision 53)
@@ -12,22 +12,28 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::Parameters"
   Parameters::Parameters ()
   {
-    log_printf(FUNC,@COMPONENT,"Parameters","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
     test();
-    log_printf(FUNC,@COMPONENT,"Parameters","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
   
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::Parameters (copy)"
   Parameters::Parameters (Parameters & param)
   {
-    log_printf(FUNC,@COMPONENT,"Parameters (copy)","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
     test();
-    log_printf(FUNC,@COMPONENT,"Parameters (copy)","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::~Parameters"
   Parameters::~Parameters () 
   {
-    log_printf(FUNC,@COMPONENT,"~Parameters","Begin");
-    log_printf(FUNC,@COMPONENT,"~Parameters","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Parameters_msg_error.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Parameters_msg_error.cpp	(revision 53)
@@ -15,7 +15,9 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::msg_error"
   string Parameters::msg_error(void)
   {
-    log_printf(FUNC,@COMPONENT,"msg_error","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
     string msg = "";
@@ -23,5 +25,5 @@
     return msg;
 
-    log_printf(FUNC,@COMPONENT,"msg_error","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Parameters_print.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Parameters_print.cpp	(revision 53)
@@ -14,25 +14,32 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::print"
   string Parameters::print (uint32_t depth)
   {
-    log_printf(FUNC,@COMPONENT,"print","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
     XML xml ("@COMPONENT_LOWER");
 
     xml.balise_open("@COMPONENT_LOWER");
-//  xml.singleton_begin("size_data"); xml.attribut("value",toString(_size_data)); xml.singleton_end();
-//  xml.singleton_begin("nb_port  "); xml.attribut("value",toString(_nb_port  )); xml.singleton_end();
+//  xml.singleton_begin(""); xml.attribut("value",toString(_)); xml.singleton_end();
     xml.balise_close();
 
-    log_printf(FUNC,@COMPONENT,"print","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
     
     return xml.get_body(depth);
   };
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::operator<<"
   ostream& operator<< (ostream& output_stream ,
 		       morpheo::behavioural::@NAMESPACE_USE::Parameters & x)
   {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
     output_stream << x.print(0);
     
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+
     return output_stream;
   };
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics.cpp	(revision 53)
@@ -13,7 +13,9 @@
 @NAMESPACE_BEGIN
 
-  Statistics::Statistics (string                                      name                       ,
-			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
-			  Parameters                                  parameters
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::Statistics"
+  Statistics::Statistics (string                                        name                       ,
+			  morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
+			  Parameters                                  * parameters
 			  ) :
     morpheo::behavioural::Statistics(name                  ,
@@ -21,12 +23,14 @@
     _parameters(parameters)
   {
-    log_printf(FUNC,@COMPONENT,"Statistics","Begin");
-    log_printf(FUNC,@COMPONENT,"Statistics","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
   
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::~Statistics"
   Statistics::~Statistics () 
   { 
-    log_printf(FUNC,@COMPONENT,"~Statistics","Begin");
-    log_printf(FUNC,@COMPONENT,"~Statistics","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics_add.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics_add.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics_add.cpp	(revision 53)
@@ -16,8 +16,10 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::add"
   void Statistics::add ()
   {
-    log_printf(FUNC,@COMPONENT,"add","Begin");
-    log_printf(FUNC,@COMPONENT,"add","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics_print.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics_print.cpp	(revision 53)
@@ -16,7 +16,9 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::print"
   string Statistics::print (uint32_t depth)
   {
-    log_printf(FUNC,@COMPONENT,"print","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
     string        tab = string(depth,'\t');
@@ -27,13 +29,19 @@
 	<< tab << "</@COMPONENT_LOWER>" << endl;
     
-    log_printf(FUNC,@COMPONENT,"print","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
 
     return msg.str();
   };
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::operator<<"
   ostream& operator<< (ostream& output_stream ,
 		       morpheo::behavioural::@NAMESPACE_USE::Statistics & x)
   {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
     output_stream << x.print(0);
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
 
     return output_stream;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics_print_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics_print_body.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/Statistics_print_body.cpp	(revision 53)
@@ -16,7 +16,9 @@
 @NAMESPACE_BEGIN
 
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::print_body"
   string Statistics::print_body (uint32_t depth)
   {
-    log_printf(FUNC,@COMPONENT,"print_body","Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
 
     string        tab = string(depth,'\t');
@@ -25,5 +27,5 @@
     msg << tab << "";
     
-    log_printf(FUNC,@COMPONENT,"print_body","End");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
 
     return msg.str();
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 53)
@@ -7,12 +7,17 @@
 #define     DEBUG_Group                                           false
 #define     DEBUG_Shifter                                         false
-#define     DEBUG_Register_File                                   false
+#define     DEBUG_RegisterFile                                    false
 #define       DEBUG_RegisterFile_Monolithic                       false 
-#define       DEBUG_RegisterFile_Multi_Banked                     true 
+#define       DEBUG_RegisterFile_Multi_Banked                     false
 #define     DEBUG_Select                                          false
 #define       DEBUG_Select_Priority_Fixed                         false 
-#define     DEBUG_Victim                                          false
+#define     Debug_Victim                                          false
 #define       DEBUG_Victim_Pseudo_LRU                             false
 #define   DEBUG_Core                                              false
+#define     DEBUG_Multi_Execute_loop                              false
+#define       DEBUG_Execute_loop				  false
+#define         DEBUG_Multi_Read_unit				  false
+#define           DEBUG_Read_unit				  false
+#define             DEBUG_Read_queue                              false
 #define     DEBUG_Multi_Front_end                                 false
 #define       DEBUG_Front_end                                     false
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Statistics.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Statistics.h	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Statistics.h	(revision 53)
@@ -26,6 +26,6 @@
   {
     // -----[ fields ]----------------------------------------------------
-  protected : const string                _name;
-  protected : const Parameters_Statistics _parameters_statistics;
+  protected : const string                  _name;
+  protected : const Parameters_Statistics * _parameters_statistics;
 
   protected :       uint32_t _nb_statistics;         // nb period ...
@@ -33,6 +33,6 @@
 
     // -----[ methods ]---------------------------------------------------
-  public    :                  Statistics          (string                name                 ,
-						    Parameters_Statistics parameters_statistics);
+  public    :                  Statistics          (string                  name                 ,
+						    Parameters_Statistics * parameters_statistics);
   public    : virtual          ~Statistics         ();
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics.cpp	(revision 53)
@@ -15,6 +15,6 @@
 #undef  FUNCTION
 #define FUNCTION "Statistics::Statistics"
-  Statistics::Statistics  (string                name                 ,
-			   Parameters_Statistics parameters_statistics):
+  Statistics::Statistics  (string                  name                 ,
+			   Parameters_Statistics * parameters_statistics):
     _name                  (name                 ),
     _parameters_statistics (parameters_statistics)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_compute_cycle_xxx.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_compute_cycle_xxx.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_compute_cycle_xxx.cpp	(revision 53)
@@ -18,5 +18,5 @@
   {
     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
-    uint32_t _return = _parameters_statistics._nb_cycle_before_begin + num_statistics*_parameters_statistics._period_save;
+    uint32_t _return = _parameters_statistics->_nb_cycle_before_begin + num_statistics*_parameters_statistics->_period_save;
     log_printf(FUNC,Behavioural,FUNCTION,"End");
     
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_test_if_save.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_test_if_save.cpp	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Statistics_test_if_save.cpp	(revision 53)
@@ -26,6 +26,6 @@
 
     // Test if allors a new counters ...
-    if ( ((_nb_statistics == 0) && (_period_current >= _parameters_statistics._nb_cycle_before_begin)) ||
-	 ((_nb_statistics >  0) && (_period_current >= _parameters_statistics._period_save          )) )
+    if ( ((_nb_statistics == 0) && (_period_current >= _parameters_statistics->_nb_cycle_before_begin)) ||
+	 ((_nb_statistics >  0) && (_period_current >= _parameters_statistics->_period_save          )) )
       {
 	save<Counters,Parameters_Counters>(counters,parameters);
Index: /trunk/IPs/systemC/processor/Morpheo/Common/include/Test.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Common/include/Test.h	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Common/include/Test.h	(revision 53)
@@ -12,31 +12,51 @@
 static uint32_t num_test;
 
+void test_ko_error (void)
+{
+  string msg = "Test ko : error in test \""+toString(num_test)+"\"";
+  throw (ErrorMorpheo (msg));
+}
+  
 template <class T>
-void test_ko (T exp1, T exp2, char * file, uint32_t line)
+void test_ko (char * file, uint32_t line, T exp1, T exp2)
 {
-  string msg = ("<"+toString(num_test)+"> : Test KO\n" +
-		" * Localisation\n"                    +
-		"   - File : "+file+"\n"               +
-		"   - Line : "+toString(line)+"\n"     +
-		" * Expression is different\n"         +
-		"   - exp1 : "+toString(exp1)+"\n"     +
-		"   - exp2 : "+toString(exp2)+"\n");
-  
-  throw (ErrorMorpheo (msg));
+  cerr << "[" << num_test << "] : Test KO"
+       << "\tline " << line                           << endl
+       << " * Localisation"                           << endl
+       << "   - File : " << file                      << endl
+       << "   - Line : " << line                      << endl
+       << " * Expression is different"                << endl
+       << "   - exp1 : "+toString(exp1)               << endl
+       << "   - exp2 : "+toString(exp2)               << endl;
+
+  test_ko_error ();
 };
 
 void test_ko (char * file, uint32_t line)
 {
-  string msg = ("<"+toString(num_test)+"> : Test KO\n" +
-		" * Localisation\n"                    +
-		"   - File : "+file+"\n"               +
-		"   - Line : "+toString(line)+"\n");
+  cerr << "[" << num_test << "] : Test KO"
+       << "\tline " << line                           << endl
+       << " * Localisation"                           << endl
+       << "   - File : " << file                      << endl
+       << "   - Line : " << line                      << endl;
   
-  throw (ErrorMorpheo (msg));
+  test_ko_error ();
 };
 
 void test_ok ()
 {
-  cout << "{" << num_test << "} : Test OK" << endl;
+  cout << "[" << num_test << "] : Test OK"            << endl;
+
+  num_test ++;
+};
+
+void test_ok (char * file, uint32_t line)
+{
+  cout << "[" << num_test << "] : Test OK"
+       << "\tline " << line                           << endl
+//     << " * Localisation"                           << endl
+//     << "   - File : " << file                      << endl
+//     << "   - Line : " << line                      << endl
+    ;
 
   num_test ++;
@@ -44,15 +64,31 @@
 
 template <class T>
-void test(T exp1, T exp2, char * file, uint32_t line)
+void test_ok (char * file, uint32_t line, T exp)
+{
+  cout << "[" << num_test << "] : Test OK"
+       << "\tline " << line                           
+       << "\tvalue : " << toString(exp)               << endl
+//     << " * Localisation"                           << endl
+//     << "   - File : " << file                      << endl
+//     << "   - Line : " << line                      << endl
+//     << " * Expression"                             << endl
+//     << "   - exp  : "+toString(exp)                << endl
+    ;
+
+  num_test ++;
+}
+
+template <class T>
+void test(char * file, uint32_t line, T exp1, T exp2)
 {
   if (exp1 != exp2)
-    test_ko <T> (exp1,exp2,file,line);
+    test_ko <T> (file,line,exp1,exp2);
   else
-    test_ok     ();
+    test_ok <T> (file,line,exp1);
 };
 
-#define TEST(type,exp1,exp2)            do {test<type> (exp1,exp2,__FILE__,__LINE__);} while(0)
-#define TEST_STR(type,exp1,exp2,str...) do {fprintf(stdout,str); fprintf(stdout,"\n"); test<type> (exp1,exp2,__FILE__,__LINE__);} while(0)
-#define TEST_OK(str...)                 do {fprintf(stdout,str); fprintf(stdout,"\n"); test_ok();} while(0)
+#define TEST(type,exp1,exp2)            do {test<type> (__FILE__,__LINE__,exp1,exp2);} while(0)
+#define TEST_STR(type,exp1,exp2,str...) do {fprintf(stdout,str); fprintf(stdout,"\n"); test<type> (__FILE__,__LINE__,exp1,exp2);} while(0)
+#define TEST_OK(str...)                 do {fprintf(stdout,str); fprintf(stdout,"\n"); test_ok(__FILE__,__LINE__);} while(0)
 #define TEST_KO(str...)                 do {fprintf(stdout,str); fprintf(stdout,"\n"); test_ko(__FILE__,__LINE__);} while(0)
 
Index: /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile	(revision 52)
+++ /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile	(revision 53)
@@ -103,6 +103,6 @@
 			$(DVIPS) -o $@ $<;
 
-#$(DIR_DOCUMENTS)/*/*/*
-%.dvi 			: $(DIR_TEX)/%.tex $(DIR_LINK)/%/*
+#$(DIR_LINK)/%/*
+%.dvi 			: $(DIR_TEX)/%.tex 
 			@\
 			$(ECHO) "Génération du fichier $*.dvi";							\
