Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration.cfg	(revision 64)
+++ 	(revision )
@@ -1,18 +1,0 @@
-Register_unit
-1	1	*4	#_nb_ooo_engine            
-32	32	*4	#_size_general_data        
-2	2	*4	#_size_special_data        
-1	1	*4	#_nb_gpr_read              
-1	1	*4	#_nb_gpr_write             
-1	1	*4	#_nb_gpr_bank              
-1	1	*4	#_nb_gpr_port_read_by_bank 
-1	1	*4	#_nb_gpr_port_write_by_bank
-1	1	*4	#_nb_spr_read              
-1	1	*4	#_nb_spr_write             
-1	1	*4	#_nb_spr_bank              
-1	1	*4	#_nb_spr_port_read_by_bank 
-1	1	*4	#_nb_spr_port_write_by_bank
-32 	32 	*4	#_nb_general_register [0]     
-32 	32  	*4	#_nb_special_register [0]     
-1	1	*4	#_nb_inst_insert_rob  [0]     
-1	1	*4	#_nb_inst_retire_rob  [0]     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration.cfg.save
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration.cfg.save	(revision 64)
+++ 	(revision )
@@ -1,30 +1,0 @@
-Register_unit
-4	4	*2	#_nb_ooo_engine            
-32	32	*2	#_size_general_data        
-2	2	*2	#_size_special_data        
-8	8	*2	#_nb_gpr_read              
-4	4	*2	#_nb_gpr_write             
-2	2	*2	#_nb_gpr_bank              
-4	4	*2	#_nb_gpr_port_read_by_bank 
-2	2	*2	#_nb_gpr_port_write_by_bank
-8	8	*2	#_nb_spr_read              
-4	4	*2	#_nb_spr_write             
-2	2	*2	#_nb_spr_bank              
-4	4	*2	#_nb_spr_port_read_by_bank 
-2	2	*2	#_nb_spr_port_write_by_bank
-32	32	*2	#_nb_general_register [0]     
-64	64	*2	#_nb_general_register [1]     
-128	128	*2	#_nb_general_register [2]     
-256	256	*2	#_nb_general_register [3]     
-32	32 	*2	#_nb_special_register [0]     
-64	64 	*2	#_nb_special_register [1]     
-128	128	*2	#_nb_special_register [2]     
-256	256	*2	#_nb_special_register [3]     
-1	1	*2	#_nb_inst_insert_rob  [0]     
-2	2	*2	#_nb_inst_insert_rob  [1]     
-4	4	*2	#_nb_inst_insert_rob  [2]     
-8	8	*2	#_nb_inst_insert_rob  [3]     
-1	1	*2	#_nb_inst_retire_rob  [0]     
-2	2	*2	#_nb_inst_retire_rob  [1]     
-4	4	*2	#_nb_inst_retire_rob  [2]     
-8	8	*2	#_nb_inst_retire_rob  [3]     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration_min.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration_min.cfg	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration_min.cfg	(revision 65)
@@ -0,0 +1,18 @@
+Register_unit
+1	1	*4	#_nb_ooo_engine            
+32	32	*4	#_size_general_data        
+2	2	*4	#_size_special_data        
+1	1	*4	#_nb_gpr_read              
+1	1	*4	#_nb_gpr_write             
+1	1	*4	#_nb_gpr_bank              
+1	1	*4	#_nb_gpr_port_read_by_bank 
+1	1	*4	#_nb_gpr_port_write_by_bank
+1	1	*4	#_nb_spr_read              
+1	1	*4	#_nb_spr_write             
+1	1	*4	#_nb_spr_bank              
+1	1	*4	#_nb_spr_port_read_by_bank 
+1	1	*4	#_nb_spr_port_write_by_bank
+32 	32 	*4	#_nb_general_register [0]     
+32 	32  	*4	#_nb_special_register [0]     
+1	1	*4	#_nb_inst_insert_rob  [0]     
+1	1	*4	#_nb_inst_retire_rob  [0]     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration_mono_context.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration_mono_context.cfg	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration_mono_context.cfg	(revision 65)
@@ -0,0 +1,18 @@
+Register_unit
+1	1	*4	#_nb_ooo_engine            
+32	32	*4	#_size_general_data        
+32	32	*4	#_size_special_data        
+4	8	*4	#_nb_gpr_read              
+4	8	*4	#_nb_gpr_write             
+2	8	*4	#_nb_gpr_bank              
+1	4	*4	#_nb_gpr_port_read_by_bank 
+1	4	*4	#_nb_gpr_port_write_by_bank
+4	4	*4	#_nb_spr_read              
+4	4	*4	#_nb_spr_write             
+1	1	*4	#_nb_spr_bank              
+1	4	*4	#_nb_spr_port_read_by_bank 
+1	1	*4	#_nb_spr_port_write_by_bank
+32 	32 	*4	#_nb_general_register [0]     
+32 	32  	*4	#_nb_special_register [0]     
+1	4	*4	#_nb_inst_insert_rob  [0]     
+1	4	*4	#_nb_inst_retire_rob  [0]     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration_multi_context.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration_multi_context.cfg	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/configuration_multi_context.cfg	(revision 65)
@@ -0,0 +1,30 @@
+Register_unit
+4	4	*4	#_nb_ooo_engine            
+32	32	*4	#_size_general_data        
+32	32	*4	#_size_special_data        
+4	8	*4	#_nb_gpr_read              
+4	8	*4	#_nb_gpr_write             
+1	4	*4	#_nb_gpr_bank              
+1	4	*4	#_nb_gpr_port_read_by_bank 
+1	4	*4	#_nb_gpr_port_write_by_bank
+4	4	*4	#_nb_spr_read              
+4	4	*4	#_nb_spr_write             
+1	1	*4	#_nb_spr_bank              
+2	2	*4	#_nb_spr_port_read_by_bank 
+2	2	*4	#_nb_spr_port_write_by_bank
+64 	64 	*2	#_nb_general_register [0]     
+32 	32 	*2	#_nb_general_register [1]     
+32 	32 	*2	#_nb_general_register [2]     
+16 	16 	*2	#_nb_general_register [3]     
+8  	8    	*2	#_nb_special_register [0]     
+32 	32   	*2	#_nb_special_register [1]     
+64 	64   	*2	#_nb_special_register [2]     
+128	128  	*2	#_nb_special_register [3]     
+8	8	*4	#_nb_inst_insert_rob  [0]     
+4	4	*4	#_nb_inst_insert_rob  [1]     
+2	2	*4	#_nb_inst_insert_rob  [2]     
+1	1	*4	#_nb_inst_insert_rob  [3]     
+1	1	*4	#_nb_inst_retire_rob  [0]     
+2	2	*4	#_nb_inst_retire_rob  [1]     
+4	4	*4	#_nb_inst_retire_rob  [2]     
+8	8	*4	#_nb_inst_retire_rob  [3]     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/src/test.cpp	(revision 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest/src/test.cpp	(revision 65)
@@ -374,4 +374,8 @@
   LABEL("Initialisation");
 
+  in_NRESET->write(0);
+  SC_START(5);
+  in_NRESET->write(1);
+
   for (uint32_t i=0; i<_param->_nb_gpr_read ; i++)
     in_GPR_READ_VAL  [i]->write(0);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Parameters.cpp	(revision 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Parameters.cpp	(revision 65)
@@ -58,14 +58,21 @@
 
     _size_gpr_address = log2(nb_general_register [0]);
-    
+
     for (uint32_t i=1; i<nb_ooo_engine; i++)
-      if (log2(nb_general_register [i]) > _size_gpr_address)
-	_size_gpr_address = log2(nb_general_register [i]);
+      {
+	uint32_t new_size = log2(nb_general_register [i]);
+	if (new_size > _size_gpr_address)
+	  _size_gpr_address = new_size;
+      }
 
     _size_spr_address = log2(nb_special_register [0]);
-    
+
     for (uint32_t i=1; i<nb_ooo_engine; i++)
-      if (log2(nb_special_register [i]) > _size_spr_address)
-	_size_spr_address = log2(nb_special_register [i]);
+      {
+	uint32_t new_size = log2(nb_special_register [i]);
+	if (new_size > _size_spr_address)
+	  _size_spr_address = new_size;
+      }
+
 
     _param_gpr         = new morpheo::behavioural::generic::registerfile::Parameters * [_nb_ooo_engine];
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp	(revision 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp	(revision 65)
@@ -72,5 +72,5 @@
 	if (_param->_have_port_ooo_engine_id == true)
 	  in_GPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
-	in_GPR_READ_NUM_REG       [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg"       , log2(_param->_size_gpr_address));
+	in_GPR_READ_NUM_REG       [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg"       , _param->_size_gpr_address);
 	out_GPR_READ_DATA          [i]= interface->set_signal_out<Tgeneral_data_t   > ("data"          , _param->_size_general_data);
 	out_GPR_READ_DATA_VAL      [i]= interface->set_signal_out<Tcontrol_t        > ("data_val"      , 1);
@@ -99,5 +99,5 @@
 	if (_param->_have_port_ooo_engine_id == true)
 	  in_GPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
-	in_GPR_WRITE_NUM_REG       [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg"       , log2(_param->_size_gpr_address));
+	in_GPR_WRITE_NUM_REG       [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg"       , _param->_size_gpr_address);
 	in_GPR_WRITE_DATA          [i]= interface->set_signal_in <Tgeneral_data_t   > ("data"          , _param->_size_general_data);
       }
@@ -126,5 +126,5 @@
 	if (_param->_have_port_ooo_engine_id == true)
 	  in_SPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
-	in_SPR_READ_NUM_REG       [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg"       , log2(_param->_size_spr_address));
+	in_SPR_READ_NUM_REG       [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg"       , _param->_size_spr_address);
 	out_SPR_READ_DATA          [i]= interface->set_signal_out<Tspecial_data_t   > ("data"          , _param->_size_special_data);
 	out_SPR_READ_DATA_VAL      [i]= interface->set_signal_out<Tcontrol_t        > ("data_val"      , 1);
@@ -153,5 +153,5 @@
 	if (_param->_have_port_ooo_engine_id == true)
 	  in_SPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t        > ("ooo_engine_id" , log2(_param->_nb_ooo_engine));
-	in_SPR_WRITE_NUM_REG       [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg"       , log2(_param->_size_spr_address));
+	in_SPR_WRITE_NUM_REG       [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg"       , _param->_size_spr_address);
 	in_SPR_WRITE_DATA          [i]= interface->set_signal_in <Tspecial_data_t   > ("data"          , _param->_size_special_data);
       }
@@ -190,7 +190,7 @@
 	    out_INSERT_ROB_ACK        [i][j] = interface->set_signal_valack_out (ACK);
 	    in_INSERT_ROB_RD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_use"    , 1);
-	    in_INSERT_ROB_RD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_num_reg", log2(_param->_size_gpr_address));
+	    in_INSERT_ROB_RD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_num_reg", _param->_size_gpr_address);
 	    in_INSERT_ROB_RE_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_use"    , 1);
-	    in_INSERT_ROB_RE_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_num_reg", log2(_param->_size_spr_address));
+	    in_INSERT_ROB_RE_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_num_reg", _param->_size_spr_address);
 	     
 	  }
@@ -238,11 +238,11 @@
 	    out_RETIRE_ROB_ACK            [i][j] = interface->set_signal_valack_out (ACK);
 	    in_RETIRE_ROB_RD_OLD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_old_use"    , 1);
-	    in_RETIRE_ROB_RD_OLD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_old_num_reg", log2(_param->_size_gpr_address));
+	    in_RETIRE_ROB_RD_OLD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_old_num_reg", _param->_size_gpr_address);
 	    in_RETIRE_ROB_RE_OLD_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_old_use"    , 1);
-	    in_RETIRE_ROB_RE_OLD_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_old_num_reg", log2(_param->_size_spr_address));
+	    in_RETIRE_ROB_RE_OLD_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_old_num_reg", _param->_size_spr_address);
 	    in_RETIRE_ROB_RD_NEW_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("rd_new_use"    , 1);
-	    in_RETIRE_ROB_RD_NEW_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_new_num_reg", log2(_param->_size_gpr_address));
+	    in_RETIRE_ROB_RD_NEW_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_new_num_reg", _param->_size_gpr_address);
 	    in_RETIRE_ROB_RE_NEW_USE     [i][j] = interface->set_signal_in <Tcontrol_t        > ("re_new_use"    , 1);
-	    in_RETIRE_ROB_RE_NEW_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_new_num_reg", log2(_param->_size_spr_address));
+	    in_RETIRE_ROB_RE_NEW_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_new_num_reg", _param->_size_spr_address);
 	  }
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile.mkf
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile.mkf	(revision 64)
+++ 	(revision )
@@ -1,144 +1,0 @@
-#
-# Makefile generated by MKF configure script
-#
-
-all: RegisterFile_Multi_Banked_0.ngc RegisterFile_Multi_Banked_1.ngc RegisterFile_Multi_Banked_2.ngc RegisterFile_Multi_Banked_3.ngc RegisterFile_Multi_Banked_4.ngc RegisterFile_Multi_Banked_5.ngc
-
-RegisterFile_Multi_Banked_0.ngc: RegisterFile_Multi_Banked_0.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Multi_Banked_0 -ifn RegisterFile_Multi_Banked_0.prj -ofn RegisterFile_Multi_Banked_0.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Multi_Banked_0.prj: RegisterFile_Multi_Banked_0_bank_Pack.vhdl RegisterFile_Multi_Banked_0_bank.vhdl RegisterFile_Multi_Banked_0_Pack.vhdl RegisterFile_Multi_Banked_0_select_4_ports_Pack.vhdl RegisterFile_Multi_Banked_0_select_4_ports.vhdl RegisterFile_Multi_Banked_0.vhdl
-	for i in RegisterFile_Multi_Banked_0_bank_Pack.vhdl RegisterFile_Multi_Banked_0_bank.vhdl RegisterFile_Multi_Banked_0_Pack.vhdl RegisterFile_Multi_Banked_0_select_4_ports_Pack.vhdl RegisterFile_Multi_Banked_0_select_4_ports.vhdl RegisterFile_Multi_Banked_0.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Multi_Banked_0.prj
-
-RegisterFile_Multi_Banked_0_bank_Pack.vhdl:
-
-RegisterFile_Multi_Banked_0_bank.vhdl:
-
-RegisterFile_Multi_Banked_0_Pack.vhdl:
-
-RegisterFile_Multi_Banked_0_select_4_ports_Pack.vhdl:
-
-RegisterFile_Multi_Banked_0_select_4_ports.vhdl:
-
-RegisterFile_Multi_Banked_0.vhdl:
-
-RegisterFile_Multi_Banked_1.ngc: RegisterFile_Multi_Banked_1.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Multi_Banked_1 -ifn RegisterFile_Multi_Banked_1.prj -ofn RegisterFile_Multi_Banked_1.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Multi_Banked_1.prj: RegisterFile_Multi_Banked_1_bank_Pack.vhdl RegisterFile_Multi_Banked_1_bank.vhdl RegisterFile_Multi_Banked_1_Pack.vhdl RegisterFile_Multi_Banked_1_select_4_ports_Pack.vhdl RegisterFile_Multi_Banked_1_select_4_ports.vhdl RegisterFile_Multi_Banked_1.vhdl
-	for i in RegisterFile_Multi_Banked_1_bank_Pack.vhdl RegisterFile_Multi_Banked_1_bank.vhdl RegisterFile_Multi_Banked_1_Pack.vhdl RegisterFile_Multi_Banked_1_select_4_ports_Pack.vhdl RegisterFile_Multi_Banked_1_select_4_ports.vhdl RegisterFile_Multi_Banked_1.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Multi_Banked_1.prj
-
-RegisterFile_Multi_Banked_1_bank_Pack.vhdl:
-
-RegisterFile_Multi_Banked_1_bank.vhdl:
-
-RegisterFile_Multi_Banked_1_Pack.vhdl:
-
-RegisterFile_Multi_Banked_1_select_4_ports_Pack.vhdl:
-
-RegisterFile_Multi_Banked_1_select_4_ports.vhdl:
-
-RegisterFile_Multi_Banked_1.vhdl:
-
-RegisterFile_Multi_Banked_2.ngc: RegisterFile_Multi_Banked_2.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Multi_Banked_2 -ifn RegisterFile_Multi_Banked_2.prj -ofn RegisterFile_Multi_Banked_2.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Multi_Banked_2.prj: RegisterFile_Multi_Banked_2_bank_Pack.vhdl RegisterFile_Multi_Banked_2_bank.vhdl RegisterFile_Multi_Banked_2_Pack.vhdl RegisterFile_Multi_Banked_2_select_4_ports_Pack.vhdl RegisterFile_Multi_Banked_2_select_4_ports.vhdl RegisterFile_Multi_Banked_2.vhdl
-	for i in RegisterFile_Multi_Banked_2_bank_Pack.vhdl RegisterFile_Multi_Banked_2_bank.vhdl RegisterFile_Multi_Banked_2_Pack.vhdl RegisterFile_Multi_Banked_2_select_4_ports_Pack.vhdl RegisterFile_Multi_Banked_2_select_4_ports.vhdl RegisterFile_Multi_Banked_2.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Multi_Banked_2.prj
-
-RegisterFile_Multi_Banked_2_bank_Pack.vhdl:
-
-RegisterFile_Multi_Banked_2_bank.vhdl:
-
-RegisterFile_Multi_Banked_2_Pack.vhdl:
-
-RegisterFile_Multi_Banked_2_select_4_ports_Pack.vhdl:
-
-RegisterFile_Multi_Banked_2_select_4_ports.vhdl:
-
-RegisterFile_Multi_Banked_2.vhdl:
-
-RegisterFile_Multi_Banked_3.ngc: RegisterFile_Multi_Banked_3.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Multi_Banked_3 -ifn RegisterFile_Multi_Banked_3.prj -ofn RegisterFile_Multi_Banked_3.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Multi_Banked_3.prj: RegisterFile_Multi_Banked_3_bank_Pack.vhdl RegisterFile_Multi_Banked_3_bank.vhdl RegisterFile_Multi_Banked_3_Pack.vhdl RegisterFile_Multi_Banked_3_select_8_ports_Pack.vhdl RegisterFile_Multi_Banked_3_select_8_ports.vhdl RegisterFile_Multi_Banked_3.vhdl
-	for i in RegisterFile_Multi_Banked_3_bank_Pack.vhdl RegisterFile_Multi_Banked_3_bank.vhdl RegisterFile_Multi_Banked_3_Pack.vhdl RegisterFile_Multi_Banked_3_select_8_ports_Pack.vhdl RegisterFile_Multi_Banked_3_select_8_ports.vhdl RegisterFile_Multi_Banked_3.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Multi_Banked_3.prj
-
-RegisterFile_Multi_Banked_3_bank_Pack.vhdl:
-
-RegisterFile_Multi_Banked_3_bank.vhdl:
-
-RegisterFile_Multi_Banked_3_Pack.vhdl:
-
-RegisterFile_Multi_Banked_3_select_8_ports_Pack.vhdl:
-
-RegisterFile_Multi_Banked_3_select_8_ports.vhdl:
-
-RegisterFile_Multi_Banked_3.vhdl:
-
-RegisterFile_Multi_Banked_4.ngc: RegisterFile_Multi_Banked_4.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Multi_Banked_4 -ifn RegisterFile_Multi_Banked_4.prj -ofn RegisterFile_Multi_Banked_4.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Multi_Banked_4.prj: RegisterFile_Multi_Banked_4_bank_Pack.vhdl RegisterFile_Multi_Banked_4_bank.vhdl RegisterFile_Multi_Banked_4_Pack.vhdl RegisterFile_Multi_Banked_4_select_8_ports_Pack.vhdl RegisterFile_Multi_Banked_4_select_8_ports.vhdl RegisterFile_Multi_Banked_4.vhdl
-	for i in RegisterFile_Multi_Banked_4_bank_Pack.vhdl RegisterFile_Multi_Banked_4_bank.vhdl RegisterFile_Multi_Banked_4_Pack.vhdl RegisterFile_Multi_Banked_4_select_8_ports_Pack.vhdl RegisterFile_Multi_Banked_4_select_8_ports.vhdl RegisterFile_Multi_Banked_4.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Multi_Banked_4.prj
-
-RegisterFile_Multi_Banked_4_bank_Pack.vhdl:
-
-RegisterFile_Multi_Banked_4_bank.vhdl:
-
-RegisterFile_Multi_Banked_4_Pack.vhdl:
-
-RegisterFile_Multi_Banked_4_select_8_ports_Pack.vhdl:
-
-RegisterFile_Multi_Banked_4_select_8_ports.vhdl:
-
-RegisterFile_Multi_Banked_4.vhdl:
-
-RegisterFile_Multi_Banked_5.ngc: RegisterFile_Multi_Banked_5.prj
-	echo run -keep_hierarchy yes -iobuf no -top RegisterFile_Multi_Banked_5 -ifn RegisterFile_Multi_Banked_5.prj -ofn RegisterFile_Multi_Banked_5.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-RegisterFile_Multi_Banked_5.prj: RegisterFile_Multi_Banked_5_bank_Pack.vhdl RegisterFile_Multi_Banked_5_bank.vhdl RegisterFile_Multi_Banked_5_Pack.vhdl RegisterFile_Multi_Banked_5_select_8_ports_Pack.vhdl RegisterFile_Multi_Banked_5_select_8_ports.vhdl RegisterFile_Multi_Banked_5.vhdl
-	for i in RegisterFile_Multi_Banked_5_bank_Pack.vhdl RegisterFile_Multi_Banked_5_bank.vhdl RegisterFile_Multi_Banked_5_Pack.vhdl RegisterFile_Multi_Banked_5_select_8_ports_Pack.vhdl RegisterFile_Multi_Banked_5_select_8_ports.vhdl RegisterFile_Multi_Banked_5.vhdl ; do echo "vhdl work $$i" ; done > RegisterFile_Multi_Banked_5.prj
-
-RegisterFile_Multi_Banked_5_bank_Pack.vhdl:
-
-RegisterFile_Multi_Banked_5_bank.vhdl:
-
-RegisterFile_Multi_Banked_5_Pack.vhdl:
-
-RegisterFile_Multi_Banked_5_select_8_ports_Pack.vhdl:
-
-RegisterFile_Multi_Banked_5_select_8_ports.vhdl:
-
-RegisterFile_Multi_Banked_5.vhdl:
-
-clean:
-	rm -f RegisterFile_Multi_Banked_0.ngc
-	rm -f RegisterFile_Multi_Banked_0.lso
-	rm -f -r xst
-	rm -f RegisterFile_Multi_Banked_0.prj
-	rm -f RegisterFile_Multi_Banked_1.ngc
-	rm -f RegisterFile_Multi_Banked_1.lso
-	rm -f -r xst
-	rm -f RegisterFile_Multi_Banked_1.prj
-	rm -f RegisterFile_Multi_Banked_2.ngc
-	rm -f RegisterFile_Multi_Banked_2.lso
-	rm -f -r xst
-	rm -f RegisterFile_Multi_Banked_2.prj
-	rm -f RegisterFile_Multi_Banked_3.ngc
-	rm -f RegisterFile_Multi_Banked_3.lso
-	rm -f -r xst
-	rm -f RegisterFile_Multi_Banked_3.prj
-	rm -f RegisterFile_Multi_Banked_4.ngc
-	rm -f RegisterFile_Multi_Banked_4.lso
-	rm -f -r xst
-	rm -f RegisterFile_Multi_Banked_4.prj
-	rm -f RegisterFile_Multi_Banked_5.ngc
-	rm -f RegisterFile_Multi_Banked_5.lso
-	rm -f -r xst
-	rm -f RegisterFile_Multi_Banked_5.prj
-
-re: clean all
-
-install:
-
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/Makefile.mkf
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/Makefile.mkf	(revision 64)
+++ 	(revision )
@@ -1,180 +1,0 @@
-#
-# Makefile generated by MKF configure script
-#
-
-all: Select_Priority_Fixed_0.ngc Select_Priority_Fixed_10.ngc Select_Priority_Fixed_11.ngc Select_Priority_Fixed_1.ngc Select_Priority_Fixed_2.ngc Select_Priority_Fixed_3.ngc Select_Priority_Fixed_4.ngc Select_Priority_Fixed_5.ngc Select_Priority_Fixed_6.ngc Select_Priority_Fixed_7.ngc Select_Priority_Fixed_8.ngc Select_Priority_Fixed_9.ngc
-
-Select_Priority_Fixed_0.ngc: Select_Priority_Fixed_0.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_0 -ifn Select_Priority_Fixed_0.prj -ofn Select_Priority_Fixed_0.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_0.prj: Select_Priority_Fixed_0_Pack.vhdl Select_Priority_Fixed_0.vhdl
-	for i in Select_Priority_Fixed_0_Pack.vhdl Select_Priority_Fixed_0.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_0.prj
-
-Select_Priority_Fixed_0_Pack.vhdl:
-
-Select_Priority_Fixed_0.vhdl:
-
-Select_Priority_Fixed_10.ngc: Select_Priority_Fixed_10.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_10 -ifn Select_Priority_Fixed_10.prj -ofn Select_Priority_Fixed_10.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_10.prj: Select_Priority_Fixed_10_Pack.vhdl Select_Priority_Fixed_10.vhdl
-	for i in Select_Priority_Fixed_10_Pack.vhdl Select_Priority_Fixed_10.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_10.prj
-
-Select_Priority_Fixed_10_Pack.vhdl:
-
-Select_Priority_Fixed_10.vhdl:
-
-Select_Priority_Fixed_11.ngc: Select_Priority_Fixed_11.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_11 -ifn Select_Priority_Fixed_11.prj -ofn Select_Priority_Fixed_11.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_11.prj: Select_Priority_Fixed_11_Pack.vhdl Select_Priority_Fixed_11.vhdl
-	for i in Select_Priority_Fixed_11_Pack.vhdl Select_Priority_Fixed_11.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_11.prj
-
-Select_Priority_Fixed_11_Pack.vhdl:
-
-Select_Priority_Fixed_11.vhdl:
-
-Select_Priority_Fixed_1.ngc: Select_Priority_Fixed_1.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_1 -ifn Select_Priority_Fixed_1.prj -ofn Select_Priority_Fixed_1.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_1.prj: Select_Priority_Fixed_10_Pack.vhdl Select_Priority_Fixed_10.vhdl Select_Priority_Fixed_11_Pack.vhdl Select_Priority_Fixed_11.vhdl Select_Priority_Fixed_1_Pack.vhdl Select_Priority_Fixed_1.vhdl
-	for i in Select_Priority_Fixed_10_Pack.vhdl Select_Priority_Fixed_10.vhdl Select_Priority_Fixed_11_Pack.vhdl Select_Priority_Fixed_11.vhdl Select_Priority_Fixed_1_Pack.vhdl Select_Priority_Fixed_1.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_1.prj
-
-Select_Priority_Fixed_1_Pack.vhdl:
-
-Select_Priority_Fixed_1.vhdl:
-
-Select_Priority_Fixed_2.ngc: Select_Priority_Fixed_2.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_2 -ifn Select_Priority_Fixed_2.prj -ofn Select_Priority_Fixed_2.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_2.prj: Select_Priority_Fixed_2_Pack.vhdl Select_Priority_Fixed_2.vhdl
-	for i in Select_Priority_Fixed_2_Pack.vhdl Select_Priority_Fixed_2.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_2.prj
-
-Select_Priority_Fixed_2_Pack.vhdl:
-
-Select_Priority_Fixed_2.vhdl:
-
-Select_Priority_Fixed_3.ngc: Select_Priority_Fixed_3.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_3 -ifn Select_Priority_Fixed_3.prj -ofn Select_Priority_Fixed_3.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_3.prj: Select_Priority_Fixed_3_Pack.vhdl Select_Priority_Fixed_3.vhdl
-	for i in Select_Priority_Fixed_3_Pack.vhdl Select_Priority_Fixed_3.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_3.prj
-
-Select_Priority_Fixed_3_Pack.vhdl:
-
-Select_Priority_Fixed_3.vhdl:
-
-Select_Priority_Fixed_4.ngc: Select_Priority_Fixed_4.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_4 -ifn Select_Priority_Fixed_4.prj -ofn Select_Priority_Fixed_4.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_4.prj: Select_Priority_Fixed_4_Pack.vhdl Select_Priority_Fixed_4.vhdl
-	for i in Select_Priority_Fixed_4_Pack.vhdl Select_Priority_Fixed_4.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_4.prj
-
-Select_Priority_Fixed_4_Pack.vhdl:
-
-Select_Priority_Fixed_4.vhdl:
-
-Select_Priority_Fixed_5.ngc: Select_Priority_Fixed_5.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_5 -ifn Select_Priority_Fixed_5.prj -ofn Select_Priority_Fixed_5.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_5.prj: Select_Priority_Fixed_5_Pack.vhdl Select_Priority_Fixed_5.vhdl
-	for i in Select_Priority_Fixed_5_Pack.vhdl Select_Priority_Fixed_5.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_5.prj
-
-Select_Priority_Fixed_5_Pack.vhdl:
-
-Select_Priority_Fixed_5.vhdl:
-
-Select_Priority_Fixed_6.ngc: Select_Priority_Fixed_6.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_6 -ifn Select_Priority_Fixed_6.prj -ofn Select_Priority_Fixed_6.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_6.prj: Select_Priority_Fixed_6_Pack.vhdl Select_Priority_Fixed_6.vhdl
-	for i in Select_Priority_Fixed_6_Pack.vhdl Select_Priority_Fixed_6.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_6.prj
-
-Select_Priority_Fixed_6_Pack.vhdl:
-
-Select_Priority_Fixed_6.vhdl:
-
-Select_Priority_Fixed_7.ngc: Select_Priority_Fixed_7.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_7 -ifn Select_Priority_Fixed_7.prj -ofn Select_Priority_Fixed_7.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_7.prj: Select_Priority_Fixed_7_Pack.vhdl Select_Priority_Fixed_7.vhdl
-	for i in Select_Priority_Fixed_7_Pack.vhdl Select_Priority_Fixed_7.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_7.prj
-
-Select_Priority_Fixed_7_Pack.vhdl:
-
-Select_Priority_Fixed_7.vhdl:
-
-Select_Priority_Fixed_8.ngc: Select_Priority_Fixed_8.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_8 -ifn Select_Priority_Fixed_8.prj -ofn Select_Priority_Fixed_8.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_8.prj: Select_Priority_Fixed_8_Pack.vhdl Select_Priority_Fixed_8.vhdl
-	for i in Select_Priority_Fixed_8_Pack.vhdl Select_Priority_Fixed_8.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_8.prj
-
-Select_Priority_Fixed_8_Pack.vhdl:
-
-Select_Priority_Fixed_8.vhdl:
-
-Select_Priority_Fixed_9.ngc: Select_Priority_Fixed_9.prj
-	echo run -keep_hierarchy yes -iobuf no -top Select_Priority_Fixed_9 -ifn Select_Priority_Fixed_9.prj -ofn Select_Priority_Fixed_9.ngc -p xc5vlx330t-2ff1738 -ifmt mixed | xst
-
-Select_Priority_Fixed_9.prj: Select_Priority_Fixed_9_Pack.vhdl Select_Priority_Fixed_9.vhdl
-	for i in Select_Priority_Fixed_9_Pack.vhdl Select_Priority_Fixed_9.vhdl ; do echo "vhdl work $$i" ; done > Select_Priority_Fixed_9.prj
-
-Select_Priority_Fixed_9_Pack.vhdl:
-
-Select_Priority_Fixed_9.vhdl:
-
-clean:
-	rm -f Select_Priority_Fixed_0.ngc
-	rm -f Select_Priority_Fixed_0.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_0.prj
-	rm -f Select_Priority_Fixed_10.ngc
-	rm -f Select_Priority_Fixed_10.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_10.prj
-	rm -f Select_Priority_Fixed_11.ngc
-	rm -f Select_Priority_Fixed_11.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_11.prj
-	rm -f Select_Priority_Fixed_1.ngc
-	rm -f Select_Priority_Fixed_1.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_1.prj
-	rm -f Select_Priority_Fixed_2.ngc
-	rm -f Select_Priority_Fixed_2.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_2.prj
-	rm -f Select_Priority_Fixed_3.ngc
-	rm -f Select_Priority_Fixed_3.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_3.prj
-	rm -f Select_Priority_Fixed_4.ngc
-	rm -f Select_Priority_Fixed_4.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_4.prj
-	rm -f Select_Priority_Fixed_5.ngc
-	rm -f Select_Priority_Fixed_5.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_5.prj
-	rm -f Select_Priority_Fixed_6.ngc
-	rm -f Select_Priority_Fixed_6.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_6.prj
-	rm -f Select_Priority_Fixed_7.ngc
-	rm -f Select_Priority_Fixed_7.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_7.prj
-	rm -f Select_Priority_Fixed_8.ngc
-	rm -f Select_Priority_Fixed_8.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_8.prj
-	rm -f Select_Priority_Fixed_9.ngc
-	rm -f Select_Priority_Fixed_9.lso
-	rm -f -r xst
-	rm -f Select_Priority_Fixed_9.prj
-
-re: clean all
-
-install:
-
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h	(revision 65)
@@ -55,6 +55,6 @@
   private   : const string          _name          ;
   private   : const direction_t     _direction     ;
-  private   : const uint32_t        _size          ;
   private   : const presence_port_t _presence_port ;
+  private   :       uint32_t        _size          ;
 
   private   : Signal *              _connect_to_signal;   // the actual implementaion, this signal link with one signal (but if signal is an output, it can be connect with many signal ...)
@@ -81,4 +81,7 @@
   public    : string            get_name                (void);
   public    : uint32_t          get_size                (void);
+  public    : void              set_size                (uint32_t size);
+  public    : void              set_size_max            (uint32_t size);
+
   public    : Signal *          get_connect_to_signal   (void);
   public    : Signal *          get_connect_from_signal (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h	(revision 65)
@@ -18,4 +18,5 @@
 #include "Common/include/ToString.h"
 #include "Common/include/Debug.h"
+#include "Common/include/ErrorMorpheo.h"
 
 using namespace std;
@@ -127,5 +128,7 @@
   public    : void             set_body_component_port_map (list<string> & list_port_map      ,
 							    string         name_port          ,
-							    string         name_signal        );
+							    uint32_t       size_port          ,
+							    string         name_signal        ,
+							    uint32_t       size_signal        );
 
   private   : string           get_library_ieee            (uint32_t    depth                 );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp	(revision 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp	(revision 65)
@@ -88,5 +88,7 @@
 	  }
 
-	signal_dest  = signal_internal (entity_productor, signal_productor);
+	signal_dest= signal_internal (entity_productor, signal_productor);
+	signal_dest->set_size_max(signal_src->get_size());
+
 	dest_is_port = false;
       }
@@ -131,8 +133,13 @@
     if (signal_src->get_direction() != OUT)
       throw (ErrorMorpheo ("<Component::port_map> the direction of the signal '"+signal_src->get_name()+"' must be OUT."));
+
+    Signal * signal_dest;
+
+    signal_dest= signal_internal (entity_src, signal_src);
+    signal_dest->set_size_max(signal_src->get_size());
     
     try
       {
-	signal_src->link(signal_internal (entity_src, signal_src),
+	signal_src->link(signal_dest,
 			 false);
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_vhdl_instance.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_vhdl_instance.cpp	(revision 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_vhdl_instance.cpp	(revision 65)
@@ -140,5 +140,4 @@
 // 				else
 // 				  {
-// 				    cout << "Kane à dit : " << signal_dest->get_name() << endl;
 // 				    // Test if output
 // 				    if (signal_dest->get_direction() == OUT)
@@ -156,6 +155,8 @@
 // 				      }				    
 // 				  }
-				
-				  vhdl->set_body_component_port_map (list_port_map, name_src, name_dest);
+				  
+				  vhdl->set_body_component_port_map (list_port_map,
+								     name_src , signal_src ->get_size(),
+								     name_dest, signal_dest->get_size() );
 				}
 			      ++k;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 65)
@@ -17,18 +17,18 @@
     _name          (name         ),
     _direction     (direction    ),
-    _size          (size         ),
     _presence_port ((direction==INTERNAL)?PORT_VHDL_NO_TESTBENCH_NO:presence_port)
   {
     log_printf(FUNC,Behavioural,"Signal","Begin");
-    _is_allocate   = false;
-    _is_map_as_src = false;
-    _is_map_as_dest= false;
+    _size                = size;
+    _is_allocate         = false;
+    _is_map_as_src       = false;
+    _is_map_as_dest      = false;
     _connect_from_signal = NULL;
     _connect_to_signal   = NULL;
-    _sc_signal     = NULL;
-    _sc_signal_map = NULL;
-    _type_info     = UNKNOW;
+    _sc_signal           = NULL;
+    _sc_signal_map       = NULL;
+    _type_info           = UNKNOW;
 #ifdef VHDL_TESTBENCH
-    _list_value    = new list<string>;
+    _list_value          = new list<string>;
 #endif
     log_printf(FUNC,Behavioural,"Signal","End");
@@ -38,18 +38,18 @@
     _name          (signal._name         ),
     _direction     (signal._direction    ),
-    _size          (signal._size         ),
     _presence_port (signal._presence_port)
   {
     log_printf(FUNC,Behavioural,"Signal (copy)","Begin");
-    _is_allocate    = signal._is_allocate;
-    _is_map_as_src  = signal._is_map_as_src ;
-    _is_map_as_dest = signal._is_map_as_dest;
+    _size                = signal._size;
+    _is_allocate         = signal._is_allocate;
+    _is_map_as_src       = signal._is_map_as_src ;
+    _is_map_as_dest      = signal._is_map_as_dest;
     _connect_from_signal = signal._connect_from_signal;
     _connect_to_signal   = signal._connect_to_signal;
-    _sc_signal      = signal._sc_signal    ;
-    _sc_signal_map  = signal._sc_signal_map;
-    _type_info      = signal._type_info ;
+    _sc_signal           = signal._sc_signal    ;
+    _sc_signal_map       = signal._sc_signal_map;
+    _type_info           = signal._type_info ;
 #ifdef VHDL_TESTBENCH
-    _list_value     = signal._list_value;
+    _list_value          = signal._list_value;
 #endif
     log_printf(FUNC,Behavioural,"Signal (copy)","End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_from_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_from_signal.cpp	(revision 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_from_signal.cpp	(revision 65)
@@ -17,5 +17,11 @@
   {
     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     Signal * _return = _connect_from_signal;
+
+    while ((_return != NULL) and
+	   (_return->get_direction () == INTERNAL))
+      _return = _return->get_connect_from_signal();
+
     log_printf(FUNC,Behavioural,FUNCTION,"End");
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_to_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_to_signal.cpp	(revision 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_get_connect_to_signal.cpp	(revision 65)
@@ -17,5 +17,11 @@
   {
     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+
     Signal * _return = _connect_to_signal;
+
+    while ((_return != NULL) and
+	   (_return->get_direction () == INTERNAL))
+      _return = _return->get_connect_to_signal();
+
     log_printf(FUNC,Behavioural,FUNCTION,"End");
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_link.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_link.cpp	(revision 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_link.cpp	(revision 65)
@@ -29,6 +29,4 @@
       throw (ErrorMorpheo ("<Signal::mapping> Can't mapping signal \""+_name+"\" with \""+signal_dest->get_name()+"\", because the first signal is already mapped."));
 
-    //     log_printf(TRACE,Behavioural,FUNCTION, " * sc_signal (before) %.8x - %.8x", (uint32_t)(_sc_signal_map), (uint32_t)(signal_dest->_sc_signal_map));
-
     // List of all case
     //
@@ -55,4 +53,12 @@
     signal_dest->_is_map_as_dest      = true;
 
+    // an internal signal and port can't be a source. 
+    // also, to fill the connect_to_signal's field 
+    if ((signal_src->_direction == OUT) and 
+	(signal_dest->_direction == INTERNAL))
+      {
+	signal_dest->_connect_to_signal = signal_src;
+      }
+
     // vhdl_testbench : to read an output producte by a internal component
     // TODO : à vérifier !!!!!!!!!!!!
@@ -63,6 +69,4 @@
     connect (signal_dest);
 
-    //  log_printf(TRACE,Behavioural,FUNCTION, " * sc_signal (after ) %.8x - %.8x", (uint32_t)(_sc_signal_map), (uint32_t)(signal_dest->_sc_signal_map));
-    
     log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_set_size.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_set_size.cpp	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_set_size.cpp	(revision 65)
@@ -0,0 +1,34 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+#undef  FUNCTION
+#define FUNCTION "Signal::set_size"
+  void Signal::set_size (uint32_t size)
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    _size = size;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Signal::set_size_max"
+  void Signal::set_size_max (uint32_t size)
+  {
+    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    if (size > _size)
+      _size = size;
+    log_printf(FUNC,Behavioural,FUNCTION,"End");
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
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 64)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component_port_map.cpp	(revision 65)
@@ -20,8 +20,21 @@
   void Vhdl::set_body_component_port_map (list<string> & list_port_map      ,
 					  string         name_port          ,
-					  string         name_signal        )
+					  uint32_t       size_port          ,
+					  string         name_signal        ,
+					  uint32_t       size_signal        )
   {
     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
-    set_list(list_port_map, name_port + "\t=>" + name_signal);
+
+    if (size_port > size_signal)
+      throw (ErrorMorpheo ("<Vhdl::set_body_component_port_map> size of port '"+name_port+"' ("+toString(size_port)+") is greater than size of signal '"+name_signal+"' ("+toString(size_signal)+")."));
+
+    string str_size = "";
+
+    // test if size is different (possible if multi write
+    if (size_port != size_signal)
+      str_size = std_logic_range(size_port);
+    
+    set_list(list_port_map, name_port + "\t=>" + name_signal+str_size);
+      
     log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
