Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_test_map.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_test_map.cpp	(revision 95)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_test_map.cpp	(revision 97)
@@ -48,16 +48,17 @@
 	 i != _list_component->end();
 	 ++i)
-      {
-	test_ok &= (*i)->_entity->test_map(depth+1,false,is_behavioural);
-	if (recursive)
-	  try 
-	    {
-	      test_ok &= (*i)->_component->test_map(depth+1,recursive);
-	    }
-	  catch (morpheo::ErrorMorpheo & error)
-	    {
-	      // no error propagation, only top level
-	    }
-      }
+      if (((*i)->_instance & INSTANCE_COMPONENT) != 0)
+        {
+          test_ok &= (*i)->_entity->test_map(depth+1,false,is_behavioural);
+          if (recursive)
+            try 
+              {
+                test_ok &= (*i)->_component->test_map(depth+1,recursive);
+              }
+            catch (morpheo::ErrorMorpheo & error)
+              {
+                // no error propagation, only top level
+              }
+        }
     
     log_printf(FUNC,Behavioural,FUNCTION,"End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/SPR_access_mode_exist.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/SPR_access_mode_exist.cpp	(revision 95)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/SPR_access_mode_exist.cpp	(revision 97)
@@ -1,3 +1,4 @@
 #include "Behavioural/include/SPR_access_mode.h"
+// #include "Common/include/Debug.h"
 
 namespace morpheo {
@@ -15,4 +16,9 @@
 
     spr_access_mode_t mode = _spr_generic [num_group][num_reg];
+//     log_printf(TRACE,true,"exist","  * exist");
+//     log_printf(TRACE,true,"exist","    * num_group              : %d",num_group);
+//     log_printf(TRACE,true,"exist","    * num_register           : %d",num_reg);
+//     log_printf(TRACE,true,"exist","    * supervisor_access_mode : %d",mode._supervisor_access_mode);
+//     log_printf(TRACE,true,"exist","    * user_access_mode       : %d",mode._user_access_mode      );
 
     return ((mode._supervisor_access_mode != SPR_ACCESS_MODE_NONE) or
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/SPR_access_mode_implement_group.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/SPR_access_mode_implement_group.cpp	(revision 95)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/SPR_access_mode_implement_group.cpp	(revision 97)
@@ -33,14 +33,14 @@
     	    _spr_generic [GROUP_SYSTEM_AND_CONTROL ][  20]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
     	    
-    	    const uint32_t nb_shadow = 1;
+    	    const uint32_t nb_shadow = 1; // max 16
     	    
-    	    for (uint32_t i=32; i<=32+nb_shadow; i++)
-    	    _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
-    	    for (uint32_t i=48; i<=48+nb_shadow; i++)
-    	    _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
-    	    for (uint32_t i=64; i<=64+nb_shadow; i++)
-    	    _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
-    	    for (uint32_t i=1024; i<=1024+32*nb_shadow; i++)
-    	    _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
+    	    for (uint32_t i=32; i<32+nb_shadow; i++)
+    	    _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
+    	    for (uint32_t i=48; i<48+nb_shadow; i++)
+    	    _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
+    	    for (uint32_t i=64; i<64+nb_shadow; i++)
+    	    _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
+//     	    for (uint32_t i=1024; i<1024+32*nb_shadow; i++)
+//     	    _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
 
 	    break;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component_port_map.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component_port_map.cpp	(revision 95)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component_port_map.cpp	(revision 97)
@@ -18,8 +18,8 @@
 #define FUNCTION "Vhdl::set_body_component_port_map"
   void Vhdl::set_body_component_port_map (std::list<std::string> & list_port_map      ,
-					  std::string         name_port          ,
-					  uint32_t       size_port          ,
-					  std::string         name_signal        ,
-					  uint32_t       size_signal        )
+					  std::string              name_port          ,
+					  uint32_t                 size_port          ,
+					  std::string              name_signal        ,
+					  uint32_t                 size_signal        )
   {
     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp	(revision 95)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp	(revision 97)
@@ -80,25 +80,22 @@
 #undef  FUNCTION
 #define FUNCTION "Vhdl::std_logic_range"
-  std::string std_logic_range (uint32_t size, uint32_t max, uint32_t min, bool force)
+  std::string std_logic_range (uint32_t size, uint32_t max, uint32_t min)
   {
     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     std::string type;
 
-    if (force)
       {
-        type = "("+toString(max)+" downto "+toString(min)+")";
-      }
-    else
-      {
-        if (max == min)
-          {
-            type = "("+toString(max)+")";
-          }
+        if (size < 2)
+          type = "";
         else
           {
-            if (size < 2)
-              type = "";
+            if (max == min)
+              {
+                type = "("+toString(max)+")";
+              }
             else
-              type = "("+toString(max)+" downto "+toString(min)+")";
+              {
+                type = "("+toString(max)+" downto "+toString(min)+")";
+              }
           }
       }
@@ -109,14 +106,9 @@
   };
 
-  std::string std_logic_range (uint32_t max, uint32_t min, bool force)
+  std::string std_logic_range (uint32_t max, uint32_t min)
   {
     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     std::string type;
 
-    if (force)
-      {
-        type = "("+toString(max)+" downto "+toString(min)+")";
-      }
-    else
       {
         if (max == min)
@@ -138,8 +130,37 @@
   };
 
-  std::string std_logic_range (uint32_t size, bool force)
+  std::string std_logic_range (uint32_t size)
   {
     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
-    std::string _return = std_logic_range(size-1,0,force);
+    std::string _return = std_logic_range(size,size-1,0);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return _return;
+  }
+
+#undef  FUNCTION
+#define FUNCTION "Vhdl::_std_logic_range"
+  std::string _std_logic_range (uint32_t size, uint32_t max, uint32_t min)
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    std::string type=_std_logic_range(max,min);
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return type;
+  };
+
+  std::string _std_logic_range (uint32_t max, uint32_t min)
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    std::string type = "("+toString(max)+" downto "+toString(min)+")";
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+
+    return type;
+  };
+
+  std::string _std_logic_range (uint32_t size)
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    std::string _return = _std_logic_range(size,size-1,0);
     log_printf(FUNC,Behavioural,FUNCTION,"End");
 
