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 66)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp	(revision 68)
@@ -214,11 +214,14 @@
   (*(_Read_queue->in_NRESET))        (*(NRESET));
 
-  
   (*(_Read_queue-> in_READ_QUEUE_IN_VAL            )) (*(READ_QUEUE_IN_VAL            ));
   (*(_Read_queue->out_READ_QUEUE_IN_ACK            )) (*(READ_QUEUE_IN_ACK            ));
-  (*(_Read_queue-> in_READ_QUEUE_IN_CONTEXT_ID     )) (*(READ_QUEUE_IN_CONTEXT_ID     ));
-  (*(_Read_queue-> in_READ_QUEUE_IN_FRONT_END_ID   )) (*(READ_QUEUE_IN_FRONT_END_ID   ));
-  (*(_Read_queue-> in_READ_QUEUE_IN_OOO_ENGINE_ID  )) (*(READ_QUEUE_IN_OOO_ENGINE_ID  ));
-  (*(_Read_queue-> in_READ_QUEUE_IN_ROB_ID         )) (*(READ_QUEUE_IN_ROB_ID         ));
+  if(_param->_have_port_context_id   )
+    (*(_Read_queue-> in_READ_QUEUE_IN_CONTEXT_ID     )) (*(READ_QUEUE_IN_CONTEXT_ID     ));
+  if(_param->_have_port_front_end_id )
+    (*(_Read_queue-> in_READ_QUEUE_IN_FRONT_END_ID   )) (*(READ_QUEUE_IN_FRONT_END_ID   ));
+  if(_param->_have_port_ooo_engine_id)
+    (*(_Read_queue-> in_READ_QUEUE_IN_OOO_ENGINE_ID  )) (*(READ_QUEUE_IN_OOO_ENGINE_ID  ));
+  if(_param->_have_port_rob_id       )
+    (*(_Read_queue-> in_READ_QUEUE_IN_ROB_ID         )) (*(READ_QUEUE_IN_ROB_ID         ));
   (*(_Read_queue-> in_READ_QUEUE_IN_OPERATION      )) (*(READ_QUEUE_IN_OPERATION      ));
   (*(_Read_queue-> in_READ_QUEUE_IN_TYPE           )) (*(READ_QUEUE_IN_TYPE           ));
@@ -238,8 +241,12 @@
   (*(_Read_queue->out_READ_QUEUE_OUT_VAL           )) (*(READ_QUEUE_OUT_VAL           )); 
   (*(_Read_queue-> in_READ_QUEUE_OUT_ACK           )) (*(READ_QUEUE_OUT_ACK           )); 
-  (*(_Read_queue->out_READ_QUEUE_OUT_CONTEXT_ID    )) (*(READ_QUEUE_OUT_CONTEXT_ID    )); 
-  (*(_Read_queue->out_READ_QUEUE_OUT_FRONT_END_ID  )) (*(READ_QUEUE_OUT_FRONT_END_ID  )); 
-  (*(_Read_queue->out_READ_QUEUE_OUT_OOO_ENGINE_ID )) (*(READ_QUEUE_OUT_OOO_ENGINE_ID )); 
-  (*(_Read_queue->out_READ_QUEUE_OUT_ROB_ID        )) (*(READ_QUEUE_OUT_ROB_ID        )); 
+  if(_param->_have_port_context_id   )
+    (*(_Read_queue->out_READ_QUEUE_OUT_CONTEXT_ID    )) (*(READ_QUEUE_OUT_CONTEXT_ID    )); 
+  if(_param->_have_port_front_end_id )
+    (*(_Read_queue->out_READ_QUEUE_OUT_FRONT_END_ID  )) (*(READ_QUEUE_OUT_FRONT_END_ID  )); 
+  if(_param->_have_port_ooo_engine_id)
+    (*(_Read_queue->out_READ_QUEUE_OUT_OOO_ENGINE_ID )) (*(READ_QUEUE_OUT_OOO_ENGINE_ID )); 
+  if(_param->_have_port_rob_id       )
+    (*(_Read_queue->out_READ_QUEUE_OUT_ROB_ID        )) (*(READ_QUEUE_OUT_ROB_ID        )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_OPERATION     )) (*(READ_QUEUE_OUT_OPERATION     )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_TYPE          )) (*(READ_QUEUE_OUT_TYPE          )); 
@@ -267,5 +274,6 @@
       (*(_Read_queue->out_GPR_READ_VAL         [i])) (*(GPR_READ_VAL         [i]));
       (*(_Read_queue-> in_GPR_READ_ACK         [i])) (*(GPR_READ_ACK         [i]));
-      (*(_Read_queue->out_GPR_READ_OOO_ENGINE_ID  [i])) (*(GPR_READ_OOO_ENGINE_ID  [i]));
+      if(_param->_have_port_ooo_engine_id)
+	(*(_Read_queue->out_GPR_READ_OOO_ENGINE_ID  [i])) (*(GPR_READ_OOO_ENGINE_ID  [i]));
       (*(_Read_queue->out_GPR_READ_NUM_REG     [i])) (*(GPR_READ_NUM_REG     [i]));
       (*(_Read_queue-> in_GPR_READ_DATA        [i])) (*(GPR_READ_DATA        [i]));
@@ -277,5 +285,6 @@
       (*(_Read_queue->out_SPR_READ_VAL         [i])) (*(SPR_READ_VAL         [i]));
       (*(_Read_queue-> in_SPR_READ_ACK         [i])) (*(SPR_READ_ACK         [i]));
-      (*(_Read_queue->out_SPR_READ_OOO_ENGINE_ID  [i])) (*(SPR_READ_OOO_ENGINE_ID  [i]));
+      if(_param->_have_port_ooo_engine_id)
+	(*(_Read_queue->out_SPR_READ_OOO_ENGINE_ID  [i])) (*(SPR_READ_OOO_ENGINE_ID  [i]));
       (*(_Read_queue->out_SPR_READ_NUM_REG     [i])) (*(SPR_READ_NUM_REG     [i]));
       (*(_Read_queue-> in_SPR_READ_DATA        [i])) (*(SPR_READ_DATA        [i]));
@@ -286,5 +295,6 @@
     {
       (*(_Read_queue-> in_GPR_WRITE_VAL        [i])) (*(GPR_WRITE_VAL        [i]));
-      (*(_Read_queue-> in_GPR_WRITE_OOO_ENGINE_ID [i])) (*(GPR_WRITE_OOO_ENGINE_ID [i]));
+      if(_param->_have_port_ooo_engine_id)
+	(*(_Read_queue-> in_GPR_WRITE_OOO_ENGINE_ID [i])) (*(GPR_WRITE_OOO_ENGINE_ID [i]));
       (*(_Read_queue-> in_GPR_WRITE_NUM_REG    [i])) (*(GPR_WRITE_NUM_REG    [i]));
       (*(_Read_queue-> in_GPR_WRITE_DATA       [i])) (*(GPR_WRITE_DATA       [i]));
@@ -294,5 +304,6 @@
     {
       (*(_Read_queue-> in_SPR_WRITE_VAL        [i])) (*(SPR_WRITE_VAL        [i]));
-      (*(_Read_queue-> in_SPR_WRITE_OOO_ENGINE_ID [i])) (*(SPR_WRITE_OOO_ENGINE_ID [i]));
+      if(_param->_have_port_ooo_engine_id)
+	(*(_Read_queue-> in_SPR_WRITE_OOO_ENGINE_ID [i])) (*(SPR_WRITE_OOO_ENGINE_ID [i]));
       (*(_Read_queue-> in_SPR_WRITE_NUM_REG    [i])) (*(SPR_WRITE_NUM_REG    [i]));
       (*(_Read_queue-> in_SPR_WRITE_DATA       [i])) (*(SPR_WRITE_DATA       [i]));
@@ -308,5 +319,5 @@
   // Initialisation
   const uint32_t nb_request = _param->_nb_packet;
-//const uint32_t seed       = 0;
+  // const uint32_t seed       = 0;
   const uint32_t seed       = static_cast<uint32_t>(time(NULL));
   srand(seed);
@@ -342,10 +353,11 @@
     {
       LABEL("Iteration "+toString(iteration));
-      int32_t percent_transaction_queue_in     = (rand()%50)+25;
-      int32_t percent_transaction_queue_out    = (rand()%50)+25;
-      int32_t percent_registerfile_valid       = (rand()%50)+25;
-      int32_t percent_transaction_registerfile = (rand()%74)+25;
-      int32_t percent_transaction_bypass       = (rand()%50)+25;
-      
+      int32_t percent_transaction_queue_in     = (rand()%45)+30;
+      int32_t percent_transaction_queue_out    = (rand()%45)+30;
+      int32_t percent_registerfile_valid       = (rand()%45)+30;
+      int32_t percent_transaction_registerfile = (rand()%45)+30;
+      int32_t percent_transaction_bypass       = (rand()%45)+30;
+      int32_t percent_must_read_reg            = (rand()%45)+30;
+
       LABEL("Initialisation");
 
@@ -353,9 +365,9 @@
 	{
 	  _ooo_engine_id   [i] = rand()% _param->_nb_ooo_engine         ;
-	  _read_ra      [i] = rand()% 2                              ;
+	  _read_ra      [i] = (rand()%100)<percent_must_read_reg;
 	  _num_reg_ra   [i] = rand()% _param->_nb_general_register   ;
-	  _read_rb      [i] = rand()% 2                              ;
+	  _read_rb      [i] = (rand()%100)<percent_must_read_reg;
 	  _num_reg_rb   [i] = rand()% _param->_nb_general_register   ;
-	  _read_rc      [i] = rand()% 2                              ;
+	  _read_rc      [i] = (rand()%100)<percent_must_read_reg;
 	  _num_reg_rc   [i] = rand()% _param->_nb_special_register   ;
 	}
@@ -386,8 +398,12 @@
 	    {
 	      READ_QUEUE_IN_VAL            ->write(1);
-	      READ_QUEUE_IN_OOO_ENGINE_ID  ->write(_ooo_engine_id [request_in]);
-	      READ_QUEUE_IN_CONTEXT_ID     ->write((2*_ooo_engine_id [request_in])%_param->_nb_context  );
-	      READ_QUEUE_IN_FRONT_END_ID   ->write((3*_ooo_engine_id [request_in])%_param->_nb_front_end);
-	      READ_QUEUE_IN_ROB_ID      ->write(request_in);
+	      if(_param->_have_port_ooo_engine_id)
+		READ_QUEUE_IN_OOO_ENGINE_ID  ->write(_ooo_engine_id [request_in]);
+	      if(_param->_have_port_context_id   )
+		READ_QUEUE_IN_CONTEXT_ID     ->write((2*_ooo_engine_id [request_in])%_param->_nb_context  );
+	      if(_param->_have_port_front_end_id )
+		READ_QUEUE_IN_FRONT_END_ID   ->write((3*_ooo_engine_id [request_in])%_param->_nb_front_end);
+	      if(_param->_have_port_rob_id       )
+		READ_QUEUE_IN_ROB_ID      ->write(request_in);
 	      READ_QUEUE_IN_OPERATION   ->write(0);
 	      READ_QUEUE_IN_TYPE        ->write(0);
@@ -419,8 +435,12 @@
 		{
 		  Tgeneral_address_t num_reg = GPR_READ_NUM_REG       [i]->read();
-		  Tcontext_t         context = GPR_READ_OOO_ENGINE_ID [i]->read();
-
-		  GPR_READ_DATA     [i]->write(_gpr    [num_reg][context]);
-		  GPR_READ_DATA_VAL [i]->write(_gpr_val[num_reg][context]);
+		  Tcontext_t         ooo_engine;
+		  if(_param->_have_port_ooo_engine_id)
+		    ooo_engine = GPR_READ_OOO_ENGINE_ID [i]->read();
+		  else
+		    ooo_engine = 0;
+
+		  GPR_READ_DATA     [i]->write(_gpr    [num_reg][ooo_engine]);
+		  GPR_READ_DATA_VAL [i]->write(_gpr_val[num_reg][ooo_engine]);
 		}
 	    }
@@ -432,8 +452,12 @@
 		{
 		  Tspecial_address_t num_reg = SPR_READ_NUM_REG       [i]->read();
-		  Tcontext_t         context = SPR_READ_OOO_ENGINE_ID [i]->read();
-
-		  SPR_READ_DATA     [i]->write(_spr    [num_reg][context]);
-		  SPR_READ_DATA_VAL [i]->write(_spr_val[num_reg][context]);
+		  Tcontext_t         ooo_engine;
+		  if(_param->_have_port_ooo_engine_id)
+		    ooo_engine = SPR_READ_OOO_ENGINE_ID [i]->read();
+		  else
+		    ooo_engine = 0;
+
+		  SPR_READ_DATA     [i]->write(_spr    [num_reg][ooo_engine]);
+		  SPR_READ_DATA_VAL [i]->write(_spr_val[num_reg][ooo_engine]);
 		}
 	    }
@@ -448,5 +472,6 @@
 	      
 	      GPR_WRITE_VAL           [i]->write(val);	      
-	      GPR_WRITE_OOO_ENGINE_ID [i]->write(ooo_engine);
+	      if(_param->_have_port_ooo_engine_id)
+		GPR_WRITE_OOO_ENGINE_ID [i]->write(ooo_engine);
 	      GPR_WRITE_NUM_REG       [i]->write(num_reg);
 	      GPR_WRITE_DATA          [i]->write(data);
@@ -466,5 +491,6 @@
 	      
 	      SPR_WRITE_VAL            [i]->write(val);	      
-	      SPR_WRITE_OOO_ENGINE_ID  [i]->write(ooo_engine);
+	      if(_param->_have_port_ooo_engine_id)
+		SPR_WRITE_OOO_ENGINE_ID  [i]->write(ooo_engine);
 	      SPR_WRITE_NUM_REG        [i]->write(num_reg);
 	      SPR_WRITE_DATA           [i]->write(data);
@@ -490,5 +516,9 @@
 	      (READ_QUEUE_OUT_ACK->read() == 1))
 	    {
-	      Tpacket_t  rob_id = READ_QUEUE_OUT_ROB_ID->read();
+	      Tpacket_t  rob_id;
+	      if(_param->_have_port_rob_id       )
+		rob_id = READ_QUEUE_OUT_ROB_ID->read();
+	      else
+		rob_id = 0;
 	      Tcontext_t ctxt   = _ooo_engine_id [rob_id];
 	      LABEL("Accepted READ_QUEUE_OUT ["+toString(rob_id)+"]");
@@ -498,7 +528,10 @@
 	      request_out ++;
 
-	      TEST(Tcontext_t        ,READ_QUEUE_OUT_OOO_ENGINE_ID ->read(),ctxt);
-	      TEST(Tcontext_t        ,READ_QUEUE_OUT_CONTEXT_ID    ->read(),(2*ctxt)%_param->_nb_context  );
-	      TEST(Tcontext_t        ,READ_QUEUE_OUT_FRONT_END_ID  ->read(),(3*ctxt)%_param->_nb_front_end);
+	      if(_param->_have_port_ooo_engine_id)
+		TEST(Tcontext_t        ,READ_QUEUE_OUT_OOO_ENGINE_ID ->read(),ctxt);
+	      if(_param->_have_port_context_id   )
+		TEST(Tcontext_t        ,READ_QUEUE_OUT_CONTEXT_ID    ->read(),(2*ctxt)%_param->_nb_context  );
+	      if(_param->_have_port_front_end_id )
+		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]);
@@ -533,78 +566,90 @@
   cout << "<" << name << "> ............ Stop Simulation" << endl;
 
-//   delete    CLOCK;
-//   delete    NRESET;
-
-//   delete    READ_QUEUE_IN_VAL          ;
-//   delete    READ_QUEUE_IN_ACK          ;
-//   delete    READ_QUEUE_IN_CONTEXT_ID   ;
-//   delete    READ_QUEUE_IN_FRONT_END_ID;
-//   delete    READ_QUEUE_IN_OOO_ENGINE_ID;
-//   delete    READ_QUEUE_IN_ROB_ID    ;
-//   delete    READ_QUEUE_IN_OPERATION    ;
-//   delete    READ_QUEUE_IN_TYPE         ;
-//   delete    READ_QUEUE_IN_HAS_IMMEDIAT ;
-//   delete    READ_QUEUE_IN_IMMEDIAT     ;
-//   delete    READ_QUEUE_IN_READ_RA      ;
-//   delete    READ_QUEUE_IN_NUM_REG_RA   ;
-//   delete    READ_QUEUE_IN_READ_RB      ;
-//   delete    READ_QUEUE_IN_NUM_REG_RB   ;
-//   delete    READ_QUEUE_IN_READ_RC      ;
-//   delete    READ_QUEUE_IN_NUM_REG_RC   ;
-//   delete    READ_QUEUE_IN_WRITE_RD     ;
-//   delete    READ_QUEUE_IN_NUM_REG_RD   ;
-//   delete    READ_QUEUE_IN_WRITE_RE     ;
-//   delete    READ_QUEUE_IN_NUM_REG_RE   ;
-
-//   delete    READ_QUEUE_OUT_VAL         ;
-//   delete    READ_QUEUE_OUT_ACK         ;
-//   delete    READ_QUEUE_OUT_CONTEXT_ID  ;
-//   delete    READ_QUEUE_OUT_FRONT_END_ID;
-//   delete    READ_QUEUE_OUT_OOO_ENGINE_ID;
-//   delete    READ_QUEUE_OUT_ROB_ID      ;
-//   delete    READ_QUEUE_OUT_OPERATION   ;
-//   delete    READ_QUEUE_OUT_TYPE        ;
-//   delete    READ_QUEUE_OUT_HAS_IMMEDIAT;
-//   delete    READ_QUEUE_OUT_IMMEDIAT    ;
-//   delete    READ_QUEUE_OUT_READ_RA     ;
-//   delete    READ_QUEUE_OUT_NUM_REG_RA  ;
-//   delete    READ_QUEUE_OUT_DATA_RA_VAL ;
-//   delete    READ_QUEUE_OUT_DATA_RA     ;
-//   delete    READ_QUEUE_OUT_READ_RB     ;
-//   delete    READ_QUEUE_OUT_NUM_REG_RB  ;
-//   delete    READ_QUEUE_OUT_DATA_RB_VAL ;
-//   delete    READ_QUEUE_OUT_DATA_RB     ;
-//   delete    READ_QUEUE_OUT_READ_RC     ;
-//   delete    READ_QUEUE_OUT_NUM_REG_RC  ;
-//   delete    READ_QUEUE_OUT_DATA_RC_VAL ;
-//   delete    READ_QUEUE_OUT_DATA_RC     ;
-//   delete    READ_QUEUE_OUT_WRITE_RD    ;
-//   delete    READ_QUEUE_OUT_NUM_REG_RD  ;
-//   delete    READ_QUEUE_OUT_WRITE_RE    ;
-//   delete    READ_QUEUE_OUT_NUM_REG_RE  ;
-
-//   delete [] GPR_READ_VAL     ;
-//   delete [] GPR_READ_ACK     ;
-//   delete [] GPR_READ_NUM_REG ;
-//   delete [] GPR_READ_DATA    ;
-//   delete [] GPR_READ_DATA_VAL;
-//   delete [] GPR_READ_OOO_ENGINE_ID ;
-
-//   delete [] SPR_READ_VAL     ;
-//   delete [] SPR_READ_ACK     ;
-//   delete [] SPR_READ_NUM_REG ;
-//   delete [] SPR_READ_DATA    ;
-//   delete [] SPR_READ_DATA_VAL;
-//   delete [] SPR_READ_OOO_ENGINE_ID ;
-
-//   delete [] GPR_WRITE_VAL        ;
-//   delete [] GPR_WRITE_OOO_ENGINE_ID ;
-//   delete [] GPR_WRITE_NUM_REG    ;
-//   delete [] GPR_WRITE_DATA       ;
-
-//   delete [] SPR_WRITE_VAL        ;
-//   delete [] SPR_WRITE_OOO_ENGINE_ID ;
-//   delete [] SPR_WRITE_NUM_REG    ;
-//   delete [] SPR_WRITE_DATA       ;
+   delete    CLOCK;
+   delete    NRESET;
+
+   delete    READ_QUEUE_IN_VAL          ;
+   delete    READ_QUEUE_IN_ACK          ;
+   if(_param->_have_port_context_id   )
+     delete    READ_QUEUE_IN_CONTEXT_ID   ;
+   if(_param->_have_port_front_end_id )
+     delete    READ_QUEUE_IN_FRONT_END_ID;
+   if(_param->_have_port_ooo_engine_id )
+     delete    READ_QUEUE_IN_OOO_ENGINE_ID;
+   if(_param->_have_port_rob_id       )
+     delete    READ_QUEUE_IN_ROB_ID    ;
+   delete    READ_QUEUE_IN_OPERATION    ;
+   delete    READ_QUEUE_IN_TYPE         ;
+   delete    READ_QUEUE_IN_HAS_IMMEDIAT ;
+   delete    READ_QUEUE_IN_IMMEDIAT     ;
+   delete    READ_QUEUE_IN_READ_RA      ;
+   delete    READ_QUEUE_IN_NUM_REG_RA   ;
+   delete    READ_QUEUE_IN_READ_RB      ;
+   delete    READ_QUEUE_IN_NUM_REG_RB   ;
+   delete    READ_QUEUE_IN_READ_RC      ;
+   delete    READ_QUEUE_IN_NUM_REG_RC   ;
+   delete    READ_QUEUE_IN_WRITE_RD     ;
+   delete    READ_QUEUE_IN_NUM_REG_RD   ;
+   delete    READ_QUEUE_IN_WRITE_RE     ;
+   delete    READ_QUEUE_IN_NUM_REG_RE   ;
+
+   delete    READ_QUEUE_OUT_VAL         ;
+   delete    READ_QUEUE_OUT_ACK         ;
+   if(_param->_have_port_context_id   )
+     delete    READ_QUEUE_OUT_CONTEXT_ID  ;
+   if(_param->_have_port_front_end_id )
+     delete    READ_QUEUE_OUT_FRONT_END_ID;
+   if(_param->_have_port_ooo_engine_id )
+     delete    READ_QUEUE_OUT_OOO_ENGINE_ID;
+   if(_param->_have_port_rob_id       )
+     delete    READ_QUEUE_OUT_ROB_ID      ;
+   delete    READ_QUEUE_OUT_OPERATION   ;
+   delete    READ_QUEUE_OUT_TYPE        ;
+   delete    READ_QUEUE_OUT_HAS_IMMEDIAT;
+   delete    READ_QUEUE_OUT_IMMEDIAT    ;
+   delete    READ_QUEUE_OUT_READ_RA     ;
+   delete    READ_QUEUE_OUT_NUM_REG_RA  ;
+   delete    READ_QUEUE_OUT_DATA_RA_VAL ;
+   delete    READ_QUEUE_OUT_DATA_RA     ;
+   delete    READ_QUEUE_OUT_READ_RB     ;
+   delete    READ_QUEUE_OUT_NUM_REG_RB  ;
+   delete    READ_QUEUE_OUT_DATA_RB_VAL ;
+   delete    READ_QUEUE_OUT_DATA_RB     ;
+   delete    READ_QUEUE_OUT_READ_RC     ;
+   delete    READ_QUEUE_OUT_NUM_REG_RC  ;
+   delete    READ_QUEUE_OUT_DATA_RC_VAL ;
+   delete    READ_QUEUE_OUT_DATA_RC     ;
+   delete    READ_QUEUE_OUT_WRITE_RD    ;
+   delete    READ_QUEUE_OUT_NUM_REG_RD  ;
+   delete    READ_QUEUE_OUT_WRITE_RE    ;
+   delete    READ_QUEUE_OUT_NUM_REG_RE  ;
+
+   delete [] GPR_READ_VAL     ;
+   delete [] GPR_READ_ACK     ;
+   delete [] GPR_READ_NUM_REG ;
+   delete [] GPR_READ_DATA    ;
+   delete [] GPR_READ_DATA_VAL;
+   if(_param->_have_port_ooo_engine_id )
+     delete [] GPR_READ_OOO_ENGINE_ID ;
+
+   delete [] SPR_READ_VAL     ;
+   delete [] SPR_READ_ACK     ;
+   delete [] SPR_READ_NUM_REG ;
+   delete [] SPR_READ_DATA    ;
+   delete [] SPR_READ_DATA_VAL;
+   if(_param->_have_port_ooo_engine_id )
+     delete [] SPR_READ_OOO_ENGINE_ID ;
+
+   delete [] GPR_WRITE_VAL        ;
+   if(_param->_have_port_ooo_engine_id )
+     delete [] GPR_WRITE_OOO_ENGINE_ID ;
+   delete [] GPR_WRITE_NUM_REG    ;
+   delete [] GPR_WRITE_DATA       ;
+
+   delete [] SPR_WRITE_VAL        ;
+   if(_param->_have_port_ooo_engine_id )
+     delete [] SPR_WRITE_OOO_ENGINE_ID ;
+   delete [] SPR_WRITE_NUM_REG    ;
+   delete [] SPR_WRITE_DATA       ;
 #endif
 
