Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/include/Parameter_affectation.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/include/Parameter_affectation.h	(revision 108)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/include/Parameter_affectation.h	(revision 109)
@@ -25,5 +25,5 @@
     // Constant
   public   : const std::string _name ;
-  public   : const std::string _value;
+  public   :       std::string _value;
   public   :       bool        _use  ;
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Configuration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Configuration.cpp	(revision 108)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Configuration.cpp	(revision 109)
@@ -42,5 +42,6 @@
     debug_init (fromString<debug_verbosity_t>(_simulator->getParam("debug_level")),
                 fromString<double>           (_simulator->getParam("debug_cycle_start")),
-                fromString<double>           (_simulator->getParam("debug_cycle_stop")));
+                fromString<double>           (_simulator->getParam("debug_cycle_stop")),
+                fromString<double>           (_simulator->getParam("debug_cycle_idle")));
 
     log_init(fromString<bool>(_simulator->getParam("debug_have_log_file")),
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_fromInternalStructure.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_fromInternalStructure.cpp	(revision 108)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_fromInternalStructure.cpp	(revision 109)
@@ -220,22 +220,24 @@
             
             for (uint32_t k=0; k<MAX_OPERATION; ++k)
-              if (is_type_valid(j) and (j != TYPE_MEMORY))// A functional unit can't execute memory instruction
-                {
-                  _param->_timing [i][j][k]._latence = fromString<uint32_t> (getParam("latence",
-                                                                                      "functionnal_unit",toString(i).c_str(),
-                                                                                      "type"            ,toString(j).c_str(),
-                                                                                      "operation"       ,toString(k).c_str(),
-                                                                                      ""));
-                  _param->_timing [i][j][k]._delay   = fromString<uint32_t> (getParam("delay",
-                                                                                      "functionnal_unit",toString(i).c_str(),
-                                                                                      "type"            ,toString(j).c_str(),
-                                                                                      "operation"       ,toString(k).c_str(),
-                                                                                      ""));
-                }
-              else
-                {
-                  _param->_timing [i][j][k]._latence = 0;
-                  _param->_timing [i][j][k]._delay   = 0;
-                }
+              {
+                if (is_type_valid(j) and (j != TYPE_MEMORY))// A functional unit can't execute memory instruction
+                  {
+                    _param->_timing [i][j][k]._latence = fromString<uint32_t> (getParam("latence",
+                                                                                        "functionnal_unit",toString(i).c_str(),
+                                                                                        "type"            ,toString(j).c_str(),
+                                                                                        "operation"       ,toString(k).c_str(),
+                                                                                        ""));
+                    _param->_timing [i][j][k]._delay   = fromString<uint32_t> (getParam("delay",
+                                                                                        "functionnal_unit",toString(i).c_str(),
+                                                                                        "type"            ,toString(j).c_str(),
+                                                                                        "operation"       ,toString(k).c_str(),
+                                                                                        ""));
+                  }
+                else
+                  {
+                    _param->_timing [i][j][k]._latence = 0;
+                    _param->_timing [i][j][k]._delay   = 0;
+                  }
+              }
           }
       }
@@ -247,5 +249,5 @@
   //log_printf(INFO,Configuration,FUNCTION,_("ICACHE_PORT"));
 
-    _param->_nb_icache_port               = fromString<uint32_t         >(getParam("nb_icache_port"            , ""));
+    _param->_nb_icache_port             = fromString<uint32_t           >(getParam("nb_icache_port"            , ""));
     _param->_icache_port_priority       = fromString<Tpriority_t        >(getParam("icache_port_priority"      , ""));
     _param->_icache_port_load_balancing = fromString<Tload_balancing_t  >(getParam("icache_port_load_balancing", ""));
@@ -512,5 +514,5 @@
         getLink_2("link_execute_unit_with_functionnal_unit",toString(i).c_str(), "");
         _param->_link_execute_unit_with_functionnal_unit [i] = pair_dual(fromString<uint32_t>(dest[0]),
-                                                                        fromString<uint32_t>(dest[1]));
+                                                                         fromString<uint32_t>(dest[1]));
       }
 
@@ -519,5 +521,5 @@
         getLink_2("link_execute_unit_with_load_store_unit",toString(i).c_str(), "");
         _param->_link_execute_unit_with_load_store_unit [i] = pair_dual(fromString<uint32_t>(dest[0]),
-                                                                       fromString<uint32_t>(dest[1]));
+                                                                        fromString<uint32_t>(dest[1]));
 
         for (uint32_t j=0; j<_param->_nb_cache_port[i]; ++j)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_fromXMLLight.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_fromXMLLight.cpp	(revision 108)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_fromXMLLight.cpp	(revision 109)
@@ -26,5 +26,5 @@
 
     XMLLightVector<XML_t> vect = xml->getNodes(); 
-    
+
     for (uint32_t i=0; i<vect.size(); ++i)
       {
@@ -33,4 +33,6 @@
         std::string child_name = child->getName();
 
+//         log_printf(TRACE,Configuration,FUNCTION,"  * child_name : %s",child_name.c_str());
+
         //--------------------------------------------
         // Child : Parameter
@@ -44,4 +46,6 @@
             attribute_t  value_name = getAttribute(child,attributes,"name" );
             attribute_t  value      = getAttribute(child,attributes,"value");
+
+//             log_printf(TRACE,Configuration,FUNCTION,"    * parameter \"%s\" = %s",value_name.c_str(), value.c_str());
             
             testAttributesEmpty(child,attributes);
@@ -70,4 +74,6 @@
             attributes_t attributes = child->getAttributes();
             attribute_t  value_name = getAttribute(child,attributes,"name");
+
+//             log_printf(TRACE,Configuration,FUNCTION,"    * link  \"%s\"",value_name.c_str());
             
             // Test, must have src or dest (or twice)
@@ -80,4 +86,5 @@
             attribute_t  value_src  = (have_src )?getAttribute(child,attributes,"src" ):id;
             attribute_t  value_dest = (have_dest)?getAttribute(child,attributes,"dest"):id;
+
 
             testAttributesEmpty(child,attributes);
@@ -111,4 +118,6 @@
         if (child_name == "timing")
           {
+//             log_printf(TRACE,Configuration,FUNCTION,"    * timing");
+
             // Notation :
             //     <timing type="5" operation="8" latence="2"  delay="1" />
@@ -183,46 +192,27 @@
           }
         //--------------------------------------------
-        // Child : Other (node)
+        // Child : Other (component)
         //--------------------------------------------
         else
           {
+//             log_printf(TRACE,Configuration,FUNCTION,"    * component");
+
             testSingleton  (child,false);        
             
             attributes_t attributes = child->getAttributes();
-            attribute_t  value_id   = getAttribute(child,attributes,"id");
+            attribute_t  value_ids  = getAttribute(child,attributes,"id");
             attribute_t  value_type = child->getName();
-            
-            testAttributesEmpty(child,attributes);
-            
-            // Create a new component
+
+            testAttributesEmpty(child,attributes);
+
+            // Test if counter is an parameters
+            std::string name_counter = "nb_"+value_type;
+            
             {
-              Instance_component * param = new Instance_component(value_type, // type
-                                                                  value_id);
-              
-//            log_printf(TRACE,Configuration,FUNCTION,"%s.%s",value_type.c_str(),value_id.c_str());
-//            log_printf(TRACE,Configuration,FUNCTION,"  * %d",((*list_components)[value_type]).size());
-              
-              // Test if this id is previously used
-              if (((*list_components)[value_type]).find(value_id) != ((*list_components)[value_type]).end())
-                throw ERRORMORPHEO(FUNCTION,toString(_("A Component \"%s\" with id \"%s\" is previously declared.\n"),value_type.c_str(),value_id.c_str()));
-              
-              ((*list_components)[value_type])[value_id] = param;
-            }
-            
-            // Test if counter is an parameters
-            {
-              std::string name_counter = "nb_"+value_type;
-//            std::cout << name_counter << std::endl;
-              
               if (list_parameters->find(name_counter) == list_parameters->end())
                 {
-                  // Scearch all occurante of this type
-                  uint32_t nb_counter = xml->getNodes(value_type).size();
-//                std::cout << "  * " << nb_counter << std::endl;
-                  
                   // Insert in array
                   Parameter_affectation * param = new Parameter_affectation(name_counter, // type
-                                                                            toString(nb_counter));
-                  
+                                                                            "0");
                   // insert parameter
                   (*list_parameters)[name_counter] = param;
@@ -230,11 +220,45 @@
             }
             
-            // Recursive function
-            fromXMLLight (child,
-                          ((id=="")?value_id:(id+"."+value_id)), // construction of identificator
-                          ((*list_components)[value_type])[value_id]->_list_parameters,
-//                        ((*list_components)[value_type])[value_id]->_list_links,
-                          list_links,
-                          ((*list_components)[value_type])[value_id]->_list_components);
+            size_t index_begin = 0;
+            while (index_begin != std::string::npos)
+              {
+                size_t index_end = value_ids.find_first_of(",",index_begin+1);
+                
+                size_t      index_min = (index_begin==0)?index_begin:(index_begin+1);
+                size_t      index_max = index_end-index_min;
+                attribute_t value_id  = value_ids.substr(index_min, index_max);
+
+//                 log_printf(TRACE,Configuration,FUNCTION,"    * component \"%s\" - %s",value_type.c_str(), value_id.c_str());
+
+                index_begin = index_end;
+
+                // Create a new component
+                {
+                  Instance_component * param = new Instance_component(value_type, // type
+                                                                      value_id);
+              
+//                log_printf(TRACE,Configuration,FUNCTION,"%s.%s",value_type.c_str(),value_id.c_str());
+//                log_printf(TRACE,Configuration,FUNCTION,"  * %d",((*list_components)[value_type]).size());
+              
+                  // Test if this id is previously used
+                  if (((*list_components)[value_type]).find(value_id) != ((*list_components)[value_type]).end())
+                    throw ERRORMORPHEO(FUNCTION,toString(_("A Component \"%s\" with id \"%s\" is previously declared.\n"),value_type.c_str(),value_id.c_str()));
+                  
+                  ((*list_components)[value_type])[value_id] = param;
+                }
+
+                // Increase occurence counter
+                {
+                  (*list_parameters)[name_counter]->_value = toString(fromString<uint32_t>((*list_parameters)[name_counter]->_value)+1);
+                }
+                
+                // Recursive function
+                fromXMLLight (child,
+                              ((id=="")?value_id:(id+"."+value_id)), // construction of identificator
+                              ((*list_components)[value_type])[value_id]->_list_parameters,
+//                            ((*list_components)[value_type])[value_id]->_list_links,
+                              list_links,
+                              ((*list_components)[value_type])[value_id]->_list_components);
+              }
           }
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Parameter_affectation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Parameter_affectation.cpp	(revision 108)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Parameter_affectation.cpp	(revision 109)
@@ -17,10 +17,10 @@
   Parameter_affectation::Parameter_affectation  (std::string name   ,
                                                  std::string value  ):
-    _name        (name         ),
-    _value       (value        )
+    _name        (name         )
   {
     log_begin(Configuration,FUNCTION);
 
-    _use = false;
+    _value = value;
+    _use   = false;
 
     log_end(Configuration,FUNCTION);
