Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp	(revision 60)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp	(revision 61)
@@ -66,6 +66,4 @@
     PORT_WRITE(out_CONST_1 ,1);
 
-//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-
     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - transition");
 
@@ -73,5 +71,4 @@
     dont_initialize ();
     sensitive_pos << *(in_CLOCK);
-//#endif
 
 #ifdef SYSTEMCASS_SPECIFIC
@@ -83,8 +80,7 @@
     SC_METHOD (genMealy_gpr_read);
     dont_initialize ();
-    sensitive_neg << *(in_CLOCK);
+//     sensitive_neg << *(in_CLOCK);
     for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
       {
-	sensitive << *(in_GPR_READ_VAL           [j]);
 	if (_param->_have_port_ooo_engine_id == true)
 	  sensitive << *(in_GPR_READ_OOO_ENGINE_ID [j]);
@@ -96,5 +92,4 @@
 		    << *(in_GPR_READ_STATUS_DATA_VAL   [i][j]);
       }
-//#endif
 
 #ifdef SYSTEMCASS_SPECIFIC
@@ -114,14 +109,62 @@
 	    (*(out_GPR_READ_DATA                 [j])) (*( in_GPR_READ_REGISTERFILE_DATA [i][j]));
 	    (*(out_GPR_READ_DATA_VAL             [j])) (*( in_GPR_READ_STATUS_DATA_VAL   [i][j]));	
-
+	  }
+      }
+#endif    
+
+    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_read_status");
+
+    SC_METHOD (genMealy_gpr_read_status);
+    dont_initialize ();
+//     sensitive_neg << *(in_CLOCK);
+    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+      {
+	sensitive << *(in_GPR_READ_VAL           [j]);
+	if (_param->_have_port_ooo_engine_id == true)
+	  sensitive << *(in_GPR_READ_OOO_ENGINE_ID [j]);
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  sensitive << *(in_GPR_READ_REGISTERFILE_ACK  [i][j]);
+      }
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+      {
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_VAL                  [j]));
+	    (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_REGISTERFILE_ACK  [i][j]));
+	    if (_param->_have_port_ooo_engine_id == true)
+	    (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_OOO_ENGINE_ID        [j]));
+	  }
+      }
+#endif    
+
+    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_read_registerfile");
+
+    SC_METHOD (genMealy_gpr_read_registerfile);
+    dont_initialize ();
+//     sensitive_neg << *(in_CLOCK);
+    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+      {
+	sensitive << *(in_GPR_READ_VAL           [j]);
+	if (_param->_have_port_ooo_engine_id == true)
+	  sensitive << *(in_GPR_READ_OOO_ENGINE_ID [j]);
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  sensitive << *(in_GPR_READ_STATUS_ACK        [i][j]);
+      }
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+      {
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
 	    (*(out_GPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_GPR_READ_VAL                  [j]));
 	    (*(out_GPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_GPR_READ_STATUS_ACK        [i][j]));
 	    if (_param->_have_port_ooo_engine_id == true)
 	    (*(out_GPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_GPR_READ_OOO_ENGINE_ID        [j]));
-
-	    (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_VAL                  [j]));
-	    (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_REGISTERFILE_ACK  [i][j]));
-	    if (_param->_have_port_ooo_engine_id == true)
-	    (*(out_GPR_READ_STATUS_VAL        [i][j])) (*( in_GPR_READ_OOO_ENGINE_ID        [j]));
 	  }
       }
@@ -132,8 +175,7 @@
     SC_METHOD (genMealy_gpr_write);
     dont_initialize ();
-    sensitive_neg << *(in_CLOCK);
+//     sensitive_neg << *(in_CLOCK);
     for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
       {
-	sensitive << *(in_GPR_WRITE_VAL           [j]);
 	if (_param->_have_port_ooo_engine_id == true)
 	  sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [j]);
@@ -143,5 +185,4 @@
 		    << *(in_GPR_WRITE_STATUS_ACK        [i][j]);
       }
-//#endif
 
 #ifdef SYSTEMCASS_SPECIFIC
@@ -156,47 +197,65 @@
 	    (*(out_GPR_WRITE_ACK                  [j])) (*( in_GPR_WRITE_REGISTERFILE_ACK  [i][j]));
 	    (*(out_GPR_WRITE_ACK                  [j])) (*( in_GPR_WRITE_STATUS_ACK        [i][j]));
-
+	  }
+      }
+#endif    
+
+    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_write_status");
+
+    SC_METHOD (genMealy_gpr_write_status);
+    dont_initialize ();
+//     sensitive_neg << *(in_CLOCK);
+    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+      {
+	sensitive << *(in_GPR_WRITE_VAL           [j]);
+	if (_param->_have_port_ooo_engine_id == true)
+	  sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [j]);
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  sensitive << *(in_GPR_WRITE_REGISTERFILE_ACK  [i][j]);
+      }
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+      {
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_VAL                  [j]));
+	    (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_REGISTERFILE_ACK  [i][j]));
+	    if (_param->_have_port_ooo_engine_id == true)
+	    (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_OOO_ENGINE_ID        [j]));
+	  }
+      }
+#endif    
+
+    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_write_registerfile");
+
+    SC_METHOD (genMealy_gpr_write_registerfile);
+    dont_initialize ();
+//     sensitive_neg << *(in_CLOCK);
+    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+      {
+	sensitive << *(in_GPR_WRITE_VAL           [j]);
+	if (_param->_have_port_ooo_engine_id == true)
+	  sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [j]);
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  sensitive << *(in_GPR_WRITE_STATUS_ACK        [i][j]);
+      }
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+      {
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
 	    (*(out_GPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_GPR_WRITE_VAL                  [j]));
 	    (*(out_GPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_GPR_WRITE_STATUS_ACK        [i][j]));
 	    if (_param->_have_port_ooo_engine_id == true)
 	    (*(out_GPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_GPR_WRITE_OOO_ENGINE_ID        [j]));
-	    
-	    (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_VAL                  [j]));
-	    (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_REGISTERFILE_ACK  [i][j]));
-	    if (_param->_have_port_ooo_engine_id == true)
-	    (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_OOO_ENGINE_ID        [j]));
-	  }
-      }
-#endif    
-
-//     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_gpr_write_status");
-
-//     SC_METHOD (genMealy_gpr_write_status);
-//     dont_initialize ();
-//     sensitive_neg << *(in_CLOCK);
-//     for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
-//       {
-// 	sensitive << *(in_GPR_WRITE_VAL           [j]);
-// 	if (_param->_have_port_ooo_engine_id == true)
-// 	  sensitive << *(in_GPR_WRITE_OOO_ENGINE_ID [j]);
-
-// 	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-// 	  sensitive << *(in_GPR_WRITE_REGISTERFILE_ACK  [i][j]);
-//       }
-// //#endif
-
-// #ifdef SYSTEMCASS_SPECIFIC
-//     // List dependency information
-//     for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
-//       {
-// 	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-// 	  {
-// 	    (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_VAL                  [j]));
-// 	    (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_REGISTERFILE_ACK  [i][j]));
-// 	    if (_param->_have_port_ooo_engine_id == true)
-// 	    (*(out_GPR_WRITE_STATUS_VAL        [i][j])) (*( in_GPR_WRITE_OOO_ENGINE_ID        [j]));
-// 	  }
-//       }
-// #endif    
+	  }
+      }
+#endif    
 
     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_read");
@@ -204,8 +263,7 @@
     SC_METHOD (genMealy_spr_read);
     dont_initialize ();
-    sensitive_neg << *(in_CLOCK);
+//     sensitive_neg << *(in_CLOCK);
     for (uint32_t j=0; j<_param->_nb_spr_read; j++)
       {
-	sensitive << *(in_SPR_READ_VAL           [j]);
 	if (_param->_have_port_ooo_engine_id == true)
 	  sensitive << *(in_SPR_READ_OOO_ENGINE_ID [j]);
@@ -217,5 +275,4 @@
 		    << *(in_SPR_READ_STATUS_DATA_VAL   [i][j]);
       }
-//#endif
 
 #ifdef SYSTEMCASS_SPECIFIC
@@ -235,14 +292,62 @@
 	    (*(out_SPR_READ_DATA                 [j])) (*( in_SPR_READ_REGISTERFILE_DATA [i][j]));
 	    (*(out_SPR_READ_DATA_VAL             [j])) (*( in_SPR_READ_STATUS_DATA_VAL   [i][j]));	
-
+	  }
+      }
+#endif    
+
+    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_read_status");
+
+    SC_METHOD (genMealy_spr_read_status);
+    dont_initialize ();
+//     sensitive_neg << *(in_CLOCK);
+    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+      {
+	sensitive << *(in_SPR_READ_VAL           [j]);
+	if (_param->_have_port_ooo_engine_id == true)
+	  sensitive << *(in_SPR_READ_OOO_ENGINE_ID [j]);
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  sensitive << *(in_SPR_READ_REGISTERFILE_ACK  [i][j]);
+      }
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+      {
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_VAL                  [j]));
+	    (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_REGISTERFILE_ACK  [i][j]));
+	    if (_param->_have_port_ooo_engine_id == true)
+	    (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_OOO_ENGINE_ID        [j]));
+	  }
+      }
+#endif    
+
+    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_read_registerfile");
+
+    SC_METHOD (genMealy_spr_read_registerfile);
+    dont_initialize ();
+//     sensitive_neg << *(in_CLOCK);
+    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+      {
+	sensitive << *(in_SPR_READ_VAL           [j]);
+	if (_param->_have_port_ooo_engine_id == true)
+	  sensitive << *(in_SPR_READ_OOO_ENGINE_ID [j]);
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  sensitive << *(in_SPR_READ_STATUS_ACK        [i][j]);
+      }
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+      {
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
 	    (*(out_SPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_SPR_READ_VAL                  [j]));
 	    (*(out_SPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_SPR_READ_STATUS_ACK        [i][j]));
 	    if (_param->_have_port_ooo_engine_id == true)
 	    (*(out_SPR_READ_REGISTERFILE_VAL  [i][j])) (*( in_SPR_READ_OOO_ENGINE_ID        [j]));
-	    
-	    (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_VAL                  [j]));
-	    (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_REGISTERFILE_ACK  [i][j]));
-	    if (_param->_have_port_ooo_engine_id == true)
-	    (*(out_SPR_READ_STATUS_VAL        [i][j])) (*( in_SPR_READ_OOO_ENGINE_ID        [j]));
 	  }
       }
@@ -253,8 +358,7 @@
     SC_METHOD (genMealy_spr_write);
     dont_initialize ();
-    sensitive_neg << *(in_CLOCK);
+//     sensitive_neg << *(in_CLOCK);
     for (uint32_t j=0; j<_param->_nb_spr_write; j++)
       {
-	sensitive << *(in_SPR_WRITE_VAL           [j]);
 	if (_param->_have_port_ooo_engine_id == true)
 	  sensitive << *(in_SPR_WRITE_OOO_ENGINE_ID [j]);
@@ -264,5 +368,4 @@
 		    << *(in_SPR_WRITE_STATUS_ACK        [i][j]);
       }
-//#endif
 
 #ifdef SYSTEMCASS_SPECIFIC
@@ -277,14 +380,62 @@
 	    (*(out_SPR_WRITE_ACK                  [j])) (*( in_SPR_WRITE_REGISTERFILE_ACK  [i][j]));
 	    (*(out_SPR_WRITE_ACK                  [j])) (*( in_SPR_WRITE_STATUS_ACK        [i][j]));
-
+	  }
+      }
+#endif    
+
+    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_write_status");
+
+    SC_METHOD (genMealy_spr_write_status);
+    dont_initialize ();
+//     sensitive_neg << *(in_CLOCK);
+    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+      {
+	sensitive << *(in_SPR_WRITE_VAL           [j]);
+	if (_param->_have_port_ooo_engine_id == true)
+	  sensitive << *(in_SPR_WRITE_OOO_ENGINE_ID [j]);
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  sensitive << *(in_SPR_WRITE_REGISTERFILE_ACK  [i][j]);
+      }
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+      {
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_VAL                  [j]));
+	    (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_REGISTERFILE_ACK  [i][j]));
+	    if (_param->_have_port_ooo_engine_id == true)
+	    (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_OOO_ENGINE_ID        [j]));
+	  }
+      }
+#endif    
+
+    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_spr_write_registerfile");
+
+    SC_METHOD (genMealy_spr_write_registerfile);
+    dont_initialize ();
+//     sensitive_neg << *(in_CLOCK);
+    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+      {
+	sensitive << *(in_SPR_WRITE_VAL           [j]);
+	if (_param->_have_port_ooo_engine_id == true)
+	  sensitive << *(in_SPR_WRITE_OOO_ENGINE_ID [j]);
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  sensitive << *(in_SPR_WRITE_STATUS_ACK        [i][j]);
+      }
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+      {
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
 	    (*(out_SPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_SPR_WRITE_VAL                  [j]));
 	    (*(out_SPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_SPR_WRITE_STATUS_ACK        [i][j]));
 	    if (_param->_have_port_ooo_engine_id == true)
 	    (*(out_SPR_WRITE_REGISTERFILE_VAL  [i][j])) (*( in_SPR_WRITE_OOO_ENGINE_ID        [j]));
-	    
-	    (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_VAL                  [j]));
-	    (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_REGISTERFILE_ACK  [i][j]));
-	    if (_param->_have_port_ooo_engine_id == true)
-	    (*(out_SPR_WRITE_STATUS_VAL        [i][j])) (*( in_SPR_WRITE_OOO_ENGINE_ID        [j]));
 	  }
       }
@@ -295,5 +446,5 @@
     SC_METHOD (genMealy_insert);
     dont_initialize ();
-    sensitive_neg << *(in_CLOCK);
+//     sensitive_neg << *(in_CLOCK);
     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
       {
@@ -331,5 +482,5 @@
     SC_METHOD (genMealy_retire);
     dont_initialize ();
-    sensitive_neg << *(in_CLOCK);
+//     sensitive_neg << *(in_CLOCK);
     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
       {
@@ -416,2 +567,5 @@
 }; // end namespace behavioural
 }; // end namespace morpheo              
+
+
+
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read.cpp	(revision 60)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read.cpp	(revision 61)
@@ -28,5 +28,4 @@
       {
 	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_READ_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t val              = PORT_READ(in_GPR_READ_VAL [j]);
 	Tcontrol_t registerfile_ack = PORT_READ(in_GPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
 	Tcontrol_t status_ack       = PORT_READ(in_GPR_READ_STATUS_ACK       [ooo_engine_id][j]);
@@ -36,14 +35,4 @@
 	PORT_WRITE(out_GPR_READ_DATA     [j], PORT_READ(in_GPR_READ_REGISTERFILE_DATA[ooo_engine_id][j]));
 	PORT_WRITE(out_GPR_READ_DATA_VAL [j], PORT_READ(in_GPR_READ_STATUS_DATA_VAL  [ooo_engine_id][j]));
-    
-	Tcontrol_t registerfile_val = val and registerfile_ack;
-	Tcontrol_t status_val       = val and status_ack;
-
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-	  {
-	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
-	    PORT_WRITE(out_GPR_READ_REGISTERFILE_VAL [i][j], (id and status_val));
-	    PORT_WRITE(out_GPR_READ_STATUS_VAL       [i][j], (id and registerfile_val));
-	  }
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_registerfile.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_registerfile.cpp	(revision 61)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_registerfile.cpp	(revision 61)
@@ -0,0 +1,54 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace register_unit {
+namespace register_unit_glue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_unit_Glue::genMealy_gpr_read_registerfile"
+  void Register_unit_Glue::genMealy_gpr_read_registerfile (void)
+  {
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+
+    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+      {
+	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_READ_OOO_ENGINE_ID[j]):0;
+	Tcontrol_t val              = PORT_READ(in_GPR_READ_VAL [j]);
+	Tcontrol_t status_ack       = PORT_READ(in_GPR_READ_STATUS_ACK       [ooo_engine_id][j]);
+    
+	Tcontrol_t registerfile_val = val and status_ack;
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
+	    PORT_WRITE(out_GPR_READ_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	  }
+      }
+
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+  };
+
+}; // end namespace register_unit_glue
+}; // end namespace register_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_status.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_status.cpp	(revision 61)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_status.cpp	(revision 61)
@@ -0,0 +1,54 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace register_unit {
+namespace register_unit_glue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_unit_Glue::genMealy_gpr_read_status"
+  void Register_unit_Glue::genMealy_gpr_read_status (void)
+  {
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+
+    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+      {
+	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_READ_OOO_ENGINE_ID[j]):0;
+	Tcontrol_t val              = PORT_READ(in_GPR_READ_VAL [j]);
+	Tcontrol_t registerfile_ack = PORT_READ(in_GPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
+    
+	Tcontrol_t status_val       = val and registerfile_ack;
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
+	    PORT_WRITE(out_GPR_READ_STATUS_VAL       [i][j], (id and status_val));
+	  }
+      }
+
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+  };
+
+}; // end namespace register_unit_glue
+}; // end namespace register_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_registerfile.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_registerfile.cpp	(revision 61)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_registerfile.cpp	(revision 61)
@@ -0,0 +1,53 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace register_unit {
+namespace register_unit_glue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_unit_Glue::genMealy_gpr_write"
+  void Register_unit_Glue::genMealy_gpr_write_registerfile (void)
+  {
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+
+    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+      {
+	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_WRITE_OOO_ENGINE_ID[j]):0;
+	Tcontrol_t val              = PORT_READ(in_GPR_WRITE_VAL [j]);
+	Tcontrol_t status_ack       = PORT_READ(in_GPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
+	Tcontrol_t registerfile_val = val and status_ack;
+	
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
+	    PORT_WRITE(out_GPR_WRITE_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	  }
+      }
+
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+  };
+
+}; // end namespace register_unit_glue
+}; // end namespace register_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write.cpp	(revision 60)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write.cpp	(revision 61)
@@ -28,5 +28,4 @@
       {
 	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_WRITE_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t val              = PORT_READ(in_GPR_WRITE_VAL [j]);
 	Tcontrol_t registerfile_ack = PORT_READ(in_GPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
 	Tcontrol_t status_ack       = PORT_READ(in_GPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
@@ -34,14 +33,4 @@
 	// multiplexor
 	PORT_WRITE(out_GPR_WRITE_ACK [j],registerfile_ack and status_ack);
-
-	Tcontrol_t registerfile_val = val and registerfile_ack;
-	Tcontrol_t status_val       = val and status_ack;
-	
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-	  {
-	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
-	    PORT_WRITE(out_GPR_WRITE_REGISTERFILE_VAL [i][j], (id and status_val));
-	    PORT_WRITE(out_GPR_WRITE_STATUS_VAL       [i][j], (id and registerfile_val));
-	  }
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp	(revision 61)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp	(revision 61)
@@ -0,0 +1,53 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace register_unit {
+namespace register_unit_glue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_unit_Glue::genMealy_gpr_write_status"
+  void Register_unit_Glue::genMealy_gpr_write_status (void)
+  {
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+
+    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+      {
+	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_WRITE_OOO_ENGINE_ID[j]):0;
+	Tcontrol_t val              = PORT_READ(in_GPR_WRITE_VAL [j]);
+	Tcontrol_t registerfile_ack = PORT_READ(in_GPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
+	Tcontrol_t status_val       = val and registerfile_ack;
+	
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
+	    PORT_WRITE(out_GPR_WRITE_STATUS_VAL       [i][j], (id and status_val));
+	  }
+      }
+
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+  };
+
+}; // end namespace register_unit_glue
+}; // end namespace register_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp 
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp 	(revision 61)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp 	(revision 61)
@@ -0,0 +1,2 @@
+
+
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read.cpp	(revision 60)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read.cpp	(revision 61)
@@ -27,11 +27,5 @@
     for (uint32_t j=0; j<_param->_nb_spr_read; j++)
       {
-	Tcontext_t ooo_engine_id;
-	
-	if (_param->_have_port_ooo_engine_id == true)
-	  ooo_engine_id = PORT_READ(in_SPR_READ_OOO_ENGINE_ID        [j]);
-	else
-	  ooo_engine_id = 0;
-
+	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_READ_OOO_ENGINE_ID[j]):0;
 	Tcontrol_t registerfile_ack = PORT_READ(in_SPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
 	Tcontrol_t status_ack       = PORT_READ(in_SPR_READ_STATUS_ACK       [ooo_engine_id][j]);
@@ -41,23 +35,4 @@
 	PORT_WRITE(out_SPR_READ_DATA     [j], PORT_READ(in_SPR_READ_REGISTERFILE_DATA[ooo_engine_id][j]));
 	PORT_WRITE(out_SPR_READ_DATA_VAL [j], PORT_READ(in_SPR_READ_STATUS_DATA_VAL  [ooo_engine_id][j]));
-    
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-	  {
-	    Tcontrol_t registerfile_val;
-	    Tcontrol_t status_val;
-	    if (i == ooo_engine_id)
-	      {
-		registerfile_val = PORT_READ(in_SPR_READ_VAL [j]);
-		status_val       = PORT_READ(in_SPR_READ_VAL [j]);
-	      }
-	    else
-	      {
-		registerfile_val = 0;
-		status_val       = 0;
-	      }
-	    
-	    PORT_WRITE(out_SPR_READ_REGISTERFILE_VAL  [i][j], registerfile_val and status_ack      );
-	    PORT_WRITE(out_SPR_READ_STATUS_VAL        [i][j], status_val       and registerfile_ack);
-	  }
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_registerfile.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_registerfile.cpp	(revision 61)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_registerfile.cpp	(revision 61)
@@ -0,0 +1,54 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace register_unit {
+namespace register_unit_glue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_unit_Glue::genMealy_spr_read_registerfile"
+  void Register_unit_Glue::genMealy_spr_read_registerfile (void)
+  {
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+
+    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+      {
+	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_READ_OOO_ENGINE_ID[j]):0;
+	Tcontrol_t val              = PORT_READ(in_SPR_READ_VAL [j]);
+	Tcontrol_t status_ack       = PORT_READ(in_SPR_READ_STATUS_ACK       [ooo_engine_id][j]);
+    
+	Tcontrol_t registerfile_val = val and status_ack;
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
+	    PORT_WRITE(out_SPR_READ_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	  }
+      }
+
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+  };
+
+}; // end namespace register_unit_glue
+}; // end namespace register_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_status.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_status.cpp	(revision 61)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_status.cpp	(revision 61)
@@ -0,0 +1,54 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace register_unit {
+namespace register_unit_glue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_unit_Glue::genMealy_spr_read_status"
+  void Register_unit_Glue::genMealy_spr_read_status (void)
+  {
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+
+    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+      {
+	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_READ_OOO_ENGINE_ID[j]):0;
+	Tcontrol_t val              = PORT_READ(in_SPR_READ_VAL [j]);
+	Tcontrol_t registerfile_ack = PORT_READ(in_SPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
+    
+	Tcontrol_t status_val       = val and registerfile_ack;
+
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
+	    PORT_WRITE(out_SPR_READ_STATUS_VAL       [i][j], (id and status_val));
+	  }
+      }
+
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+  };
+
+}; // end namespace register_unit_glue
+}; // end namespace register_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_registerfile.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_registerfile.cpp	(revision 61)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_registerfile.cpp	(revision 61)
@@ -0,0 +1,53 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace register_unit {
+namespace register_unit_glue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_unit_Glue::genMealy_spr_write"
+  void Register_unit_Glue::genMealy_spr_write_registerfile (void)
+  {
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+
+    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+      {
+	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_WRITE_OOO_ENGINE_ID[j]):0;
+	Tcontrol_t val              = PORT_READ(in_SPR_WRITE_VAL [j]);
+	Tcontrol_t status_ack       = PORT_READ(in_SPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
+	Tcontrol_t registerfile_val = val and status_ack;
+	
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
+	    PORT_WRITE(out_SPR_WRITE_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	  }
+      }
+
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+  };
+
+}; // end namespace register_unit_glue
+}; // end namespace register_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write.cpp	(revision 60)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write.cpp	(revision 61)
@@ -27,34 +27,10 @@
     for (uint32_t j=0; j<_param->_nb_spr_write; j++)
       {
-	Tcontext_t ooo_engine_id;
-	if (_param->_have_port_ooo_engine_id == true)
-	  ooo_engine_id = PORT_READ(in_SPR_WRITE_OOO_ENGINE_ID        [j]);
-	else
-	  ooo_engine_id = 0;
-
+	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_WRITE_OOO_ENGINE_ID[j]):0;
 	Tcontrol_t registerfile_ack = PORT_READ(in_SPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
 	Tcontrol_t status_ack       = PORT_READ(in_SPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
 
 	// multiplexor
-	PORT_WRITE(out_SPR_WRITE_ACK      [j],registerfile_ack and status_ack);
-
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-	  {
-	    Tcontrol_t registerfile_val;
-	    Tcontrol_t status_val;
-	    if (i == ooo_engine_id)
-	      {
-		registerfile_val = PORT_READ(in_SPR_WRITE_VAL [j]);
-		status_val       = PORT_READ(in_SPR_WRITE_VAL [j]);
-	      }
-	    else
-	      {
-		registerfile_val = 0;
-		status_val       = 0;
-	      }
-	    
-	    PORT_WRITE(out_SPR_WRITE_REGISTERFILE_VAL  [i][j], registerfile_val and status_ack      );
-	    PORT_WRITE(out_SPR_WRITE_STATUS_VAL        [i][j], status_val       and registerfile_ack);
-	  }
+	PORT_WRITE(out_SPR_WRITE_ACK [j],registerfile_ack and status_ack);
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write_status.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write_status.cpp	(revision 61)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write_status.cpp	(revision 61)
@@ -0,0 +1,53 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace register_unit {
+namespace register_unit_glue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_unit_Glue::genMealy_spr_write_status"
+  void Register_unit_Glue::genMealy_spr_write_status (void)
+  {
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+
+    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+      {
+	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_WRITE_OOO_ENGINE_ID[j]):0;
+	Tcontrol_t val              = PORT_READ(in_SPR_WRITE_VAL [j]);
+	Tcontrol_t registerfile_ack = PORT_READ(in_SPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
+	Tcontrol_t status_val       = val and registerfile_ack;
+	
+	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	  {
+	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
+	    PORT_WRITE(out_SPR_WRITE_STATUS_VAL       [i][j], (id and status_val));
+	  }
+      }
+
+    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+  };
+
+}; // end namespace register_unit_glue
+}; // end namespace register_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
+//#endif
