Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/src/main.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/src/main.cpp	(revision 76)
@@ -51,8 +51,13 @@
   const uint32_t nb_type             = atoi(argv[x++]);
 
-  execute_timing_t * timing = new execute_timing_t [MAX_OPERATION];
+  execute_timing_t ** timing = new execute_timing_t * [MAX_TYPE];
 
-  for (uint32_t i=0; i< MAX_OPERATION; i++)
-    timing[i]._delay = timing[i]._latence = 1;
+  for (uint32_t i=0; i< MAX_TYPE; i++)
+    {
+      timing [i]= new execute_timing_t [MAX_OPERATION];
+      
+      for (uint32_t j=0; j< MAX_OPERATION; j++)
+	timing[i][j]._delay = timing[i][j]._latence = 1;
+    }
 
   try 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/src/test.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/src/test.cpp	(revision 76)
@@ -280,99 +280,91 @@
   transaction_in.push_back(execute_transaction(_param,0,0,0, 23,OPERATION_ALU_L_XOR     ,TYPE_ALU,0,0xdeadbeef,0x0000ffff,0x00ff00ff,0              ,1,63,0x00ffff00,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
 							     			       
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 24,OPERATION_ALU_L_CMOV    ,TYPE_ALU,0,0x0       ,0xdeadbeef,0x12345678,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 25,OPERATION_ALU_L_CMOV    ,TYPE_ALU,0,0x0       ,0xdeadbeef,0x12345678,FLAG_F         ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-							     			       
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 26,OPERATION_ALU_L_MOVHI   ,TYPE_ALU,1,0xdeadbeef,0x0       ,0x0       ,FLAG_F         ,1,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 24,OPERATION_MOVE_L_CMOV    ,TYPE_MOVE,0,0x0       ,0xdeadbeef,0x12345678,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 25,OPERATION_MOVE_L_CMOV    ,TYPE_MOVE,0,0x0       ,0xdeadbeef,0x12345678,FLAG_F         ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 26,OPERATION_MOVE_L_MOVHI   ,TYPE_MOVE,1,0xdeadbeef,0x0       ,0x0       ,FLAG_F         ,1,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
 							     			       
 							     			       
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 27,OPERATION_ALU_L_TEST_F  ,TYPE_ALU,1,0xdeadbeef,0x0       ,0x0       ,0              ,0,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0,0x00000000));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 28,OPERATION_ALU_L_TEST_F  ,TYPE_ALU,1,0xdeadbeef,0x0       ,0x0       ,FLAG_F         ,0,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,1,0xdeadbeef));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 29,OPERATION_ALU_L_TEST_NF ,TYPE_ALU,1,0xdeadbeef,0x0       ,0x0       ,FLAG_F         ,0,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0,0x00000000));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 30,OPERATION_ALU_L_TEST_NF ,TYPE_ALU,1,0xdeadbeef,0x0       ,0x0       ,0              ,0,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,1,0xdeadbeef));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 27,OPERATION_BRANCH_L_TEST_F  ,TYPE_BRANCH,1,0xdeadbeef,0x0       ,0x0       ,0              ,0,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0,0x00000000));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 28,OPERATION_BRANCH_L_TEST_F  ,TYPE_BRANCH,1,0xdeadbeef,0x0       ,0x0       ,FLAG_F         ,0,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,1,0xdeadbeef));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 29,OPERATION_BRANCH_L_TEST_NF ,TYPE_BRANCH,1,0xdeadbeef,0x0       ,0x0       ,FLAG_F         ,0,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0,0x00000000));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 30,OPERATION_BRANCH_L_TEST_NF ,TYPE_BRANCH,1,0xdeadbeef,0x0       ,0x0       ,0              ,0,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,1,0xdeadbeef));
 							     			       
   							     			       
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 31,OPERATION_ALU_L_JALR    ,TYPE_ALU,0,0xdeadbeef,0x0       ,0x12345678,0              ,0,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,1,0x12345678)); // jr
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 32,OPERATION_ALU_L_JALR    ,TYPE_ALU,1,0xdeadbeef,0x0       ,0x12345678,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,1,0x12345678)); // jal
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 33,OPERATION_ALU_L_JALR    ,TYPE_ALU,1,0xdeadbeef,0x0       ,0x12345678,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,1,0x12345678)); // jalr
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 31,OPERATION_BRANCH_L_JALR    ,TYPE_BRANCH,0,0xdeadbeef,0x0       ,0x12345678,0              ,0,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,1,0x12345678)); // jr
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 32,OPERATION_BRANCH_L_JALR    ,TYPE_BRANCH,1,0xdeadbeef,0x0       ,0x12345678,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,1,0x12345678)); // jal
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 33,OPERATION_BRANCH_L_JALR    ,TYPE_BRANCH,1,0xdeadbeef,0x0       ,0x12345678,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,1,0x12345678)); // jalr
 							     
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 34,OPERATION_ALU_L_EXTEND_S,TYPE_ALU,1,8         ,0x12345678,0x0       ,0              ,1,63,0x00000078,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 35,OPERATION_ALU_L_EXTEND_S,TYPE_ALU,1,16        ,0x12345678,0x0       ,0              ,1,63,0x00005678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 36,OPERATION_ALU_L_EXTEND_S,TYPE_ALU,1,32        ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 34,OPERATION_ALU_L_EXTEND_S,TYPE_ALU,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0xffffffef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 35,OPERATION_ALU_L_EXTEND_S,TYPE_ALU,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0xffffbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 36,OPERATION_ALU_L_EXTEND_S,TYPE_ALU,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 34,OPERATION_EXTEND_L_EXTEND_S,TYPE_EXTEND,1,8         ,0x12345678,0x0       ,0              ,1,63,0x00000078,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 35,OPERATION_EXTEND_L_EXTEND_S,TYPE_EXTEND,1,16        ,0x12345678,0x0       ,0              ,1,63,0x00005678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 36,OPERATION_EXTEND_L_EXTEND_S,TYPE_EXTEND,1,32        ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 34,OPERATION_EXTEND_L_EXTEND_S,TYPE_EXTEND,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0xffffffef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 35,OPERATION_EXTEND_L_EXTEND_S,TYPE_EXTEND,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0xffffbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 36,OPERATION_EXTEND_L_EXTEND_S,TYPE_EXTEND,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
 							     
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 37,OPERATION_ALU_L_EXTEND_Z,TYPE_ALU,1,8         ,0x12345678,0x0       ,0              ,1,63,0x00000078,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 38,OPERATION_ALU_L_EXTEND_Z,TYPE_ALU,1,16        ,0x12345678,0x0       ,0              ,1,63,0x00005678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 39,OPERATION_ALU_L_EXTEND_Z,TYPE_ALU,1,32        ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 40,OPERATION_ALU_L_EXTEND_Z,TYPE_ALU,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0x000000ef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 41,OPERATION_ALU_L_EXTEND_Z,TYPE_ALU,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0x0000beef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 42,OPERATION_ALU_L_EXTEND_Z,TYPE_ALU,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 37,OPERATION_EXTEND_L_EXTEND_Z,TYPE_EXTEND,1,8         ,0x12345678,0x0       ,0              ,1,63,0x00000078,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 38,OPERATION_EXTEND_L_EXTEND_Z,TYPE_EXTEND,1,16        ,0x12345678,0x0       ,0              ,1,63,0x00005678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 39,OPERATION_EXTEND_L_EXTEND_Z,TYPE_EXTEND,1,32        ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 40,OPERATION_EXTEND_L_EXTEND_Z,TYPE_EXTEND,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0x000000ef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 41,OPERATION_EXTEND_L_EXTEND_Z,TYPE_EXTEND,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0x0000beef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 42,OPERATION_EXTEND_L_EXTEND_Z,TYPE_EXTEND,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
 							     
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 43,OPERATION_ALU_L_SLL     ,TYPE_ALU,1,0         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 44,OPERATION_ALU_L_SLL     ,TYPE_ALU,1,4         ,0xdeadbeef,0x0       ,0              ,1,63,0xeadbeef0,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 45,OPERATION_ALU_L_SLL     ,TYPE_ALU,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0xadbeef00,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 46,OPERATION_ALU_L_SLL     ,TYPE_ALU,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 47,OPERATION_ALU_L_SLL     ,TYPE_ALU,1,24        ,0xdeadbeef,0x0       ,0              ,1,63,0xef000000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 48,OPERATION_ALU_L_SLL     ,TYPE_ALU,1,31        ,0xdeadbeef,0x0       ,0              ,1,63,0x80000000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 49,OPERATION_ALU_L_SLL     ,TYPE_ALU,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 43,OPERATION_SHIFT_L_SLL     ,TYPE_SHIFT,1,0         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 44,OPERATION_SHIFT_L_SLL     ,TYPE_SHIFT,1,4         ,0xdeadbeef,0x0       ,0              ,1,63,0xeadbeef0,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 45,OPERATION_SHIFT_L_SLL     ,TYPE_SHIFT,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0xadbeef00,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 46,OPERATION_SHIFT_L_SLL     ,TYPE_SHIFT,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0xbeef0000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 47,OPERATION_SHIFT_L_SLL     ,TYPE_SHIFT,1,24        ,0xdeadbeef,0x0       ,0              ,1,63,0xef000000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 48,OPERATION_SHIFT_L_SLL     ,TYPE_SHIFT,1,31        ,0xdeadbeef,0x0       ,0              ,1,63,0x80000000,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 49,OPERATION_SHIFT_L_SLL     ,TYPE_SHIFT,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 50,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,0         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 51,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,4         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbee ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 52,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbe  ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 53,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0xdead    ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 54,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,24        ,0xdeadbeef,0x0       ,0              ,1,63,0xde      ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 55,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,31        ,0xdeadbeef,0x0       ,0              ,1,63,0x1       ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 56,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 57,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,0         ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 58,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,4         ,0x12345678,0x0       ,0              ,1,63,0x1234567 ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 59,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,8         ,0x12345678,0x0       ,0              ,1,63,0x123456  ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 60,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,16        ,0x12345678,0x0       ,0              ,1,63,0x1234    ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 61,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,24        ,0x12345678,0x0       ,0              ,1,63,0x12      ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 62,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,31        ,0x12345678,0x0       ,0              ,1,63,0x0       ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 63,OPERATION_SHIFT_L_SRL     ,TYPE_SHIFT,1,32        ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 64,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,0         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 65,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,4         ,0xdeadbeef,0x0       ,0              ,1,63,0xfdeadbee,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 66,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0xffdeadbe,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 67,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0xffffdead,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 68,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,24        ,0xdeadbeef,0x0       ,0              ,1,63,0xffffffde,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 69,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,31        ,0xdeadbeef,0x0       ,0              ,1,63,0xffffffff,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 70,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 71,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,0         ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 72,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,4         ,0x12345678,0x0       ,0              ,1,63,0x1234567 ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 73,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,8         ,0x12345678,0x0       ,0              ,1,63,0x123456  ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 74,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,16        ,0x12345678,0x0       ,0              ,1,63,0x1234    ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 75,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,24        ,0x12345678,0x0       ,0              ,1,63,0x12      ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 76,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,31        ,0x12345678,0x0       ,0              ,1,63,0x0       ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 77,OPERATION_SHIFT_L_SRA     ,TYPE_SHIFT,1,32        ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 78,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,0         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 79,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,4         ,0xdeadbeef,0x0       ,0              ,1,63,0xfdeadbee,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 80,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0xefdeadbe,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 81,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0xbeefdead,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 82,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,24        ,0xdeadbeef,0x0       ,0              ,1,63,0xadbeefde,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 83,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 84,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,0         ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 85,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,4         ,0x12345678,0x0       ,0              ,1,63,0x81234567,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 86,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,8         ,0x12345678,0x0       ,0              ,1,63,0x78123456,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 87,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,16        ,0x12345678,0x0       ,0              ,1,63,0x56781234,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 88,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,24        ,0x12345678,0x0       ,0              ,1,63,0x34567812,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 89,OPERATION_SHIFT_L_ROR     ,TYPE_SHIFT,1,32        ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
 							     
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 50,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,0         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 51,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,4         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbee ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 52,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbe  ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 53,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0xdead    ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 54,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,24        ,0xdeadbeef,0x0       ,0              ,1,63,0xde      ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 55,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,31        ,0xdeadbeef,0x0       ,0              ,1,63,0x1       ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 56,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-							     
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 57,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,0         ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 58,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,4         ,0x12345678,0x0       ,0              ,1,63,0x1234567 ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 59,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,8         ,0x12345678,0x0       ,0              ,1,63,0x123456  ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 60,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,16        ,0x12345678,0x0       ,0              ,1,63,0x1234    ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 61,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,24        ,0x12345678,0x0       ,0              ,1,63,0x12      ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 62,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,31        ,0x12345678,0x0       ,0              ,1,63,0x0       ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 63,OPERATION_ALU_L_SRL     ,TYPE_ALU,1,32        ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-							     
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 64,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,0         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 65,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,4         ,0xdeadbeef,0x0       ,0              ,1,63,0xfdeadbee,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 66,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0xffdeadbe,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 67,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0xffffdead,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 68,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,24        ,0xdeadbeef,0x0       ,0              ,1,63,0xffffffde,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 69,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,31        ,0xdeadbeef,0x0       ,0              ,1,63,0xffffffff,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 70,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-							     
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 71,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,0         ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 72,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,4         ,0x12345678,0x0       ,0              ,1,63,0x1234567 ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 73,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,8         ,0x12345678,0x0       ,0              ,1,63,0x123456  ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 74,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,16        ,0x12345678,0x0       ,0              ,1,63,0x1234    ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 75,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,24        ,0x12345678,0x0       ,0              ,1,63,0x12      ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 76,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,31        ,0x12345678,0x0       ,0              ,1,63,0x0       ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 77,OPERATION_ALU_L_SRA     ,TYPE_ALU,1,32        ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-							     
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 78,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,0         ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 79,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,4         ,0xdeadbeef,0x0       ,0              ,1,63,0xfdeadbee,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 80,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,8         ,0xdeadbeef,0x0       ,0              ,1,63,0xefdeadbe,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 81,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,16        ,0xdeadbeef,0x0       ,0              ,1,63,0xbeefdead,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 82,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,24        ,0xdeadbeef,0x0       ,0              ,1,63,0xadbeefde,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 83,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,32        ,0xdeadbeef,0x0       ,0              ,1,63,0xdeadbeef,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-							     
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 84,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,0         ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 85,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,4         ,0x12345678,0x0       ,0              ,1,63,0x81234567,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 86,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,8         ,0x12345678,0x0       ,0              ,1,63,0x78123456,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 87,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,16        ,0x12345678,0x0       ,0              ,1,63,0x56781234,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 88,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,24        ,0x12345678,0x0       ,0              ,1,63,0x34567812,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 89,OPERATION_ALU_L_ROR     ,TYPE_ALU,1,32        ,0x12345678,0x0       ,0              ,1,63,0x12345678,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-							     
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 90,OPERATION_ALU_L_FF1     ,TYPE_ALU,0,0         ,0x12345678,0x0       ,0              ,1,63,4         ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 91,OPERATION_ALU_L_FF1     ,TYPE_ALU,0,0         ,0x0       ,0x0       ,0              ,1,63,0          ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 92,OPERATION_ALU_L_FF1     ,TYPE_ALU,0,0         ,0x43210000,0x0       ,0              ,1,63,17         ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 93,OPERATION_ALU_L_FF1     ,TYPE_ALU,0,0         ,0x80000000,0x0       ,0              ,1,63,32         ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 94,OPERATION_ALU_L_FF1     ,TYPE_ALU,0,0         ,0x1       ,0x0       ,0              ,1,63,1          ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-							     
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 95,OPERATION_ALU_L_FL1     ,TYPE_ALU,0,0         ,0x12345678,0x0       ,0              ,1,63,29        ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 96,OPERATION_ALU_L_FL1     ,TYPE_ALU,0,0         ,0x0       ,0x0       ,0              ,1,63,0          ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 97,OPERATION_ALU_L_FL1     ,TYPE_ALU,0,0         ,0x00018765,0x0       ,0              ,1,63,17         ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 98,OPERATION_ALU_L_FL1     ,TYPE_ALU,0,0         ,0x1       ,0x0       ,0              ,1,63,1          ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0, 99,OPERATION_ALU_L_FL1     ,TYPE_ALU,0,0         ,0x80000000,0x0       ,0              ,1,63,32         ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 90,OPERATION_FIND_L_FF1     ,TYPE_FIND,0,0         ,0x12345678,0x0       ,0              ,1,63,4         ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 91,OPERATION_FIND_L_FF1     ,TYPE_FIND,0,0         ,0x0       ,0x0       ,0              ,1,63,0          ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 92,OPERATION_FIND_L_FF1     ,TYPE_FIND,0,0         ,0x43210000,0x0       ,0              ,1,63,17         ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 93,OPERATION_FIND_L_FF1     ,TYPE_FIND,0,0         ,0x80000000,0x0       ,0              ,1,63,32         ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 94,OPERATION_FIND_L_FF1     ,TYPE_FIND,0,0         ,0x1       ,0x0       ,0              ,1,63,1          ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 95,OPERATION_FIND_L_FL1     ,TYPE_FIND,0,0         ,0x12345678,0x0       ,0              ,1,63,29        ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 96,OPERATION_FIND_L_FL1     ,TYPE_FIND,0,0         ,0x0       ,0x0       ,0              ,1,63,0          ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 97,OPERATION_FIND_L_FL1     ,TYPE_FIND,0,0         ,0x00018765,0x0       ,0              ,1,63,17         ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 98,OPERATION_FIND_L_FL1     ,TYPE_FIND,0,0         ,0x1       ,0x0       ,0              ,1,63,1          ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0, 99,OPERATION_FIND_L_FL1     ,TYPE_FIND,0,0         ,0x80000000,0x0       ,0              ,1,63,32         ,0,15,FLAG_CY        ,EXCEPTION_NONE     ,0));
 
 //   transaction_in.push_back(execute_transaction(_param,0,0,0,100,OPERATION_ALU_L_SUB     ,TYPE_ALU,0,0         ,0x12344321,0x1       ,0              ,1,63,0x12344320,1,15,0              ,EXCEPTION_NONE     ,0));
@@ -384,218 +376,208 @@
 //   transaction_in.push_back(execute_transaction(_param,0,0,0,106,OPERATION_ALU_L_SUB     ,TYPE_ALU,0,0         ,0x00000001,0x7fffffff,FLAG_CY|FLAG_OV,1,1 ,0x80000000,1,0 ,        FLAG_OV,EXCEPTION_ALU_RANGE,0));
 
-  transaction_in.push_back(execute_transaction(_param,0,0,0,120,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,121,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,122,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,123,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,124,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,125,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,126,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,127,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,128,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,129,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,130,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,131,OPERATION_ALU_L_SFEQ    ,TYPE_ALU,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
-
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,140,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,141,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,142,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,143,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,144,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,145,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,146,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,147,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,148,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,149,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,150,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,151,OPERATION_ALU_L_SFNE    ,TYPE_ALU,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,150,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,151,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,152,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,153,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,154,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,155,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,156,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,157,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,158,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,159,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,160,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,161,OPERATION_ALU_L_SFGEU   ,TYPE_ALU,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,170,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,171,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,172,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,173,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,174,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,175,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,176,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,177,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,178,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,179,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,180,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,181,OPERATION_ALU_L_SFGTU   ,TYPE_ALU,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,190,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,191,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,192,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,193,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,194,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,195,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,196,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,197,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,198,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,199,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,200,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,201,OPERATION_ALU_L_SFLEU   ,TYPE_ALU,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,210,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,211,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,212,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,213,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,214,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,215,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,216,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,217,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,218,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,219,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,220,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,221,OPERATION_ALU_L_SFLTU   ,TYPE_ALU,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,230,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,231,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,232,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,233,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,234,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,235,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,236,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,237,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,238,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,239,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,240,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,241,OPERATION_ALU_L_SFGES   ,TYPE_ALU,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,250,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,251,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,252,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,253,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,254,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,255,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,256,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,257,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,258,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,259,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,260,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,261,OPERATION_ALU_L_SFGTS   ,TYPE_ALU,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,270,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,271,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,272,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,273,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,274,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,275,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,276,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,277,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,278,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,279,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,280,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,281,OPERATION_ALU_L_SFLES   ,TYPE_ALU,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,290,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,291,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,292,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  +
-  transaction_in.push_back(execute_transaction(_param,0,0,0,293,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,294,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,295,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  -
-  transaction_in.push_back(execute_transaction(_param,0,0,0,296,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,297,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,298,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,299,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,300,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
-  transaction_in.push_back(execute_transaction(_param,0,0,0,301,OPERATION_ALU_L_SFLTS   ,TYPE_ALU,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,400,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_ICACHE<<11,   3,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_NOT_COMPLETE,0,(GROUP_ICACHE<<11)|   3));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,401,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_ICACHE<<11,   5,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_NOT_COMPLETE,0,(GROUP_ICACHE<<11)|   5));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,402,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   0,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_INVALID     ,0,(GROUP_MAC   <<11)|   0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,403,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   1,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,404,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   0,0x12345678,0              ,1,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_INVALID     ,0,(GROUP_MAC   <<11)|   0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,405,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   1,0x12345678,0              ,1,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,120,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,121,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,122,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,123,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,124,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,125,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,126,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,127,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,128,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,129,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,130,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,131,OPERATION_TEST_L_SFEQ    ,TYPE_TEST,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,140,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,141,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,142,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,143,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,144,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,145,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,146,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,147,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,148,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,149,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,150,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,151,OPERATION_TEST_L_SFNE    ,TYPE_TEST,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,150,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,151,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,152,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,153,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,154,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,155,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,156,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,157,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,158,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,159,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,160,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,161,OPERATION_TEST_L_SFGEU   ,TYPE_TEST,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,170,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,171,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,172,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,173,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,174,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,175,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,176,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,177,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,178,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,179,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,180,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,181,OPERATION_TEST_L_SFGTU   ,TYPE_TEST,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,190,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,191,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,192,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,193,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,194,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,195,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,196,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,197,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,198,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,199,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,200,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,201,OPERATION_TEST_L_SFLEU   ,TYPE_TEST,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,210,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,211,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,212,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,213,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,214,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,215,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,216,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,217,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,218,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,219,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,220,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,221,OPERATION_TEST_L_SFLTU   ,TYPE_TEST,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,230,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,231,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,232,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,233,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,234,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,235,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,236,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,237,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,238,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,239,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,240,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,241,OPERATION_TEST_L_SFGES   ,TYPE_TEST,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,250,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,251,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,252,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,253,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,254,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,255,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,256,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,257,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,258,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,259,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,260,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,261,OPERATION_TEST_L_SFGTS   ,TYPE_TEST,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,270,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + == +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,271,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,272,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,273,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,274,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,275,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,276,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,277,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,278,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,279,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,280,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,281,OPERATION_TEST_L_SFLES   ,TYPE_TEST,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,290,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0xdead    ,0xdead    ,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,291,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0x25071959,0x21071981,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,292,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0x21071981,0x25071959,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // + <  +
+  transaction_in.push_back(execute_transaction(_param,0,0,0,293,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - == -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,294,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0xdeadbabe,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // - >  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,295,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0xdeadbeef,0xdeadbabe,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  -
+  transaction_in.push_back(execute_transaction(_param,0,0,0,296,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0xdeadbeef,0x21524111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - == + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,297,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0xdeadbeef,0x11111111,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - >  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,298,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0xdeadbeef,0x33333333,0              ,0,63,0x0       ,1,15,FLAG_F         ,EXCEPTION_NONE     ,0)); // - <  + (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,299,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0x21524111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + == - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,300,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0x33333333,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + >  - (in unsigned)
+  transaction_in.push_back(execute_transaction(_param,0,0,0,301,OPERATION_TEST_L_SFLTS   ,TYPE_TEST,0,0         ,0x11111111,0xdeadbeef,0              ,0,63,0x0       ,1,15,0              ,EXCEPTION_NONE     ,0)); // + <  - (in unsigned)
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,400,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_ICACHE<<11,   3,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_NOT_COMPLETE,0,(GROUP_ICACHE<<11)|   3));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,401,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_ICACHE<<11,   5,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_NOT_COMPLETE,0,(GROUP_ICACHE<<11)|   5));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,402,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   0,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_INVALID     ,0,(GROUP_MAC   <<11)|   0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,403,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   1,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,404,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   0,0x12345678,0              ,1,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_INVALID     ,0,(GROUP_MAC   <<11)|   0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,405,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   1,0x12345678,0              ,1,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
 
   if (_param->_nb_ooo_engine > 1)
     {
-  transaction_in.push_back(execute_transaction(_param,0,0,1,406,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   1,0x12345678,0              ,0,63,0x12345678,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,407,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
-  transaction_in.push_back(execute_transaction(_param,0,0,1,408,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0x12345678,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
+  transaction_in.push_back(execute_transaction(_param,0,0,1,406,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   1,0x12345678,0              ,0,63,0x12345678,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,407,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
+  transaction_in.push_back(execute_transaction(_param,0,0,1,408,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0x12345678,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
     }
   // TEST MAC Unit
-  transaction_in.push_back(execute_transaction(_param,0,0,0,409,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   1,0xbebebeef,0              ,0,63,0xbebebeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,410,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   2,0x21071981,0              ,0,63,0x21071981,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,411,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0xbebebeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,412,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   2,0x0       ,0              ,1,63,0x21071981,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,413,OPERATION_ALU_L_MACRC   ,TYPE_ALU,0,0x0       , 0x0      ,0x0       ,0              ,1,63,0xbebebeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,414,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,415,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   2,0x0       ,0              ,1,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,416,OPERATION_ALU_L_MACRC   ,TYPE_ALU,0,0x0       , 0x0      ,0x0       ,0              ,1,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
-
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,417,OPERATION_ALU_L_MAC     ,TYPE_ALU,0,0x0       ,0x22071981,0x1234567 ,0              ,0,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,418,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0x985e07e7,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,419,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   2,0x0       ,0              ,1,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,420,OPERATION_ALU_L_MAC     ,TYPE_ALU,1,0x22071981,0x1234567 ,0x0       ,0              ,0,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,421,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0x30bc0fce,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,422,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   2,0x0       ,0              ,1,63,0x1       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,423,OPERATION_ALU_L_MSB     ,TYPE_ALU,1,0xdeadbeef,0x1945    ,0x0       ,0              ,0,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,409,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   1,0xbebebeef,0              ,0,63,0xbebebeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,410,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   2,0x21071981,0              ,0,63,0x21071981,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,411,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0xbebebeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,412,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   2,0x0       ,0              ,1,63,0x21071981,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,413,OPERATION_SPECIAL_L_MACRC   ,TYPE_SPECIAL,0,0x0       , 0x0      ,0x0       ,0              ,1,63,0xbebebeef,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,414,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,415,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   2,0x0       ,0              ,1,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,416,OPERATION_SPECIAL_L_MACRC   ,TYPE_SPECIAL,0,0x0       , 0x0      ,0x0       ,0              ,1,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
+
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,417,OPERATION_SPECIAL_L_MAC     ,TYPE_SPECIAL,0,0x0       ,0x22071981,0x1234567 ,0              ,0,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,418,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0x985e07e7,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,419,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   2,0x0       ,0              ,1,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,420,OPERATION_SPECIAL_L_MAC     ,TYPE_SPECIAL,1,0x22071981,0x1234567 ,0x0       ,0              ,0,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,421,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0x30bc0fce,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,422,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   2,0x0       ,0              ,1,63,0x1       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,423,OPERATION_SPECIAL_L_MSB     ,TYPE_SPECIAL,1,0xdeadbeef,0x1945    ,0x0       ,0              ,0,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
   
-  transaction_in.push_back(execute_transaction(_param,0,0,0,424,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0x34424263,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,425,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_MAC   <<11,   2,0x0       ,0              ,1,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,500,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_CUSTOM_3<<11, 0,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_INVALID,0,(GROUP_CUSTOM_3<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,500,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_CUSTOM_3<<11, 0,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|0));
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,501,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_CUSTOM_3<<11, 1,0x3       ,0              ,0,63,0x3       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|1));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,502,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_CUSTOM_3<<11, 2,0x7       ,0              ,0,63,0x7       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|2));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,503,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_3<<11, 0,0x0       ,0              ,1,63,0xdeadbeef,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,504,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_3<<11, 1,0x0       ,0              ,1,63,0x3       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|1));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,505,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_3<<11, 2,0x0       ,0              ,1,63,0x7       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|2));
-
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,506,OPERATION_CUSTOM_L_4    ,TYPE_ALU,0,0x0       ,0x21071981,0x0       ,0              ,1,63,0x9ae2802f,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,507,OPERATION_CUSTOM_L_8    ,TYPE_ALU,0,0x0       ,0x9ae2802f,0x0       ,0              ,1,63,0x21071981,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
-
-
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,600,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 1,0x0       ,0              ,1,63,0xdeadbeef,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|1));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,601,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 2,0x0       ,0              ,1,63,0x666     ,0, 2,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|2));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,602,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 3,0x0       ,0              ,1,63,0xffffffff,0, 3,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|3));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,603,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 3,0x0       ,0              ,0,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_INVALID     ,0,(GROUP_CUSTOM_7<<11)|3));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,604,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 2,0x0       ,0              ,0,63,0x0       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|2));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,605,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 2,0x0       ,0              ,1,63,0x666     ,0, 2,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|2));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,606,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 2,0x12345678,0              ,0,63,0x12345678,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|2));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,607,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 2,0x0       ,0              ,1,63,0x12345678,0, 2,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|2));
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,610,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xbebe    ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,611,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x4add6dda,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,612,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x96c7b0fe,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,613,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xeba5179a,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,614,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x17ebab3e,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,615,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xcd37395a,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,616,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x7325ad7e,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,617,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xb4ad31a ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,618,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x5a4eb7be,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,619,OPERATION_ALU_L_MTSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 3,0xf       ,0              ,0,63,0xf       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|3));
-
-  transaction_in.push_back(execute_transaction(_param,0,0,0,620,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xbd76e4da,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,621,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xe       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,622,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xa       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,623,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x3       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,624,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x1       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,625,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x5       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,626,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xc       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,627,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xe       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
-  transaction_in.push_back(execute_transaction(_param,0,0,0,628,OPERATION_ALU_L_MFSPR   ,TYPE_ALU,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xa       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,424,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   1,0x0       ,0              ,1,63,0x34424263,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,425,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_MAC   <<11,   2,0x0       ,0              ,1,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_MAC   <<11)|   2));
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,500,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_3<<11, 0,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_INVALID,0,(GROUP_CUSTOM_3<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,500,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_3<<11, 0,0xdeadbeef,0              ,0,63,0xdeadbeef,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|0));
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,501,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_3<<11, 1,0x3       ,0              ,0,63,0x3       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,502,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_3<<11, 2,0x7       ,0              ,0,63,0x7       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|2));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,503,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_3<<11, 0,0x0       ,0              ,1,63,0xdeadbeef,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,504,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_3<<11, 1,0x0       ,0              ,1,63,0x3       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,505,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_3<<11, 2,0x0       ,0              ,1,63,0x7       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_3<<11)|2));
+
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,506,OPERATION_CUSTOM_L_4    ,TYPE_CUSTOM,0,0x0       ,0x21071981,0x0       ,0              ,1,63,0x9ae2802f,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,507,OPERATION_CUSTOM_L_8    ,TYPE_CUSTOM,0,0x0       ,0x9ae2802f,0x0       ,0              ,1,63,0x21071981,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0));
+
+
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,600,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 1,0x0       ,0              ,1,63,0xdeadbeef,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|1));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,601,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 2,0x0       ,0              ,1,63,0x666     ,0, 2,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|2));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,602,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 3,0x0       ,0              ,1,63,0xffffffff,0, 3,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|3));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,603,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 3,0x0       ,0              ,0,63,0x0       ,0, 0,0              ,EXCEPTION_ALU_SPR_ACCESS_INVALID     ,0,(GROUP_CUSTOM_7<<11)|3));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,604,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 2,0x0       ,0              ,0,63,0x0       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|2));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,605,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 2,0x0       ,0              ,1,63,0x666     ,0, 2,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|2));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,606,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 2,0x12345678,0              ,0,63,0x12345678,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|2));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,607,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 2,0x0       ,0              ,1,63,0x12345678,0, 2,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|2));
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,610,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xbebe    ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,611,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x4add6dda,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,612,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x96c7b0fe,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,613,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xeba5179a,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,614,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x17ebab3e,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,615,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xcd37395a,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,616,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x7325ad7e,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,617,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xb4ad31a ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,618,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x5a4eb7be,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,619,OPERATION_SPECIAL_L_MTSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 3,0xf       ,0              ,0,63,0xf       ,0, 1,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|3));
+
+  transaction_in.push_back(execute_transaction(_param,0,0,0,620,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xbd76e4da,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,621,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xe       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,622,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xa       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,623,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x3       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,624,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x1       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,625,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0x5       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,626,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xc       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,627,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xe       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
+  transaction_in.push_back(execute_transaction(_param,0,0,0,628,OPERATION_SPECIAL_L_MFSPR   ,TYPE_SPECIAL,1,GROUP_CUSTOM_7<<11, 0,0x0       ,0              ,1,63,0xa       ,0, 0,0              ,EXCEPTION_ALU_NONE                   ,0,(GROUP_CUSTOM_7<<11)|0));
 
   LABEL("Reset");
@@ -666,32 +648,38 @@
 	      TEST(Tcontrol_t        , out_EXECUTE_OUT_NO_SEQUENCE  .read(), transaction_out.front()._no_sequence  );
 
-	      switch (transaction_out.front()._operation)
+
+	      bool just_do_it = true;
+	      if ((transaction_out.front()._type      == TYPE_SPECIAL) and 
+		  (transaction_out.front()._operation == OPERATION_SPECIAL_L_MFSPR))
 		{
-		case OPERATION_ALU_L_MFSPR :
-		  {
-		    TEST(Tcontrol_t        , out_EXECUTE_OUT_WRITE_RD     .read(), out_EXECUTE_OUT_EXCEPTION.read() == EXCEPTION_ALU_NONE);
-		    if (out_EXECUTE_OUT_WRITE_RD     .read())
+		  just_do_it = false;
+		  TEST(Tcontrol_t        , out_EXECUTE_OUT_WRITE_RD     .read(), out_EXECUTE_OUT_EXCEPTION.read() == EXCEPTION_ALU_NONE);
+		  if (out_EXECUTE_OUT_WRITE_RD     .read())
+		  TEST(Tgeneral_data_t   , out_EXECUTE_OUT_DATA_RD      .read(), transaction_out.front()._data_rd      );
+		  TEST(Tgeneral_data_t   , out_EXECUTE_OUT_ADDRESS      .read(), transaction_out.front()._address      );
+		  break;
+		}
+
+	      if ((transaction_out.front()._type      == TYPE_SPECIAL) and 
+		  (transaction_out.front()._operation == OPERATION_SPECIAL_L_MTSPR))
+		{
+		  just_do_it = false;
+		  TEST(Tcontrol_t        , out_EXECUTE_OUT_WRITE_RD     .read(), transaction_out.front()._write_rd     );
+		  TEST(Tgeneral_data_t   , out_EXECUTE_OUT_DATA_RD      .read(), transaction_out.front()._data_rd      );
+		  TEST(Tgeneral_data_t   , out_EXECUTE_OUT_ADDRESS      .read(), transaction_out.front()._address      );
+		  break;
+		}
+	      
+	      if (just_do_it)
+		{
+		  TEST(Tcontrol_t        , out_EXECUTE_OUT_WRITE_RD     .read(), transaction_out.front()._write_rd     );
+		  if (transaction_out.front()._write_rd)
 		    TEST(Tgeneral_data_t   , out_EXECUTE_OUT_DATA_RD      .read(), transaction_out.front()._data_rd      );
+		  if (transaction_out.front()._write_re)
+		    TEST(Tspecial_data_t   , out_EXECUTE_OUT_DATA_RE      .read(), transaction_out.front()._data_re      );
+		  if (transaction_out.front()._no_sequence)
 		    TEST(Tgeneral_data_t   , out_EXECUTE_OUT_ADDRESS      .read(), transaction_out.front()._address      );
-		    break;
-		  }
-		case OPERATION_ALU_L_MTSPR :
-		  {
-		    TEST(Tcontrol_t        , out_EXECUTE_OUT_WRITE_RD     .read(), transaction_out.front()._write_rd     );
-		    TEST(Tgeneral_data_t   , out_EXECUTE_OUT_DATA_RD      .read(), transaction_out.front()._data_rd      );
-		    TEST(Tgeneral_data_t   , out_EXECUTE_OUT_ADDRESS      .read(), transaction_out.front()._address      );
-		    break;
-		  }
-		default :
-		  {
-		    TEST(Tcontrol_t        , out_EXECUTE_OUT_WRITE_RD     .read(), transaction_out.front()._write_rd     );
-		    if (transaction_out.front()._write_rd)
-		    TEST(Tgeneral_data_t   , out_EXECUTE_OUT_DATA_RD      .read(), transaction_out.front()._data_rd      );
-		    if (transaction_out.front()._write_re)
-		    TEST(Tspecial_data_t   , out_EXECUTE_OUT_DATA_RE      .read(), transaction_out.front()._data_re      );
-		    if (transaction_out.front()._no_sequence)
-		    TEST(Tgeneral_data_t   , out_EXECUTE_OUT_ADDRESS      .read(), transaction_out.front()._address      );
-		  }
 		}
+
 	      transaction_out.pop_front();
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h	(revision 76)
@@ -127,5 +127,5 @@
   private   : execute_register_t         **** _execute_register;
   private   : execute_param_t               * _execute_param;
-  private   : function_execute_t           ** _function_execute;
+  private   : function_execute_t          *** _function_execute;
 #endif
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Parameters.h	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Parameters.h	(revision 76)
@@ -38,5 +38,5 @@
   public : const uint32_t            _nb_operation                 ;
   public : const uint32_t            _nb_type                      ;
-  public : const execute_timing_t  * _timing                       ;
+  public :       execute_timing_t ** _timing                       ;
   public : morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (uint32_t);
 
@@ -68,5 +68,5 @@
 			uint32_t           nb_operation       ,
 			uint32_t           nb_type            ,
-			execute_timing_t * timing             ,
+			execute_timing_t** timing             ,
 			morpheo::behavioural::custom::custom_information_t (*get_custom_information) (uint32_t));
   public : Parameters  (Parameters & param) ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Types.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Types.h	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Types.h	(revision 76)
@@ -75,13 +75,13 @@
   public : const Tgeneral_data_t     _mask_data;
   public : const Tgeneral_data_t     _mask_shift;
-  public : const execute_timing_t  * _timing;
+  public :       execute_timing_t ** _timing;
 
-  public : execute_param_t (const uint32_t            size_data,
-			    const execute_timing_t  * timing):
+  public : execute_param_t (const uint32_t      size_data,
+			    execute_timing_t ** timing):
     _size_data (size_data),
     _mask_data (gen_mask<Tgeneral_data_t> (size_data)),
-    _mask_shift(gen_mask<Tgeneral_data_t> (log2(size_data))),
-    _timing    (timing)
+    _mask_shift(gen_mask<Tgeneral_data_t> (log2(size_data)))
     {
+      _timing = timing;
     };
   public : ~execute_param_t (void)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp	(revision 76)
@@ -153,48 +153,92 @@
        }
 
-     _function_execute = new function_execute_t * [MAX_OPERATION];
+     _function_execute = new function_execute_t ** [MAX_TYPE];
      
      // Initialisation
-     for (uint32_t i=0; i<MAX_OPERATION; i++)
-       _function_execute [i] = &(operation_unimplemented);
-
-     if (_param->_timing[OPERATION_ALU_L_ADD     ]._latence > 0) _function_execute[OPERATION_ALU_L_ADD     ] = &(operation_l_add     );
-     if (_param->_timing[OPERATION_ALU_L_ADDC    ]._latence > 0) _function_execute[OPERATION_ALU_L_ADDC    ] = &(operation_l_addc    );
-     if (_param->_timing[OPERATION_ALU_L_SUB     ]._latence > 0) _function_execute[OPERATION_ALU_L_SUB     ] = &(operation_l_sub     );
-//      if (_param->_timing[OPERATION_ALU_L_MUL     ]._latence > 0) _function_execute[OPERATION_ALU_L_MUL     ] = &(operation_l_mul     );
-//      if (_param->_timing[OPERATION_ALU_L_MULU    ]._latence > 0) _function_execute[OPERATION_ALU_L_MULU    ] = &(operation_l_mulu    );
-//      if (_param->_timing[OPERATION_ALU_L_DIV     ]._latence > 0) _function_execute[OPERATION_ALU_L_DIV     ] = &(operation_l_div     );
-//      if (_param->_timing[OPERATION_ALU_L_DIVU    ]._latence > 0) _function_execute[OPERATION_ALU_L_DIVU    ] = &(operation_l_divu    );
-     if (_param->_timing[OPERATION_ALU_L_AND     ]._latence > 0) _function_execute[OPERATION_ALU_L_AND     ] = &(operation_l_and     );
-     if (_param->_timing[OPERATION_ALU_L_OR      ]._latence > 0) _function_execute[OPERATION_ALU_L_OR      ] = &(operation_l_or      );
-     if (_param->_timing[OPERATION_ALU_L_XOR     ]._latence > 0) _function_execute[OPERATION_ALU_L_XOR     ] = &(operation_l_xor     );
-     if (_param->_timing[OPERATION_ALU_L_TEST_F  ]._latence > 0) _function_execute[OPERATION_ALU_L_TEST_F  ] = &(operation_l_test_f  );
-     if (_param->_timing[OPERATION_ALU_L_TEST_NF ]._latence > 0) _function_execute[OPERATION_ALU_L_TEST_NF ] = &(operation_l_test_nf );
-     if (_param->_timing[OPERATION_ALU_L_JALR    ]._latence > 0) _function_execute[OPERATION_ALU_L_JALR    ] = &(operation_l_jalr    );
-     if (_param->_timing[OPERATION_ALU_L_SLL     ]._latence > 0) _function_execute[OPERATION_ALU_L_SLL     ] = &(operation_l_sll     );
-     if (_param->_timing[OPERATION_ALU_L_SRA     ]._latence > 0) _function_execute[OPERATION_ALU_L_SRA     ] = &(operation_l_sra     );
-     if (_param->_timing[OPERATION_ALU_L_SRL     ]._latence > 0) _function_execute[OPERATION_ALU_L_SRL     ] = &(operation_l_srl     );
-     if (_param->_timing[OPERATION_ALU_L_ROR     ]._latence > 0) _function_execute[OPERATION_ALU_L_ROR     ] = &(operation_l_ror     );
-     if (_param->_timing[OPERATION_ALU_L_MOVHI   ]._latence > 0) _function_execute[OPERATION_ALU_L_MOVHI   ] = &(operation_l_movhi   );
-     if (_param->_timing[OPERATION_ALU_L_EXTEND_S]._latence > 0) _function_execute[OPERATION_ALU_L_EXTEND_S] = &(operation_l_extend_s);
-     if (_param->_timing[OPERATION_ALU_L_EXTEND_Z]._latence > 0) _function_execute[OPERATION_ALU_L_EXTEND_Z] = &(operation_l_extend_z);
-     if (_param->_timing[OPERATION_ALU_L_CMOV    ]._latence > 0) _function_execute[OPERATION_ALU_L_CMOV    ] = &(operation_l_cmov    ); 
-     if (_param->_timing[OPERATION_ALU_L_FF1     ]._latence > 0) _function_execute[OPERATION_ALU_L_FF1     ] = &(operation_l_ff1     ); 
-     if (_param->_timing[OPERATION_ALU_L_FL1     ]._latence > 0) _function_execute[OPERATION_ALU_L_FL1     ] = &(operation_l_fl1     ); 
-     if (_param->_timing[OPERATION_ALU_L_MFSPR   ]._latence > 0) _function_execute[OPERATION_ALU_L_MFSPR   ] = &(operation_l_mfspr   ); 
-     if (_param->_timing[OPERATION_ALU_L_MTSPR   ]._latence > 0) _function_execute[OPERATION_ALU_L_MTSPR   ] = &(operation_l_mtspr   ); 
-     if (_param->_timing[OPERATION_ALU_L_SFEQ    ]._latence > 0) _function_execute[OPERATION_ALU_L_SFEQ    ] = &(operation_l_sfeq    );
-     if (_param->_timing[OPERATION_ALU_L_SFNE    ]._latence > 0) _function_execute[OPERATION_ALU_L_SFNE    ] = &(operation_l_sfne    );
-     if (_param->_timing[OPERATION_ALU_L_SFGEU   ]._latence > 0) _function_execute[OPERATION_ALU_L_SFGEU   ] = &(operation_l_sfgeu   );
-     if (_param->_timing[OPERATION_ALU_L_SFGTU   ]._latence > 0) _function_execute[OPERATION_ALU_L_SFGTU   ] = &(operation_l_sfgtu   );
-     if (_param->_timing[OPERATION_ALU_L_SFLEU   ]._latence > 0) _function_execute[OPERATION_ALU_L_SFLEU   ] = &(operation_l_sfleu   );
-     if (_param->_timing[OPERATION_ALU_L_SFLTU   ]._latence > 0) _function_execute[OPERATION_ALU_L_SFLTU   ] = &(operation_l_sfltu   );
-     if (_param->_timing[OPERATION_ALU_L_SFGES   ]._latence > 0) _function_execute[OPERATION_ALU_L_SFGES   ] = &(operation_l_sfges   );
-     if (_param->_timing[OPERATION_ALU_L_SFGTS   ]._latence > 0) _function_execute[OPERATION_ALU_L_SFGTS   ] = &(operation_l_sfgts   );
-     if (_param->_timing[OPERATION_ALU_L_SFLES   ]._latence > 0) _function_execute[OPERATION_ALU_L_SFLES   ] = &(operation_l_sfles   );
-     if (_param->_timing[OPERATION_ALU_L_SFLTS   ]._latence > 0) _function_execute[OPERATION_ALU_L_SFLTS   ] = &(operation_l_sflts   );
-     if (_param->_timing[OPERATION_ALU_L_MAC     ]._latence > 0) _function_execute[OPERATION_ALU_L_MAC     ] = &(operation_l_mac     ); 
-     if (_param->_timing[OPERATION_ALU_L_MACRC   ]._latence > 0) _function_execute[OPERATION_ALU_L_MACRC   ] = &(operation_l_macrc   ); 
-     if (_param->_timing[OPERATION_ALU_L_MSB     ]._latence > 0) _function_execute[OPERATION_ALU_L_MSB     ] = &(operation_l_msb     ); 
+     for (uint32_t i=0; i<MAX_TYPE; i++)
+       {
+	 _function_execute [i] = new function_execute_t * [MAX_OPERATION];
+	 
+	 for (uint32_t j=0; j<MAX_OPERATION; j++)
+	   _function_execute [i][j] = &(operation_unimplemented);
+       }
+
+     if (_param->_timing[TYPE_ALU    ][OPERATION_ALU_L_ADD         ]._latence > 0)
+       _function_execute[TYPE_ALU    ][OPERATION_ALU_L_ADD         ] = &(operation_l_add     );
+     if (_param->_timing[TYPE_ALU    ][OPERATION_ALU_L_ADDC        ]._latence > 0) 
+       _function_execute[TYPE_ALU    ][OPERATION_ALU_L_ADDC        ] = &(operation_l_addc    );
+//   if (_param->_timing[TYPE_ALU    ][OPERATION_ALU_L_SUB         ]._latence > 0) 
+//     _function_execute[TYPE_ALU    ][OPERATION_ALU_L_SUB         ] = &(operation_l_sub     );
+     if (_param->_timing[TYPE_ALU    ][OPERATION_ALU_L_AND         ]._latence > 0) 
+       _function_execute[TYPE_ALU    ][OPERATION_ALU_L_AND         ] = &(operation_l_and     );
+     if (_param->_timing[TYPE_ALU    ][OPERATION_ALU_L_OR          ]._latence > 0) 
+       _function_execute[TYPE_ALU    ][OPERATION_ALU_L_OR          ] = &(operation_l_or      );
+     if (_param->_timing[TYPE_ALU    ][OPERATION_ALU_L_XOR         ]._latence > 0) 
+       _function_execute[TYPE_ALU    ][OPERATION_ALU_L_XOR         ] = &(operation_l_xor     );
+     if (_param->_timing[TYPE_SHIFT  ][OPERATION_SHIFT_L_SLL       ]._latence > 0) 
+       _function_execute[TYPE_SHIFT  ][OPERATION_SHIFT_L_SLL       ] = &(operation_l_sll     );
+     if (_param->_timing[TYPE_SHIFT  ][OPERATION_SHIFT_L_SRA       ]._latence > 0) 
+       _function_execute[TYPE_SHIFT  ][OPERATION_SHIFT_L_SRA       ] = &(operation_l_sra     );
+     if (_param->_timing[TYPE_SHIFT  ][OPERATION_SHIFT_L_SRL       ]._latence > 0) 
+       _function_execute[TYPE_SHIFT  ][OPERATION_SHIFT_L_SRL       ] = &(operation_l_srl     );
+     if (_param->_timing[TYPE_SHIFT  ][OPERATION_SHIFT_L_ROR       ]._latence > 0) 
+       _function_execute[TYPE_SHIFT  ][OPERATION_SHIFT_L_ROR       ] = &(operation_l_ror     );
+     if (_param->_timing[TYPE_MOVE   ][OPERATION_MOVE_L_MOVHI      ]._latence > 0) 
+       _function_execute[TYPE_MOVE   ][OPERATION_MOVE_L_MOVHI      ] = &(operation_l_movhi   );
+     if (_param->_timing[TYPE_MOVE   ][OPERATION_MOVE_L_CMOV       ]._latence > 0) 
+       _function_execute[TYPE_MOVE   ][OPERATION_MOVE_L_CMOV       ] = &(operation_l_cmov    ); 
+     if (_param->_timing[TYPE_TEST   ][OPERATION_TEST_L_SFGEU      ]._latence > 0) 
+       _function_execute[TYPE_TEST   ][OPERATION_TEST_L_SFGEU      ] = &(operation_l_sfgeu   );
+     if (_param->_timing[TYPE_TEST   ][OPERATION_TEST_L_SFGTU      ]._latence > 0) 
+       _function_execute[TYPE_TEST   ][OPERATION_TEST_L_SFGTU      ] = &(operation_l_sfgtu   );
+     if (_param->_timing[TYPE_TEST   ][OPERATION_TEST_L_SFLEU      ]._latence > 0) 
+       _function_execute[TYPE_TEST   ][OPERATION_TEST_L_SFLEU      ] = &(operation_l_sfleu   );
+     if (_param->_timing[TYPE_TEST   ][OPERATION_TEST_L_SFLTU      ]._latence > 0) 
+       _function_execute[TYPE_TEST   ][OPERATION_TEST_L_SFLTU      ] = &(operation_l_sfltu   );
+     if (_param->_timing[TYPE_TEST   ][OPERATION_TEST_L_SFGES      ]._latence > 0) 
+       _function_execute[TYPE_TEST   ][OPERATION_TEST_L_SFGES      ] = &(operation_l_sfges   );
+     if (_param->_timing[TYPE_TEST   ][OPERATION_TEST_L_SFGTS      ]._latence > 0) 
+       _function_execute[TYPE_TEST   ][OPERATION_TEST_L_SFGTS      ] = &(operation_l_sfgts   );
+     if (_param->_timing[TYPE_TEST   ][OPERATION_TEST_L_SFLES      ]._latence > 0) 
+       _function_execute[TYPE_TEST   ][OPERATION_TEST_L_SFLES      ] = &(operation_l_sfles   );
+     if (_param->_timing[TYPE_TEST   ][OPERATION_TEST_L_SFLTS      ]._latence > 0) 
+       _function_execute[TYPE_TEST   ][OPERATION_TEST_L_SFLTS      ] = &(operation_l_sflts   );
+     if (_param->_timing[TYPE_TEST   ][OPERATION_TEST_L_SFEQ       ]._latence > 0) 
+       _function_execute[TYPE_TEST   ][OPERATION_TEST_L_SFEQ       ] = &(operation_l_sfeq    );
+     if (_param->_timing[TYPE_TEST   ][OPERATION_TEST_L_SFNE       ]._latence > 0) 
+       _function_execute[TYPE_TEST   ][OPERATION_TEST_L_SFNE       ] = &(operation_l_sfne    );
+//   if (_param->_timing[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_MUL     ]._latence > 0) 
+//     _function_execute[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_MUL     ] = &(operation_l_mul     );
+//   if (_param->_timing[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_MULU    ]._latence > 0) 
+//     _function_execute[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_MULU    ] = &(operation_l_mulu    );
+//   if (_param->_timing[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_DIV     ]._latence > 0) 
+//     _function_execute[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_DIV     ] = &(operation_l_div     );
+//   if (_param->_timing[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_DIVU    ]._latence > 0) 
+//     _function_execute[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_DIVU    ] = &(operation_l_divu    );
+     if (_param->_timing[TYPE_EXTEND ][OPERATION_EXTEND_L_EXTEND_S ]._latence > 0) 
+       _function_execute[TYPE_EXTEND ][OPERATION_EXTEND_L_EXTEND_S ] = &(operation_l_extend_s);
+     if (_param->_timing[TYPE_EXTEND ][OPERATION_EXTEND_L_EXTEND_Z ]._latence > 0) 
+       _function_execute[TYPE_EXTEND ][OPERATION_EXTEND_L_EXTEND_Z ] = &(operation_l_extend_z);
+     if (_param->_timing[TYPE_FIND   ][OPERATION_FIND_L_FF1        ]._latence > 0) 
+       _function_execute[TYPE_FIND   ][OPERATION_FIND_L_FF1        ] = &(operation_l_ff1     ); 
+     if (_param->_timing[TYPE_FIND   ][OPERATION_FIND_L_FL1        ]._latence > 0) 
+       _function_execute[TYPE_FIND   ][OPERATION_FIND_L_FL1        ] = &(operation_l_fl1     ); 
+     if (_param->_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MFSPR   ]._latence > 0) 
+       _function_execute[TYPE_SPECIAL][OPERATION_SPECIAL_L_MFSPR   ] = &(operation_l_mfspr   ); 
+     if (_param->_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MTSPR   ]._latence > 0) 
+       _function_execute[TYPE_SPECIAL][OPERATION_SPECIAL_L_MTSPR   ] = &(operation_l_mtspr   ); 
+     if (_param->_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MAC     ]._latence > 0) 
+       _function_execute[TYPE_SPECIAL][OPERATION_SPECIAL_L_MAC     ] = &(operation_l_mac     ); 
+     if (_param->_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MACRC   ]._latence > 0) 
+       _function_execute[TYPE_SPECIAL][OPERATION_SPECIAL_L_MACRC   ] = &(operation_l_macrc   ); 
+     if (_param->_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MSB     ]._latence > 0) 
+       _function_execute[TYPE_SPECIAL][OPERATION_SPECIAL_L_MSB     ] = &(operation_l_msb     ); 
+     if (_param->_timing[TYPE_BRANCH ][OPERATION_BRANCH_L_TEST_F   ]._latence > 0) 
+       _function_execute[TYPE_BRANCH ][OPERATION_BRANCH_L_TEST_F   ] = &(operation_l_test_f  );
+     if (_param->_timing[TYPE_BRANCH ][OPERATION_BRANCH_L_TEST_NF  ]._latence > 0) 
+       _function_execute[TYPE_BRANCH ][OPERATION_BRANCH_L_TEST_NF  ] = &(operation_l_test_nf );
+     if (_param->_timing[TYPE_BRANCH ][OPERATION_BRANCH_L_JALR     ]._latence > 0) 
+       _function_execute[TYPE_BRANCH ][OPERATION_BRANCH_L_JALR     ] = &(operation_l_jalr    );
+
 
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_deallocation.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_deallocation.cpp	(revision 76)
@@ -78,5 +78,5 @@
     delete    _execute_param;
     delete    _execute_operation;
-    delete    _function_execute;
+    delete [] _function_execute;
 
     delete    _component;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_transition.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_transition.cpp	(revision 76)
@@ -62,10 +62,11 @@
 	    reg_BUSY = true;
 
-	    Tcontext_t context_id    = (_param->_have_port_context_id   )?PORT_READ(in_EXECUTE_IN_CONTEXT_ID   ):0;
-	    Tcontext_t front_end_id  = (_param->_have_port_front_end_id )?PORT_READ(in_EXECUTE_IN_FRONT_END_ID ):0;
-	    Tcontext_t ooo_engine_id = (_param->_have_port_ooo_engine_id)?PORT_READ(in_EXECUTE_IN_OOO_ENGINE_ID):0;
-	    Tcontext_t packet_id     = (_param->_have_port_packet_id    )?PORT_READ(in_EXECUTE_IN_PACKET_ID    ):0;
-	    Toperation_t operation = PORT_READ(in_EXECUTE_IN_OPERATION);
-
+	    Tcontext_t   context_id    = (_param->_have_port_context_id   )?PORT_READ(in_EXECUTE_IN_CONTEXT_ID   ):0;
+	    Tcontext_t   front_end_id  = (_param->_have_port_front_end_id )?PORT_READ(in_EXECUTE_IN_FRONT_END_ID ):0;
+	    Tcontext_t   ooo_engine_id = (_param->_have_port_ooo_engine_id)?PORT_READ(in_EXECUTE_IN_OOO_ENGINE_ID):0;
+	    Tcontext_t   packet_id     = (_param->_have_port_packet_id    )?PORT_READ(in_EXECUTE_IN_PACKET_ID    ):0;
+	    Toperation_t operation     = PORT_READ(in_EXECUTE_IN_OPERATION);
+	    Ttype_t      type          = PORT_READ(in_EXECUTE_IN_TYPE);
+	    
 	    _execute_operation->_context_id    = context_id   ;
 	    _execute_operation->_front_end_id  = front_end_id ;
@@ -73,5 +74,5 @@
 	    _execute_operation->_packet_id     = packet_id    ;
 	    _execute_operation->_operation     = operation    ;
-	    _execute_operation->_type          = PORT_READ(in_EXECUTE_IN_TYPE        );
+	    _execute_operation->_type          = type         ;
 	    _execute_operation->_has_immediat  = PORT_READ(in_EXECUTE_IN_HAS_IMMEDIAT);
 	    _execute_operation->_immediat      = PORT_READ(in_EXECUTE_IN_IMMEDIAT    );
@@ -93,12 +94,5 @@
 
 	    // Test if operation is a custom
-	    if ((operation == OPERATION_CUSTOM_L_1) or
-		(operation == OPERATION_CUSTOM_L_2) or
-		(operation == OPERATION_CUSTOM_L_3) or
-		(operation == OPERATION_CUSTOM_L_4) or
-		(operation == OPERATION_CUSTOM_L_5) or
-		(operation == OPERATION_CUSTOM_L_6) or
-		(operation == OPERATION_CUSTOM_L_7) or
-		(operation == OPERATION_CUSTOM_L_8))
+	    if (type == TYPE_CUSTOM)
 	      {
 		uint32_t num_thread = get_num_thread(context_id   ,_param->_size_context_id,
@@ -109,5 +103,5 @@
 	      }
 	    else
-	      (*(_function_execute[operation])) (_execute_operation, execute_register, _execute_param);
+	      (*(_function_execute[type][operation])) (_execute_operation, execute_register, _execute_param);
 
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Operation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Operation.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Operation.cpp	(revision 76)
@@ -52,5 +52,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr3;
     op->_data_re      = 0;
@@ -78,5 +78,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr3;
     op->_data_re      = 0;
@@ -102,5 +102,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr3;
     op->_data_re      = 0;
@@ -123,5 +123,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr3;
   //op->_data_re      = 0;
@@ -142,5 +142,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr3;
   //op->_data_re      = 0;
@@ -161,5 +161,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr3;
   //op->_data_re      = 0;
@@ -179,5 +179,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr2;
   //op->_data_re      = 0;
@@ -200,5 +200,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr3;
   //op->_data_re      = 0;
@@ -218,5 +218,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
   //op->_data_re      = 0;
@@ -236,5 +236,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
   //op->_data_re      = 0;
@@ -258,5 +258,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = imm;
   //op->_data_re      = 0;
@@ -277,5 +277,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr2;
   //op->_data_re      = 0;
@@ -296,5 +296,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr2;
   //op->_data_re      = 0;
@@ -315,5 +315,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr3;
   //op->_data_re      = 0;
@@ -334,5 +334,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr3;
   //op->_data_re      = 0;
@@ -353,5 +353,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr3;
   //op->_data_re      = 0;
@@ -372,5 +372,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr3;
   //op->_data_re      = 0;
@@ -392,5 +392,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = (index==param->_size_data)?0:(index+1);
   //op->_data_re      = 0;
@@ -412,5 +412,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = index;
   //op->_data_re      = 0;
@@ -432,5 +432,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
     op->_data_re      = set_flag(op->_data_re,FLAG_F,f_out);
@@ -452,5 +452,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
     op->_data_re      = set_flag(op->_data_re,FLAG_F,f_out);
@@ -472,5 +472,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
     op->_data_re      = set_flag(op->_data_re,FLAG_F,f_out);
@@ -492,5 +492,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
     op->_data_re      = set_flag(op->_data_re,FLAG_F,f_out);
@@ -512,5 +512,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
     op->_data_re      = set_flag(op->_data_re,FLAG_F,f_out);
@@ -532,5 +532,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
     op->_data_re      = set_flag(op->_data_re,FLAG_F,f_out);
@@ -566,5 +566,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
     op->_data_re      = set_flag(op->_data_re,FLAG_F,f_out);
@@ -593,5 +593,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
     op->_data_re      = set_flag(op->_data_re,FLAG_F,f_out);
@@ -620,5 +620,5 @@
     
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
     op->_data_re      = set_flag(op->_data_re,FLAG_F,f_out);
@@ -647,5 +647,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
     op->_data_re      = set_flag(op->_data_re,FLAG_F,f_out);
@@ -698,5 +698,5 @@
     
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr2; // data_rb
   //op->_data_re      = 0;
@@ -749,5 +749,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_write_rd     = (exception == EXCEPTION_ALU_NONE);
     op->_data_rd      = gpr2; // spr
@@ -770,5 +770,5 @@
 
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
     op->_data_rd      = gpr;
   //op->_data_re      = 0;
@@ -794,5 +794,5 @@
     
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
   //op->_data_re      = 0;
@@ -818,5 +818,5 @@
     
     // Result
-    op->_timing       = param->_timing[op->_operation];
+    op->_timing       = param->_timing[op->_type][op->_operation];
   //op->_data_rd      = 0;
   //op->_data_re      = 0;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters.cpp	(revision 76)
@@ -30,5 +30,5 @@
 			  uint32_t           nb_operation       ,
 			  uint32_t           nb_type            ,
-			  execute_timing_t * timing             ,
+			  execute_timing_t** timing             ,
 			  morpheo::behavioural::custom::custom_information_t (*get_custom_information) (uint32_t)) :
     _nb_context              (nb_context            ),
@@ -42,5 +42,4 @@
     _nb_operation            (nb_operation          ),
     _nb_type                 (nb_type               ),
-    _timing                  (timing                ),
     
     _size_context_id         (log2(nb_context      )),
@@ -58,13 +57,15 @@
     _have_port_packet_id     (_size_packet_id     > 0),
 
-    _have_groupe_MAC         ( (_timing[OPERATION_ALU_L_MAC  ]._latence > 0) or
-			       (_timing[OPERATION_ALU_L_MACRC]._latence > 0) or
-			       (_timing[OPERATION_ALU_L_MSB  ]._latence > 0))
+    _have_groupe_MAC         ( (timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MAC  ]._latence > 0) or
+			       (timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MACRC]._latence > 0) or
+			       (timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MSB  ]._latence > 0))
   {
     log_printf(FUNC,Functionnal_unit,FUNCTION,"Begin");
 
+    _timing                 = timing;
     _get_custom_information = get_custom_information;
 
     test();
+
     log_printf(FUNC,Functionnal_unit,FUNCTION,"End");
   };
@@ -83,5 +84,4 @@
     _nb_operation            (param._nb_operation           ),
     _nb_type                 (param._nb_type                ),
-    _timing                  (param._timing                 ),
 
     _size_context_id         (param._size_context_id        ),
@@ -103,4 +103,5 @@
     log_printf(FUNC,Functionnal_unit,FUNCTION,"Begin");
 
+    _timing                 = param._timing;
     _get_custom_information = param._get_custom_information;
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters_msg_error.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters_msg_error.cpp	(revision 76)
@@ -28,11 +28,12 @@
     std::string msg = "";
 
-    for (uint32_t i=0; i<MAX_OPERATION; i++)
-      if (_timing->_delay != _timing->_latence)
-	msg = "  - For the operation '"+toString(i)+"', the delay and the latence must be equal.";
+    for (uint32_t i=0; i<MAX_TYPE; i++)
+      for (uint32_t j=0; j<MAX_OPERATION; j++)
+	if (_timing[i][j]._delay != _timing[i][j]._latence)
+	  msg = "  - For the type '"+toString(i)+"', and the operation '"+toString(j)+"', the delay and the latence must be equal.";
 
-    if (_have_groupe_MAC and ((_timing[OPERATION_ALU_L_MAC  ]._latence == 0) or
-			      (_timing[OPERATION_ALU_L_MACRC]._latence == 0) or
-			      (_timing[OPERATION_ALU_L_MSB  ]._latence == 0)))
+    if (_have_groupe_MAC and ((_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MAC  ]._latence == 0) or
+			      (_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MACRC]._latence == 0) or
+			      (_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MSB  ]._latence == 0)))
       msg = "  - The functionnal unit implement a MAC unit, the latence to operation OPERATION_ALU_L_MAC, OPERATION_ALU_L_MACRC and OPERATION_ALU_L_MSB must be higher than 0.";
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h	(revision 76)
@@ -96,6 +96,7 @@
   public    : SC_IN (Tpacket_t         )    *  in_MEMORY_IN_PACKET_ID   ;
   public    : SC_IN (Toperation_t      )    *  in_MEMORY_IN_OPERATION   ;
+//public    : SC_IN (Ttype_t           )    *  in_MEMORY_IN_TYPE        ;
   public    : SC_IN (Tlsq_ptr_t        )    *  in_MEMORY_IN_STORE_QUEUE_PTR_WRITE;
-  public    : SC_IN (Tlsq_ptr_t        )    *  in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE;
+  public    : SC_IN (Tlsq_ptr_t        )    *  in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE ;
 //public    : SC_IN (Tcontrol_t        )    *  in_MEMORY_IN_HAS_IMMEDIAT;
   public    : SC_IN (Tgeneral_data_t   )    *  in_MEMORY_IN_IMMEDIAT    ; // memory address
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Makefile	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Makefile	(revision 76)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libRead_unit.a
+
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Makefile.defs	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Makefile.defs	(revision 76)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Makefile.deps	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Makefile.deps	(revision 76)
@@ -0,0 +1,56 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+Read_unit			= yes
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+ifndef Read_queue
+include				$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/Makefile.deps
+endif
+ifndef Reservation_station
+include				$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile.deps
+endif
+
+#-----[ Directory ]----------------------------------------
+
+Read_unit_DIR			=	$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit
+
+#-----[ Library ]------------------------------------------
+Read_unit_LIBRARY		= 	-lRead_unit			\
+					$(Behavioural_LIBRARY)		\
+					$(Read_queue_LIBRARY)		\
+					$(Reservation_station_LIBRARY)
+
+Read_unit_DIR_LIBRARY		=	-L$(Read_unit_DIR)/lib		\
+					$(Behavioural_DIR_LIBRARY)	\
+					$(Read_queue_DIR_LIBRARY)	\
+					$(Reservation_station_DIR_LIBRARY)
+
+Read_unit_DEPENDENCIES		=	Behavioural_library		\
+					Read_queue_library		\
+					Reservation_station_library
+
+Read_unit_CLEAN	        	=	Behavioural_library_clean	\
+					Read_queue_library_clean	\
+					Reservation_station_library_clean
+
+#-----[ Rules ]--------------------------------------------
+
+.NOTPARALLEL			: Read_unit_library
+.NOTPARALLEL			: Read_unit_library_clean
+
+Read_unit_library		: $(Read_unit_DEPENDENCIES)
+				@\
+				$(MAKE) --directory=$(Read_unit_DIR) --makefile=Makefile;
+
+Read_unit_library_clean		: $(Read_unit_CLEAN)
+				@\
+				$(MAKE) --directory=$(Read_unit_DIR) --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg	(revision 76)
@@ -13,2 +13,4 @@
 4	4	*2	# nb_gpr_write
 2	2	*2	# nb_spr_write
+4	4	*2	# size_store_queue
+4	4	*2	# size_load_queue    
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg	(revision 76)
@@ -13,2 +13,4 @@
 2	4	*2	# nb_gpr_write
 2	4	*2	# nb_spr_write
+4	4	*2	# size_store_queue
+4	4	*2	# size_load_queue    
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config2.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config2.cfg	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config2.cfg	(revision 76)
@@ -13,2 +13,4 @@
 1	1	*2	# nb_gpr_write
 1	1	*2	# nb_spr_write
+4	4	*2	# size_store_queue
+4	4	*2	# size_load_queue    
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config_min.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config_min.cfg	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config_min.cfg	(revision 76)
@@ -13,2 +13,4 @@
 1 	1 	*2	# nb_gpr_write
 1 	1 	*2	# nb_spr_write
+4	4	*2	# size_store_queue
+4	4	*2	# size_load_queue    
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp	(revision 76)
@@ -8,5 +8,5 @@
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/include/test.h"
 
-#define NB_PARAMS 13
+#define NB_PARAMS 15
 
 void usage (int argc, char * argv[])
@@ -27,4 +27,6 @@
        << " - nb_gpr_write        (unsigned int)" << endl
        << " - nb_spr_write        (unsigned int)" << endl
+       << " - size_store_queue    (unsigned int)" << endl
+       << " - size_load_queue     (unsigned int)" << endl
        << "" << endl;
 
@@ -60,4 +62,6 @@
   const uint32_t nb_gpr_write        = atoi(argv[x++]);
   const uint32_t nb_spr_write        = atoi(argv[x++]);
+  const uint32_t size_store_queue    = atoi(argv[x++]);
+  const uint32_t size_load_queue     = atoi(argv[x++]);
 
   try 
@@ -77,4 +81,6 @@
 	 ,nb_gpr_write
 	 ,nb_spr_write
+	 ,size_store_queue
+	 ,size_load_queue 
 	  );
       
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp	(revision 76)
@@ -75,4 +75,6 @@
   sc_signal<Toperation_t       >         * READ_QUEUE_IN_OPERATION    = new sc_signal<Toperation_t       >         ("READ_QUEUE_IN_OPERATION   ");
   sc_signal<Ttype_t            >         * READ_QUEUE_IN_TYPE         = new sc_signal<Ttype_t            >         ("READ_QUEUE_IN_TYPE        ");
+  sc_signal<Tlsq_ptr_t         >         * READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE = new sc_signal<Tlsq_ptr_t>         ("READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE");
+  sc_signal<Tlsq_ptr_t         >         * READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE  = new sc_signal<Tlsq_ptr_t>         ("READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ");
   sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_HAS_IMMEDIAT = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_HAS_IMMEDIAT");
   sc_signal<Tgeneral_data_t    >         * READ_QUEUE_IN_IMMEDIAT     = new sc_signal<Tgeneral_data_t    >         ("READ_QUEUE_IN_IMMEDIAT    ");
@@ -98,4 +100,6 @@
   sc_signal<Toperation_t       >         * READ_QUEUE_OUT_OPERATION   = new sc_signal<Toperation_t       >         ("READ_QUEUE_OUT_OPERATION   ");
   sc_signal<Ttype_t            >         * READ_QUEUE_OUT_TYPE        = new sc_signal<Ttype_t            >         ("READ_QUEUE_OUT_TYPE        ");
+  sc_signal<Tlsq_ptr_t         >         * READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE = new sc_signal<Tlsq_ptr_t>        ("READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE");
+  sc_signal<Tlsq_ptr_t         >         * READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE  = new sc_signal<Tlsq_ptr_t>        ("READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ");
   sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_HAS_IMMEDIAT= new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_HAS_IMMEDIAT");
   sc_signal<Tgeneral_data_t    >         * READ_QUEUE_OUT_IMMEDIAT    = new sc_signal<Tgeneral_data_t    >         ("READ_QUEUE_OUT_IMMEDIAT    ");
@@ -226,4 +230,6 @@
   (*(_Read_queue-> in_READ_QUEUE_IN_OPERATION      )) (*(READ_QUEUE_IN_OPERATION      ));
   (*(_Read_queue-> in_READ_QUEUE_IN_TYPE           )) (*(READ_QUEUE_IN_TYPE           ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE)) (*(READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE));
+  (*(_Read_queue-> in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE )) (*(READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ));
   (*(_Read_queue-> in_READ_QUEUE_IN_HAS_IMMEDIAT   )) (*(READ_QUEUE_IN_HAS_IMMEDIAT   ));
   (*(_Read_queue-> in_READ_QUEUE_IN_IMMEDIAT       )) (*(READ_QUEUE_IN_IMMEDIAT       ));
@@ -251,15 +257,17 @@
   (*(_Read_queue->out_READ_QUEUE_OUT_OPERATION     )) (*(READ_QUEUE_OUT_OPERATION     )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_TYPE          )) (*(READ_QUEUE_OUT_TYPE          )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE)) (*(READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE)); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE )) (*(READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_HAS_IMMEDIAT  )) (*(READ_QUEUE_OUT_HAS_IMMEDIAT  )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_IMMEDIAT      )) (*(READ_QUEUE_OUT_IMMEDIAT      )); 
-  (*(_Read_queue->out_READ_QUEUE_OUT_READ_RA       )) (*(READ_QUEUE_OUT_READ_RA       )); 
+//   (*(_Read_queue->out_READ_QUEUE_OUT_READ_RA       )) (*(READ_QUEUE_OUT_READ_RA       )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_NUM_REG_RA    )) (*(READ_QUEUE_OUT_NUM_REG_RA    )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_DATA_RA_VAL   )) (*(READ_QUEUE_OUT_DATA_RA_VAL   )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_DATA_RA       )) (*(READ_QUEUE_OUT_DATA_RA       )); 
-  (*(_Read_queue->out_READ_QUEUE_OUT_READ_RB       )) (*(READ_QUEUE_OUT_READ_RB       )); 
+//   (*(_Read_queue->out_READ_QUEUE_OUT_READ_RB       )) (*(READ_QUEUE_OUT_READ_RB       )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_NUM_REG_RB    )) (*(READ_QUEUE_OUT_NUM_REG_RB    )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_DATA_RB_VAL   )) (*(READ_QUEUE_OUT_DATA_RB_VAL   )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_DATA_RB       )) (*(READ_QUEUE_OUT_DATA_RB       )); 
-  (*(_Read_queue->out_READ_QUEUE_OUT_READ_RC       )) (*(READ_QUEUE_OUT_READ_RC       )); 
+//   (*(_Read_queue->out_READ_QUEUE_OUT_READ_RC       )) (*(READ_QUEUE_OUT_READ_RC       )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_NUM_REG_RC    )) (*(READ_QUEUE_OUT_NUM_REG_RC    )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_DATA_RC_VAL   )) (*(READ_QUEUE_OUT_DATA_RC_VAL   )); 
@@ -408,4 +416,6 @@
 	      READ_QUEUE_IN_OPERATION   ->write(0);
 	      READ_QUEUE_IN_TYPE        ->write(0);
+	      READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE->write(0);
+	      READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ->write(0);
 	      READ_QUEUE_IN_HAS_IMMEDIAT->write(0);
 	      READ_QUEUE_IN_IMMEDIAT    ->write(0);
@@ -535,20 +545,20 @@
 		TEST(Tcontext_t        ,READ_QUEUE_OUT_FRONT_END_ID  ->read(),(3*ctxt)%_param->_nb_front_end);
 
-	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RA    ->read(),_read_ra      [rob_id]);
+// 	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RA    ->read(),_read_ra      [rob_id]);
 	      TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RA ->read(),_num_reg_ra   [rob_id]);
-	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RA_VAL->read(),not READ_QUEUE_OUT_READ_RA->read() or _gpr_val [_num_reg_ra[rob_id]][ctxt]);
-	      if (READ_QUEUE_OUT_READ_RA    ->read() and
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RA_VAL->read(),not _read_ra [rob_id] or _gpr_val [_num_reg_ra[rob_id]][ctxt]);
+	      if (_read_ra [rob_id] and
 		  READ_QUEUE_OUT_DATA_RA_VAL->read())
 	      TEST(Tgeneral_data_t   ,READ_QUEUE_OUT_DATA_RA    ->read(),_gpr          [_num_reg_ra[rob_id]][ctxt]);
-	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RB    ->read(),_read_rb      [rob_id]);
+// 	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RB    ->read(),_read_rb      [rob_id]);
 	      TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RB ->read(),_num_reg_rb   [rob_id]);
-	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RB_VAL->read(),not READ_QUEUE_OUT_READ_RB->read() or _gpr_val [_num_reg_rb[rob_id]][ctxt]);
-	      if (READ_QUEUE_OUT_READ_RB    ->read() and
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RB_VAL->read(),not _read_rb [rob_id] or _gpr_val [_num_reg_rb[rob_id]][ctxt]);
+	      if (_read_rb [rob_id] and
 		  READ_QUEUE_OUT_DATA_RB_VAL->read())
 	      TEST(Tgeneral_data_t   ,READ_QUEUE_OUT_DATA_RB    ->read(),_gpr          [_num_reg_rb[rob_id]][ctxt]);
-	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RC    ->read(),_read_rc      [rob_id]);
+// 	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RC    ->read(),_read_rc      [rob_id]);
 	      TEST(Tspecial_address_t,READ_QUEUE_OUT_NUM_REG_RC ->read(),_num_reg_rc   [rob_id]);
-      	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RC_VAL->read(),not READ_QUEUE_OUT_READ_RC->read() or _spr_val [_num_reg_rc[rob_id]][ctxt]);
-	      if (READ_QUEUE_OUT_READ_RC    ->read() and
+      	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RC_VAL->read(),not _read_rc [rob_id] or _spr_val [_num_reg_rc[rob_id]][ctxt]);
+	      if (_read_rc [rob_id] and
 		  READ_QUEUE_OUT_DATA_RC_VAL->read())
 	      TEST(Tspecial_data_t   ,READ_QUEUE_OUT_DATA_RC    ->read(),_spr     [_num_reg_rc[rob_id]][ctxt]);
@@ -581,4 +591,6 @@
    delete    READ_QUEUE_IN_OPERATION    ;
    delete    READ_QUEUE_IN_TYPE         ;
+   delete    READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE;
+   delete    READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ;
    delete    READ_QUEUE_IN_HAS_IMMEDIAT ;
    delete    READ_QUEUE_IN_IMMEDIAT     ;
@@ -606,4 +618,6 @@
    delete    READ_QUEUE_OUT_OPERATION   ;
    delete    READ_QUEUE_OUT_TYPE        ;
+   delete    READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE;
+   delete    READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ;
    delete    READ_QUEUE_OUT_HAS_IMMEDIAT;
    delete    READ_QUEUE_OUT_IMMEDIAT    ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h	(revision 76)
@@ -41,4 +41,6 @@
   public : const uint32_t    _nb_gpr_write         ;
   public : const uint32_t    _nb_spr_write         ;
+  public : const uint32_t    _size_store_queue     ;
+  public : const uint32_t    _size_load_queue      ;
 
   public : const uint32_t    _nb_gpr_read          ;
@@ -73,5 +75,8 @@
 			uint32_t nb_type            ,
 			uint32_t nb_gpr_write       ,
-			uint32_t nb_spr_write       );
+			uint32_t nb_spr_write       ,
+			uint32_t size_store_queue   ,
+			uint32_t size_load_queue    );
+
   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h	(revision 76)
@@ -5,5 +5,5 @@
  * $Id$
  *
- * [ Description ]
+ * [ Description ]
  * 
  */
@@ -45,4 +45,6 @@
   public    : Toperation_t       _operation    ;
   public    : Ttype_t            _type         ;
+  public    : Tlsq_ptr_t         _store_queue_ptr_write;
+  public    : Tlsq_ptr_t         _load_queue_ptr_write;
   public    : Tcontrol_t         _has_immediat ;
   public    : Tgeneral_data_t    _immediat     ;
@@ -61,22 +63,24 @@
 				morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Tread_queue_entry_t & x)
     {
-      output_stream << " * _context_id    : " << toString(x._context_id   ) << std::endl
-		    << " * _front_end_id  : " << toString(x._front_end_id ) << std::endl
-		    << " * _ooo_engine_id : " << toString(x._ooo_engine_id) << std::endl
-		    << " * _rob_id        : " << toString(x._rob_id       ) << std::endl
-		    << " * _operation     : " << toString(x._operation    ) << std::endl
-		    << " * _type          : " << toString(x._type         ) << std::endl
-		    << " * _has_immediat  : " << toString(x._has_immediat ) << std::endl
-		    << " * _immediat      : " << toString(x._immediat     ) << std::endl
-		    << " * _read_ra       : " << toString(x._read_ra      ) << std::endl
-		    << " * _num_reg_ra    : " << toString(x._num_reg_ra   ) << std::endl
-		    << " * _read_rb       : " << toString(x._read_rb      ) << std::endl
-		    << " * _num_reg_rb    : " << toString(x._num_reg_rb   ) << std::endl
-		    << " * _read_rc       : " << toString(x._read_rc      ) << std::endl
-		    << " * _num_reg_rc    : " << toString(x._num_reg_rc   ) << std::endl
-		    << " * _write_rd      : " << toString(x._write_rd     ) << std::endl
-		    << " * _num_reg_rd    : " << toString(x._num_reg_rd   ) << std::endl
-		    << " * _write_re      : " << toString(x._write_re     ) << std::endl
-		    << " * _num_reg_re    : " << toString(x._num_reg_re   ) << std::endl;
+      output_stream << " * _context_id            : " << toString(x._context_id   ) << std::endl
+		    << " * _front_end_id          : " << toString(x._front_end_id ) << std::endl
+		    << " * _ooo_engine_id         : " << toString(x._ooo_engine_id) << std::endl
+		    << " * _rob_id                : " << toString(x._rob_id       ) << std::endl
+		    << " * _operation             : " << toString(x._operation    ) << std::endl
+		    << " * _type                  : " << toString(x._type         ) << std::endl
+		    << " * _store_queue_ptr_write : " << toString(x._store_queue_ptr_write) << std::endl
+		    << " * _load_queue_ptr_write  : " << toString(x._load_queue_ptr_write ) << std::endl
+		    << " * _has_immediat          : " << toString(x._has_immediat ) << std::endl
+		    << " * _immediat              : " << toString(x._immediat     ) << std::endl
+		    << " * _read_ra               : " << toString(x._read_ra      ) << std::endl
+		    << " * _num_reg_ra            : " << toString(x._num_reg_ra   ) << std::endl
+		    << " * _read_rb               : " << toString(x._read_rb      ) << std::endl
+		    << " * _num_reg_rb            : " << toString(x._num_reg_rb   ) << std::endl
+		    << " * _read_rc               : " << toString(x._read_rc      ) << std::endl
+		    << " * _num_reg_rc            : " << toString(x._num_reg_rc   ) << std::endl
+		    << " * _write_rd              : " << toString(x._write_rd     ) << std::endl
+		    << " * _num_reg_rd            : " << toString(x._num_reg_rd   ) << std::endl
+		    << " * _write_re              : " << toString(x._write_re     ) << std::endl
+		    << " * _num_reg_re            : " << toString(x._num_reg_re   ) << std::endl;
 
       return output_stream;
@@ -93,4 +97,6 @@
   public    : Toperation_t       _operation    ;
   public    : Ttype_t            _type         ;
+  public    : Tlsq_ptr_t         _store_queue_ptr_write;
+  public    : Tlsq_ptr_t         _load_queue_ptr_write;
   public    : Tcontrol_t         _has_immediat ;
   public    : Tgeneral_data_t    _immediat     ;
@@ -127,4 +133,6 @@
       _operation    = x._operation    ;
       _type         = x._type         ;
+      _store_queue_ptr_write = x._store_queue_ptr_write;
+      _load_queue_ptr_write  = x._load_queue_ptr_write ;
       _has_immediat = x._has_immediat ;
       _immediat     = x._immediat     ;
@@ -157,31 +165,33 @@
 				morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Tread_queue_head_entry_t & x)
     {
-      output_stream << " * _context_id    : " << x._context_id   << std::endl
-		    << " * _front_end_id  : " << x._front_end_id << std::endl
-		    << " * _ooo_engine_id : " << x._ooo_engine_id<< std::endl
-		    << " * _rob_id        : " << x._rob_id       << std::endl
-		    << " * _operation     : " << x._operation    << std::endl
-		    << " * _type          : " << x._type         << std::endl
-		    << " * _has_immediat  : " << x._has_immediat << std::endl
-		    << " * _immediat      : " << x._immediat     << std::endl
-		    << " * _read_ra       : " << x._read_ra      << std::endl
-		    << " * _read_ra_val   : " << x._read_ra_val  << std::endl 
-		    << " * _num_reg_ra    : " << x._num_reg_ra   << std::endl
-		    << " * _data_ra_val   : " << x._data_ra_val  << std::endl
-		    << " * _data_ra       : " << x._data_ra      << std::endl
-		    << " * _read_rb       : " << x._read_rb      << std::endl
-		    << " * _read_rb_val   : " << x._read_rb_val  << std::endl
-		    << " * _num_reg_rb    : " << x._num_reg_rb   << std::endl
-		    << " * _data_rb_val   : " << x._data_rb_val  << std::endl
-		    << " * _data_rb       : " << x._data_rb      << std::endl
-		    << " * _read_rc       : " << x._read_rc      << std::endl
-		    << " * _read_rc_val   : " << x._read_rc_val  << std::endl
-		    << " * _num_reg_rc    : " << x._num_reg_rc   << std::endl
-		    << " * _data_rc_val   : " << x._data_rc_val  << std::endl
-		    << " * _data_rc       : " << x._data_rc      << std::endl
-		    << " * _write_rd      : " << x._write_rd     << std::endl
-		    << " * _num_reg_rd    : " << x._num_reg_rd   << std::endl
-		    << " * _write_re      : " << x._write_re     << std::endl
-		    << " * _num_reg_re    : " << x._num_reg_re   << std::endl;
+      output_stream << " * _context_id            : " << x._context_id   << std::endl
+		    << " * _front_end_id          : " << x._front_end_id << std::endl
+		    << " * _ooo_engine_id         : " << x._ooo_engine_id<< std::endl
+		    << " * _rob_id                : " << x._rob_id       << std::endl
+		    << " * _operation             : " << x._operation    << std::endl
+		    << " * _type                  : " << x._type         << std::endl
+		    << " * _store_queue_ptr_write : " << toString(x._store_queue_ptr_write) << std::endl
+		    << " * _load_queue_ptr_write  : " << toString(x._load_queue_ptr_write ) << std::endl
+		    << " * _has_immediat          : " << x._has_immediat << std::endl
+		    << " * _immediat              : " << x._immediat     << std::endl
+		    << " * _read_ra               : " << x._read_ra      << std::endl
+		    << " * _read_ra_val           : " << x._read_ra_val  << std::endl 
+		    << " * _num_reg_ra            : " << x._num_reg_ra   << std::endl
+		    << " * _data_ra_val           : " << x._data_ra_val  << std::endl
+		    << " * _data_ra               : " << x._data_ra      << std::endl
+		    << " * _read_rb               : " << x._read_rb      << std::endl
+		    << " * _read_rb_val           : " << x._read_rb_val  << std::endl
+		    << " * _num_reg_rb            : " << x._num_reg_rb   << std::endl
+		    << " * _data_rb_val           : " << x._data_rb_val  << std::endl
+		    << " * _data_rb               : " << x._data_rb      << std::endl
+		    << " * _read_rc               : " << x._read_rc      << std::endl
+		    << " * _read_rc_val           : " << x._read_rc_val  << std::endl
+		    << " * _num_reg_rc            : " << x._num_reg_rc   << std::endl
+		    << " * _data_rc_val           : " << x._data_rc_val  << std::endl
+		    << " * _data_rc               : " << x._data_rc      << std::endl
+		    << " * _write_rd              : " << x._write_rd     << std::endl
+		    << " * _num_reg_rd            : " << x._num_reg_rd   << std::endl
+		    << " * _write_re              : " << x._write_re     << std::endl
+		    << " * _num_reg_re            : " << x._num_reg_re   << std::endl;
 
       return output_stream;
@@ -194,5 +204,5 @@
 #endif
   {
-    // -----[ fields ]----------------------------------------------------
+    // -----[ fields ]----------------------------------------------------
     // Parameters
   protected : const std::string                _name;
@@ -207,62 +217,66 @@
 
 #ifdef SYSTEMC
-    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Interface
   public    : SC_CLOCK                      *  in_CLOCK               ;
   public    : SC_IN (Tcontrol_t        )    *  in_NRESET              ;
 
-    // ~~~~~[ Interface "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_VAL          ;
-  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_IN_ACK          ;
-  public    : SC_IN (Tcontext_t        )    *  in_READ_QUEUE_IN_CONTEXT_ID   ;
-  public    : SC_IN (Tcontext_t        )    *  in_READ_QUEUE_IN_FRONT_END_ID ;
-  public    : SC_IN (Tcontext_t        )    *  in_READ_QUEUE_IN_OOO_ENGINE_ID;
-  public    : SC_IN (Tpacket_t         )    *  in_READ_QUEUE_IN_ROB_ID       ;
-  public    : SC_IN (Toperation_t      )    *  in_READ_QUEUE_IN_OPERATION    ;
-  public    : SC_IN (Ttype_t           )    *  in_READ_QUEUE_IN_TYPE         ;
-  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_HAS_IMMEDIAT ;
-  public    : SC_IN (Tgeneral_data_t   )    *  in_READ_QUEUE_IN_IMMEDIAT     ;
-  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_READ_RA      ;
-  public    : SC_IN (Tgeneral_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RA   ;
-  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_READ_RB      ;
-  public    : SC_IN (Tgeneral_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RB   ;
-  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_READ_RC      ;
-  public    : SC_IN (Tspecial_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RC   ;
-  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_WRITE_RD     ;
-  public    : SC_IN (Tgeneral_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RD   ;
-  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_WRITE_RE     ;
-  public    : SC_IN (Tspecial_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RE   ;
-
-    // ~~~~~[ Interface "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_VAL         ;
-  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_OUT_ACK         ;
-  public    : SC_OUT(Tcontext_t        )    * out_READ_QUEUE_OUT_CONTEXT_ID   ;
-  public    : SC_OUT(Tcontext_t        )    * out_READ_QUEUE_OUT_FRONT_END_ID ;
-  public    : SC_OUT(Tcontext_t        )    * out_READ_QUEUE_OUT_OOO_ENGINE_ID;
-  public    : SC_OUT(Tpacket_t         )    * out_READ_QUEUE_OUT_ROB_ID       ;
-  public    : SC_OUT(Toperation_t      )    * out_READ_QUEUE_OUT_OPERATION   ;
-  public    : SC_OUT(Ttype_t           )    * out_READ_QUEUE_OUT_TYPE        ;
-  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_HAS_IMMEDIAT;
-  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_IMMEDIAT    ;
-  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RA     ;
-  public    : SC_OUT(Tgeneral_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RA  ;
-  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RA_VAL ;
-  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_DATA_RA     ;
-  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RB     ;
-  public    : SC_OUT(Tgeneral_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RB  ;
-  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RB_VAL ;
-  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_DATA_RB     ;
-  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RC     ;
-  public    : SC_OUT(Tspecial_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RC  ;
-  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RC_VAL ;
-  public    : SC_OUT(Tspecial_data_t   )    * out_READ_QUEUE_OUT_DATA_RC     ;
-  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_WRITE_RD    ;
-  public    : SC_OUT(Tgeneral_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RD  ;
-  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_WRITE_RE    ;
-  public    : SC_OUT(Tspecial_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RE  ;
-
-    // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_VAL                  ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_IN_ACK                  ;
+  public    : SC_IN (Tcontext_t        )    *  in_READ_QUEUE_IN_CONTEXT_ID           ;
+  public    : SC_IN (Tcontext_t        )    *  in_READ_QUEUE_IN_FRONT_END_ID         ;
+  public    : SC_IN (Tcontext_t        )    *  in_READ_QUEUE_IN_OOO_ENGINE_ID        ;
+  public    : SC_IN (Tpacket_t         )    *  in_READ_QUEUE_IN_ROB_ID               ;
+  public    : SC_IN (Toperation_t      )    *  in_READ_QUEUE_IN_OPERATION            ;
+  public    : SC_IN (Ttype_t           )    *  in_READ_QUEUE_IN_TYPE                 ;
+  public    : SC_IN (Tlsq_ptr_t        )    *  in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE;
+  public    : SC_IN (Tlsq_ptr_t        )    *  in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_HAS_IMMEDIAT         ;
+  public    : SC_IN (Tgeneral_data_t   )    *  in_READ_QUEUE_IN_IMMEDIAT             ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_READ_RA              ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RA           ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_READ_RB              ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RB           ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_READ_RC              ;
+  public    : SC_IN (Tspecial_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RC           ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_WRITE_RD             ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RD           ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_WRITE_RE             ;
+  public    : SC_IN (Tspecial_address_t)    *  in_READ_QUEUE_IN_NUM_REG_RE           ;
+
+    // ~~~~~[ Interface "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_VAL                  ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_OUT_ACK                  ;
+  public    : SC_OUT(Tcontext_t        )    * out_READ_QUEUE_OUT_CONTEXT_ID           ;
+  public    : SC_OUT(Tcontext_t        )    * out_READ_QUEUE_OUT_FRONT_END_ID         ;
+  public    : SC_OUT(Tcontext_t        )    * out_READ_QUEUE_OUT_OOO_ENGINE_ID        ;
+  public    : SC_OUT(Tpacket_t         )    * out_READ_QUEUE_OUT_ROB_ID               ;
+  public    : SC_OUT(Toperation_t      )    * out_READ_QUEUE_OUT_OPERATION            ;
+  public    : SC_OUT(Ttype_t           )    * out_READ_QUEUE_OUT_TYPE                 ;
+  public    : SC_OUT(Tlsq_ptr_t        )    * out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE;
+  public    : SC_OUT(Tlsq_ptr_t        )    * out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_HAS_IMMEDIAT         ;
+  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_IMMEDIAT             ;
+//   public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RA              ;
+  public    : SC_OUT(Tgeneral_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RA           ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RA_VAL          ;
+  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_DATA_RA              ;
+//   public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RB              ;
+  public    : SC_OUT(Tgeneral_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RB           ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RB_VAL          ;
+  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_DATA_RB              ;
+//   public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RC              ;
+  public    : SC_OUT(Tspecial_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RC           ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RC_VAL          ;
+  public    : SC_OUT(Tspecial_data_t   )    * out_READ_QUEUE_OUT_DATA_RC              ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_WRITE_RD             ;
+  public    : SC_OUT(Tgeneral_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RD           ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_WRITE_RE             ;
+  public    : SC_OUT(Tspecial_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RE           ;
+
+    // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   public    : SC_OUT(Tcontrol_t        )   ** out_GPR_READ_VAL          ;
@@ -273,5 +287,5 @@
   public    : SC_IN (Tcontrol_t        )   **  in_GPR_READ_DATA_VAL     ;
 
-    // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   public    : SC_OUT(Tcontrol_t        )   ** out_SPR_READ_VAL          ;
@@ -282,5 +296,5 @@
   public    : SC_IN (Tcontrol_t        )   **  in_SPR_READ_DATA_VAL     ;
 
-    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   public    : SC_IN (Tcontrol_t        )   **  in_GPR_WRITE_VAL          ;
@@ -289,5 +303,5 @@
   public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_WRITE_DATA         ;
 
-    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   public    : SC_IN (Tcontrol_t        )   **  in_SPR_WRITE_VAL          ;
@@ -296,11 +310,11 @@
   public    : SC_IN (Tspecial_data_t   )   **  in_SPR_WRITE_DATA         ;
 
-    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-
-    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
   protected : Tread_queue_head_entry_t       * _queue_head;
   protected : std::queue<Tread_queue_entry_t *>   * _queue;
 
-    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   
   protected  :Tcontrol_t                       internal_READ_QUEUE_OUT_VAL         ;
@@ -317,5 +331,5 @@
 #endif
 
-    // -----[ methods ]---------------------------------------------------
+    // -----[ methods ]---------------------------------------------------
 
 #ifdef SYSTEMC
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp	(revision 76)
@@ -30,5 +30,7 @@
 			  uint32_t nb_type            ,
 			  uint32_t nb_gpr_write       ,
-			  uint32_t nb_spr_write       ):
+			  uint32_t nb_spr_write       ,
+			  uint32_t size_store_queue   ,
+			  uint32_t size_load_queue    ):
     _size_queue            (size_queue           ),
     _nb_context            (nb_context           ),
@@ -44,4 +46,6 @@
     _nb_gpr_write          (nb_gpr_write         ),
     _nb_spr_write          (nb_spr_write         ),
+    _size_store_queue      (size_store_queue     ),
+    _size_load_queue       (size_load_queue      ),
 
     _nb_gpr_read           (2                    ),
@@ -67,4 +71,6 @@
 			      + _size_operation        //_operation    
 			      + _size_type             //_type         
+			      + log2(_size_store_queue)//_store_queue_ptr_write
+			      + log2(_size_load_queue )//_load_queue_ptr_write 
 			      + 1                      //_has_immediat 
 			      + _size_general_data     //_immediat     
@@ -102,4 +108,6 @@
     _nb_gpr_write          (param._nb_gpr_write          ),
     _nb_spr_write          (param._nb_spr_write          ),
+    _size_store_queue      (param._size_store_queue      ),
+    _size_load_queue       (param._size_load_queue       ),
 
     _nb_gpr_read           (param._nb_gpr_read           ),
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp	(revision 76)
@@ -39,4 +39,7 @@
     xml.singleton_begin("nb_gpr_write       "); xml.attribut("value",toString(_nb_gpr_write       )); xml.singleton_end();
     xml.singleton_begin("nb_spr_write       "); xml.attribut("value",toString(_nb_spr_write       )); xml.singleton_end();
+    xml.singleton_begin("size_store_queue   "); xml.attribut("value",toString(_size_store_queue   )); xml.singleton_end();
+    xml.singleton_begin("size_load_queue    "); xml.attribut("value",toString(_size_load_queue    )); xml.singleton_end();
+
     xml.balise_close();
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp	(revision 76)
@@ -70,4 +70,6 @@
        in_READ_QUEUE_IN_OPERATION      = interface->set_signal_in  <Toperation_t      > ("operation"   ,_param->_size_operation        );
        in_READ_QUEUE_IN_TYPE           = interface->set_signal_in  <Ttype_t           > ("type"        ,_param->_size_type             );
+       in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in  <Tlsq_ptr_t> ("store_queue_ptr_write", log2(_param->_size_store_queue));
+       in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in  <Tlsq_ptr_t> ("load_queue_ptr_write" , log2(_param->_size_load_queue ));
        in_READ_QUEUE_IN_HAS_IMMEDIAT   = interface->set_signal_in  <Tcontrol_t        > ("has_immediat",1                             );
        in_READ_QUEUE_IN_IMMEDIAT       = interface->set_signal_in  <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
@@ -107,15 +109,17 @@
       out_READ_QUEUE_OUT_OPERATION      = interface->set_signal_out <Toperation_t      > ("operation"   ,_param->_size_operation        );
       out_READ_QUEUE_OUT_TYPE           = interface->set_signal_out <Ttype_t           > ("type"        ,_param->_size_type             );
+      out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("store_queue_ptr_write", log2(_param->_size_store_queue));
+      out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_out <Tlsq_ptr_t> ("load_queue_ptr_write" , log2(_param->_size_load_queue ));
       out_READ_QUEUE_OUT_HAS_IMMEDIAT   = interface->set_signal_out <Tcontrol_t        > ("has_immediat",1                             );
       out_READ_QUEUE_OUT_IMMEDIAT       = interface->set_signal_out <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
-      out_READ_QUEUE_OUT_READ_RA        = interface->set_signal_out <Tcontrol_t        > ("read_ra"     ,1                             );
+//       out_READ_QUEUE_OUT_READ_RA        = interface->set_signal_out <Tcontrol_t        > ("read_ra"     ,1                             );
       out_READ_QUEUE_OUT_NUM_REG_RA     = interface->set_signal_out <Tgeneral_address_t> ("num_reg_ra"  ,_param->_size_general_register );
       out_READ_QUEUE_OUT_DATA_RA_VAL    = interface->set_signal_out <Tcontrol_t        > ("data_ra_val" ,1                             );
       out_READ_QUEUE_OUT_DATA_RA        = interface->set_signal_out <Tgeneral_data_t   > ("data_ra"     ,_param->_size_general_data     );
-      out_READ_QUEUE_OUT_READ_RB        = interface->set_signal_out <Tcontrol_t        > ("read_rb"     ,1                             );
+//       out_READ_QUEUE_OUT_READ_RB        = interface->set_signal_out <Tcontrol_t        > ("read_rb"     ,1                             );
       out_READ_QUEUE_OUT_NUM_REG_RB     = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rb"  ,_param->_size_general_register );
       out_READ_QUEUE_OUT_DATA_RB_VAL    = interface->set_signal_out <Tcontrol_t        > ("data_rb_val" ,1                             );
       out_READ_QUEUE_OUT_DATA_RB        = interface->set_signal_out <Tgeneral_data_t   > ("data_rb"     ,_param->_size_general_data     );
-      out_READ_QUEUE_OUT_READ_RC        = interface->set_signal_out <Tcontrol_t        > ("read_rc"     ,1                             );
+//       out_READ_QUEUE_OUT_READ_RC        = interface->set_signal_out <Tcontrol_t        > ("read_rc"     ,1                             );
       out_READ_QUEUE_OUT_NUM_REG_RC     = interface->set_signal_out <Tspecial_address_t> ("num_reg_rc"  ,_param->_size_special_register );
       out_READ_QUEUE_OUT_DATA_RC_VAL    = interface->set_signal_out <Tcontrol_t        > ("data_rc_val" ,1                             );
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp	(revision 76)
@@ -41,4 +41,6 @@
     delete     in_READ_QUEUE_IN_OPERATION      ;
     delete     in_READ_QUEUE_IN_TYPE           ;
+    delete     in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE;
+    delete     in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ;
     delete     in_READ_QUEUE_IN_HAS_IMMEDIAT   ;
     delete     in_READ_QUEUE_IN_IMMEDIAT       ;
@@ -68,15 +70,17 @@
     delete    out_READ_QUEUE_OUT_OPERATION      ;
     delete    out_READ_QUEUE_OUT_TYPE           ;
+    delete    out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE;
+    delete    out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ;
     delete    out_READ_QUEUE_OUT_HAS_IMMEDIAT   ;
     delete    out_READ_QUEUE_OUT_IMMEDIAT       ;
-    delete    out_READ_QUEUE_OUT_READ_RA        ;
+//     delete    out_READ_QUEUE_OUT_READ_RA        ;
     delete    out_READ_QUEUE_OUT_NUM_REG_RA     ;
     delete    out_READ_QUEUE_OUT_DATA_RA_VAL    ;
     delete    out_READ_QUEUE_OUT_DATA_RA        ;
-    delete    out_READ_QUEUE_OUT_READ_RB        ;
+//     delete    out_READ_QUEUE_OUT_READ_RB        ;
     delete    out_READ_QUEUE_OUT_NUM_REG_RB     ;
     delete    out_READ_QUEUE_OUT_DATA_RB_VAL    ;
     delete    out_READ_QUEUE_OUT_DATA_RB        ;
-    delete    out_READ_QUEUE_OUT_READ_RC        ;
+//     delete    out_READ_QUEUE_OUT_READ_RC        ;
     delete    out_READ_QUEUE_OUT_NUM_REG_RC     ;
     delete    out_READ_QUEUE_OUT_DATA_RC_VAL    ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp	(revision 76)
@@ -43,15 +43,17 @@
     PORT_WRITE (out_READ_QUEUE_OUT_OPERATION   , _queue_head->_operation   );
     PORT_WRITE (out_READ_QUEUE_OUT_TYPE        , _queue_head->_type        );
+    PORT_WRITE (out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE, _queue_head->_store_queue_ptr_write);
+    PORT_WRITE (out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE , _queue_head->_load_queue_ptr_write );
     PORT_WRITE (out_READ_QUEUE_OUT_HAS_IMMEDIAT, _queue_head->_has_immediat);
     PORT_WRITE (out_READ_QUEUE_OUT_IMMEDIAT    , _queue_head->_immediat    );
-    PORT_WRITE (out_READ_QUEUE_OUT_READ_RA     , _queue_head->_read_ra     );
+//     PORT_WRITE (out_READ_QUEUE_OUT_READ_RA     , _queue_head->_read_ra     );
     PORT_WRITE (out_READ_QUEUE_OUT_NUM_REG_RA  , _queue_head->_num_reg_ra  );
 //  PORT_WRITE (out_READ_QUEUE_OUT_DATA_RA_VAL , _queue_head->_data_ra_val ); // in genMealy_gpr
 //  PORT_WRITE (out_READ_QUEUE_OUT_DATA_RA     , _queue_head->_data_ra     ); // in genMealy_gpr
-    PORT_WRITE (out_READ_QUEUE_OUT_READ_RB     , _queue_head->_read_rb     );
+//     PORT_WRITE (out_READ_QUEUE_OUT_READ_RB     , _queue_head->_read_rb     );
     PORT_WRITE (out_READ_QUEUE_OUT_NUM_REG_RB  , _queue_head->_num_reg_rb  );
 //  PORT_WRITE (out_READ_QUEUE_OUT_DATA_RB_VAL , _queue_head->_data_rb_val ); // in genMealy_gpr
 //  PORT_WRITE (out_READ_QUEUE_OUT_DATA_RB     , _queue_head->_data_rb     ); // in genMealy_gpr
-    PORT_WRITE (out_READ_QUEUE_OUT_READ_RC     , _queue_head->_read_rc     );
+//     PORT_WRITE (out_READ_QUEUE_OUT_READ_RC     , _queue_head->_read_rc     );
     PORT_WRITE (out_READ_QUEUE_OUT_NUM_REG_RC  , _queue_head->_num_reg_rc  );
 //  PORT_WRITE (out_READ_QUEUE_OUT_DATA_RC_VAL , _queue_head->_data_rc_val ); // in genMealy_spr
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp	(revision 76)
@@ -66,4 +66,6 @@
 	    entry->_operation    = PORT_READ(in_READ_QUEUE_IN_OPERATION   );
 	    entry->_type         = PORT_READ(in_READ_QUEUE_IN_TYPE        );
+	    entry->_store_queue_ptr_write = PORT_READ(in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE);
+	    entry->_load_queue_ptr_write  = PORT_READ(in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE );
 	    entry->_has_immediat = PORT_READ(in_READ_QUEUE_IN_HAS_IMMEDIAT);
 	    entry->_immediat     = PORT_READ(in_READ_QUEUE_IN_IMMEDIAT    );
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_memory.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_memory.cfg	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_memory.cfg	(revision 76)
@@ -16,2 +16,4 @@
 0	0	*2	# nb_bypass_write 
 1	4	*2	# nb_bypass_memory
+4	4	*2	# size_store_queue
+4	4	*2	# size_load_queue 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_write.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_write.cfg	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_write.cfg	(revision 76)
@@ -16,2 +16,4 @@
 1	4	*2	# nb_bypass_write 
 0	0	*2	# nb_bypass_memory
+4	4	*2	# size_store_queue
+4	4	*2	# size_load_queue 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire2.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire2.cfg	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire2.cfg	(revision 76)
@@ -16,2 +16,4 @@
 0	0	*2	# nb_bypass_write 
 0	0	*2	# nb_bypass_memory
+4	4	*2	# size_store_queue
+4	4	*2	# size_load_queue 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire4.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire4.cfg	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire4.cfg	(revision 76)
@@ -16,2 +16,4 @@
 0	0	*2	# nb_bypass_write 
 0	0	*2	# nb_bypass_memory
+4	4	*2	# size_store_queue
+4	4	*2	# size_load_queue 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_write.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_write.cfg	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_write.cfg	(revision 76)
@@ -16,2 +16,4 @@
 0	0	*2	# nb_bypass_write 
 0	0	*2	# nb_bypass_memory
+4	4	*2	# size_store_queue
+4	4	*2	# size_load_queue 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/main.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/main.cpp	(revision 76)
@@ -8,5 +8,5 @@
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h"
 
-#define NB_PARAMS 16
+#define NB_PARAMS 18
 
 void usage (int argc, char * argv[])
@@ -30,4 +30,6 @@
        << " - nb_bypass_write     (unsigned int)" << endl
        << " - nb_bypass_memory    (unsigned int)" << endl
+       << " - size_store_queue    (unsigned int)" << endl
+       << " - size_load_queue     (unsigned int)" << endl
        << "" << endl;
 
@@ -66,4 +68,6 @@
   const uint32_t nb_bypass_write     = atoi(argv[x++]);
   const uint32_t nb_bypass_memory    = atoi(argv[x++]);
+  const uint32_t size_store_queue    = atoi(argv[x++]);
+  const uint32_t size_load_queue     = atoi(argv[x++]);
   
   try 
@@ -86,4 +90,6 @@
 	 ,nb_bypass_write 
 	 ,nb_bypass_memory
+	 ,size_store_queue
+	 ,size_load_queue 
 	 );
       
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp	(revision 76)
@@ -73,4 +73,6 @@
   sc_signal<Toperation_t      > *  in_INSERT_OPERATION      = new sc_signal<Toperation_t      >;
   sc_signal<Ttype_t           > *  in_INSERT_TYPE           = new sc_signal<Ttype_t           >;
+  sc_signal<Tlsq_ptr_t        > *  in_INSERT_STORE_QUEUE_PTR_WRITE = new sc_signal<Tlsq_ptr_t>;
+  sc_signal<Tlsq_ptr_t        > *  in_INSERT_LOAD_QUEUE_PTR_WRITE  = new sc_signal<Tlsq_ptr_t>;
   sc_signal<Tcontrol_t        > *  in_INSERT_HAS_IMMEDIAT   = new sc_signal<Tcontrol_t        >;
   sc_signal<Tgeneral_data_t   > *  in_INSERT_IMMEDIAT       = new sc_signal<Tgeneral_data_t   >;
@@ -100,4 +102,6 @@
   sc_signal<Toperation_t      > ** out_RETIRE_OPERATION      = new sc_signal<Toperation_t      > * [_param->_nb_inst_retire];
   sc_signal<Ttype_t           > ** out_RETIRE_TYPE           = new sc_signal<Ttype_t           > * [_param->_nb_inst_retire];
+  sc_signal<Tlsq_ptr_t        > ** out_RETIRE_STORE_QUEUE_PTR_WRITE = new sc_signal<Tlsq_ptr_t> * [_param->_nb_inst_retire];
+  sc_signal<Tlsq_ptr_t        > ** out_RETIRE_LOAD_QUEUE_PTR_WRITE  = new sc_signal<Tlsq_ptr_t> * [_param->_nb_inst_retire];
   sc_signal<Tcontrol_t        > ** out_RETIRE_HAS_IMMEDIAT   = new sc_signal<Tcontrol_t        > * [_param->_nb_inst_retire];
   sc_signal<Tgeneral_data_t   > ** out_RETIRE_IMMEDIAT       = new sc_signal<Tgeneral_data_t   > * [_param->_nb_inst_retire];
@@ -120,4 +124,6 @@
       out_RETIRE_OPERATION       [i] = new sc_signal<Toperation_t      > (rename.c_str());
       out_RETIRE_TYPE            [i] = new sc_signal<Ttype_t           > (rename.c_str());
+      out_RETIRE_STORE_QUEUE_PTR_WRITE [i] = new sc_signal<Tlsq_ptr_t> (rename.c_str());
+      out_RETIRE_LOAD_QUEUE_PTR_WRITE  [i] = new sc_signal<Tlsq_ptr_t> (rename.c_str());
       out_RETIRE_HAS_IMMEDIAT    [i] = new sc_signal<Tcontrol_t        > (rename.c_str());
       out_RETIRE_IMMEDIAT        [i] = new sc_signal<Tgeneral_data_t   > (rename.c_str());
@@ -209,4 +215,6 @@
   (*(_Reservation_station-> in_INSERT_OPERATION        )) (*( in_INSERT_OPERATION        ));
   (*(_Reservation_station-> in_INSERT_TYPE             )) (*( in_INSERT_TYPE             ));
+  (*(_Reservation_station-> in_INSERT_STORE_QUEUE_PTR_WRITE)) (*( in_INSERT_STORE_QUEUE_PTR_WRITE));
+  (*(_Reservation_station-> in_INSERT_LOAD_QUEUE_PTR_WRITE )) (*( in_INSERT_LOAD_QUEUE_PTR_WRITE ));
   (*(_Reservation_station-> in_INSERT_HAS_IMMEDIAT     )) (*( in_INSERT_HAS_IMMEDIAT     ));
   (*(_Reservation_station-> in_INSERT_IMMEDIAT         )) (*( in_INSERT_IMMEDIAT         ));
@@ -242,4 +250,6 @@
   (*(_Reservation_station->out_RETIRE_OPERATION      [i])) (*(out_RETIRE_OPERATION      [i]));
   (*(_Reservation_station->out_RETIRE_TYPE           [i])) (*(out_RETIRE_TYPE           [i]));
+  (*(_Reservation_station->out_RETIRE_STORE_QUEUE_PTR_WRITE [i])) (*(out_RETIRE_STORE_QUEUE_PTR_WRITE [i]));
+  (*(_Reservation_station->out_RETIRE_LOAD_QUEUE_PTR_WRITE  [i])) (*(out_RETIRE_LOAD_QUEUE_PTR_WRITE  [i]));
   (*(_Reservation_station->out_RETIRE_HAS_IMMEDIAT   [i])) (*(out_RETIRE_HAS_IMMEDIAT   [i]));
   (*(_Reservation_station->out_RETIRE_IMMEDIAT       [i])) (*(out_RETIRE_IMMEDIAT       [i]));
@@ -435,4 +445,6 @@
    	      in_INSERT_OPERATION   ->write(0);
    	      in_INSERT_TYPE        ->write(0);
+   	      in_INSERT_STORE_QUEUE_PTR_WRITE->write(0);
+   	      in_INSERT_LOAD_QUEUE_PTR_WRITE ->write(0);
    	      in_INSERT_HAS_IMMEDIAT->write(0);
    	      in_INSERT_IMMEDIAT    ->write(0);
@@ -679,4 +691,6 @@
   delete     in_INSERT_OPERATION   ;
   delete     in_INSERT_TYPE        ;
+  delete     in_INSERT_STORE_QUEUE_PTR_WRITE;
+  delete     in_INSERT_LOAD_QUEUE_PTR_WRITE ;
   delete     in_INSERT_HAS_IMMEDIAT;
   delete     in_INSERT_IMMEDIAT    ;
@@ -710,4 +724,6 @@
   delete [] out_RETIRE_OPERATION   ;
   delete [] out_RETIRE_TYPE        ;
+  delete [] out_RETIRE_STORE_QUEUE_PTR_WRITE;
+  delete [] out_RETIRE_LOAD_QUEUE_PTR_WRITE ;
   delete [] out_RETIRE_HAS_IMMEDIAT;
   delete [] out_RETIRE_IMMEDIAT    ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h	(revision 76)
@@ -42,4 +42,7 @@
   public : const uint32_t    _nb_bypass_write      ;//if nb_bypass=0, then bypass is desactivated
   public : const uint32_t    _nb_bypass_memory     ;//if nb_bypass=0, then bypass is desactivated
+  public : const uint32_t    _size_store_queue     ;
+  public : const uint32_t    _size_load_queue      ;
+
     /*
   public : const bool        _have_immediat        ;
@@ -80,5 +83,7 @@
 			uint32_t nb_spr_write       ,
 			uint32_t nb_bypass_write    ,
-			uint32_t nb_bypass_memory   );
+			uint32_t nb_bypass_memory   ,
+			uint32_t size_store_queue   ,
+			uint32_t size_load_queue    );
 
   public : Parameters  (Parameters & param) ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h	(revision 76)
@@ -5,5 +5,5 @@
  * $Id$
  *
- * [ Description ]
+ * [ Description ]
  * 
  */
@@ -47,4 +47,6 @@
   public    : Toperation_t       _operation   ;
   public    : Ttype_t            _type        ;
+  public    : Tlsq_ptr_t         _store_queue_ptr_write;
+  public    : Tlsq_ptr_t         _load_queue_ptr_write ;
   public    : Tcontrol_t         _has_immediat;
   public    : Tgeneral_data_t    _immediat    ;
@@ -69,32 +71,33 @@
 				morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Treservation_station_entry_t & x)
     {
-      output_stream << " * _context_id     : " << toString(x._context_id     ) << std::endl
-		    << " * _front_end_id   : " << toString(x._front_end_id   ) << std::endl
-		    << " * _ooo_engine_id  : " << toString(x._ooo_engine_id  ) << std::endl
-		    << " * _rob_id         : " << toString(x._rob_id         ) << std::endl
-		    << " * _operation      : " << toString(x._operation      ) << std::endl
-		    << " * _type           : " << toString(x._type           ) << std::endl
-		    << " * _has_immediat   : " << toString(x._has_immediat   ) << std::endl
-		    << " * _immediat       : " << toString(x._immediat       ) << std::endl
-// 		    << " * _read_ra        : " << toString(x._read_ra        ) << std::endl
-		    << " * _num_reg_ra     : " << toString(x._num_reg_ra     ) << std::endl
-		    << " * _data_ra_val    : " << toString(x._data_ra_val    ) << std::endl
-		    << " * _data_ra        : " << toString(x._data_ra        ) << std::endl
-// 		    << " * _read_rb        : " << toString(x._read_rb        ) << std::endl
-		    << " * _num_reg_rb     : " << toString(x._num_reg_rb     ) << std::endl
-		    << " * _data_rb_val    : " << toString(x._data_rb_val    ) << std::endl
-		    << " * _data_rb        : " << toString(x._data_rb        ) << std::endl
-// 		    << " * _read_rc        : " << toString(x._read_rc        ) << std::endl
-		    << " * _num_reg_rc     : " << toString(x._num_reg_rc     ) << std::endl
-		    << " * _data_rc_val    : " << toString(x._data_rc_val    ) << std::endl
-		    << " * _data_rc        : " << toString(x._data_rc        ) << std::endl
-		    << " * _write_rd       : " << toString(x._write_rd       ) << std::endl
-		    << " * _num_reg_rd     : " << toString(x._num_reg_rd     ) << std::endl
-		    << " * _write_re       : " << toString(x._write_re       ) << std::endl
-		    << " * _num_reg_re     : " << toString(x._num_reg_re     ) << std::endl;
+      output_stream << " * _context_id            : " << toString(x._context_id     ) << std::endl
+		    << " * _front_end_id          : " << toString(x._front_end_id   ) << std::endl
+		    << " * _ooo_engine_id         : " << toString(x._ooo_engine_id  ) << std::endl
+		    << " * _rob_id                : " << toString(x._rob_id         ) << std::endl
+		    << " * _operation             : " << toString(x._operation      ) << std::endl
+		    << " * _type                  : " << toString(x._type           ) << std::endl
+		    << " * _store_queue_ptr_write : " << toString(x._store_queue_ptr_write) << std::endl
+		    << " * _load_queue_ptr_write  : " << toString(x._load_queue_ptr_write ) << std::endl
+		    << " * _has_immediat          : " << toString(x._has_immediat   ) << std::endl
+		    << " * _immediat              : " << toString(x._immediat       ) << std::endl
+// 		    << " * _read_ra               : " << toString(x._read_ra        ) << std::endl
+		    << " * _num_reg_ra            : " << toString(x._num_reg_ra     ) << std::endl
+		    << " * _data_ra_val           : " << toString(x._data_ra_val    ) << std::endl
+		    << " * _data_ra               : " << toString(x._data_ra        ) << std::endl
+// 		    << " * _read_rb               : " << toString(x._read_rb        ) << std::endl
+		    << " * _num_reg_rb            : " << toString(x._num_reg_rb     ) << std::endl
+		    << " * _data_rb_val           : " << toString(x._data_rb_val    ) << std::endl
+		    << " * _data_rb               : " << toString(x._data_rb        ) << std::endl
+// 		    << " * _read_rc               : " << toString(x._read_rc        ) << std::endl
+		    << " * _num_reg_rc            : " << toString(x._num_reg_rc     ) << std::endl
+		    << " * _data_rc_val           : " << toString(x._data_rc_val    ) << std::endl
+		    << " * _data_rc               : " << toString(x._data_rc        ) << std::endl
+		    << " * _write_rd              : " << toString(x._write_rd       ) << std::endl
+		    << " * _num_reg_rd            : " << toString(x._num_reg_rd     ) << std::endl
+		    << " * _write_re              : " << toString(x._write_re       ) << std::endl
+		    << " * _num_reg_re            : " << toString(x._num_reg_re     ) << std::endl;
 
       return output_stream;
     }
-
   };
 
@@ -104,5 +107,5 @@
 #endif
   {
-    // -----[ fields ]----------------------------------------------------
+    // -----[ fields ]----------------------------------------------------
     // Parameters
   protected : const std::string       _name;
@@ -118,10 +121,10 @@
 
 #ifdef SYSTEMC
-    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Interface
   public    : SC_CLOCK                      *  in_CLOCK        ;
   public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
 
-    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~
   public    : SC_IN (Tcontrol_t        )    *  in_INSERT_VAL            ;
   public    : SC_OUT(Tcontrol_t        )    * out_INSERT_ACK            ;
@@ -132,4 +135,6 @@
   public    : SC_IN (Toperation_t      )    *  in_INSERT_OPERATION      ;
   public    : SC_IN (Ttype_t           )    *  in_INSERT_TYPE           ;
+  public    : SC_IN (Tlsq_ptr_t        )    *  in_INSERT_STORE_QUEUE_PTR_WRITE;
+  public    : SC_IN (Tlsq_ptr_t        )    *  in_INSERT_LOAD_QUEUE_PTR_WRITE ;
   public    : SC_IN (Tcontrol_t        )    *  in_INSERT_HAS_IMMEDIAT   ;
   public    : SC_IN (Tgeneral_data_t   )    *  in_INSERT_IMMEDIAT       ;
@@ -151,5 +156,5 @@
   public    : SC_IN (Tspecial_address_t)    *  in_INSERT_NUM_REG_RE     ;
 
-    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~
   public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_VAL            ;
   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_ACK            ;
@@ -160,4 +165,6 @@
   public    : SC_OUT(Toperation_t      )   ** out_RETIRE_OPERATION      ;
   public    : SC_OUT(Ttype_t           )   ** out_RETIRE_TYPE           ;
+  public    : SC_OUT(Tlsq_ptr_t        )   ** out_RETIRE_STORE_QUEUE_PTR_WRITE;
+  public    : SC_OUT(Tlsq_ptr_t        )   ** out_RETIRE_LOAD_QUEUE_PTR_WRITE ;
   public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_HAS_IMMEDIAT   ;
   public    : SC_OUT(Tgeneral_data_t   )   ** out_RETIRE_IMMEDIAT       ;
@@ -170,5 +177,5 @@
   public    : SC_OUT(Tspecial_address_t)   ** out_RETIRE_NUM_REG_RE     ;
 
-    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   public    : SC_IN (Tcontrol_t        )   **  in_GPR_WRITE_VAL          ; // val and ack
@@ -177,5 +184,5 @@
   public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_WRITE_DATA         ;
 
-    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   public    : SC_IN (Tcontrol_t        )   **  in_SPR_WRITE_VAL          ; // val and ack
@@ -184,5 +191,5 @@
   public    : SC_IN (Tspecial_data_t   )   **  in_SPR_WRITE_DATA         ;
 
-    // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   public    : SC_IN (Tcontext_t        )   **  in_BYPASS_WRITE_OOO_ENGINE_ID ;
@@ -194,5 +201,5 @@
   public    : SC_IN (Tspecial_data_t   )   **  in_BYPASS_WRITE_SPR_DATA      ;
 
-    // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_MEMORY_VAL          ;
@@ -202,9 +209,9 @@
 
 
-    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-
-    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-
-    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 #ifdef  SYSTEMC_VHDL_COMPATIBILITY
   protected : bool                          *  _queue_valid;
@@ -220,5 +227,5 @@
 #endif
 
-    // -----[ methods ]---------------------------------------------------
+    // -----[ methods ]---------------------------------------------------
 
 #ifdef SYSTEMC
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp	(revision 76)
@@ -35,5 +35,7 @@
 			  uint32_t nb_spr_write       ,
 			  uint32_t nb_bypass_write    ,
-			  uint32_t nb_bypass_memory   ):
+			  uint32_t nb_bypass_memory   ,
+			  uint32_t size_store_queue   ,
+			  uint32_t size_load_queue    ):
     _size_queue            (size_queue           ),
     _nb_inst_retire        (nb_inst_retire       ),
@@ -52,4 +54,6 @@
     _nb_bypass_write       (nb_bypass_write      ),
     _nb_bypass_memory      (nb_bypass_memory     ),
+    _size_store_queue      (size_store_queue     ),
+    _size_load_queue       (size_load_queue      ),
 
     _size_context_id       (static_cast<uint32_t>(log2(_nb_context         ))),
@@ -91,4 +95,6 @@
     _nb_bypass_write       (param._nb_bypass_write       ),
     _nb_bypass_memory      (param._nb_bypass_memory      ),
+    _size_store_queue      (param._size_store_queue      ),
+    _size_load_queue       (param._size_load_queue       ),
 
     _size_context_id       (param._size_context_id       ),
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp	(revision 76)
@@ -44,4 +44,6 @@
     xml.singleton_begin("nb_bypass_write    "); xml.attribut("value",toString(_nb_bypass_write    )); xml.singleton_end();
     xml.singleton_begin("nb_bypass_memory   "); xml.attribut("value",toString(_nb_bypass_memory   )); xml.singleton_end();
+    xml.singleton_begin("size_store_queue   "); xml.attribut("value",toString(_size_store_queue   )); xml.singleton_end();
+    xml.singleton_begin("size_load_queue    "); xml.attribut("value",toString(_size_load_queue    )); xml.singleton_end();
     xml.balise_close();
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp	(revision 76)
@@ -72,4 +72,6 @@
        in_INSERT_OPERATION      = interface->set_signal_in <Toperation_t      > ("operation"      ,_param->_size_operation        );
        in_INSERT_TYPE           = interface->set_signal_in <Ttype_t           > ("type"           ,_param->_size_type             );
+       in_INSERT_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write" ,log2(_param->_size_store_queue));
+       in_INSERT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write"  ,log2(_param->_size_load_queue) );
        in_INSERT_HAS_IMMEDIAT   = interface->set_signal_in <Tcontrol_t        > ("has_immediat"   ,1                             );
        in_INSERT_IMMEDIAT       = interface->set_signal_in <Tgeneral_data_t   > ("immediat"       ,_param->_size_general_data     );
@@ -105,4 +107,6 @@
     out_RETIRE_OPERATION      = new SC_OUT(Toperation_t      ) * [_param->_nb_inst_retire];
     out_RETIRE_TYPE           = new SC_OUT(Ttype_t           ) * [_param->_nb_inst_retire];
+    out_RETIRE_STORE_QUEUE_PTR_WRITE = new SC_OUT(Tlsq_ptr_t ) * [_param->_nb_inst_retire];
+    out_RETIRE_LOAD_QUEUE_PTR_WRITE  = new SC_OUT(Tlsq_ptr_t ) * [_param->_nb_inst_retire];
     out_RETIRE_HAS_IMMEDIAT   = new SC_OUT(Tcontrol_t        ) * [_param->_nb_inst_retire];
     out_RETIRE_IMMEDIAT       = new SC_OUT(Tgeneral_data_t   ) * [_param->_nb_inst_retire];
@@ -136,4 +140,7 @@
 	out_RETIRE_OPERATION    [i] = interface->set_signal_out<Toperation_t      > ("operation"    ,_param->_size_operation);
 	out_RETIRE_TYPE         [i] = interface->set_signal_out<Ttype_t           > ("type"         ,_param->_size_type);
+	out_RETIRE_STORE_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("store_queue_ptr_write" ,log2(_param->_size_store_queue));
+	out_RETIRE_LOAD_QUEUE_PTR_WRITE  [i] = interface->set_signal_out<Tlsq_ptr_t> ("load_queue_ptr_write"  ,log2(_param->_size_load_queue) );
+
 	out_RETIRE_HAS_IMMEDIAT [i] = interface->set_signal_out<Tcontrol_t        > ("has_immediat" ,1);
 	out_RETIRE_IMMEDIAT     [i] = interface->set_signal_out<Tgeneral_data_t   > ("immediat"     ,_param->_size_general_data);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp	(revision 76)
@@ -43,4 +43,6 @@
     delete     in_INSERT_OPERATION     ;
     delete     in_INSERT_TYPE          ;
+    delete     in_INSERT_STORE_QUEUE_PTR_WRITE;
+    delete     in_INSERT_LOAD_QUEUE_PTR_WRITE ;
     delete     in_INSERT_HAS_IMMEDIAT  ;
     delete     in_INSERT_IMMEDIAT      ;
@@ -74,4 +76,6 @@
     delete [] out_RETIRE_OPERATION     ;
     delete [] out_RETIRE_TYPE          ;
+    delete [] out_RETIRE_STORE_QUEUE_PTR_WRITE;
+    delete [] out_RETIRE_LOAD_QUEUE_PTR_WRITE ;
     delete [] out_RETIRE_HAS_IMMEDIAT  ;
     delete [] out_RETIRE_IMMEDIAT      ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp	(revision 76)
@@ -101,4 +101,6 @@
 	    PORT_WRITE(out_RETIRE_OPERATION     [i],_queue[index_find]._operation);
 	    PORT_WRITE(out_RETIRE_TYPE          [i],_queue[index_find]._type);
+	    PORT_WRITE(out_RETIRE_STORE_QUEUE_PTR_WRITE [i],_queue[index_find]._store_queue_ptr_write);
+	    PORT_WRITE(out_RETIRE_LOAD_QUEUE_PTR_WRITE  [i],_queue[index_find]._load_queue_ptr_write );
 	    PORT_WRITE(out_RETIRE_HAS_IMMEDIAT  [i],_queue[index_find]._has_immediat);
 	    PORT_WRITE(out_RETIRE_IMMEDIAT      [i],_queue[index_find]._immediat);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp	(revision 76)
@@ -258,4 +258,6 @@
   	    _queue[index]._operation       = PORT_READ(in_INSERT_OPERATION      );
   	    _queue[index]._type            = PORT_READ(in_INSERT_TYPE           );
+  	    _queue[index]._store_queue_ptr_write = PORT_READ(in_INSERT_STORE_QUEUE_PTR_WRITE);
+  	    _queue[index]._load_queue_ptr_write  = PORT_READ(in_INSERT_LOAD_QUEUE_PTR_WRITE );
   	    _queue[index]._has_immediat    = PORT_READ(in_INSERT_HAS_IMMEDIAT   );
   	    _queue[index]._immediat        = PORT_READ(in_INSERT_IMMEDIAT       );
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/Makefile	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/Makefile	(revision 76)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(Read_unit_LIBRARY)
+
+DIR_LIBRARY			= $(Read_unit_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: Read_unit_library
+
+library_clean			: Read_unit_library_clean
+
+include                         $(DIR_COMPONENT)/Makefile.deps
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.Synthesis
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/configuration.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/configuration.cfg	(revision 76)
@@ -0,0 +1,20 @@
+Read_unit
+4	4	*2	# size_read_queue         
+4	4	*2	# size_reservation_station
+1	1	*2	# nb_context              
+1	1	*2	# nb_front_end            
+1	4	*2	# nb_ooo_engine           
+64	64	*2 	# nb_packet               
+32	32	*2	# size_general_data       
+2	2	*2	# size_special_data       
+64	64	*2	# nb_general_register     
+16	16	*2	# nb_special_register     
+10	10	*2	# nb_operation            
+4	4	*2	# nb_type                 
+2	2	*2	# nb_gpr_write            
+2	2	*2	# nb_spr_write            
+4	4	*2	# size_store_queue        
+4	4	*2	# size_load_queue         
+2	2	*2	# nb_inst_retire          
+2	2	*2	# nb_bypass_write         
+2	2	*2	# nb_bypass_memory        
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/include/test.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/include/test.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/include/test.h	(revision 76)
@@ -0,0 +1,31 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+#include <sys/time.h>
+
+#include "Common/include/Time.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+using namespace morpheo::behavioural::core;
+using namespace morpheo::behavioural::core::multi_execute_loop;
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop;
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit;
+
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit;
+
+void test    (string name,
+	      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::Parameters * param);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/main.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/main.cpp	(revision 76)
@@ -0,0 +1,112 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/include/test.h"
+
+#define NB_PARAMS 19
+
+void usage (int argc, char * argv[])
+{
+  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
+  err (_("list_params is :\n"));
+  err (_(" * size_read_queue          (uint32_t)\n"));
+  err (_(" * size_reservation_station (uint32_t)\n"));
+  err (_(" * nb_context               (uint32_t)\n"));
+  err (_(" * nb_front_end             (uint32_t)\n"));
+  err (_(" * nb_ooo_engine            (uint32_t)\n"));
+  err (_(" * nb_packet                (uint32_t)\n"));
+  err (_(" * size_general_data        (uint32_t)\n"));
+  err (_(" * size_special_data        (uint32_t)\n"));
+  err (_(" * nb_general_register      (uint32_t)\n"));
+  err (_(" * nb_special_register      (uint32_t)\n"));
+  err (_(" * nb_operation             (uint32_t)\n"));
+  err (_(" * nb_type                  (uint32_t)\n"));
+  err (_(" * nb_gpr_write             (uint32_t)\n"));
+  err (_(" * nb_spr_write             (uint32_t)\n"));
+  err (_(" * size_store_queue         (uint32_t)\n"));
+  err (_(" * size_load_queue          (uint32_t)\n"));
+  err (_(" * nb_inst_retire           (uint32_t)\n"));
+  err (_(" * nb_bypass_write          (uint32_t)\n"));
+  err (_(" * nb_bypass_memory         (uint32_t)\n"));
+
+  exit (1);
+}
+
+#ifndef SYSTEMC
+int main    (int argc, char * argv[])
+#else
+int sc_main (int argc, char * argv[])
+#endif
+{
+  if (argc != 2+NB_PARAMS)
+    usage (argc, argv);
+
+  uint32_t       x = 1;
+
+  const string   name      =      argv[x++];
+  const uint32_t    _size_read_queue          = atoi(argv[x++]);
+  const uint32_t    _size_reservation_station = atoi(argv[x++]);
+  const uint32_t    _nb_context               = atoi(argv[x++]);
+  const uint32_t    _nb_front_end             = atoi(argv[x++]);
+  const uint32_t    _nb_ooo_engine            = atoi(argv[x++]);
+  const uint32_t    _nb_packet                = atoi(argv[x++]);
+  const uint32_t    _size_general_data        = atoi(argv[x++]);
+  const uint32_t    _size_special_data        = atoi(argv[x++]);
+  const uint32_t    _nb_general_register      = atoi(argv[x++]);
+  const uint32_t    _nb_special_register      = atoi(argv[x++]);
+  const uint32_t    _nb_operation             = atoi(argv[x++]);
+  const uint32_t    _nb_type                  = atoi(argv[x++]);
+  const uint32_t    _nb_gpr_write             = atoi(argv[x++]);
+  const uint32_t    _nb_spr_write             = atoi(argv[x++]);
+  const uint32_t    _size_store_queue         = atoi(argv[x++]);
+  const uint32_t    _size_load_queue          = atoi(argv[x++]);
+  const uint32_t    _nb_inst_retire           = atoi(argv[x++]);
+  const uint32_t    _nb_bypass_write          = atoi(argv[x++]);
+  const uint32_t    _nb_bypass_memory         = atoi(argv[x++]);
+
+  try 
+    {
+      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::Parameters
+	(
+	 _size_read_queue         ,
+	 _size_reservation_station,
+	 _nb_context              ,
+	 _nb_front_end            ,
+	 _nb_ooo_engine           ,
+	 _nb_packet               ,
+	 _size_general_data       ,
+	 _size_special_data       ,
+	 _nb_general_register     ,
+	 _nb_special_register     ,
+	 _nb_operation            ,
+	 _nb_type                 ,
+	 _nb_gpr_write            ,
+	 _nb_spr_write            ,
+	 _size_store_queue        ,
+	 _size_load_queue         ,
+	 _nb_inst_retire          ,
+	 _nb_bypass_write         ,
+	 _nb_bypass_memory        );
+      
+      msg(_("%s"),param->print(1).c_str());
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      msg (_("<%s> : %s.\n"),name.c_str(), error.what ());
+      exit (EXIT_FAILURE);
+    }
+  catch (...)
+    {
+      err (_("<%s> : This test must generate a error.\n"),name.c_str());
+      exit (EXIT_FAILURE);
+    }
+
+  return (EXIT_SUCCESS);
+}
+
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/test.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/test.cpp	(revision 76)
@@ -0,0 +1,286 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/include/test.h"
+#include "Common/include/Test.h"
+#include "Behavioural/include/Allocation.h"
+
+#define NB_ITERATION  1
+#define CYCLE_MAX     (128*NB_ITERATION)
+
+#define LABEL(str...)							\
+  {									\
+    msg (_("{%d} "),static_cast<uint32_t>(sc_simulation_time()));	\
+    msg (str);								\
+    msg (_("\n"));							\
+  } while(0)
+
+#define SC_START(cycle_offset)                                                       \
+  do									             \
+    {									             \
+      /*cout << "SC_START (begin)" << endl;*/				             \
+									             \
+      uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time());          \
+      if (cycle_offset != 0)						             \
+	{								             \
+	  cout << "##########[ cycle "<< cycle_current+cycle_offset << " ]" << endl; \
+	}								             \
+									             \
+      if (cycle_current > CYCLE_MAX)					             \
+	{								             \
+	  TEST_KO("Maximal cycles Reached");				             \
+	}								             \
+									             \
+      sc_start(cycle_offset);						             \
+									             \
+      /*cout << "SC_START (end  )" << endl;*/				             \
+    } while(0)
+
+void test (string name,
+	   morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::Parameters * _param)
+{
+  msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
+
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
+  Read_unit * _Read_unit = new Read_unit (name.c_str(),
+#ifdef STATISTICS
+					     _parameters_statistics,
+#endif
+					     _param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  string rename;
+
+  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);	 
+  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
+
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_VAL                   ," in_READ_UNIT_IN_VAL                   ",Tcontrol_t        );
+  ALLOC_SC_SIGNAL (out_READ_UNIT_IN_ACK                   ,"out_READ_UNIT_IN_ACK                   ",Tcontrol_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_CONTEXT_ID            ," in_READ_UNIT_IN_CONTEXT_ID            ",Tcontext_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_FRONT_END_ID          ," in_READ_UNIT_IN_FRONT_END_ID          ",Tcontext_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_OOO_ENGINE_ID         ," in_READ_UNIT_IN_OOO_ENGINE_ID         ",Tcontext_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_PACKET_ID             ," in_READ_UNIT_IN_PACKET_ID             ",Tpacket_t         );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_OPERATION             ," in_READ_UNIT_IN_OPERATION             ",Toperation_t      );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_TYPE                  ," in_READ_UNIT_IN_TYPE                  ",Ttype_t           );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ",Tlsq_ptr_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE  ," in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE  ",Tlsq_ptr_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_HAS_IMMEDIAT          ," in_READ_UNIT_IN_HAS_IMMEDIAT          ",Tcontrol_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_IMMEDIAT              ," in_READ_UNIT_IN_IMMEDIAT              ",Tgeneral_data_t   );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_READ_RA               ," in_READ_UNIT_IN_READ_RA               ",Tcontrol_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_NUM_REG_RA            ," in_READ_UNIT_IN_NUM_REG_RA            ",Tgeneral_address_t);
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_READ_RB               ," in_READ_UNIT_IN_READ_RB               ",Tcontrol_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_NUM_REG_RB            ," in_READ_UNIT_IN_NUM_REG_RB            ",Tgeneral_address_t);
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_READ_RC               ," in_READ_UNIT_IN_READ_RC               ",Tcontrol_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_NUM_REG_RC            ," in_READ_UNIT_IN_NUM_REG_RC            ",Tspecial_address_t);
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_WRITE_RD              ," in_READ_UNIT_IN_WRITE_RD              ",Tcontrol_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_NUM_REG_RD            ," in_READ_UNIT_IN_NUM_REG_RD            ",Tgeneral_address_t);
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_WRITE_RE              ," in_READ_UNIT_IN_WRITE_RE              ",Tcontrol_t        );
+  ALLOC_SC_SIGNAL ( in_READ_UNIT_IN_NUM_REG_RE            ," in_READ_UNIT_IN_NUM_REG_RE            ",Tspecial_address_t);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_VAL                  ,"out_READ_UNIT_OUT_VAL                  ",Tcontrol_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_ACK                  ," in_READ_UNIT_OUT_ACK                  ",Tcontrol_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_CONTEXT_ID           ,"out_READ_UNIT_OUT_CONTEXT_ID           ",Tcontext_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_FRONT_END_ID         ,"out_READ_UNIT_OUT_FRONT_END_ID         ",Tcontext_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_OOO_ENGINE_ID        ,"out_READ_UNIT_OUT_OOO_ENGINE_ID        ",Tcontext_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_PACKET_ID            ,"out_READ_UNIT_OUT_PACKET_ID            ",Tpacket_t         ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_OPERATION            ,"out_READ_UNIT_OUT_OPERATION            ",Toperation_t      ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_TYPE                 ,"out_READ_UNIT_OUT_TYPE                 ",Ttype_t           ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,"out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,"out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ",Tlsq_ptr_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_HAS_IMMEDIAT         ,"out_READ_UNIT_OUT_HAS_IMMEDIAT         ",Tcontrol_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_IMMEDIAT             ,"out_READ_UNIT_OUT_IMMEDIAT             ",Tgeneral_data_t   ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_DATA_RA              ,"out_READ_UNIT_OUT_DATA_RA              ",Tgeneral_data_t   ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_DATA_RB              ,"out_READ_UNIT_OUT_DATA_RB              ",Tgeneral_data_t   ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_DATA_RC              ,"out_READ_UNIT_OUT_DATA_RC              ",Tspecial_data_t   ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_WRITE_RD             ,"out_READ_UNIT_OUT_WRITE_RD             ",Tcontrol_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_NUM_REG_RD           ,"out_READ_UNIT_OUT_NUM_REG_RD           ",Tgeneral_address_t,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_WRITE_RE             ,"out_READ_UNIT_OUT_WRITE_RE             ",Tcontrol_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_NUM_REG_RE           ,"out_READ_UNIT_OUT_NUM_REG_RE           ",Tspecial_address_t,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_GPR_READ_VAL                       ,"out_GPR_READ_VAL                       ",Tcontrol_t        ,_param->_nb_gpr_read);
+  ALLOC1_SC_SIGNAL( in_GPR_READ_ACK                       ," in_GPR_READ_ACK                       ",Tcontrol_t        ,_param->_nb_gpr_read);
+  ALLOC1_SC_SIGNAL(out_GPR_READ_OOO_ENGINE_ID             ,"out_GPR_READ_OOO_ENGINE_ID             ",Tcontext_t        ,_param->_nb_gpr_read);
+  ALLOC1_SC_SIGNAL(out_GPR_READ_NUM_REG                   ,"out_GPR_READ_NUM_REG                   ",Tgeneral_address_t,_param->_nb_gpr_read);
+  ALLOC1_SC_SIGNAL( in_GPR_READ_DATA                      ," in_GPR_READ_DATA                      ",Tgeneral_data_t   ,_param->_nb_gpr_read);
+  ALLOC1_SC_SIGNAL( in_GPR_READ_DATA_VAL                  ," in_GPR_READ_DATA_VAL                  ",Tcontrol_t        ,_param->_nb_gpr_read);
+  ALLOC1_SC_SIGNAL(out_SPR_READ_VAL                       ,"out_SPR_READ_VAL                       ",Tcontrol_t        ,_param->_nb_spr_read);
+  ALLOC1_SC_SIGNAL( in_SPR_READ_ACK                       ," in_SPR_READ_ACK                       ",Tcontrol_t        ,_param->_nb_spr_read);
+  ALLOC1_SC_SIGNAL(out_SPR_READ_OOO_ENGINE_ID             ,"out_SPR_READ_OOO_ENGINE_ID             ",Tcontext_t        ,_param->_nb_spr_read);
+  ALLOC1_SC_SIGNAL(out_SPR_READ_NUM_REG                   ,"out_SPR_READ_NUM_REG                   ",Tspecial_address_t,_param->_nb_spr_read);
+  ALLOC1_SC_SIGNAL( in_SPR_READ_DATA                      ," in_SPR_READ_DATA                      ",Tspecial_data_t   ,_param->_nb_spr_read);
+  ALLOC1_SC_SIGNAL( in_SPR_READ_DATA_VAL                  ," in_SPR_READ_DATA_VAL                  ",Tcontrol_t        ,_param->_nb_spr_read);
+  ALLOC1_SC_SIGNAL( in_GPR_WRITE_VAL                      ," in_GPR_WRITE_VAL                      ",Tcontrol_t        ,_param->_nb_gpr_write);
+  ALLOC1_SC_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID            ," in_GPR_WRITE_OOO_ENGINE_ID            ",Tcontext_t        ,_param->_nb_gpr_write);
+  ALLOC1_SC_SIGNAL( in_GPR_WRITE_NUM_REG                  ," in_GPR_WRITE_NUM_REG                  ",Tgeneral_address_t,_param->_nb_gpr_write);
+  ALLOC1_SC_SIGNAL( in_GPR_WRITE_DATA                     ," in_GPR_WRITE_DATA                     ",Tgeneral_data_t   ,_param->_nb_gpr_write);
+  ALLOC1_SC_SIGNAL( in_SPR_WRITE_VAL                      ," in_SPR_WRITE_VAL                      ",Tcontrol_t        ,_param->_nb_spr_write);
+  ALLOC1_SC_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID            ," in_SPR_WRITE_OOO_ENGINE_ID            ",Tcontext_t        ,_param->_nb_spr_write);
+  ALLOC1_SC_SIGNAL( in_SPR_WRITE_NUM_REG                  ," in_SPR_WRITE_NUM_REG                  ",Tspecial_address_t,_param->_nb_spr_write);
+  ALLOC1_SC_SIGNAL( in_SPR_WRITE_DATA                     ," in_SPR_WRITE_DATA                     ",Tspecial_data_t   ,_param->_nb_spr_write);
+  ALLOC1_SC_SIGNAL( in_BYPASS_WRITE_OOO_ENGINE_ID         ," in_BYPASS_WRITE_OOO_ENGINE_ID         ",Tcontext_t        ,_param->_nb_bypass_write);
+  ALLOC1_SC_SIGNAL( in_BYPASS_WRITE_GPR_VAL               ," in_BYPASS_WRITE_GPR_VAL               ",Tcontrol_t        ,_param->_nb_bypass_write);
+  ALLOC1_SC_SIGNAL( in_BYPASS_WRITE_GPR_NUM_REG           ," in_BYPASS_WRITE_GPR_NUM_REG           ",Tgeneral_address_t,_param->_nb_bypass_write);
+  ALLOC1_SC_SIGNAL( in_BYPASS_WRITE_GPR_DATA              ," in_BYPASS_WRITE_GPR_DATA              ",Tgeneral_data_t   ,_param->_nb_bypass_write);
+  ALLOC1_SC_SIGNAL( in_BYPASS_WRITE_SPR_VAL               ," in_BYPASS_WRITE_SPR_VAL               ",Tcontrol_t        ,_param->_nb_bypass_write);
+  ALLOC1_SC_SIGNAL( in_BYPASS_WRITE_SPR_NUM_REG           ," in_BYPASS_WRITE_SPR_NUM_REG           ",Tspecial_address_t,_param->_nb_bypass_write);
+  ALLOC1_SC_SIGNAL( in_BYPASS_WRITE_SPR_DATA              ," in_BYPASS_WRITE_SPR_DATA              ",Tspecial_data_t   ,_param->_nb_bypass_write);
+  ALLOC1_SC_SIGNAL( in_BYPASS_MEMORY_VAL                  ," in_BYPASS_MEMORY_VAL                  ",Tcontrol_t        ,_param->_nb_bypass_memory);
+  ALLOC1_SC_SIGNAL( in_BYPASS_MEMORY_OOO_ENGINE_ID        ," in_BYPASS_MEMORY_OOO_ENGINE_ID        ",Tcontext_t        ,_param->_nb_bypass_memory);
+  ALLOC1_SC_SIGNAL( in_BYPASS_MEMORY_NUM_REG              ," in_BYPASS_MEMORY_NUM_REG              ",Tgeneral_address_t,_param->_nb_bypass_memory);
+  ALLOC1_SC_SIGNAL( in_BYPASS_MEMORY_DATA                 ," in_BYPASS_MEMORY_DATA                 ",Tgeneral_data_t   ,_param->_nb_bypass_memory);
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  msg(_("<%s> : Instanciation of _Read_unit.\n"),name.c_str());
+
+  (*(_Read_unit->in_CLOCK))        (*(in_CLOCK));
+  (*(_Read_unit->in_NRESET))       (*(in_NRESET));
+
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_VAL                   );
+  INSTANCE_SC_SIGNAL (_Read_unit,out_READ_UNIT_IN_ACK                   );
+  if (_param->_have_port_context_id)
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_CONTEXT_ID            );
+  if (_param->_have_port_front_end_id)
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_FRONT_END_ID          );
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_OOO_ENGINE_ID         );
+  if (_param->_have_port_packet_id)
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_PACKET_ID             );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_OPERATION             );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_TYPE                  );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE  );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_HAS_IMMEDIAT          );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_IMMEDIAT              );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_READ_RA               );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_NUM_REG_RA            );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_READ_RB               );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_NUM_REG_RB            );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_READ_RC               );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_NUM_REG_RC            );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_WRITE_RD              );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_NUM_REG_RD            );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_WRITE_RE              );
+  INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_NUM_REG_RE            );
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_VAL                  ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_READ_UNIT_OUT_ACK                  ,_param->_nb_inst_retire);
+  if (_param->_have_port_context_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_CONTEXT_ID           ,_param->_nb_inst_retire);
+  if (_param->_have_port_front_end_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_FRONT_END_ID         ,_param->_nb_inst_retire);
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_OOO_ENGINE_ID        ,_param->_nb_inst_retire);
+  if (_param->_have_port_packet_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_PACKET_ID            ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_OPERATION            ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_TYPE                 ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_HAS_IMMEDIAT         ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_IMMEDIAT             ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_DATA_RA              ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_DATA_RB              ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_DATA_RC              ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_WRITE_RD             ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_NUM_REG_RD           ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_WRITE_RE             ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_NUM_REG_RE           ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_GPR_READ_VAL                       ,_param->_nb_gpr_read);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_GPR_READ_ACK                       ,_param->_nb_gpr_read);
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_GPR_READ_OOO_ENGINE_ID             ,_param->_nb_gpr_read);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_GPR_READ_NUM_REG                   ,_param->_nb_gpr_read);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_GPR_READ_DATA                      ,_param->_nb_gpr_read);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_GPR_READ_DATA_VAL                  ,_param->_nb_gpr_read);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_SPR_READ_VAL                       ,_param->_nb_spr_read);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_SPR_READ_ACK                       ,_param->_nb_spr_read);
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_SPR_READ_OOO_ENGINE_ID             ,_param->_nb_spr_read);
+  INSTANCE1_SC_SIGNAL(_Read_unit,out_SPR_READ_NUM_REG                   ,_param->_nb_spr_read);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_SPR_READ_DATA                      ,_param->_nb_spr_read);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_SPR_READ_DATA_VAL                  ,_param->_nb_spr_read);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_GPR_WRITE_VAL                      ,_param->_nb_gpr_write);
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_GPR_WRITE_OOO_ENGINE_ID            ,_param->_nb_gpr_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_GPR_WRITE_NUM_REG                  ,_param->_nb_gpr_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_GPR_WRITE_DATA                     ,_param->_nb_gpr_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_SPR_WRITE_VAL                      ,_param->_nb_spr_write);
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_SPR_WRITE_OOO_ENGINE_ID            ,_param->_nb_spr_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_SPR_WRITE_NUM_REG                  ,_param->_nb_spr_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_SPR_WRITE_DATA                     ,_param->_nb_spr_write);
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_BYPASS_WRITE_OOO_ENGINE_ID         ,_param->_nb_bypass_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_BYPASS_WRITE_GPR_VAL               ,_param->_nb_bypass_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_BYPASS_WRITE_GPR_NUM_REG           ,_param->_nb_bypass_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_BYPASS_WRITE_GPR_DATA              ,_param->_nb_bypass_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_BYPASS_WRITE_SPR_VAL               ,_param->_nb_bypass_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_BYPASS_WRITE_SPR_NUM_REG           ,_param->_nb_bypass_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_BYPASS_WRITE_SPR_DATA              ,_param->_nb_bypass_write);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_BYPASS_MEMORY_VAL                  ,_param->_nb_bypass_memory);
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_BYPASS_MEMORY_OOO_ENGINE_ID        ,_param->_nb_bypass_memory);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_BYPASS_MEMORY_NUM_REG              ,_param->_nb_bypass_memory);
+  INSTANCE1_SC_SIGNAL(_Read_unit, in_BYPASS_MEMORY_DATA                 ,_param->_nb_bypass_memory);
+  
+  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
+    
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  // Initialisation
+
+  const uint32_t seed = 0;
+//const uint32_t seed = static_cast<uint32_t>(time(NULL));
+
+  srand(seed);
+
+  SC_START(0);
+  LABEL("Initialisation");
+
+  LABEL("Reset");
+  in_NRESET->write(0);
+  SC_START(5);
+  in_NRESET->write(1);  
+
+  LABEL("Loop of Test");
+
+  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
+    {
+      LABEL("Iteration %d",iteration);
+
+      SC_START(1);
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK ("End of Simulation");
+  delete _time;
+
+  msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
+
+  delete in_CLOCK;
+  delete in_NRESET;
+#endif
+
+  delete _Read_unit;
+#ifdef STATISTICS
+  delete _parameters_statistics;
+#endif
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/Makefile	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/Makefile	(revision 76)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/Read_unit.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/Read_unit.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/Read_unit.tex	(revision 76)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/sty/header.sty	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/sty/header.sty	(revision 76)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Read_unit}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/01_introduction.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/01_introduction.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/02_features.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/02_features.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/03_description.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/03_description.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/04_pinout.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/04_pinout.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/05_parameters.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/05_parameters.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/06_performance.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/06_performance.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/07_details.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/07_details.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/08_history.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/08_history.tex	(revision 76)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/root.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/doc/tex/root.tex	(revision 76)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h	(revision 76)
@@ -0,0 +1,106 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_Parameters_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include <math.h>
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : const uint32_t    _size_read_queue         ;
+  public : const uint32_t    _size_reservation_station;
+  public : const uint32_t    _nb_context              ;
+  public : const uint32_t    _nb_front_end            ;
+  public : const uint32_t    _nb_ooo_engine           ;
+  public : const uint32_t    _nb_packet               ;
+  public : const uint32_t    _size_general_data       ;
+  public : const uint32_t    _size_special_data       ;
+  public : const uint32_t    _nb_general_register     ;
+  public : const uint32_t    _nb_special_register     ;
+  public : const uint32_t    _nb_operation            ;
+  public : const uint32_t    _nb_type                 ;
+  public : const uint32_t    _nb_gpr_write            ;
+  public : const uint32_t    _nb_spr_write            ;
+  public : const uint32_t    _size_store_queue        ;
+  public : const uint32_t    _size_load_queue         ;
+  public : const uint32_t    _nb_inst_retire          ;
+  public : const uint32_t    _nb_bypass_write         ;
+  public : const uint32_t    _nb_bypass_memory        ;
+						      
+  public : const uint32_t    _nb_gpr_read             ;
+  public : const uint32_t    _nb_spr_read             ;    
+  public : const uint32_t    _size_context_id         ;
+  public : const uint32_t    _size_front_end_id       ;
+  public : const uint32_t    _size_ooo_engine_id      ;
+  public : const uint32_t    _size_packet_id          ;
+  public : const uint32_t    _size_general_register   ;
+  public : const uint32_t    _size_special_register   ;
+  public : const uint32_t    _size_operation          ;
+  public : const uint32_t    _size_type               ;
+
+  public : const bool        _have_port_context_id    ;
+  public : const bool        _have_port_front_end_id  ;
+  public : const bool        _have_port_ooo_engine_id ;
+  public : const bool        _have_port_packet_id     ;
+
+  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue         ::Parameters * _param_read_queue;
+  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters * _param_reservation_station;
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (uint32_t size_read_queue         ,
+			uint32_t size_reservation_station,
+			uint32_t nb_context              ,
+			uint32_t nb_front_end            ,
+			uint32_t nb_ooo_engine           ,
+			uint32_t nb_packet               ,
+			uint32_t size_general_data       ,
+			uint32_t size_special_data       ,
+			uint32_t nb_general_register     ,
+			uint32_t nb_special_register     ,
+			uint32_t nb_operation            ,
+			uint32_t nb_type                 ,
+			uint32_t nb_gpr_write            ,
+			uint32_t nb_spr_write            ,
+			uint32_t size_store_queue        ,
+			uint32_t size_load_queue         ,
+			uint32_t nb_inst_retire          ,
+			uint32_t nb_bypass_write         ,
+			uint32_t nb_bypass_memory        );
+  public : Parameters  (Parameters & param) ;
+  public : ~Parameters () ;
+
+  public :        std::string   msg_error  (void);
+
+  public :        std::string   print      (uint32_t depth);
+  public : friend std::ostream& operator<< (std::ostream& output_stream,
+					    morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::Parameters & x);
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h	(revision 76)
@@ -0,0 +1,220 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_Read_unit_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_Read_unit_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Types.h"
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h"
+#ifdef STATISTICS
+#include "Behavioural/include/Stat.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#include "Behavioural/include/Usage.h"
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+
+  class Read_unit 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const std::string  _name;
+  protected : const Parameters * _param;
+  private   : const Tusage_t     _usage;
+
+#ifdef STATISTICS
+  public    : Stat                           * _stat;
+#endif
+
+  public    : Component                      * _component;
+  private   : Interfaces                     * _interfaces;
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Interface
+  public    : SC_CLOCK                      *  in_CLOCK        ;
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
+
+    // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_UNIT_IN_VAL                  ;
+  public    : SC_OUT(Tcontrol_t        )    * out_READ_UNIT_IN_ACK                  ;
+  public    : SC_IN (Tcontext_t        )    *  in_READ_UNIT_IN_CONTEXT_ID           ;
+  public    : SC_IN (Tcontext_t        )    *  in_READ_UNIT_IN_FRONT_END_ID         ;
+  public    : SC_IN (Tcontext_t        )    *  in_READ_UNIT_IN_OOO_ENGINE_ID        ;
+  public    : SC_IN (Tpacket_t         )    *  in_READ_UNIT_IN_PACKET_ID            ;
+  public    : SC_IN (Toperation_t      )    *  in_READ_UNIT_IN_OPERATION            ;
+  public    : SC_IN (Ttype_t           )    *  in_READ_UNIT_IN_TYPE                 ;
+  public    : SC_IN (Tlsq_ptr_t        )    *  in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE;
+  public    : SC_IN (Tlsq_ptr_t        )    *  in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_UNIT_IN_HAS_IMMEDIAT         ;
+  public    : SC_IN (Tgeneral_data_t   )    *  in_READ_UNIT_IN_IMMEDIAT             ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_UNIT_IN_READ_RA              ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_READ_UNIT_IN_NUM_REG_RA           ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_UNIT_IN_READ_RB              ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_READ_UNIT_IN_NUM_REG_RB           ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_UNIT_IN_READ_RC              ;
+  public    : SC_IN (Tspecial_address_t)    *  in_READ_UNIT_IN_NUM_REG_RC           ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_UNIT_IN_WRITE_RD             ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_READ_UNIT_IN_NUM_REG_RD           ;
+  public    : SC_IN (Tcontrol_t        )    *  in_READ_UNIT_IN_WRITE_RE             ;
+  public    : SC_IN (Tspecial_address_t)    *  in_READ_UNIT_IN_NUM_REG_RE           ;
+
+    // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_OUT(Tcontrol_t        )   ** out_READ_UNIT_OUT_VAL                  ;
+  public    : SC_IN (Tcontrol_t        )   **  in_READ_UNIT_OUT_ACK                  ;
+  public    : SC_OUT(Tcontext_t        )   ** out_READ_UNIT_OUT_CONTEXT_ID           ;
+  public    : SC_OUT(Tcontext_t        )   ** out_READ_UNIT_OUT_FRONT_END_ID         ;
+  public    : SC_OUT(Tcontext_t        )   ** out_READ_UNIT_OUT_OOO_ENGINE_ID        ;
+  public    : SC_OUT(Tpacket_t         )   ** out_READ_UNIT_OUT_PACKET_ID            ;
+  public    : SC_OUT(Toperation_t      )   ** out_READ_UNIT_OUT_OPERATION            ;
+  public    : SC_OUT(Ttype_t           )   ** out_READ_UNIT_OUT_TYPE                 ;
+  public    : SC_OUT(Tlsq_ptr_t        )   ** out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE;
+  public    : SC_OUT(Tlsq_ptr_t        )   ** out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_READ_UNIT_OUT_HAS_IMMEDIAT         ;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_READ_UNIT_OUT_IMMEDIAT             ;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_READ_UNIT_OUT_DATA_RA              ;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_READ_UNIT_OUT_DATA_RB              ;
+  public    : SC_OUT(Tspecial_data_t   )   ** out_READ_UNIT_OUT_DATA_RC              ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_READ_UNIT_OUT_WRITE_RD             ;
+  public    : SC_OUT(Tgeneral_address_t)   ** out_READ_UNIT_OUT_NUM_REG_RD           ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_READ_UNIT_OUT_WRITE_RE             ;
+  public    : SC_OUT(Tspecial_address_t)   ** out_READ_UNIT_OUT_NUM_REG_RE           ;
+
+    // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_OUT(Tcontrol_t        )   ** out_GPR_READ_VAL          ;
+  public    : SC_IN (Tcontrol_t        )   **  in_GPR_READ_ACK          ;
+  public    : SC_OUT(Tcontext_t        )   ** out_GPR_READ_OOO_ENGINE_ID;
+  public    : SC_OUT(Tgeneral_address_t)   ** out_GPR_READ_NUM_REG      ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_READ_DATA         ;
+  public    : SC_IN (Tcontrol_t        )   **  in_GPR_READ_DATA_VAL     ;
+
+    // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_OUT(Tcontrol_t        )   ** out_SPR_READ_VAL          ;
+  public    : SC_IN (Tcontrol_t        )   **  in_SPR_READ_ACK          ;
+  public    : SC_OUT(Tcontext_t        )   ** out_SPR_READ_OOO_ENGINE_ID;
+  public    : SC_OUT(Tspecial_address_t)   ** out_SPR_READ_NUM_REG      ;
+  public    : SC_IN (Tspecial_data_t   )   **  in_SPR_READ_DATA         ;
+  public    : SC_IN (Tcontrol_t        )   **  in_SPR_READ_DATA_VAL     ;
+
+    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t        )   **  in_GPR_WRITE_VAL          ;
+  public    : SC_IN (Tcontext_t        )   **  in_GPR_WRITE_OOO_ENGINE_ID;
+  public    : SC_IN (Tgeneral_address_t)   **  in_GPR_WRITE_NUM_REG      ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_WRITE_DATA         ;
+
+    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t        )   **  in_SPR_WRITE_VAL          ;
+  public    : SC_IN (Tcontext_t        )   **  in_SPR_WRITE_OOO_ENGINE_ID;
+  public    : SC_IN (Tspecial_address_t)   **  in_SPR_WRITE_NUM_REG      ;
+  public    : SC_IN (Tspecial_data_t   )   **  in_SPR_WRITE_DATA         ;
+
+    // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontext_t        )   **  in_BYPASS_WRITE_OOO_ENGINE_ID ;
+  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_WRITE_GPR_VAL       ;
+  public    : SC_IN (Tgeneral_address_t)   **  in_BYPASS_WRITE_GPR_NUM_REG   ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_BYPASS_WRITE_GPR_DATA      ;
+  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_WRITE_SPR_VAL       ;
+  public    : SC_IN (Tspecial_address_t)   **  in_BYPASS_WRITE_SPR_NUM_REG   ;
+  public    : SC_IN (Tspecial_data_t   )   **  in_BYPASS_WRITE_SPR_DATA      ;
+
+    // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_MEMORY_VAL          ;
+  public    : SC_IN (Tcontext_t        )   **  in_BYPASS_MEMORY_OOO_ENGINE_ID;
+  public    : SC_IN (Tgeneral_address_t)   **  in_BYPASS_MEMORY_NUM_REG      ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_BYPASS_MEMORY_DATA         ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+  private   : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue         ::Read_queue          * _component_read_queue;
+  private   : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Reservation_station * _component_reservation_station;
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#endif
+
+    // -----[ Methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (Read_unit);
+#endif
+  public  :          Read_unit              
+  (
+#ifdef SYSTEMC
+   sc_module_name                                name,
+#else					       
+   std::string                                   name,
+#endif					       
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   Parameters                                  * param,
+   morpheo::behavioural::Tusage_t                usage=USE_ALL
+   );
+  public  :          ~Read_unit             (void);
+					       
+  private : void        allocation                (
+#ifdef STATISTICS
+						   morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+						   void
+#endif
+						   );
+  private : void        deallocation              (void);
+					       
+#ifdef SYSTEMC				       
+# if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+  public  : void        transition                (void);
+# endif
+#endif					       
+
+#if VHDL				       
+  public  : void        vhdl                      (void);
+#endif					       
+
+#ifdef STATISTICS
+  public  : void        statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
+#endif
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+  private : void        end_cycle                 (void);
+#endif
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters.cpp	(revision 76)
@@ -0,0 +1,191 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::Parameters"
+  Parameters::Parameters (uint32_t size_read_queue         ,
+			  uint32_t size_reservation_station,
+			  uint32_t nb_context              ,
+			  uint32_t nb_front_end            ,
+			  uint32_t nb_ooo_engine           ,
+			  uint32_t nb_packet               ,
+			  uint32_t size_general_data       ,
+			  uint32_t size_special_data       ,
+			  uint32_t nb_general_register     ,
+			  uint32_t nb_special_register     ,
+			  uint32_t nb_operation            ,
+			  uint32_t nb_type                 ,
+			  uint32_t nb_gpr_write            ,
+			  uint32_t nb_spr_write            ,
+			  uint32_t size_store_queue        ,
+			  uint32_t size_load_queue         ,
+			  uint32_t nb_inst_retire          ,
+			  uint32_t nb_bypass_write         ,
+			  uint32_t nb_bypass_memory        ):
+    _size_read_queue          (size_read_queue         ),
+    _size_reservation_station (size_reservation_station),
+    _nb_context               (nb_context              ),
+    _nb_front_end             (nb_front_end            ),
+    _nb_ooo_engine            (nb_ooo_engine           ),
+    _nb_packet                (nb_packet               ),
+    _size_general_data        (size_general_data       ),
+    _size_special_data        (size_special_data       ),
+    _nb_general_register      (nb_general_register     ),
+    _nb_special_register      (nb_special_register     ),
+    _nb_operation             (nb_operation            ),
+    _nb_type                  (nb_type                 ),
+    _nb_gpr_write             (nb_gpr_write            ),
+    _nb_spr_write             (nb_spr_write            ),
+    _size_store_queue         (size_store_queue        ),
+    _size_load_queue          (size_load_queue         ),
+    _nb_inst_retire           (nb_inst_retire          ),
+    _nb_bypass_write          (nb_bypass_write         ),
+    _nb_bypass_memory         (nb_bypass_memory        ),
+    
+    _nb_gpr_read              (2),
+    _nb_spr_read              (1),    
+    _size_context_id          (log2(nb_context         )),
+    _size_front_end_id        (log2(nb_front_end       )),
+    _size_ooo_engine_id       (log2(nb_ooo_engine      )),
+    _size_packet_id           (log2(nb_packet          )),
+    _size_general_register    (log2(nb_general_register)),
+    _size_special_register    (log2(nb_special_register)),
+    _size_operation           (log2(nb_operation       )),
+    _size_type                (log2(nb_type            )),
+    
+    _have_port_context_id     (_size_context_id   >0),
+    _have_port_front_end_id   (_size_front_end_id >0),
+    _have_port_ooo_engine_id  (_size_ooo_engine_id>0),
+    _have_port_packet_id      (_size_packet_id    >0)
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+    _param_read_queue = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters
+      ( _size_read_queue    
+	,_nb_context         
+	,_nb_front_end       
+	,_nb_ooo_engine
+	,_nb_packet          
+	,_size_general_data  
+	,_size_special_data  
+	,_nb_general_register
+	,_nb_special_register
+	,_nb_operation       
+	,_nb_type            
+	,_nb_gpr_write
+	,_nb_spr_write
+	,_size_store_queue
+	,_size_load_queue 
+	);
+
+    _param_reservation_station = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters
+	(size_reservation_station
+	 ,nb_inst_retire     
+	 ,nb_context         
+	 ,nb_front_end       
+	 ,nb_ooo_engine
+	 ,nb_packet          
+	 ,size_general_data  
+	 ,size_special_data  
+	 ,nb_general_register
+	 ,nb_special_register
+	 ,nb_operation       
+	 ,nb_type            
+	 ,nb_gpr_write
+	 ,nb_spr_write
+	 ,nb_bypass_write 
+	 ,nb_bypass_memory
+	 ,size_store_queue
+	 ,size_load_queue 
+	 );
+
+
+    test();
+
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Read_unit::Parameters (copy)"
+  Parameters::Parameters (Parameters & param):
+    _size_read_queue          (param._size_read_queue         ),
+    _size_reservation_station (param._size_reservation_station),
+    _nb_context               (param._nb_context              ),
+    _nb_front_end             (param._nb_front_end            ),
+    _nb_ooo_engine            (param._nb_ooo_engine           ),
+    _nb_packet                (param._nb_packet               ),
+    _size_general_data        (param._size_general_data       ),
+    _size_special_data        (param._size_special_data       ),
+    _nb_general_register      (param._nb_general_register     ),
+    _nb_special_register      (param._nb_special_register     ),
+    _nb_operation             (param._nb_operation            ),
+    _nb_type                  (param._nb_type                 ),
+    _nb_gpr_write             (param._nb_gpr_write            ),
+    _nb_spr_write             (param._nb_spr_write            ),
+    _size_store_queue         (param._size_store_queue        ),
+    _size_load_queue          (param._size_load_queue         ),
+    _nb_inst_retire           (param._nb_inst_retire          ),
+    _nb_bypass_write          (param._nb_bypass_write         ),
+    _nb_bypass_memory         (param._nb_bypass_memory        ),
+
+    _nb_gpr_read              (param._nb_gpr_read             ),
+    _nb_spr_read              (param._nb_spr_read             ),    
+    _size_context_id          (param._size_context_id         ),
+    _size_front_end_id        (param._size_front_end_id       ),
+    _size_ooo_engine_id       (param._size_ooo_engine_id      ),
+    _size_packet_id           (param._size_packet_id          ),
+    _size_general_register    (param._size_general_register   ),
+    _size_special_register    (param._size_special_register   ),
+    _size_operation           (param._size_operation          ),
+    _size_type                (param._size_type               ),
+
+    _have_port_context_id     (param._have_port_context_id    ),
+    _have_port_front_end_id   (param._have_port_front_end_id  ),
+    _have_port_ooo_engine_id  (param._have_port_ooo_engine_id ),
+    _have_port_packet_id      (param._have_port_packet_id     )
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+    _param_read_queue          = param._param_read_queue         ;
+    _param_reservation_station = param._param_reservation_station;
+
+    test();
+
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::~Parameters"
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+    delete _param_read_queue;
+    delete _param_reservation_station;
+
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_msg_error.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_msg_error.cpp	(revision 76)
@@ -0,0 +1,41 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h"
+#include <sstream>
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::msg_error"
+  std::string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+    std::string msg = "";
+
+    return msg;
+
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_print.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_print.cpp	(revision 76)
@@ -0,0 +1,76 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::print"
+  std::string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+    XML xml ("read_unit");
+
+    xml.balise_open("read_unit");
+    xml.singleton_begin("size_read_queue         "); xml.attribut("value",toString(_size_read_queue         )); xml.singleton_end();
+    xml.singleton_begin("size_reservation_station"); xml.attribut("value",toString(_size_reservation_station)); xml.singleton_end();
+    xml.singleton_begin("nb_context              "); xml.attribut("value",toString(_nb_context              )); xml.singleton_end();
+    xml.singleton_begin("nb_front_end            "); xml.attribut("value",toString(_nb_front_end            )); xml.singleton_end();
+    xml.singleton_begin("nb_ooo_engine           "); xml.attribut("value",toString(_nb_ooo_engine           )); xml.singleton_end();
+    xml.singleton_begin("nb_packet               "); xml.attribut("value",toString(_nb_packet               )); xml.singleton_end();
+    xml.singleton_begin("size_general_data       "); xml.attribut("value",toString(_size_general_data       )); xml.singleton_end();
+    xml.singleton_begin("size_special_data       "); xml.attribut("value",toString(_size_special_data       )); xml.singleton_end();
+    xml.singleton_begin("nb_general_register     "); xml.attribut("value",toString(_nb_general_register     )); xml.singleton_end();
+    xml.singleton_begin("nb_special_register     "); xml.attribut("value",toString(_nb_special_register     )); xml.singleton_end();
+    xml.singleton_begin("nb_operation            "); xml.attribut("value",toString(_nb_operation            )); xml.singleton_end();
+    xml.singleton_begin("nb_type                 "); xml.attribut("value",toString(_nb_type                 )); xml.singleton_end();
+    xml.singleton_begin("nb_gpr_write            "); xml.attribut("value",toString(_nb_gpr_write            )); xml.singleton_end();
+    xml.singleton_begin("nb_spr_write            "); xml.attribut("value",toString(_nb_spr_write            )); xml.singleton_end();
+    xml.singleton_begin("size_store_queue        "); xml.attribut("value",toString(_size_store_queue        )); xml.singleton_end();
+    xml.singleton_begin("size_load_queue         "); xml.attribut("value",toString(_size_load_queue         )); xml.singleton_end();
+    xml.singleton_begin("nb_inst_retire          "); xml.attribut("value",toString(_nb_inst_retire          )); xml.singleton_end();
+    xml.singleton_begin("nb_bypass_write         "); xml.attribut("value",toString(_nb_bypass_write         )); xml.singleton_end();
+    xml.singleton_begin("nb_bypass_memory        "); xml.attribut("value",toString(_nb_bypass_memory        )); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+    
+    return xml.get_body(depth);
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::operator<<"
+  std::ostream& operator<< (std::ostream& output_stream ,
+			    morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::Parameters & x)
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+    
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit.cpp	(revision 76)
@@ -0,0 +1,113 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::Read_unit"
+  Read_unit::Read_unit 
+  (
+#ifdef SYSTEMC
+   sc_module_name name,
+#else
+   string name,
+#endif
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::Parameters * param,
+   morpheo::behavioural::Tusage_t usage
+   ):
+    _name              (name)
+    ,_param            (param)
+    ,_usage            (usage)
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+    log_printf(INFO,Read_unit,FUNCTION,"Allocation");
+
+    allocation (
+#ifdef STATISTICS
+		param_statistics
+#endif
+		);
+
+#ifdef STATISTICS
+    if (_usage & USE_STATISTICS)
+      {	
+	log_printf(INFO,Read_unit,FUNCTION,"Allocation of statistics");
+
+	statistics_declaration(param_statistics);
+      }
+#endif
+
+#ifdef VHDL
+    if (_usage & USE_VHDL)
+      {
+	// generate the vhdl
+	log_printf(INFO,Read_unit,FUNCTION,"Generate the vhdl");
+	
+	vhdl();
+      }
+#endif
+
+#ifdef SYSTEMC
+    if (_usage & USE_SYSTEMC)
+      {
+	log_printf(INFO,Read_unit,FUNCTION,"Method - transition");
+
+	SC_METHOD (transition);
+	dont_initialize ();
+	sensitive << (*(in_CLOCK)).pos();
+	
+# ifdef SYSTEMCASS_SPECIFIC
+	// List dependency information
+# endif    
+	
+#endif
+      }
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+    
+#undef  FUNCTION
+#define FUNCTION "Read_unit::~Read_unit"
+  Read_unit::~Read_unit (void)
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    if (_usage & USE_STATISTICS)
+      {
+	log_printf(INFO,Read_unit,FUNCTION,"Generate Statistics file");
+	
+	delete _stat;
+      }
+#endif
+
+    log_printf(INFO,Read_unit,FUNCTION,"Deallocation");
+    deallocation ();
+
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp	(revision 76)
@@ -0,0 +1,545 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h"
+#include "Behavioural/include/Allocation.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::allocation"
+  void Read_unit::allocation (
+#ifdef STATISTICS
+			       morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+			       void
+#endif
+			       )
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+    _component   = new Component (_usage);
+
+    Entity * entity = _component->set_entity (_name       
+					      ,"Read_unit"
+#ifdef POSITION
+					      ,COMBINATORY 
+#endif
+					      );
+
+    _interfaces = entity->set_interfaces();
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+      Interface * interface = _interfaces->set_interface(""
+#ifdef POSITION
+							 ,IN
+							 ,SOUTH,
+							 "Generalist interface"
+#endif
+							 );
+
+     in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
+     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
+
+    // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC_INTERFACE("read_unit_in", IN, WEST, "Enter of new operation");
+
+       ALLOC_VAL_IN    ( in_READ_UNIT_IN_VAL);
+       ALLOC_ACK_OUT   (out_READ_UNIT_IN_ACK);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id   );
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id );
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OOO_ENGINE_ID        ,"ooo_engine_id"        ,Tcontext_t        ,_param->_size_ooo_engine_id);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_PACKET_ID            ,"packet_id"            ,Tpacket_t         ,_param->_size_packet_id    );
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation    );
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type         );
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue  );
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue   );
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RA              ,"read_ra"              ,Tcontrol_t        ,1);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RA           ,"num_reg_ra"           ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RB              ,"read_rb"              ,Tcontrol_t        ,1);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RB           ,"num_reg_rb"           ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RC              ,"read_rc"              ,Tcontrol_t        ,1);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RC           ,"num_reg_rc"           ,Tspecial_address_t,_param->_size_special_register);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1);
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
+     }
+
+    // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC1_INTERFACE("read_unit_out", OUT, EAST, "Output of operation. All operand is valid.", _param->_nb_inst_retire);
+
+       ALLOC1_VAL_OUT   (out_READ_UNIT_OUT_VAL);
+       ALLOC1_ACK_IN    ( in_READ_UNIT_OUT_ACK);
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id      );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id    );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_OOO_ENGINE_ID        ,"ooo_engine_id"        ,Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_PACKET_ID            ,"packet_id"            ,Tpacket_t         ,_param->_size_packet_id       );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation       );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type            );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue     );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue      );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data    );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_DATA_RA              ,"data_ra"              ,Tgeneral_data_t   ,_param->_size_general_data    );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_DATA_RB              ,"data_rb"              ,Tgeneral_data_t   ,_param->_size_general_data    );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_DATA_RC              ,"data_rc"              ,Tspecial_data_t   ,_param->_size_special_data    );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register);
+     }
+
+    // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC1_INTERFACE("gpr_read", OUT, SOUTH, "Read port.", _param->_nb_gpr_read);
+
+       ALLOC1_VAL_OUT   (out_GPR_READ_VAL);
+       ALLOC1_ACK_IN    ( in_GPR_READ_ACK);
+       ALLOC1_SIGNAL_OUT(out_GPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_OUT(out_GPR_READ_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_data    );
+       ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_register);
+       ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA_VAL     ,"data_val"     ,Tcontrol_t        ,1);
+     }
+
+    // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC1_INTERFACE("spr_read", OUT, SOUTH, "Read port.", _param->_nb_spr_read);
+
+       ALLOC1_VAL_OUT   (out_SPR_READ_VAL);
+       ALLOC1_ACK_IN    ( in_SPR_READ_ACK);
+       ALLOC1_SIGNAL_OUT(out_SPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_OUT(out_SPR_READ_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_data    );
+       ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_register);
+       ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA_VAL     ,"data_val"     ,Tcontrol_t        ,1);
+     }
+
+    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC1_INTERFACE("gpr_write", IN , SOUTH, "Write port.", _param->_nb_gpr_write);
+
+       ALLOC1_VAL_IN    ( in_GPR_WRITE_VAL);
+       ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_data    );
+       ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_register);
+     }
+
+    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC1_INTERFACE("spr_write", IN , SOUTH, "Write port.", _param->_nb_spr_write);
+
+       ALLOC1_VAL_IN    ( in_SPR_WRITE_VAL);
+       ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_data    );
+       ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_register);
+     }
+
+    // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC1_INTERFACE("bypass_write", IN , NORTH, "Output of write_queue.", _param->_nb_bypass_write);
+
+       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_VAL      ,"gpr_val"      ,Tcontrol_t        ,1);
+       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_NUM_REG  ,"gpr_num_reg"  ,Tgeneral_address_t,_param->_size_general_data    );
+       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_DATA     ,"gpr_data"     ,Tgeneral_data_t   ,_param->_size_general_register);
+       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_VAL      ,"spr_val"      ,Tcontrol_t        ,1);
+       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG  ,"spr_num_reg"  ,Tspecial_address_t,_param->_size_special_data    );
+       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA     ,"spr_data"     ,Tspecial_data_t   ,_param->_size_special_register);
+     }
+
+    // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC1_INTERFACE("bypass_memory", IN , NORTH, "Output of write_queue.", _param->_nb_bypass_memory);
+
+       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_VAL          ,"val"          ,Tcontrol_t        ,1);
+       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_data    );
+       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_register);
+     }
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+     std::string name;
+
+     {
+       name = _name+"_read_queue";
+       
+       _component_read_queue  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Read_queue (name.c_str()
+#ifdef STATISTICS
+																		      ,param_statistics
+#endif
+																		      ,_param->_param_read_queue);
+       
+       _component->set_component (_component_read_queue->_component
+#ifdef POSITION
+				  , 50, 50, 10, 10
+#endif
+				  );
+     }
+     {
+       name = _name+"_reservation_station";
+       
+       _component_reservation_station  = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Reservation_station (name.c_str()
+#ifdef STATISTICS
+																						 ,param_statistics
+#endif
+																						 ,_param->_param_reservation_station);
+       
+       _component->set_component (_component_reservation_station->_component
+#ifdef POSITION
+				  , 50, 50, 10, 10
+#endif
+				  );
+     }
+
+    // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+     {
+       name = _name+"_read_queue";
+       std::cout << "Instance : " << name << std::endl;
+	
+       {
+#ifdef POSITION
+	 _component->interface_map (name ,"",
+				    _name,"");
+#endif
+
+	 _component->port_map(name,"in_CLOCK" , _name, "in_CLOCK");
+	 _component->port_map(name,"in_NRESET", _name, "in_NRESET");
+       }
+
+       // ~~~~~[ Interface "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       {
+	 std::string dest = _name;
+#ifdef POSITION
+	 _component->interface_map (name,"read_queue_in",
+				    dest,"read_unit_in");
+#endif
+
+	 _component->port_map(name, "in_READ_QUEUE_IN_VAL"                  ,dest, "in_READ_UNIT_IN_VAL"                  );
+	 _component->port_map(name,"out_READ_QUEUE_IN_ACK"                  ,dest,"out_READ_UNIT_IN_ACK"                  );
+	 if (_param->_have_port_context_id)
+	 _component->port_map(name, "in_READ_QUEUE_IN_CONTEXT_ID"           ,dest, "in_READ_UNIT_IN_CONTEXT_ID"           );
+	 if (_param->_have_port_front_end_id)
+	 _component->port_map(name, "in_READ_QUEUE_IN_FRONT_END_ID"         ,dest, "in_READ_UNIT_IN_FRONT_END_ID"         );
+	 if (_param->_have_port_ooo_engine_id)
+	 _component->port_map(name, "in_READ_QUEUE_IN_OOO_ENGINE_ID"        ,dest, "in_READ_UNIT_IN_OOO_ENGINE_ID"        );
+	 if (_param->_have_port_packet_id)
+	 _component->port_map(name, "in_READ_QUEUE_IN_ROB_ID"               ,dest, "in_READ_UNIT_IN_PACKET_ID"            );
+	 _component->port_map(name, "in_READ_QUEUE_IN_OPERATION"            ,dest, "in_READ_UNIT_IN_OPERATION"            );
+	 _component->port_map(name, "in_READ_QUEUE_IN_TYPE"                 ,dest, "in_READ_UNIT_IN_TYPE"                 );
+	 _component->port_map(name, "in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE",dest, "in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE");
+	 _component->port_map(name, "in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE" ,dest, "in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE" );
+	 _component->port_map(name, "in_READ_QUEUE_IN_HAS_IMMEDIAT"         ,dest, "in_READ_UNIT_IN_HAS_IMMEDIAT"         );
+	 _component->port_map(name, "in_READ_QUEUE_IN_IMMEDIAT"             ,dest, "in_READ_UNIT_IN_IMMEDIAT"             );
+	 _component->port_map(name, "in_READ_QUEUE_IN_READ_RA"              ,dest, "in_READ_UNIT_IN_READ_RA"              );
+	 _component->port_map(name, "in_READ_QUEUE_IN_NUM_REG_RA"           ,dest, "in_READ_UNIT_IN_NUM_REG_RA"           );
+	 _component->port_map(name, "in_READ_QUEUE_IN_READ_RB"              ,dest, "in_READ_UNIT_IN_READ_RB"              );
+	 _component->port_map(name, "in_READ_QUEUE_IN_NUM_REG_RB"           ,dest, "in_READ_UNIT_IN_NUM_REG_RB"           );
+	 _component->port_map(name, "in_READ_QUEUE_IN_READ_RC"              ,dest, "in_READ_UNIT_IN_READ_RC"              );
+	 _component->port_map(name, "in_READ_QUEUE_IN_NUM_REG_RC"           ,dest, "in_READ_UNIT_IN_NUM_REG_RC"           );
+	 _component->port_map(name, "in_READ_QUEUE_IN_WRITE_RD"             ,dest, "in_READ_UNIT_IN_WRITE_RD"             );
+	 _component->port_map(name, "in_READ_QUEUE_IN_NUM_REG_RD"           ,dest, "in_READ_UNIT_IN_NUM_REG_RD"           );
+	 _component->port_map(name, "in_READ_QUEUE_IN_WRITE_RE"             ,dest, "in_READ_UNIT_IN_WRITE_RE"             );
+	 _component->port_map(name, "in_READ_QUEUE_IN_NUM_REG_RE"           ,dest, "in_READ_UNIT_IN_NUM_REG_RE"           );
+       }
+       // ~~~~~[ Interface "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       {
+	 std::string dest = _name+"_reservation_station";
+	 
+#ifdef POSITION
+	 _component->interface_map (name,"read_queue_in",
+				    dest,"insert");
+#endif
+
+	 _component->port_map(name,"out_READ_QUEUE_OUT_VAL"                  ,dest, "in_INSERT_VAL"                  );
+	 _component->port_map(name, "in_READ_QUEUE_OUT_ACK"                  ,dest,"out_INSERT_ACK"                  );
+	 if (_param->_have_port_context_id)
+	 _component->port_map(name,"out_READ_QUEUE_OUT_CONTEXT_ID"           ,dest, "in_INSERT_CONTEXT_ID"           );
+	 if (_param->_have_port_front_end_id)
+	 _component->port_map(name,"out_READ_QUEUE_OUT_FRONT_END_ID"         ,dest, "in_INSERT_FRONT_END_ID"         );
+	 if (_param->_have_port_ooo_engine_id)
+	 _component->port_map(name,"out_READ_QUEUE_OUT_OOO_ENGINE_ID"        ,dest, "in_INSERT_OOO_ENGINE_ID"        );
+	 if (_param->_have_port_packet_id)
+	 _component->port_map(name,"out_READ_QUEUE_OUT_ROB_ID"               ,dest, "in_INSERT_ROB_ID"               );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_OPERATION"            ,dest, "in_INSERT_OPERATION"            );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_TYPE"                 ,dest, "in_INSERT_TYPE"                 );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE",dest, "in_INSERT_STORE_QUEUE_PTR_WRITE");
+	 _component->port_map(name,"out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE" ,dest, "in_INSERT_LOAD_QUEUE_PTR_WRITE" );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_HAS_IMMEDIAT"         ,dest, "in_INSERT_HAS_IMMEDIAT"         );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_IMMEDIAT"             ,dest, "in_INSERT_IMMEDIAT"             );
+// 	 _component->port_map(name,"out_READ_QUEUE_OUT_READ_RA"              ,dest, "in_INSERT_READ_RA"              );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_NUM_REG_RA"           ,dest, "in_INSERT_NUM_REG_RA"           );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_DATA_RA_VAL"          ,dest, "in_INSERT_DATA_RA_VAL"          );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_DATA_RA"              ,dest, "in_INSERT_DATA_RA"              );
+// 	 _component->port_map(name,"out_READ_QUEUE_OUT_READ_RB"              ,dest, "in_INSERT_READ_RB"              );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_NUM_REG_RB"           ,dest, "in_INSERT_NUM_REG_RB"           );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_DATA_RB_VAL"          ,dest, "in_INSERT_DATA_RB_VAL"          );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_DATA_RB"              ,dest, "in_INSERT_DATA_RB"              );
+// 	 _component->port_map(name,"out_READ_QUEUE_OUT_READ_RC"              ,dest, "in_INSERT_READ_RC"              );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_NUM_REG_RC"           ,dest, "in_INSERT_NUM_REG_RC"           );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_DATA_RC_VAL"          ,dest, "in_INSERT_DATA_RC_VAL"          );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_DATA_RC"              ,dest, "in_INSERT_DATA_RC"              );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_WRITE_RD"             ,dest, "in_INSERT_WRITE_RD"             );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_NUM_REG_RD"           ,dest, "in_INSERT_NUM_REG_RD"           );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_WRITE_RE"             ,dest, "in_INSERT_WRITE_RE"             );
+	 _component->port_map(name,"out_READ_QUEUE_OUT_NUM_REG_RE"           ,dest, "in_INSERT_NUM_REG_RE"           );
+       }
+       // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       for (uint32_t i=0; i<_param->_nb_gpr_read; i++)
+	 {
+	   std::string dest = _name;
+#ifdef POSITION
+	   _component->interface_map (name,"gpr_read_"+toString(i),
+				      dest,"gpr_read_"+toString(i));
+#endif
+
+	   _component->port_map(name,"out_GPR_READ_"+toString(i)+"_VAL"          ,dest,"out_GPR_READ_"+toString(i)+"_VAL"          );
+	   _component->port_map(name, "in_GPR_READ_"+toString(i)+"_ACK"          ,dest, "in_GPR_READ_"+toString(i)+"_ACK"          );
+	   if (_param->_have_port_ooo_engine_id)
+	   _component->port_map(name,"out_GPR_READ_"+toString(i)+"_OOO_ENGINE_ID",dest,"out_GPR_READ_"+toString(i)+"_OOO_ENGINE_ID");
+	   _component->port_map(name,"out_GPR_READ_"+toString(i)+"_NUM_REG"      ,dest,"out_GPR_READ_"+toString(i)+"_NUM_REG"      );
+	   _component->port_map(name, "in_GPR_READ_"+toString(i)+"_DATA"         ,dest, "in_GPR_READ_"+toString(i)+"_DATA"         );
+	   _component->port_map(name, "in_GPR_READ_"+toString(i)+"_DATA_VAL"     ,dest, "in_GPR_READ_"+toString(i)+"_DATA_VAL"     );
+	 }
+
+       // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       for (uint32_t i=0; i<_param->_nb_spr_read; i++)
+	 {
+	   std::string dest = _name;
+#ifdef POSITION
+	   _component->interface_map (name,"spr_read_"+toString(i),
+				      dest,"spr_read_"+toString(i));
+#endif
+
+	   _component->port_map(name,"out_SPR_READ_"+toString(i)+"_VAL"          ,dest,"out_SPR_READ_"+toString(i)+"_VAL"          );
+	   _component->port_map(name, "in_SPR_READ_"+toString(i)+"_ACK"          ,dest, "in_SPR_READ_"+toString(i)+"_ACK"          );
+	   if (_param->_have_port_ooo_engine_id)
+	   _component->port_map(name,"out_SPR_READ_"+toString(i)+"_OOO_ENGINE_ID",dest,"out_SPR_READ_"+toString(i)+"_OOO_ENGINE_ID");
+	   _component->port_map(name,"out_SPR_READ_"+toString(i)+"_NUM_REG"      ,dest,"out_SPR_READ_"+toString(i)+"_NUM_REG"      );
+	   _component->port_map(name, "in_SPR_READ_"+toString(i)+"_DATA"         ,dest, "in_SPR_READ_"+toString(i)+"_DATA"         );
+	   _component->port_map(name, "in_SPR_READ_"+toString(i)+"_DATA_VAL"     ,dest, "in_SPR_READ_"+toString(i)+"_DATA_VAL"     );
+	 }
+
+       // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+	 {
+	   std::string dest = _name;
+#ifdef POSITION
+	   _component->interface_map (name,"gpr_write_"+toString(i),
+				      dest,"gpr_write_"+toString(i));
+#endif
+	   
+	   _component->port_map(name, "in_GPR_WRITE_"+toString(i)+"_VAL"          ,dest, "in_GPR_WRITE_"+toString(i)+"_VAL"          );
+	   if (_param->_have_port_ooo_engine_id)
+	   _component->port_map(name, "in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID",dest, "in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID");
+	   _component->port_map(name, "in_GPR_WRITE_"+toString(i)+"_NUM_REG"      ,dest, "in_GPR_WRITE_"+toString(i)+"_NUM_REG"      );
+	   _component->port_map(name, "in_GPR_WRITE_"+toString(i)+"_DATA"         ,dest, "in_GPR_WRITE_"+toString(i)+"_DATA"         );
+	 }
+       // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+	 {
+	   std::string dest = _name;
+#ifdef POSITION
+	   _component->interface_map (name,"spr_write_"+toString(i),
+				      dest,"spr_write_"+toString(i));
+#endif
+	   
+	   _component->port_map(name, "in_SPR_WRITE_"+toString(i)+"_VAL"          ,dest, "in_SPR_WRITE_"+toString(i)+"_VAL"          );
+	   if (_param->_have_port_ooo_engine_id)
+	   _component->port_map(name, "in_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID",dest, "in_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID");
+	   _component->port_map(name, "in_SPR_WRITE_"+toString(i)+"_NUM_REG"      ,dest, "in_SPR_WRITE_"+toString(i)+"_NUM_REG"      );
+	   _component->port_map(name, "in_SPR_WRITE_"+toString(i)+"_DATA"         ,dest, "in_SPR_WRITE_"+toString(i)+"_DATA"         );
+	 }
+     }
+
+     {
+       name = _name+"_reservation_station";
+       std::cout << "Instance : " << name << std::endl;
+	
+       {
+#ifdef POSITION
+	 _component->interface_map (name ,"",
+				    _name,"");
+#endif
+
+	 _component->port_map(name,"in_CLOCK" , _name, "in_CLOCK");
+	 _component->port_map(name,"in_NRESET", _name, "in_NRESET");
+       }
+
+       // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       {
+	 std::string dest = _name+"_read_queue";
+	 
+#ifdef POSITION
+	 _component->interface_map (name,"insert",
+				    dest,"read_queue_in");
+#endif
+
+	 _component->port_map(name, "in_INSERT_VAL"                  ,dest,"out_READ_QUEUE_OUT_VAL"                  );
+	 _component->port_map(name,"out_INSERT_ACK"                  ,dest, "in_READ_QUEUE_OUT_ACK"                  );
+	 if (_param->_have_port_context_id)
+	 _component->port_map(name, "in_INSERT_CONTEXT_ID"           ,dest,"out_READ_QUEUE_OUT_CONTEXT_ID"           );
+	 if (_param->_have_port_front_end_id)
+	 _component->port_map(name, "in_INSERT_FRONT_END_ID"         ,dest,"out_READ_QUEUE_OUT_FRONT_END_ID"         );
+	 if (_param->_have_port_ooo_engine_id)
+	 _component->port_map(name, "in_INSERT_OOO_ENGINE_ID"        ,dest,"out_READ_QUEUE_OUT_OOO_ENGINE_ID"        );
+	 if (_param->_have_port_packet_id)
+	 _component->port_map(name, "in_INSERT_ROB_ID"               ,dest,"out_READ_QUEUE_OUT_ROB_ID"               );
+	 _component->port_map(name, "in_INSERT_OPERATION"            ,dest,"out_READ_QUEUE_OUT_OPERATION"            );
+	 _component->port_map(name, "in_INSERT_TYPE"                 ,dest,"out_READ_QUEUE_OUT_TYPE"                 );
+	 _component->port_map(name, "in_INSERT_STORE_QUEUE_PTR_WRITE",dest,"out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE");
+	 _component->port_map(name, "in_INSERT_LOAD_QUEUE_PTR_WRITE" ,dest,"out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE" );
+	 _component->port_map(name, "in_INSERT_HAS_IMMEDIAT"         ,dest,"out_READ_QUEUE_OUT_HAS_IMMEDIAT"         );
+	 _component->port_map(name, "in_INSERT_IMMEDIAT"             ,dest,"out_READ_QUEUE_OUT_IMMEDIAT"             );
+// 	 _component->port_map(name, "in_INSERT_READ_RA"              ,dest,"out_READ_QUEUE_OUT_READ_RA"              );
+	 _component->port_map(name, "in_INSERT_NUM_REG_RA"           ,dest,"out_READ_QUEUE_OUT_NUM_REG_RA"           );
+	 _component->port_map(name, "in_INSERT_DATA_RA_VAL"          ,dest,"out_READ_QUEUE_OUT_DATA_RA_VAL"          );
+	 _component->port_map(name, "in_INSERT_DATA_RA"              ,dest,"out_READ_QUEUE_OUT_DATA_RA"              );
+// 	 _component->port_map(name, "in_INSERT_READ_RB"              ,dest,"out_READ_QUEUE_OUT_READ_RB"              );
+	 _component->port_map(name, "in_INSERT_NUM_REG_RB"           ,dest,"out_READ_QUEUE_OUT_NUM_REG_RB"           );
+	 _component->port_map(name, "in_INSERT_DATA_RB_VAL"          ,dest,"out_READ_QUEUE_OUT_DATA_RB_VAL"          );
+	 _component->port_map(name, "in_INSERT_DATA_RB"              ,dest,"out_READ_QUEUE_OUT_DATA_RB"              );
+// 	 _component->port_map(name, "in_INSERT_READ_RC"              ,dest,"out_READ_QUEUE_OUT_READ_RC"              );
+	 _component->port_map(name, "in_INSERT_NUM_REG_RC"           ,dest,"out_READ_QUEUE_OUT_NUM_REG_RC"           );
+	 _component->port_map(name, "in_INSERT_DATA_RC_VAL"          ,dest,"out_READ_QUEUE_OUT_DATA_RC_VAL"          );
+	 _component->port_map(name, "in_INSERT_DATA_RC"              ,dest,"out_READ_QUEUE_OUT_DATA_RC"              );
+	 _component->port_map(name, "in_INSERT_WRITE_RD"             ,dest,"out_READ_QUEUE_OUT_WRITE_RD"             );
+	 _component->port_map(name, "in_INSERT_NUM_REG_RD"           ,dest,"out_READ_QUEUE_OUT_NUM_REG_RD"           );
+	 _component->port_map(name, "in_INSERT_WRITE_RE"             ,dest,"out_READ_QUEUE_OUT_WRITE_RE"             );
+	 _component->port_map(name, "in_INSERT_NUM_REG_RE"           ,dest,"out_READ_QUEUE_OUT_NUM_REG_RE"           );
+       }
+
+       // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
+	 {
+	   std::string dest = _name;
+	   
+#ifdef POSITION
+	   _component->interface_map (name,"retire_"+toString(i),
+				      dest,"read_unit_out_"+toString(i));
+#endif
+	   
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_VAL"                  ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_VAL"                  );
+	   _component->port_map(name, "in_RETIRE_"+toString(i)+"_ACK"                  ,dest, "in_READ_UNIT_OUT_"+toString(i)+"_ACK"                  );
+	   if (_param->_have_port_context_id)
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_CONTEXT_ID"           ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_CONTEXT_ID"           );
+	   if (_param->_have_port_front_end_id)
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_FRONT_END_ID"         ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_FRONT_END_ID"         );
+	   if (_param->_have_port_ooo_engine_id)
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_OOO_ENGINE_ID"        ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_OOO_ENGINE_ID"        );
+	   if (_param->_have_port_packet_id)
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_ROB_ID"               ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_PACKET_ID"            );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_OPERATION"            ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_OPERATION"            );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_TYPE"                 ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_TYPE"                 );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_STORE_QUEUE_PTR_WRITE",dest,"out_READ_UNIT_OUT_"+toString(i)+"_STORE_QUEUE_PTR_WRITE");
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_HAS_IMMEDIAT"         ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_HAS_IMMEDIAT"         );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_IMMEDIAT"             ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_IMMEDIAT"             );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_DATA_RA"              ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_DATA_RA"              );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_DATA_RB"              ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_DATA_RB"              );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_DATA_RC"              ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_DATA_RC"              );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_WRITE_RD"             ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_WRITE_RD"             );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_NUM_REG_RD"           ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_NUM_REG_RD"           );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_WRITE_RE"             ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_WRITE_RE"             );
+	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_NUM_REG_RE"           ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_NUM_REG_RE"           );
+	 }
+
+       // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+	 {
+	   std::string dest = _name;
+#ifdef POSITION
+	   _component->interface_map (name,"gpr_write_"+toString(i),
+				      dest,"gpr_write_"+toString(i));
+#endif
+	   
+	   _component->port_map(name, "in_GPR_WRITE_"+toString(i)+"_VAL"          ,dest, "in_GPR_WRITE_"+toString(i)+"_VAL"          );
+	   if (_param->_have_port_ooo_engine_id)
+	   _component->port_map(name, "in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID",dest, "in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID");
+	   _component->port_map(name, "in_GPR_WRITE_"+toString(i)+"_NUM_REG"      ,dest, "in_GPR_WRITE_"+toString(i)+"_NUM_REG"      );
+	   _component->port_map(name, "in_GPR_WRITE_"+toString(i)+"_DATA"         ,dest, "in_GPR_WRITE_"+toString(i)+"_DATA"         );
+	 }
+       // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+	 {
+	   std::string dest = _name;
+#ifdef POSITION
+	   _component->interface_map (name,"spr_write_"+toString(i),
+				      dest,"spr_write_"+toString(i));
+#endif
+	   
+	   _component->port_map(name, "in_SPR_WRITE_"+toString(i)+"_VAL"          ,dest, "in_SPR_WRITE_"+toString(i)+"_VAL"          );
+	   if (_param->_have_port_ooo_engine_id)
+	   _component->port_map(name, "in_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID",dest, "in_SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID");
+	   _component->port_map(name, "in_SPR_WRITE_"+toString(i)+"_NUM_REG"      ,dest, "in_SPR_WRITE_"+toString(i)+"_NUM_REG"      );
+	   _component->port_map(name, "in_SPR_WRITE_"+toString(i)+"_DATA"         ,dest, "in_SPR_WRITE_"+toString(i)+"_DATA"         );
+	 }
+       // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       for (uint32_t i=0; i<_param->_nb_bypass_write; i++)
+	 {
+	   std::string dest = _name;
+#ifdef POSITION
+	   _component->interface_map (name,"bypass_write_"+toString(i),
+				      dest,"bypass_write_"+toString(i));
+#endif
+	   
+	   if (_param->_have_port_ooo_engine_id)
+	   _component->port_map(name, "in_BYPASS_WRITE_"+toString(i)+"_OOO_ENGINE_ID",dest, "in_BYPASS_WRITE_"+toString(i)+"_OOO_ENGINE_ID");
+	   _component->port_map(name, "in_BYPASS_WRITE_"+toString(i)+"_GPR_VAL"      ,dest, "in_BYPASS_WRITE_"+toString(i)+"_GPR_VAL"      );
+	   _component->port_map(name, "in_BYPASS_WRITE_"+toString(i)+"_GPR_NUM_REG"  ,dest, "in_BYPASS_WRITE_"+toString(i)+"_GPR_NUM_REG"  );
+	   _component->port_map(name, "in_BYPASS_WRITE_"+toString(i)+"_GPR_DATA"     ,dest, "in_BYPASS_WRITE_"+toString(i)+"_GPR_DATA"     );
+	   _component->port_map(name, "in_BYPASS_WRITE_"+toString(i)+"_SPR_VAL"      ,dest, "in_BYPASS_WRITE_"+toString(i)+"_SPR_VAL"      );
+	   _component->port_map(name, "in_BYPASS_WRITE_"+toString(i)+"_SPR_NUM_REG"  ,dest, "in_BYPASS_WRITE_"+toString(i)+"_SPR_NUM_REG"  );
+	   _component->port_map(name, "in_BYPASS_WRITE_"+toString(i)+"_SPR_DATA"     ,dest, "in_BYPASS_WRITE_"+toString(i)+"_SPR_DATA"     );
+	 }
+       // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       for (uint32_t i=0; i<_param->_nb_bypass_memory; i++)
+	 {
+	   std::string dest = _name;
+#ifdef POSITION
+	   _component->interface_map (name,"bypass_memory_"+toString(i),
+				      dest,"bypass_memory_"+toString(i));
+#endif
+	   
+	   if (_param->_have_port_ooo_engine_id)
+	   _component->port_map(name, "in_BYPASS_MEMORY_"+toString(i)+"_OOO_ENGINE_ID",dest, "in_BYPASS_MEMORY_"+toString(i)+"_OOO_ENGINE_ID");
+	   _component->port_map(name, "in_BYPASS_MEMORY_"+toString(i)+"_VAL"          ,dest, "in_BYPASS_MEMORY_"+toString(i)+"_VAL"          );
+	   _component->port_map(name, "in_BYPASS_MEMORY_"+toString(i)+"_NUM_REG"      ,dest, "in_BYPASS_MEMORY_"+toString(i)+"_NUM_REG"      );
+	   _component->port_map(name, "in_BYPASS_MEMORY_"+toString(i)+"_DATA"         ,dest, "in_BYPASS_MEMORY_"+toString(i)+"_DATA"         );
+	 }       
+     }
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
+
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp	(revision 76)
@@ -0,0 +1,148 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::deallocation"
+  void Read_unit::deallocation (void)
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+    if (_usage & USE_SYSTEMC)
+      {
+	delete     in_CLOCK ;
+	delete     in_NRESET;
+
+	// ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	delete     in_READ_UNIT_IN_VAL                  ;
+	delete    out_READ_UNIT_IN_ACK                  ;
+	if (_param->_have_port_context_id)
+	delete     in_READ_UNIT_IN_CONTEXT_ID           ;
+	if (_param->_have_port_front_end_id)
+	delete     in_READ_UNIT_IN_FRONT_END_ID         ;
+	if (_param->_have_port_ooo_engine_id)
+	delete     in_READ_UNIT_IN_OOO_ENGINE_ID        ;
+	if (_param->_have_port_packet_id)
+	delete     in_READ_UNIT_IN_PACKET_ID            ;
+	delete     in_READ_UNIT_IN_OPERATION            ;
+	delete     in_READ_UNIT_IN_TYPE                 ;
+	delete     in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE;
+	delete     in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ;
+	delete     in_READ_UNIT_IN_HAS_IMMEDIAT         ;
+	delete     in_READ_UNIT_IN_IMMEDIAT             ;
+	delete     in_READ_UNIT_IN_READ_RA              ;
+	delete     in_READ_UNIT_IN_NUM_REG_RA           ;
+	delete     in_READ_UNIT_IN_READ_RB              ;
+	delete     in_READ_UNIT_IN_NUM_REG_RB           ;
+	delete     in_READ_UNIT_IN_READ_RC              ;
+	delete     in_READ_UNIT_IN_NUM_REG_RC           ;
+	delete     in_READ_UNIT_IN_WRITE_RD             ;
+	delete     in_READ_UNIT_IN_NUM_REG_RD           ;
+	delete     in_READ_UNIT_IN_WRITE_RE             ;
+	delete     in_READ_UNIT_IN_NUM_REG_RE           ;
+
+	// ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	delete [] out_READ_UNIT_OUT_VAL                  ;
+	delete []  in_READ_UNIT_OUT_ACK                  ;
+	if (_param->_have_port_context_id)
+	delete [] out_READ_UNIT_OUT_CONTEXT_ID           ;
+	if (_param->_have_port_front_end_id)
+	delete [] out_READ_UNIT_OUT_FRONT_END_ID         ;
+	if (_param->_have_port_ooo_engine_id)
+	delete [] out_READ_UNIT_OUT_OOO_ENGINE_ID        ;
+	if (_param->_have_port_packet_id)
+	delete [] out_READ_UNIT_OUT_PACKET_ID            ;
+	delete [] out_READ_UNIT_OUT_OPERATION            ;
+	delete [] out_READ_UNIT_OUT_TYPE                 ;
+	delete [] out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE;
+	delete [] out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ;
+	delete [] out_READ_UNIT_OUT_HAS_IMMEDIAT         ;
+	delete [] out_READ_UNIT_OUT_IMMEDIAT             ;
+	delete [] out_READ_UNIT_OUT_DATA_RA              ;
+	delete [] out_READ_UNIT_OUT_DATA_RB              ;
+	delete [] out_READ_UNIT_OUT_DATA_RC              ;
+	delete [] out_READ_UNIT_OUT_WRITE_RD             ;
+	delete [] out_READ_UNIT_OUT_NUM_REG_RD           ;
+	delete [] out_READ_UNIT_OUT_WRITE_RE             ;
+	delete [] out_READ_UNIT_OUT_NUM_REG_RE           ;
+
+	// ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	delete [] out_GPR_READ_VAL          ;
+	delete []  in_GPR_READ_ACK          ;
+	if (_param->_have_port_ooo_engine_id)
+	delete [] out_GPR_READ_OOO_ENGINE_ID;
+	delete [] out_GPR_READ_NUM_REG      ;
+	delete []  in_GPR_READ_DATA         ;
+	delete []  in_GPR_READ_DATA_VAL     ;
+
+	// ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	delete [] out_SPR_READ_VAL          ;
+	delete []  in_SPR_READ_ACK          ;
+	if (_param->_have_port_ooo_engine_id)
+	delete [] out_SPR_READ_OOO_ENGINE_ID;
+	delete [] out_SPR_READ_NUM_REG      ;
+	delete []  in_SPR_READ_DATA         ;
+	delete []  in_SPR_READ_DATA_VAL     ;
+
+	// ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	delete []  in_GPR_WRITE_VAL          ;
+	if (_param->_have_port_ooo_engine_id)
+	delete []  in_GPR_WRITE_OOO_ENGINE_ID;
+	delete []  in_GPR_WRITE_NUM_REG      ;
+	delete []  in_GPR_WRITE_DATA         ;
+
+	// ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	delete []  in_SPR_WRITE_VAL          ;
+	if (_param->_have_port_ooo_engine_id)
+	delete []  in_SPR_WRITE_OOO_ENGINE_ID;
+	delete []  in_SPR_WRITE_NUM_REG      ;
+	delete []  in_SPR_WRITE_DATA         ;
+
+	// ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	if (_param->_have_port_ooo_engine_id)
+	delete []  in_BYPASS_WRITE_OOO_ENGINE_ID ;
+	delete []  in_BYPASS_WRITE_GPR_VAL       ;
+	delete []  in_BYPASS_WRITE_GPR_NUM_REG   ;
+	delete []  in_BYPASS_WRITE_GPR_DATA      ;
+	delete []  in_BYPASS_WRITE_SPR_VAL       ;
+	delete []  in_BYPASS_WRITE_SPR_NUM_REG   ;
+	delete []  in_BYPASS_WRITE_SPR_DATA      ;
+
+	// ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	delete []  in_BYPASS_MEMORY_VAL          ;
+	if (_param->_have_port_ooo_engine_id)
+	delete []  in_BYPASS_MEMORY_OOO_ENGINE_ID;
+	delete []  in_BYPASS_MEMORY_NUM_REG      ;
+	delete []  in_BYPASS_MEMORY_DATA         ;
+      }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    delete _component_read_queue;
+    delete _component_reservation_station;
+    delete _component;
+
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_end_cycle.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_end_cycle.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_end_cycle.cpp	(revision 76)
@@ -0,0 +1,47 @@
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::end_cycle"
+void Read_unit::end_cycle ()
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    _stat->end_cycle();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    // Evaluation before read the ouput signal
+//  sc_start(0);
+    _interfaces->testbench();
+#endif
+
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_statistics_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_statistics_declaration.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_statistics_declaration.cpp	(revision 76)
@@ -0,0 +1,44 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::statistics_declaration"
+  void Read_unit::statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+    _stat = new Stat (static_cast<std::string>(_name),
+		      "Read_unit",
+		      param_statistics);
+
+    _stat->add_stat(_component_read_queue         ->_stat);
+    _stat->add_stat(_component_reservation_station->_stat);
+    
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_transition.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_transition.cpp	(revision 76)
@@ -0,0 +1,41 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::transition"
+  void Read_unit::transition (void)
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    end_cycle ();
+#endif
+
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_vhdl.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_vhdl.cpp	(revision 76)
@@ -0,0 +1,47 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit::vhdl"
+  void Read_unit::vhdl (void)
+  {
+    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
+
+    Vhdl * vhdl = new Vhdl (_name);
+
+    _interfaces->set_port(vhdl);
+    _component->vhdl_instance(vhdl);
+
+    vhdl->generate_file();
+
+    delete vhdl;
+
+    log_printf(FUNC,Read_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit
+}; // end namespace multi_read_unit
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp	(revision 76)
@@ -55,11 +55,7 @@
        ALLOC_VAL_IN    ( in_WRITE_QUEUE_IN_VAL);
        ALLOC_ACK_OUT   (out_WRITE_QUEUE_IN_ACK);
-       if(_param->_have_port_context_id)
        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id       );
-       if(_param->_have_port_front_end_id)
        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id     );
-       if(_param->_have_port_ooo_engine_id)
        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id    );
-       if(_param->_have_port_packet_id)
        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_packet_id        );
 //     ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
@@ -82,11 +78,7 @@
        ALLOC_VAL_OUT   (out_WRITE_QUEUE_OUT_VAL);
        ALLOC_ACK_IN    ( in_WRITE_QUEUE_OUT_ACK);
-       if(_param->_have_port_context_id)
        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id   );
-       if(_param->_have_port_front_end_id)
        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t     ,_param->_size_front_end_id );
-       if(_param->_have_port_ooo_engine_id)
        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t     ,_param->_size_ooo_engine_id);
-       if(_param->_have_port_packet_id)
        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t      ,_param->_size_packet_id    );
 //     ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OPERATION    ,"operation"    ,Toperation_t   ,_param->_size_operation    );
@@ -102,10 +94,9 @@
        ALLOC1_INTERFACE("gpr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_gpr_write);
 
-       ALLOC1_VAL_OUT   (out_GPR_WRITE_VAL          ,_param->_nb_gpr_write);
-       ALLOC1_ACK_IN    ( in_GPR_WRITE_ACK          ,_param->_nb_gpr_write);
-       if(_param->_have_port_ooo_engine_id)
-       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   ,_param->_nb_gpr_write);
-       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register,_param->_nb_gpr_write);
-       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data    ,_param->_nb_gpr_write);
+       ALLOC1_VAL_OUT   (out_GPR_WRITE_VAL);
+       ALLOC1_ACK_IN    ( in_GPR_WRITE_ACK);
+       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data    );
      }
 
@@ -114,10 +105,9 @@
        ALLOC1_INTERFACE("spr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_spr_write);
 
-       ALLOC1_VAL_OUT   (out_SPR_WRITE_VAL          ,_param->_nb_spr_write);
-       ALLOC1_ACK_IN    ( in_SPR_WRITE_ACK          ,_param->_nb_spr_write);
-       if(_param->_have_port_ooo_engine_id)
-       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   ,_param->_nb_spr_write);
-       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register,_param->_nb_spr_write);
-       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data    ,_param->_nb_spr_write);
+       ALLOC1_VAL_OUT   (out_SPR_WRITE_VAL);
+       ALLOC1_ACK_IN    ( in_SPR_WRITE_ACK);
+       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register);
+       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data    );
      }
 
@@ -126,12 +116,11 @@
        ALLOC1_INTERFACE("bypass_write", OUT, NORTH ,"Output of internal write_queue", _param->_nb_bypass_write);
        
-       if(_param->_have_port_ooo_engine_id)
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   , _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_VAL      ,"gpr_val"      ,Tcontrol_t        ,1                             , _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_NUM_REG  ,"gpr_num_reg"  ,Tgeneral_address_t,_param->_size_general_register, _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_DATA     ,"gpr_data"     ,Tgeneral_data_t   ,_param->_size_general_data    , _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_VAL      ,"spr_val"      ,Tcontrol_t        ,1                             , _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_NUM_REG  ,"spr_num_reg"  ,Tspecial_address_t,_param->_size_special_register, _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_DATA     ,"spr_data"     ,Tspecial_data_t   ,_param->_size_special_data    , _param->_nb_bypass_write);
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_VAL      ,"gpr_val"      ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_NUM_REG  ,"gpr_num_reg"  ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_DATA     ,"gpr_data"     ,Tgeneral_data_t   ,_param->_size_general_data    );
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_VAL      ,"spr_val"      ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_NUM_REG  ,"spr_num_reg"  ,Tspecial_address_t,_param->_size_special_register);
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_DATA     ,"spr_data"     ,Tspecial_data_t   ,_param->_size_special_data    );
      }
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h	(revision 76)
@@ -159,7 +159,7 @@
 					       
 #ifdef SYSTEMC				       
-//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
   public  : void        transition                (void);
-//#endif
+#endif
 #endif					       
 #ifdef STATISTICS
@@ -169,6 +169,4 @@
 #if VHDL				       
   public  : void        vhdl                      (void);
-  private : void        vhdl_declaration          (Vhdl * & vhdl);
-  private : void        vhdl_body                 (Vhdl * & vhdl);
 #endif					       
 					       
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp	(revision 76)
@@ -61,11 +61,7 @@
        ALLOC_VAL_IN    ( in_WRITE_UNIT_IN_VAL);
        ALLOC_ACK_OUT   (out_WRITE_UNIT_IN_ACK);
-       if(_param->_have_port_context_id)
        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id       );
-       if(_param->_have_port_front_end_id)
        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id     );
-       if(_param->_have_port_ooo_engine_id)
        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id    );
-       if(_param->_have_port_packet_id)
        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_packet_id        );
 //     ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
@@ -88,11 +84,7 @@
        ALLOC_VAL_OUT   (out_WRITE_UNIT_OUT_VAL);
        ALLOC_ACK_IN    ( in_WRITE_UNIT_OUT_ACK);
-       if(_param->_have_port_context_id)
        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id   );
-       if(_param->_have_port_front_end_id)
        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t     ,_param->_size_front_end_id );
-       if(_param->_have_port_ooo_engine_id)
        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t     ,_param->_size_ooo_engine_id);
-       if(_param->_have_port_packet_id)
        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t      ,_param->_size_packet_id    );
 //     ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_OPERATION    ,"operation"    ,Toperation_t   ,_param->_size_operation    );
@@ -108,10 +100,9 @@
        ALLOC1_INTERFACE("gpr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_gpr_write);
 
-       ALLOC1_VAL_OUT   (out_GPR_WRITE_VAL          ,_param->_nb_gpr_write);
-       ALLOC1_ACK_IN    ( in_GPR_WRITE_ACK          ,_param->_nb_gpr_write);
-       if(_param->_have_port_ooo_engine_id)
-       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   ,_param->_nb_gpr_write);
-       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register,_param->_nb_gpr_write);
-       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data    ,_param->_nb_gpr_write);
+       ALLOC1_VAL_OUT   (out_GPR_WRITE_VAL);
+       ALLOC1_ACK_IN    ( in_GPR_WRITE_ACK);
+       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC1_SIGNAL_OUT(out_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data    );
      }
 
@@ -120,10 +111,9 @@
        ALLOC1_INTERFACE("spr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_spr_write);
 
-       ALLOC1_VAL_OUT   (out_SPR_WRITE_VAL          ,_param->_nb_spr_write);
-       ALLOC1_ACK_IN    ( in_SPR_WRITE_ACK          ,_param->_nb_spr_write);
-       if(_param->_have_port_ooo_engine_id)
-       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   ,_param->_nb_spr_write);
-       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register,_param->_nb_spr_write);
-       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data    ,_param->_nb_spr_write);
+       ALLOC1_VAL_OUT   (out_SPR_WRITE_VAL);
+       ALLOC1_ACK_IN    ( in_SPR_WRITE_ACK);
+       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register);
+       ALLOC1_SIGNAL_OUT(out_SPR_WRITE_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data    );
      }
 
@@ -132,12 +122,11 @@
        ALLOC1_INTERFACE("bypass_write", OUT, NORTH ,"Output of internal write_unit", _param->_nb_bypass_write);
        
-       if(_param->_have_port_ooo_engine_id)
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   , _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_VAL      ,"gpr_val"      ,Tcontrol_t        ,1                             , _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_NUM_REG  ,"gpr_num_reg"  ,Tgeneral_address_t,_param->_size_general_register, _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_DATA     ,"gpr_data"     ,Tgeneral_data_t   ,_param->_size_general_data    , _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_VAL      ,"spr_val"      ,Tcontrol_t        ,1                             , _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_NUM_REG  ,"spr_num_reg"  ,Tspecial_address_t,_param->_size_special_register, _param->_nb_bypass_write);
-       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_DATA     ,"spr_data"     ,Tspecial_data_t   ,_param->_size_special_data    , _param->_nb_bypass_write);
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_VAL      ,"gpr_val"      ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_NUM_REG  ,"gpr_num_reg"  ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_GPR_DATA     ,"gpr_data"     ,Tgeneral_data_t   ,_param->_size_general_data    );
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_VAL      ,"spr_val"      ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_NUM_REG  ,"spr_num_reg"  ,Tspecial_address_t,_param->_size_special_register);
+       ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_DATA     ,"spr_data"     ,Tspecial_data_t   ,_param->_size_special_data    );
      }
 
@@ -181,5 +170,4 @@
 
     // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-
      {
        name = _name+"_write_queue";
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_transition.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_transition.cpp	(revision 76)
@@ -1,4 +1,4 @@
 #ifdef SYSTEMC
-//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
 /*
  * $Id$
@@ -41,3 +41,3 @@
 }; // end namespace morpheo              
 #endif
-//#endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_vhdl.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_vhdl.cpp	(revision 76)
@@ -30,7 +30,4 @@
     _component->vhdl_instance(vhdl);
 
-    vhdl_declaration (vhdl);
-    vhdl_body        (vhdl);
-
     vhdl->generate_file();
 
Index: unk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_vhdl_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_vhdl_body.cpp	(revision 75)
+++ 	(revision )
@@ -1,37 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace core {
-namespace multi_execute_loop {
-namespace execute_loop {
-namespace multi_write_unit {
-namespace write_unit {
-
-
-#undef  FUNCTION
-#define FUNCTION "Write_unit::vhdl_body"
-  void Write_unit::vhdl_body (Vhdl * & vhdl)
-  {
-    log_printf(FUNC,Write_unit,FUNCTION,"Begin");
-    vhdl->set_body ("");
-    log_printf(FUNC,Write_unit,FUNCTION,"End");
-  };
-
-}; // end namespace write_unit
-}; // end namespace multi_write_unit
-}; // end namespace execute_loop
-}; // end namespace multi_execute_loop
-}; // end namespace core
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: unk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_vhdl_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_vhdl_declaration.cpp	(revision 75)
+++ 	(revision )
@@ -1,36 +1,0 @@
-#ifdef VHDL
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h"
-
-namespace morpheo {
-namespace behavioural {
-namespace core {
-namespace multi_execute_loop {
-namespace execute_loop {
-namespace multi_write_unit {
-namespace write_unit {
-
-
-#undef  FUNCTION
-#define FUNCTION "Write_unit::vhdl_declaration"
-  void Write_unit::vhdl_declaration (Vhdl * & vhdl)
-  {
-    log_printf(FUNC,Write_unit,FUNCTION,"Begin");
-    log_printf(FUNC,Write_unit,FUNCTION,"End");
-  };
-
-}; // end namespace write_unit
-}; // end namespace multi_write_unit
-}; // end namespace execute_loop
-}; // end namespace multi_execute_loop
-}; // end namespace core
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps	(revision 76)
@@ -26,10 +26,11 @@
 #-----[ Rules ]--------------------------------------------
 
-#.NOTPARALLEL			: Behavioural_library Behavioural_library_clean
+#.NOTPARALLEL			: Behavioural_library
+#.NOTPARALLEL			: Behavioural_library_clean
 
 Behavioural_library		: $(Behavioural_DEPENDENCIES)
 				@\
 				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural --makefile=Makefile ;
-	
+
 Behavioural_library_clean	: $(Behavioural_CLEAN)
 				@\
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component.sh
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component.sh	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component.sh	(revision 76)
@@ -7,4 +7,6 @@
 TMP_DIR="/tmp/$SOURCE_FILE"
 
+TYPE=("vbe" "vst");
+
 #-----[ usage ]------------------------------------------------------
 # input  : -
@@ -17,4 +19,5 @@
     echo " - <directory> : localisation of component";
     echo " - <name>      : name of component";
+    echo " - <type>      : type of component : ${TYPE[@]}";
     echo "";
     echo " Note : This script must be execute in directory's script";
@@ -49,5 +52,17 @@
     fi;
 
-    if test $# -ne 2; then
+    if test $# -ne 3; then
+	usage;
+    fi;
+
+    find=0;
+    for type in ${TYPE[@]}; do
+	if test "$3" = "$type"; then
+	    find=1;
+	    SOURCE_DIR=$SOURCE_DIR"_"$type;
+	fi;
+    done;
+    
+    if test $find -eq 0; then
 	usage;
     fi;
@@ -293,5 +308,4 @@
     rmdir $TMP_DIR
     
-
     #translation
     rename_directory      "$1/$2" $SOURCE_FILE $2;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile	(revision 76)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/lib@COMPONENT.a
+
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile.defs	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile.defs	(revision 76)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= @DIR_MORPHEO
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile.deps	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile.deps	(revision 76)
@@ -0,0 +1,37 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+@COMPONENT			= yes
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+
+#-----[ Directory ]----------------------------------------
+
+@COMPONENT_DIR			=	$(DIR_MORPHEO)/Behavioural/@DIRECTORY
+
+#-----[ Library ]------------------------------------------
+@COMPONENT_LIBRARY		= 	-l@COMPONENT	\
+					$(Behavioural_LIBRARY)	
+
+@COMPONENT_DIR_LIBRARY		=	-L$(@COMPONENT_DIR)/lib	\
+					$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+@COMPONENT_library		:
+				@\
+				$(MAKE) --directory=$(Behavioural_DIR) --makefile=Makefile;
+				$(MAKE) --directory=$(@COMPONENT_DIR) --makefile=Makefile;
+
+@COMPONENT_library_clean	:
+				@\
+				$(MAKE) --directory=$(Behavioural_DIR) --makefile=Makefile clean;
+				$(MAKE) --directory=$(@COMPONENT_DIR) --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/Makefile	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/Makefile	(revision 76)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(@COMPONENT_LIBRARY)
+
+DIR_LIBRARY			= $(@COMPONENT_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: @COMPONENT_library
+
+library_clean			: @COMPONENT_library_clean
+
+include                         $(DIR_COMPONENT)/Makefile.deps
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.Synthesis
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/configuration.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/configuration.cfg	(revision 76)
@@ -0,0 +1,1 @@
+@COMPONENT
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/include/test.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/include/test.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/include/test.h	(revision 76)
@@ -0,0 +1,27 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+#include <sys/time.h>
+
+#include "Common/include/Time.h"
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+@NAMESPACE_USING
+using namespace morpheo::behavioural::@NAMESPACE_USE;
+
+void test    (string name,
+	      morpheo::behavioural::@NAMESPACE_USE::Parameters * param);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/src/main.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/src/main.cpp	(revision 76)
@@ -0,0 +1,59 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/SelfTest/include/test.h"
+
+#define NB_PARAMS 0
+
+void usage (int argc, char * argv[])
+{
+  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
+  err (_("list_params is :\n"));
+
+  exit (1);
+}
+
+#ifndef SYSTEMC
+int main    (int argc, char * argv[])
+#else
+int sc_main (int argc, char * argv[])
+#endif
+{
+  if (argc != 2+NB_PARAMS)
+    usage (argc, argv);
+
+  uint32_t       x = 1;
+
+  const string   name      =      argv[x++];
+//const uint32_t size_data = atoi(argv[x++]);
+//const uint32_t nb_port   = atoi(argv[x++]);
+
+  try 
+    {
+      morpheo::behavioural::@NAMESPACE_USE::Parameters * param = new morpheo::behavioural::@NAMESPACE_USE::Parameters
+	(//size_data,
+	 //nb_port  
+        );
+      
+      msg(_("%s"),param->print(1).c_str());
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      msg (_("<%s> : %s.\n"),name.c_str(), error.what ());
+      exit (EXIT_FAILURE);
+    }
+  catch (...)
+    {
+      err (_("<%s> : This test must generate a error.\n"),name.c_str());
+      exit (EXIT_FAILURE);
+    }
+
+  return (EXIT_SUCCESS);
+}
+
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/src/test.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/src/test.cpp	(revision 76)
@@ -0,0 +1,127 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include "Behavioural/@DIRECTORY/SelfTest/include/test.h"
+#include "Common/include/Test.h"
+#include "Behavioural/include/Allocation.h"
+
+#define NB_ITERATION  1
+#define CYCLE_MAX     (128*NB_ITERATION)
+
+#define LABEL(str...)							\
+  {									\
+    msg (_("{%d} "),static_cast<uint32_t>(sc_simulation_time()));	\
+    msg (str);								\
+    msg (_("\n"));							\
+  } while(0)
+
+#define SC_START(cycle_offset)                                                       \
+  do									             \
+    {									             \
+      /*cout << "SC_START (begin)" << endl;*/				             \
+									             \
+      uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time());          \
+      if (cycle_offset != 0)						             \
+	{								             \
+	  cout << "##########[ cycle "<< cycle_current+cycle_offset << " ]" << endl; \
+	}								             \
+									             \
+      if (cycle_current > CYCLE_MAX)					             \
+	{								             \
+	  TEST_KO("Maximal cycles Reached");				             \
+	}								             \
+									             \
+      sc_start(cycle_offset);						             \
+									             \
+      /*cout << "SC_START (end  )" << endl;*/				             \
+    } while(0)
+
+void test (string name,
+	   morpheo::behavioural::@NAMESPACE_USE::Parameters * _param)
+{
+  msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
+
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
+  @COMPONENT * _@COMPONENT = new @COMPONENT (name.c_str(),
+#ifdef STATISTICS
+					     _parameters_statistics,
+#endif
+					     _param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  string rename;
+
+  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);	 
+  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  msg(_("<%s> : Instanciation of _@COMPONENT.\n"),name.c_str());
+
+  (*(_@COMPONENT->in_CLOCK))        (*(in_CLOCK));
+  (*(_@COMPONENT->in_NRESET))       (*(in_NRESET));
+
+
+  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
+    
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  // Initialisation
+
+  const uint32_t seed = 0;
+//const uint32_t seed = static_cast<uint32_t>(time(NULL));
+
+  srand(seed);
+
+  SC_START(0);
+  LABEL("Initialisation");
+
+  LABEL("Reset");
+  in_NRESET->write(0);
+  SC_START(5);
+  in_NRESET->write(1);  
+
+  LABEL("Loop of Test");
+
+  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
+    {
+      LABEL("Iteration %d",iteration);
+
+      SC_START(1);
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK ("End of Simulation");
+  delete _time;
+
+  msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
+
+  delete in_CLOCK;
+  delete in_NRESET;
+#endif
+
+  delete _@COMPONENT;
+#ifdef STATISTICS
+  delete _parameters_statistics;
+#endif
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/Makefile	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/Makefile	(revision 76)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/New_Component.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/New_Component.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/New_Component.tex	(revision 76)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../@DIR_MORPHEO/Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/sty/header.sty	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/sty/header.sty	(revision 76)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{@COMPONENT}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/01_introduction.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/01_introduction.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/02_features.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/02_features.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/03_description.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/03_description.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/04_pinout.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/04_pinout.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/05_parameters.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/05_parameters.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/06_performance.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/06_performance.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/07_details.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/07_details.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/08_history.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/08_history.tex	(revision 76)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/root.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/doc/tex/root.tex	(revision 76)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/include/New_Component.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/include/New_Component.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/include/New_Component.h	(revision 76)
@@ -0,0 +1,118 @@
+#ifndef morpheo_behavioural_@DEFINE_@COMPONENT_h
+#define morpheo_behavioural_@DEFINE_@COMPONENT_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Types.h"
+
+#include "Behavioural/@DIRECTORY/include/Parameters.h"
+#ifdef STATISTICS
+#include "Behavioural/include/Stat.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#include "Behavioural/include/Usage.h"
+
+namespace morpheo {
+namespace behavioural {
+
+@NAMESPACE_BEGIN
+
+  class @COMPONENT 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const std::string  _name;
+  protected : const Parameters * _param;
+  private   : const Tusage_t     _usage;
+
+#ifdef STATISTICS
+  public    : Stat                           * _stat;
+#endif
+
+  public    : Component                      * _component;
+  private   : Interfaces                     * _interfaces;
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Interface
+  public    : SC_CLOCK                      *  in_CLOCK        ;
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#endif
+
+    // -----[ Methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (@COMPONENT);
+#endif
+  public  :          @COMPONENT              
+  (
+#ifdef SYSTEMC
+   sc_module_name                                name,
+#else					       
+   std::string                                   name,
+#endif					       
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   Parameters                                  * param,
+   morpheo::behavioural::Tusage_t                usage=USE_ALL
+   );
+  public  :          ~@COMPONENT             (void);
+					       
+  private : void        allocation                (
+#ifdef STATISTICS
+						   morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+						   void
+#endif
+						   );
+  private : void        deallocation              (void);
+					       
+#ifdef SYSTEMC				       
+  public  : void        transition                (void);
+//public  : void        genMoore                  (void);
+#endif					       
+
+#if VHDL				       
+  public  : void        vhdl                      (void);
+  private : void        vhdl_declaration          (Vhdl * & vhdl);
+  private : void        vhdl_body                 (Vhdl * & vhdl);
+#endif					       
+
+#ifdef STATISTICS
+  public  : void        statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
+#endif
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+  private : void        end_cycle                 (void);
+#endif
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/include/Parameters.h	(revision 76)
@@ -0,0 +1,39 @@
+#ifndef morpheo_behavioural_@DEFINE_Parameters_h
+#define morpheo_behavioural_@DEFINE_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include <math.h>
+
+namespace morpheo {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  ();
+  public : Parameters  (Parameters & param) ;
+  public : ~Parameters () ;
+
+  public :        std::string   msg_error  (void);
+
+  public :        std::string   print      (uint32_t depth);
+  public : friend std::ostream& operator<< (std::ostream& output_stream,
+					    morpheo::behavioural::@NAMESPACE_USE::Parameters & x);
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component.cpp	(revision 76)
@@ -0,0 +1,103 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::@COMPONENT"
+  @COMPONENT::@COMPONENT 
+  (
+#ifdef SYSTEMC
+   sc_module_name name,
+#else
+   string name,
+#endif
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   morpheo::behavioural::@NAMESPACE_USE::Parameters * param,
+   morpheo::behavioural::Tusage_t usage
+   ):
+    _name              (name)
+    ,_param            (param)
+    ,_usage            (usage)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    log_printf(INFO,@COMPONENT,FUNCTION,"Allocation");
+
+    allocation (
+#ifdef STATISTICS
+		param_statistics
+#endif
+		);
+
+#ifdef STATISTICS
+    if (_usage & USE_STATISTICS)
+      {	
+	log_printf(INFO,@COMPONENT,FUNCTION,"Allocation of statistics");
+
+	statistics_declaration(param_statistics);
+      }
+#endif
+
+#ifdef VHDL
+    if (_usage & USE_VHDL)
+      {
+	// generate the vhdl
+	log_printf(INFO,@COMPONENT,FUNCTION,"Generate the vhdl");
+	
+	vhdl();
+      }
+#endif
+
+#ifdef SYSTEMC
+    if (_usage & USE_SYSTEMC)
+      {
+	log_printf(INFO,@COMPONENT,FUNCTION,"Method - transition");
+
+	SC_METHOD (transition);
+	dont_initialize ();
+	sensitive << (*(in_CLOCK)).pos();
+	
+# ifdef SYSTEMCASS_SPECIFIC
+	// List dependency information
+# endif    
+	
+#endif
+      }
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+    
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::~@COMPONENT"
+  @COMPONENT::~@COMPONENT (void)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    if (_usage & USE_STATISTICS)
+      {
+	log_printf(INFO,@COMPONENT,FUNCTION,"Generate Statistics file");
+	
+	delete _stat;
+      }
+#endif
+
+    log_printf(INFO,@COMPONENT,FUNCTION,"Deallocation");
+    deallocation ();
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_allocation.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_allocation.cpp	(revision 76)
@@ -0,0 +1,63 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+#include "Behavioural/include/Allocation.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::allocation"
+  void @COMPONENT::allocation (
+#ifdef STATISTICS
+			       morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+			       void
+#endif
+			       )
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    _component   = new Component (_usage);
+
+    Entity * entity = _component->set_entity (_name       
+					      ,"@COMPONENT"
+#ifdef POSITION
+					      ,COMBINATORY 
+#endif
+					      );
+
+    _interfaces = entity->set_interfaces();
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+      Interface * interface = _interfaces->set_interface(""
+#ifdef POSITION
+							 ,IN
+							 ,SOUTH,
+							 "Generalist interface"
+#endif
+							 );
+
+     in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
+     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_deallocation.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_deallocation.cpp	(revision 76)
@@ -0,0 +1,34 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::deallocation"
+  void @COMPONENT::deallocation (void)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    if (_usage & USE_SYSTEMC)
+      {
+	delete    in_CLOCK ;
+	delete    in_NRESET;
+      }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    delete _component;
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_end_cycle.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_end_cycle.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_end_cycle.cpp	(revision 76)
@@ -0,0 +1,37 @@
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::end_cycle"
+void @COMPONENT::end_cycle ()
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    _stat->end_cycle();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    // Evaluation before read the ouput signal
+//  sc_start(0);
+    _interfaces->testbench();
+#endif
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_statistics_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_statistics_declaration.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_statistics_declaration.cpp	(revision 76)
@@ -0,0 +1,31 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::statistics_declaration"
+  void @COMPONENT::statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    _stat = new Stat (static_cast<std::string>(_name),
+		      "@COMPONENT",
+		      param_statistics);
+    
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_transition.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_transition.cpp	(revision 76)
@@ -0,0 +1,31 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::transition"
+  void @COMPONENT::transition (void)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    end_cycle ();
+#endif
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_vhdl.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_vhdl.cpp	(revision 76)
@@ -0,0 +1,40 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::vhdl"
+  void @COMPONENT::vhdl (void)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    Vhdl * vhdl = new Vhdl (_name);
+
+    _interfaces->set_port(vhdl);
+    _component->vhdl_instance(vhdl);
+
+    vhdl_declaration (vhdl);
+    vhdl_body        (vhdl);
+
+    vhdl->generate_file();
+
+    delete vhdl;
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_vhdl_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_vhdl_body.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_vhdl_body.cpp	(revision 76)
@@ -0,0 +1,27 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::vhdl_body"
+  void @COMPONENT::vhdl_body (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    vhdl->set_body ("");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_vhdl_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_vhdl_declaration.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/New_Component_vhdl_declaration.cpp	(revision 76)
@@ -0,0 +1,26 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::vhdl_declaration"
+  void @COMPONENT::vhdl_declaration (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/Parameters.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/Parameters.cpp	(revision 76)
@@ -0,0 +1,42 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::Parameters"
+  Parameters::Parameters ()
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    test();
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::Parameters (copy)"
+  Parameters::Parameters (Parameters & param)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    test();
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::~Parameters"
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/Parameters_msg_error.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/Parameters_msg_error.cpp	(revision 76)
@@ -0,0 +1,31 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+#include "Behavioural/@DIRECTORY/include/Parameters.h"
+#include <sstream>
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::msg_error"
+  std::string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    std::string msg = "";
+
+    return msg;
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/Parameters_print.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/src/Parameters_print.cpp	(revision 76)
@@ -0,0 +1,48 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::print"
+  std::string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    XML xml ("@COMPONENT_LOWER");
+
+    xml.balise_open("@COMPONENT_LOWER");
+//  xml.singleton_begin(""); xml.attribut("value",toString(_)); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+    
+    return xml.get_body(depth);
+  };
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::operator<<"
+  std::ostream& operator<< (std::ostream& output_stream ,
+			    morpheo::behavioural::@NAMESPACE_USE::Parameters & x)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+    
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile	(revision 76)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/lib@COMPONENT.a
+
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile.defs	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile.defs	(revision 76)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= @DIR_MORPHEO
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile.deps	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile.deps	(revision 76)
@@ -0,0 +1,37 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+@COMPONENT			= yes
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+
+#-----[ Directory ]----------------------------------------
+
+@COMPONENT_DIR			=	$(DIR_MORPHEO)/Behavioural/@DIRECTORY
+
+#-----[ Library ]------------------------------------------
+@COMPONENT_LIBRARY		= 	-l@COMPONENT	\
+					$(Behavioural_LIBRARY)	
+
+@COMPONENT_DIR_LIBRARY		=	-L$(@COMPONENT_DIR)/lib	\
+					$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+@COMPONENT_library		:
+				@\
+				$(MAKE) --directory=$(Behavioural_DIR) --makefile=Makefile;
+				$(MAKE) --directory=$(@COMPONENT_DIR) --makefile=Makefile;
+
+@COMPONENT_library_clean	:
+				@\
+				$(MAKE) --directory=$(Behavioural_DIR) --makefile=Makefile clean;
+				$(MAKE) --directory=$(@COMPONENT_DIR) --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/Makefile	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/Makefile	(revision 76)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(@COMPONENT_LIBRARY)
+
+DIR_LIBRARY			= $(@COMPONENT_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: @COMPONENT_library
+
+library_clean			: @COMPONENT_library_clean
+
+include                         $(DIR_COMPONENT)/Makefile.deps
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.Synthesis
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/configuration.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/configuration.cfg	(revision 76)
@@ -0,0 +1,1 @@
+@COMPONENT
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/include/test.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/include/test.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/include/test.h	(revision 76)
@@ -0,0 +1,27 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+#include <sys/time.h>
+
+#include "Common/include/Time.h"
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+@NAMESPACE_USING
+using namespace morpheo::behavioural::@NAMESPACE_USE;
+
+void test    (string name,
+	      morpheo::behavioural::@NAMESPACE_USE::Parameters * param);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/src/main.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/src/main.cpp	(revision 76)
@@ -0,0 +1,59 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/SelfTest/include/test.h"
+
+#define NB_PARAMS 0
+
+void usage (int argc, char * argv[])
+{
+  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
+  err (_("list_params is :\n"));
+
+  exit (1);
+}
+
+#ifndef SYSTEMC
+int main    (int argc, char * argv[])
+#else
+int sc_main (int argc, char * argv[])
+#endif
+{
+  if (argc != 2+NB_PARAMS)
+    usage (argc, argv);
+
+  uint32_t       x = 1;
+
+  const string   name      =      argv[x++];
+//const uint32_t size_data = atoi(argv[x++]);
+//const uint32_t nb_port   = atoi(argv[x++]);
+
+  try 
+    {
+      morpheo::behavioural::@NAMESPACE_USE::Parameters * param = new morpheo::behavioural::@NAMESPACE_USE::Parameters
+	(//size_data,
+	 //nb_port  
+        );
+      
+      msg(_("%s"),param->print(1).c_str());
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      msg (_("<%s> : %s.\n"),name.c_str(), error.what ());
+      exit (EXIT_FAILURE);
+    }
+  catch (...)
+    {
+      err (_("<%s> : This test must generate a error.\n"),name.c_str());
+      exit (EXIT_FAILURE);
+    }
+
+  return (EXIT_SUCCESS);
+}
+
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/src/test.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/src/test.cpp	(revision 76)
@@ -0,0 +1,127 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include "Behavioural/@DIRECTORY/SelfTest/include/test.h"
+#include "Common/include/Test.h"
+#include "Behavioural/include/Allocation.h"
+
+#define NB_ITERATION  1
+#define CYCLE_MAX     (128*NB_ITERATION)
+
+#define LABEL(str...)							\
+  {									\
+    msg (_("{%d} "),static_cast<uint32_t>(sc_simulation_time()));	\
+    msg (str);								\
+    msg (_("\n"));							\
+  } while(0)
+
+#define SC_START(cycle_offset)                                                       \
+  do									             \
+    {									             \
+      /*cout << "SC_START (begin)" << endl;*/				             \
+									             \
+      uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time());          \
+      if (cycle_offset != 0)						             \
+	{								             \
+	  cout << "##########[ cycle "<< cycle_current+cycle_offset << " ]" << endl; \
+	}								             \
+									             \
+      if (cycle_current > CYCLE_MAX)					             \
+	{								             \
+	  TEST_KO("Maximal cycles Reached");				             \
+	}								             \
+									             \
+      sc_start(cycle_offset);						             \
+									             \
+      /*cout << "SC_START (end  )" << endl;*/				             \
+    } while(0)
+
+void test (string name,
+	   morpheo::behavioural::@NAMESPACE_USE::Parameters * _param)
+{
+  msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
+
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
+  @COMPONENT * _@COMPONENT = new @COMPONENT (name.c_str(),
+#ifdef STATISTICS
+					     _parameters_statistics,
+#endif
+					     _param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  string rename;
+
+  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);	 
+  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  msg(_("<%s> : Instanciation of _@COMPONENT.\n"),name.c_str());
+
+  (*(_@COMPONENT->in_CLOCK))        (*(in_CLOCK));
+  (*(_@COMPONENT->in_NRESET))       (*(in_NRESET));
+
+
+  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
+    
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  // Initialisation
+
+  const uint32_t seed = 0;
+//const uint32_t seed = static_cast<uint32_t>(time(NULL));
+
+  srand(seed);
+
+  SC_START(0);
+  LABEL("Initialisation");
+
+  LABEL("Reset");
+  in_NRESET->write(0);
+  SC_START(5);
+  in_NRESET->write(1);  
+
+  LABEL("Loop of Test");
+
+  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
+    {
+      LABEL("Iteration %d",iteration);
+
+      SC_START(1);
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK ("End of Simulation");
+  delete _time;
+
+  msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
+
+  delete in_CLOCK;
+  delete in_NRESET;
+#endif
+
+  delete _@COMPONENT;
+#ifdef STATISTICS
+  delete _parameters_statistics;
+#endif
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/Makefile	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/Makefile	(revision 76)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/New_Component.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/New_Component.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/New_Component.tex	(revision 76)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../@DIR_MORPHEO/Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/sty/header.sty	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/sty/header.sty	(revision 76)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{@COMPONENT}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/01_introduction.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/01_introduction.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/02_features.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/02_features.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/03_description.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/03_description.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/04_pinout.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/04_pinout.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/05_parameters.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/05_parameters.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/06_performance.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/06_performance.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/07_details.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/07_details.tex	(revision 76)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/08_history.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/08_history.tex	(revision 76)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/root.tex	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/doc/tex/root.tex	(revision 76)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/include/New_Component.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/include/New_Component.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/include/New_Component.h	(revision 76)
@@ -0,0 +1,117 @@
+#ifndef morpheo_behavioural_@DEFINE_@COMPONENT_h
+#define morpheo_behavioural_@DEFINE_@COMPONENT_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Types.h"
+
+#include "Behavioural/@DIRECTORY/include/Parameters.h"
+#ifdef STATISTICS
+#include "Behavioural/include/Stat.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#include "Behavioural/include/Usage.h"
+
+namespace morpheo {
+namespace behavioural {
+
+@NAMESPACE_BEGIN
+
+  class @COMPONENT 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const std::string  _name;
+  protected : const Parameters * _param;
+  private   : const Tusage_t     _usage;
+
+#ifdef STATISTICS
+  public    : Stat                           * _stat;
+#endif
+
+  public    : Component                      * _component;
+  private   : Interfaces                     * _interfaces;
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Interface
+  public    : SC_CLOCK                      *  in_CLOCK        ;
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#endif
+
+    // -----[ Methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (@COMPONENT);
+#endif
+  public  :          @COMPONENT              
+  (
+#ifdef SYSTEMC
+   sc_module_name                                name,
+#else					       
+   std::string                                   name,
+#endif					       
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   Parameters                                  * param,
+   morpheo::behavioural::Tusage_t                usage=USE_ALL
+   );
+  public  :          ~@COMPONENT             (void);
+					       
+  private : void        allocation                (
+#ifdef STATISTICS
+						   morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+						   void
+#endif
+						   );
+  private : void        deallocation              (void);
+					       
+#ifdef SYSTEMC				       
+# if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+  public  : void        transition                (void);
+# endif					       
+#endif					       
+
+#if VHDL				       
+  public  : void        vhdl                      (void);
+#endif					       
+
+#ifdef STATISTICS
+  public  : void        statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
+#endif
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+  private : void        end_cycle                 (void);
+#endif
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/include/Parameters.h	(revision 76)
@@ -0,0 +1,39 @@
+#ifndef morpheo_behavioural_@DEFINE_Parameters_h
+#define morpheo_behavioural_@DEFINE_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include <math.h>
+
+namespace morpheo {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  ();
+  public : Parameters  (Parameters & param) ;
+  public : ~Parameters () ;
+
+  public :        std::string   msg_error  (void);
+
+  public :        std::string   print      (uint32_t depth);
+  public : friend std::ostream& operator<< (std::ostream& output_stream,
+					    morpheo::behavioural::@NAMESPACE_USE::Parameters & x);
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component.cpp	(revision 76)
@@ -0,0 +1,103 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::@COMPONENT"
+  @COMPONENT::@COMPONENT 
+  (
+#ifdef SYSTEMC
+   sc_module_name name,
+#else
+   string name,
+#endif
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   morpheo::behavioural::@NAMESPACE_USE::Parameters * param,
+   morpheo::behavioural::Tusage_t usage
+   ):
+    _name              (name)
+    ,_param            (param)
+    ,_usage            (usage)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    log_printf(INFO,@COMPONENT,FUNCTION,"Allocation");
+
+    allocation (
+#ifdef STATISTICS
+		param_statistics
+#endif
+		);
+
+#ifdef STATISTICS
+    if (_usage & USE_STATISTICS)
+      {	
+	log_printf(INFO,@COMPONENT,FUNCTION,"Allocation of statistics");
+
+	statistics_declaration(param_statistics);
+      }
+#endif
+
+#ifdef VHDL
+    if (_usage & USE_VHDL)
+      {
+	// generate the vhdl
+	log_printf(INFO,@COMPONENT,FUNCTION,"Generate the vhdl");
+	
+	vhdl();
+      }
+#endif
+
+#ifdef SYSTEMC
+    if (_usage & USE_SYSTEMC)
+      {
+	log_printf(INFO,@COMPONENT,FUNCTION,"Method - transition");
+
+	SC_METHOD (transition);
+	dont_initialize ();
+	sensitive << (*(in_CLOCK)).pos();
+	
+# ifdef SYSTEMCASS_SPECIFIC
+	// List dependency information
+# endif    
+	
+#endif
+      }
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+    
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::~@COMPONENT"
+  @COMPONENT::~@COMPONENT (void)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    if (_usage & USE_STATISTICS)
+      {
+	log_printf(INFO,@COMPONENT,FUNCTION,"Generate Statistics file");
+	
+	delete _stat;
+      }
+#endif
+
+    log_printf(INFO,@COMPONENT,FUNCTION,"Deallocation");
+    deallocation ();
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_allocation.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_allocation.cpp	(revision 76)
@@ -0,0 +1,63 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+#include "Behavioural/include/Allocation.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::allocation"
+  void @COMPONENT::allocation (
+#ifdef STATISTICS
+			       morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+			       void
+#endif
+			       )
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    _component   = new Component (_usage);
+
+    Entity * entity = _component->set_entity (_name       
+					      ,"@COMPONENT"
+#ifdef POSITION
+					      ,COMBINATORY 
+#endif
+					      );
+
+    _interfaces = entity->set_interfaces();
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+      Interface * interface = _interfaces->set_interface(""
+#ifdef POSITION
+							 ,IN
+							 ,SOUTH,
+							 "Generalist interface"
+#endif
+							 );
+
+     in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
+     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_deallocation.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_deallocation.cpp	(revision 76)
@@ -0,0 +1,34 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::deallocation"
+  void @COMPONENT::deallocation (void)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    if (_usage & USE_SYSTEMC)
+      {
+	delete    in_CLOCK ;
+	delete    in_NRESET;
+      }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    delete _component;
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_end_cycle.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_end_cycle.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_end_cycle.cpp	(revision 76)
@@ -0,0 +1,37 @@
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::end_cycle"
+void @COMPONENT::end_cycle ()
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    _stat->end_cycle();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    // Evaluation before read the ouput signal
+//  sc_start(0);
+    _interfaces->testbench();
+#endif
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_statistics_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_statistics_declaration.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_statistics_declaration.cpp	(revision 76)
@@ -0,0 +1,31 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::statistics_declaration"
+  void @COMPONENT::statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    _stat = new Stat (static_cast<std::string>(_name),
+		      "@COMPONENT",
+		      param_statistics);
+    
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_transition.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_transition.cpp	(revision 76)
@@ -0,0 +1,33 @@
+# if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::transition"
+  void @COMPONENT::transition (void)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    end_cycle ();
+#endif
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+# endif
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_vhdl.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/New_Component_vhdl.cpp	(revision 76)
@@ -0,0 +1,37 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/@COMPONENT.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::vhdl"
+  void @COMPONENT::vhdl (void)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    Vhdl * vhdl = new Vhdl (_name);
+
+    _interfaces->set_port(vhdl);
+    _component->vhdl_instance(vhdl);
+
+    vhdl->generate_file();
+
+    delete vhdl;
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/Parameters.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/Parameters.cpp	(revision 76)
@@ -0,0 +1,42 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::Parameters"
+  Parameters::Parameters ()
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    test();
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::Parameters (copy)"
+  Parameters::Parameters (Parameters & param)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    test();
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::~Parameters"
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/Parameters_msg_error.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/Parameters_msg_error.cpp	(revision 76)
@@ -0,0 +1,31 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+#include "Behavioural/@DIRECTORY/include/Parameters.h"
+#include <sstream>
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::msg_error"
+  std::string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    std::string msg = "";
+
+    return msg;
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/Parameters_print.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/src/Parameters_print.cpp	(revision 76)
@@ -0,0 +1,48 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/@DIRECTORY/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+
+namespace morpheo                    {
+namespace behavioural {
+@NAMESPACE_BEGIN
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::print"
+  std::string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    XML xml ("@COMPONENT_LOWER");
+
+    xml.balise_open("@COMPONENT_LOWER");
+//  xml.singleton_begin(""); xml.attribut("value",toString(_)); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+    
+    return xml.get_body(depth);
+  };
+
+#undef  FUNCTION
+#define FUNCTION "@COMPONENT::operator<<"
+  std::ostream& operator<< (std::ostream& output_stream ,
+			    morpheo::behavioural::@NAMESPACE_USE::Parameters & x)
+  {
+    log_printf(FUNC,@COMPONENT,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+    
+    log_printf(FUNC,@COMPONENT,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+@NAMESPACE_END
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Allocation.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Allocation.h	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Allocation.h	(revision 76)
@@ -41,11 +41,13 @@
   }									
 #define ALLOC_SIGNAL_IN(  sig, name, type, size)			\
-  {									\
-    sig = interface->set_signal_in <type> (name, size);			\
-  }									
+  if (size > 0)								\
+    {									\
+      sig = interface->set_signal_in <type> (name, size);		\
+    }									
 #define ALLOC_SIGNAL_OUT( sig, name, type, size)			\
-  {									\
-    sig = interface->set_signal_out<type> (name, size);			\
-  }
+  if (size > 0)								\
+    {									\
+      sig = interface->set_signal_out<type> (name, size);		\
+    }
 
 #define ALLOC_SC_SIGNAL(  sig, name, type)		                \
@@ -61,8 +63,9 @@
 #ifdef POSITION
 #define ALLOC1_INTERFACE( name, direction, localisation, str, it1)	\
-  Interface_fifo * interface [it1];					\
+  const uint32_t iterator_1 = it1;					\
+  Interface_fifo * interface [iterator_1];				\
   {									\
     std::string      separator="_";					\
-    for (uint32_t i=0; i<it1; i++)					\
+    for (uint32_t i=0; i<iterator_1; i++)				\
       {									\
 	interface [i] = _interfaces->set_interface( name+separator+toString(i), direction, localisation, str); \
@@ -71,8 +74,9 @@
 #else
 #define ALLOC1_INTERFACE( name, direction, localisation, str, it1)	\
-  Interface_fifo * interface [it1];					\
+  const uint32_t iterator_1 = it1;					\
+  Interface_fifo * interface [iterator_1];				\
   {									\
     std::string      separator="_";					\
-    for (uint32_t i=0; i<it1; i++)					\
+    for (uint32_t i=0; i<iterator_1; i++)				\
       {									\
 	interface [i] = _interfaces->set_interface( name+separator+toString(i)); \
@@ -82,69 +86,71 @@
 
 
-#define ALLOC1_VALACK_IN( sig, name, type, it1)				\
+#define ALLOC1_VALACK_IN( sig, name, type)				\
   {									\
-    sig = new SC_IN (Tcontrol_t) * [it1];				\
-    for (uint32_t i=0; i<it1; i++)					\
+    sig = new SC_IN (Tcontrol_t) * [iterator_1];			\
+    for (uint32_t i=0; i<iterator_1; i++)				\
       {									\
 	sig [i] = interface[i]->set_signal_valack_in (name, type);	\
       }									\
   }
-#define ALLOC1_VALACK_OUT(sig, name, type, it1)				\
+#define ALLOC1_VALACK_OUT(sig, name, type)				\
   {									\
-    sig = new SC_OUT(Tcontrol_t) * [it1];				\
-    for (uint32_t i=0; i<it1; i++)					\
+    sig = new SC_OUT(Tcontrol_t) * [iterator_1];			\
+    for (uint32_t i=0; i<iterator_1; i++)				\
       {									\
 	sig [i] = interface[i]->set_signal_valack_out(name, type);	\
       }									\
   }
-#define ALLOC1_VAL_IN(    sig, it1)					\
+#define ALLOC1_VAL_IN(    sig)						\
   {									\
-    sig = new SC_IN (Tcontrol_t) * [it1];				\
-    for (uint32_t i=0; i<it1; i++)					\
+    sig = new SC_IN (Tcontrol_t) * [iterator_1];			\
+    for (uint32_t i=0; i<iterator_1; i++)				\
       {									\
 	sig [i] = interface[i]->set_signal_valack_in (VAL);		\
       }									\
   }
-#define ALLOC1_VAL_OUT(   sig, it1)					\
+#define ALLOC1_VAL_OUT(   sig)						\
   {									\
-    sig = new SC_OUT(Tcontrol_t) * [it1];				\
-    for (uint32_t i=0; i<it1; i++)					\
+    sig = new SC_OUT(Tcontrol_t) * [iterator_1];			\
+    for (uint32_t i=0; i<iterator_1; i++)				\
       {									\
 	sig [i] = interface[i]->set_signal_valack_out(VAL);		\
       }									\
   }
-#define ALLOC1_ACK_IN(    sig, it1)					\
+#define ALLOC1_ACK_IN(    sig)						\
   {									\
-    sig = new SC_IN (Tcontrol_t) * [it1];				\
-    for (uint32_t i=0; i<it1; i++)					\
+    sig = new SC_IN (Tcontrol_t) * [iterator_1];			\
+    for (uint32_t i=0; i<iterator_1; i++)				\
       {									\
 	sig [i] = interface[i]->set_signal_valack_in (ACK);		\
       }									\
   }
-#define ALLOC1_ACK_OUT(   sig, it1)					\
+#define ALLOC1_ACK_OUT(   sig)						\
   {									\
-    sig = new SC_OUT(Tcontrol_t) * [it1];				\
-    for (uint32_t i=0; i<it1; i++)					\
+    sig = new SC_OUT(Tcontrol_t) * [iterator_1];			\
+    for (uint32_t i=0; i<iterator_1; i++)				\
       {									\
 	sig [i] = interface[i]->set_signal_valack_out(ACK);		\
       }									\
   }
-#define ALLOC1_SIGNAL_IN( sig, name, type, size, it1)			\
-  {									\
-    sig = new SC_IN (type) * [it1];					\
-    for (uint32_t i=0; i<it1; i++)					\
-      {									\
-	sig [i] = interface[i]->set_signal_in <type> (name, size);	\
-      }									\
-  }
+#define ALLOC1_SIGNAL_IN( sig, name, type, size)			\
+  if (size > 0)								\
+    {									\
+      sig = new SC_IN (type) * [iterator_1];				\
+      for (uint32_t i=0; i<iterator_1; i++)				\
+	{								\
+	  sig [i] = interface[i]->set_signal_in <type> (name, size);	\
+	}								\
+    }
 
-#define ALLOC1_SIGNAL_OUT(sig, name, type, size, it1)			\
-  {									\
-    sig = new SC_OUT(type) * [it1];					\
-    for (uint32_t i=0; i<it1; i++)					\
-      {									\
-	sig [i] = interface[i]->set_signal_out<type> (name, size);	\
-      }									\
-  }
+#define ALLOC1_SIGNAL_OUT(sig, name, type, size)			\
+  if (size > 0)								\
+    {									\
+      sig = new SC_OUT(type) * [iterator_1];				\
+      for (uint32_t i=0; i<iterator_1; i++)				\
+	{								\
+	  sig [i] = interface[i]->set_signal_out<type> (name, size);	\
+	}								\
+    }
 
 #define ALLOC1_SC_SIGNAL( sig, name, type, it1)				\
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h	(revision 76)
@@ -6,10 +6,16 @@
 
   //=========================================================[ Type ]=====
-#  define TYPE_ALU                                 0x0        // 000000 - unit multiple
-#  define TYPE_BRANCH                              0x1        // 000001 - unit multiple, to a special routing
-#  define TYPE_MEMORY                              0x2        // 000010 - unit uniq
-#  define TYPE_MAC                                 0x4        // 000100 - unit uniq
-#  define TYPE_TIMER                               0x8        // 001000 - unit uniq
-#  define TYPE_CUSTOM                              0x10       // 010000 - unit uniq
+#  define TYPE_ALU                                 0x0        // 00000 - unit multiple
+#  define TYPE_SHIFT                               0x1        // 00000 - unit multiple
+#  define TYPE_MOVE                                0x2        // 00000 - unit multiple
+#  define TYPE_TEST                                0x3        // 00000 - unit multiple
+#  define TYPE_MUL_DIV                             0x4        // 00000 - unit multiple, type optionnal
+#  define TYPE_EXTEND                              0x5        // 00000 - unit multiple, type optionnal
+#  define TYPE_FIND                                0x6        // 00000 - unit multiple, type optionnal
+#  define TYPE_SPECIAL                             0x7        // 00000 - unit uniq
+#  define TYPE_CUSTOM                              0x8        // 00000 - unit uniq
+#  define TYPE_BRANCH                              0x9        // 00000 - unit multiple, to a special routing
+#  define TYPE_MEMORY                              0xa        // 00000 - unit uniq
+#  define MAX_TYPE                                 0x10       // 00000 - unit uniq
 
   //====================================================[ Operation ]=====
@@ -116,42 +122,50 @@
 
   //---------------------------------------------[ Functionnal Unit ]-----
-#  define OPERATION_ALU_L_ADD                      0x0        // 000_0000 l.add   , l.addi
-#  define OPERATION_ALU_L_ADDC                     0x1        // 000_0000 l.addc  , l.addic
-#  define OPERATION_ALU_L_SUB                      0x2        // 000_0000 l.sub
-#  define OPERATION_ALU_L_MUL                      0x3        // 000_0000 l.mul   , l.muli
-#  define OPERATION_ALU_L_MULU                     0x4        // 000_0000 l.mulu
-#  define OPERATION_ALU_L_DIV                      0x5        // 000_0000 l.div
-#  define OPERATION_ALU_L_DIVU                     0x6        // 000_0000 l.divu
-#  define OPERATION_ALU_L_AND                      0x7        // 000_0000 l.and   , l.andi
-#  define OPERATION_ALU_L_OR                       0x8        // 000_0000 l.or    , l.ori
-#  define OPERATION_ALU_L_XOR                      0x9        // 000_0000 l.xor   , l.xori
-#  define OPERATION_ALU_L_TEST_F                   0xa        // 000_0000 l.bf
-#  define OPERATION_ALU_L_TEST_NF                  0xb        // 000_0000 l.bnf
-#  define OPERATION_ALU_L_JALR                     0xc        // 000_0000 l.jal   , l.jalr , l.jr
-#  define OPERATION_ALU_L_SLL                      0xd        // 000_0000 l.sll   , l.slli
-#  define OPERATION_ALU_L_SRA                      0xe        // 000_0000 l.sra   , l.srai
-#  define OPERATION_ALU_L_SRL                      0xf        // 000_0000 l.srl   , l.srli
-#  define OPERATION_ALU_L_ROR                      0x10       // 000_0000 l.ror   , l.rori
-#  define OPERATION_ALU_L_MOVHI                    0x11       // 000_0000 l.movhi
-#  define OPERATION_ALU_L_EXTEND_S                 0x12       // 000_0000 l.extbs , l.exths, l.extws
-#  define OPERATION_ALU_L_EXTEND_Z                 0x13       // 000_0000 l.extbz , l.exthz, l.extwz
-#  define OPERATION_ALU_L_CMOV                     0x14       // 000_0000 l.cmov
-#  define OPERATION_ALU_L_FF1                      0x15       // 000_0000 l.ff1
-#  define OPERATION_ALU_L_FL1                      0x16       // 000_0000 l.fl1
-#  define OPERATION_ALU_L_MFSPR                    0x17       // 000_0000 l.mfspr
-#  define OPERATION_ALU_L_MTSPR                    0x18       // 000_0000 l.mtspr
-#  define OPERATION_ALU_L_SFGES                    0x19       // 000_0000 l.sfges , l.sfges
-#  define OPERATION_ALU_L_SFGEU                    0x1a       // 000_0000 l.sfgeu , l.sfgeu
-#  define OPERATION_ALU_L_SFGTS                    0x1b       // 000_0000 L.sfgts , l.sfgts
-#  define OPERATION_ALU_L_SFGTU                    0x1c       // 000_0000 l.sfgtu , l.sfgtu
-#  define OPERATION_ALU_L_SFLES                    0x1d       // 000_0000 l.sfles , l.sfles
-#  define OPERATION_ALU_L_SFLEU                    0x1e       // 000_0000 l.sfleu , l.sfleu
-#  define OPERATION_ALU_L_SFLTS                    0x1f       // 000_0000 l.sflts , l.sflts
-#  define OPERATION_ALU_L_SFLTU                    0x20       // 000_0000 l.sfltu , l.sfltu
-#  define OPERATION_ALU_L_SFEQ                     0x21       // 000_0000 l.sfeq  , l.sfeqi
-#  define OPERATION_ALU_L_SFNE                     0x22       // 000_0000 l.sfne  , l.sfnei
-#  define OPERATION_ALU_L_MAC                      0x23       // 000_0000 l.mac   , l.maci
-#  define OPERATION_ALU_L_MACRC                    0x24       // 000_0000 l.macrc
-#  define OPERATION_ALU_L_MSB                      0x25       // 000_0000 l.msb
+#  define OPERATION_ALU_L_ADD                      0x1        // 000_0000 l.add   , l.addi
+#  define OPERATION_ALU_L_ADDC                     0x2        // 000_0000 l.addc  , l.addic
+#  define OPERATION_ALU_L_SUB                      0x4        // 000_0000 l.sub
+#  define OPERATION_ALU_L_AND                      0x8        // 000_0000 l.and   , l.andi
+#  define OPERATION_ALU_L_OR                       0x10       // 000_0000 l.or    , l.ori
+#  define OPERATION_ALU_L_XOR                      0x20       // 000_0000 l.xor   , l.xori
+
+#  define OPERATION_SHIFT_L_SLL                    0x1        // 000_0000 l.sll   , l.slli
+#  define OPERATION_SHIFT_L_SRA                    0x2        // 000_0000 l.sra   , l.srai
+#  define OPERATION_SHIFT_L_SRL                    0x4        // 000_0000 l.srl   , l.srli
+#  define OPERATION_SHIFT_L_ROR                    0x8        // 000_0000 l.ror   , l.rori
+
+#  define OPERATION_MOVE_L_MOVHI                   0x1        // 000_0000 l.movhi
+#  define OPERATION_MOVE_L_CMOV                    0x2        // 000_0000 l.cmov
+
+#  define OPERATION_TEST_L_SFGES                   0x41       // 000_0000 l.sfges , l.sfges
+#  define OPERATION_TEST_L_SFGEU                   0x1        // 000_0000 l.sfgeu , l.sfgeu
+#  define OPERATION_TEST_L_SFGTS                   0x42       // 000_0000 L.sfgts , l.sfgts
+#  define OPERATION_TEST_L_SFGTU                   0x2        // 000_0000 l.sfgtu , l.sfgtu
+#  define OPERATION_TEST_L_SFLES                   0x44       // 000_0000 l.sfles , l.sfles
+#  define OPERATION_TEST_L_SFLEU                   0x4        // 000_0000 l.sfleu , l.sfleu
+#  define OPERATION_TEST_L_SFLTS                   0x48       // 000_0000 l.sflts , l.sflts
+#  define OPERATION_TEST_L_SFLTU                   0x8        // 000_0000 l.sfltu , l.sfltu
+#  define OPERATION_TEST_L_SFEQ                    0x10       // 000_0000 l.sfeq  , l.sfeqi
+#  define OPERATION_TEST_L_SFNE                    0x20       // 000_0000 l.sfne  , l.sfnei
+
+#  define OPERATION_MUL_DIV_L_MUL                  0x1        // 000_0000 l.mul   , l.muli
+#  define OPERATION_MUL_DIV_L_MULU                 0x2        // 000_0000 l.mulu
+#  define OPERATION_MUL_DIV_L_DIV                  0x4        // 000_0000 l.div
+#  define OPERATION_MUL_DIV_L_DIVU                 0x8        // 000_0000 l.divu
+
+#  define OPERATION_EXTEND_L_EXTEND_Z              0x1        // 000_0000 l.extbz , l.exthz, l.extwz
+#  define OPERATION_EXTEND_L_EXTEND_S              0x2        // 000_0000 l.extbs , l.exths, l.extws
+
+#  define OPERATION_FIND_L_FF1                     0x1        // 000_0000 l.ff1
+#  define OPERATION_FIND_L_FL1                     0x2        // 000_0000 l.fl1
+
+#  define OPERATION_SPECIAL_L_MFSPR                0x1        // 000_0000 l.mfspr
+#  define OPERATION_SPECIAL_L_MTSPR                0x2        // 000_0000 l.mtspr
+#  define OPERATION_SPECIAL_L_MAC                  0x4        // 000_0000 l.mac   , l.maci
+#  define OPERATION_SPECIAL_L_MACRC                0x8        // 000_0000 l.macrc
+#  define OPERATION_SPECIAL_L_MSB                  0x10       // 000_0000 l.msb
+
+#  define OPERATION_BRANCH_L_TEST_NF               0x1        // 000_0000 l.bnf
+#  define OPERATION_BRANCH_L_TEST_F                0x2        // 000_0000 l.bf
+#  define OPERATION_BRANCH_L_JALR                  0x4        // 000_0000 l.jal   , l.jalr , l.jr
 
   //-------------------------------------------------------[ Custom ]-----
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp	(revision 75)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_port_map.cpp	(revision 76)
@@ -25,11 +25,12 @@
     Entity * entity_dest = find_entity(component_dest);
 
+
     if (entity_dest == NULL)
-      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", port map with unknow component \""+component_dest+"\"."));
+      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", try map \""+component_src+"."+port_src+"\" with \""+component_dest+"."+port_dest+"\" but the component \""+component_dest+"\" is unknow."));
 
     Signal * signal_dest = entity_dest->find_signal (port_dest);
 
     if (signal_dest == NULL)
-      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", port map with component \""+component_dest+"\" and a unknow signal \""+port_dest+"\"."));
+      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\",try map \""+component_src+"."+port_src+"\" with \""+component_dest+"."+port_dest+"\" but the component \""+component_dest+"\" have not the signal \""+port_dest+"\"."));
 
     // Second entity
@@ -37,10 +38,10 @@
 
     if (entity_src == NULL)
-      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", port map with unknow component \""+component_src+"\"."));
+      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", try map \""+component_src+"."+port_src+"\" with \""+component_dest+"."+port_dest+"\" but the component \""+component_src+"\" is unknow."));
 
     Signal * signal_src = entity_src->find_signal (port_src);
 
     if (signal_src == NULL)
-      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", port map with component \""+component_src+"\" and a unknow signal \""+port_src+"\"."));
+      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", try map \""+component_src+"."+port_src+"\" with \""+component_dest+"."+port_dest+"\" but the component \""+component_src+"\" have not the signal \""+port_src+"\"."));
 
     // If all is ok, mapping
@@ -56,5 +57,5 @@
 
     if (src_is_port == true)
-      throw (ErrorMorpheo ("<Component::port_map> src can't be an interface's port of the top level."));
+      throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", try map \""+component_src+"."+port_src+"\" with \""+component_dest+"."+port_dest+"\" but the component \""+component_src+" is the Top_level, and we can't be use interface's port of the top level as a source."));
     
     // 2 cases : 
@@ -101,5 +102,5 @@
     catch (morpheo::ErrorMorpheo & error)
       {
-	throw (ErrorMorpheo ("<Component::port_map> Error in mapping between "+entity_src ->get_name()+"."+signal_src ->get_name()+" and "+entity_dest->get_name()+"."+signal_dest->get_name()+" :\n"+error.what ()));
+	throw (ErrorMorpheo ("<Component::port_map> in component \""+name_entity+"\", try map \""+component_src+"."+port_src+"\" with \""+component_dest+"."+port_dest+"\" but "+error.what ()));
       }
     //catch (...)
@@ -109,5 +110,4 @@
     log_printf(FUNC,Behavioural,FUNCTION,"End");
   };
-
 
   void Component::port_map (std::string component_src ,
