Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp	(revision 108)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp	(revision 109)
@@ -56,4 +56,23 @@
     _table_execute_type      = table_execute_type  ;
     _table_execute_thread    = table_execute_thread;
+
+    log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"  * table_routing [nb_read_unit][nb_execute_unit][nb_execute_unit_port]");
+    for (uint32_t i=0; i<_nb_read_unit; ++i)
+      for (uint32_t j=0; j<_nb_execute_unit; ++j)
+        for (uint32_t k=0; k<_nb_execute_unit_port[j]; ++k)
+          if (_table_routing [i][j][k])
+            log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"    [%d][%d][%d] -> true",i,j,k);
+
+    log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"  * table_execute_type [nb_execute_unit][nb_type]");
+    for (uint32_t i=0; i<_nb_execute_unit; ++i)
+      for (uint32_t j=0; j<_nb_type; ++j)
+        if (_table_execute_type [i][j])
+          log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"    [%d][%d] -> true",i,j);
+
+    log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"  * table_execute_thread [nb_execute_unit][nb_thread]");
+    for (uint32_t i=0; i<_nb_execute_unit; ++i)
+      for (uint32_t j=0; j<_nb_thread; ++j)
+        if (_table_execute_thread [i][j])
+          log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"    [%d][%d] -> true",i,j);
 
     _max_nb_read_unit_port   = max<uint32_t>(_nb_read_unit_port, _nb_read_unit);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp	(revision 108)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp	(revision 109)
@@ -42,41 +42,4 @@
     // TYPE_MEMORY  |           |            |     X      |
     
-    bool type_valid     [_nb_type];
-    bool type_uniq      [_nb_type]; // one thread can have multiple destination for this type ?
-    bool type_optionnal [_nb_type]; // this type is optionnal ?
-    bool type_exclusive [_nb_type]; // a unit that implement this type must be implement an another type ?
-
-    for (Ttype_t i=0; i<_nb_type; i++)
-      {
-	type_valid     [i] = false;
-	type_uniq      [i] = false;
-	type_optionnal [i] = false;
-	type_exclusive [i] = false;
-      }
-
-    type_valid     [TYPE_ALU    ] = true;
-    type_valid     [TYPE_SHIFT  ] = true;
-    type_valid     [TYPE_MOVE   ] = true;
-    type_valid     [TYPE_TEST   ] = true;
-    type_valid     [TYPE_MUL    ] = true;
-    type_valid     [TYPE_DIV    ] = true;
-    type_valid     [TYPE_EXTEND ] = true;
-    type_valid     [TYPE_FIND   ] = true;
-    type_valid     [TYPE_SPECIAL] = true;
-    type_valid     [TYPE_CUSTOM ] = true;
-    type_valid     [TYPE_BRANCH ] = true;
-    type_valid     [TYPE_MEMORY ] = true;
-
-    type_uniq      [TYPE_SPECIAL] = true;
-    type_uniq      [TYPE_CUSTOM ] = true;
-    type_uniq      [TYPE_MEMORY ] = true;
-
-    type_optionnal [TYPE_DIV    ] = true;
-    type_optionnal [TYPE_EXTEND ] = true;
-    type_optionnal [TYPE_FIND   ] = true;
-    type_optionnal [TYPE_CUSTOM ] = true;
-
-    type_exclusive [TYPE_MEMORY ] = true;
-
     bool type_present [_nb_thread][_nb_type];
     for (uint32_t i=0; i<_nb_thread; i++)
@@ -94,5 +57,5 @@
                 
                 // Test uniq type
-                if (type_present [j][k] and type_uniq[k])
+                if (type_present [j][k] and is_type_uniq(k))
                   test.error(toString(_("The execute_unit '%d' can execute operation of type '%s' at the thread '%d'. But an another execute_unit can be execute the same type for the same thread. And the type must be single !.\n"),i,toString(k).c_str(),j));
                 
@@ -101,5 +64,5 @@
 
     for (Ttype_t j=0; j<_nb_type; j++)
-      if (not type_valid [j])
+      if (not is_type_valid(j))
 	for (uint32_t i=0; i<_nb_thread; i++)
 	  if (type_present [i][j])
@@ -107,5 +70,5 @@
 
     for (Ttype_t j=0; j<_nb_type; j++)
-      if (type_valid [j] and not type_optionnal[j])
+      if (is_type_valid(j) and not is_type_optionnal(j))
 	for (uint32_t i=0; i<_nb_thread; i++)
 	  if (not type_present [i][j])
@@ -115,5 +78,5 @@
     for (uint32_t i=0; i<_nb_execute_unit; i++)
       for (Ttype_t j=0; j<_nb_type; j++)
-	if (type_exclusive [j] and _table_execute_type[i][j])
+	if (is_type_exclusive(j) and _table_execute_type[i][j])
 	  for (Ttype_t k=0; k<_nb_type; k++)
 	    if ((j != k) and (_table_execute_type[i][k] == true))
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp	(revision 108)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp	(revision 109)
@@ -156,9 +156,15 @@
                 if (timing[x][j][k]._latence > 0)
                   {
-                    log_printf(TRACE,Execute_loop,FUNCTION,"Execute unit '%d' (functional unit '%d') can execute type '%s'.",i,x,toString(j).c_str());
+                    log_printf(TRACE,Execute_loop,FUNCTION,"  * Execute unit '%d' (functional unit '%d') can execute type '%s'.",i,x,toString(j).c_str());
                     _read_unit_to_execution_unit_table_execute_type [i][j] = true;
                     break; // find an operation
                   }
               }
+
+    for (uint32_t i=0; i<_nb_load_store_unit; ++i)
+      log_printf(TRACE,Execute_loop,FUNCTION,"  * Load_store_unit  [%d] - nb_inst : %d",i,_nb_inst_memory [i]);
+    for (uint32_t i=0; i<_nb_functionnal_unit; ++i)
+      log_printf(TRACE,Execute_loop,FUNCTION,"  * Functionnal_unit [%d] - nb_inst : %d",i,_nb_inst_functionnal_unit [i]);
+
 
     for (uint32_t i=0; i<_nb_execute_unit; i++)
@@ -170,4 +176,6 @@
         else
           _nb_execute_unit_port [i] = _nb_inst_functionnal_unit [x];
+
+        log_printf(TRACE,Execute_loop,FUNCTION,"  * Execute unit [%d] (%d) - nb_inst : %d",i,x,_nb_execute_unit_port [i]);
       }
 
@@ -245,4 +253,6 @@
 		  for (uint32_t k=0; k<_nb_write_unit; k++)
 		    {
+                      log_printf(TRACE,Execute_loop,FUNCTION,"  * Execution_unit_to_write_unit_table_routing [%d][%d][%d]",x,y,k);
+
 		      // Test if this execute_unit can send operation at this write_unit
 		      // Test if have not a previous link ! (a same read_unit can send operation à two execute_unit and each execute_unit send at the same write_unit)
