diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c
index bf59399f80cfc5d1080b030a71b6e1d3034d0430..e998dd1754ee641eac4f8181d4f92c18853001e1 100644
--- a/openair1/SCHED/phy_procedures_lte_ue.c
+++ b/openair1/SCHED/phy_procedures_lte_ue.c
@@ -4937,6 +4937,509 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
 
     return (0);
   }
+
+
+
+static int phy_procedures_UE_RX_new(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mode,
+			 relaying_type_t r_type,PHY_VARS_RN *phy_vars_rn) {
+
+int l,l2;
+int pmch_flag=0;
+int frame_rx = proc->frame_rx;
+int subframe_rx = proc->subframe_rx;
+uint8_t pilot0;
+uint8_t pilot1;
+uint8_t slot0;
+uint8_t slot1;
+uint8_t first_ofdm_sym;
+
+VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX, VCD_FUNCTION_IN);
+
+#if T_TRACER
+T(T_UE_PHY_DL_TICK, T_INT(ue->Mod_id), T_INT(frame_rx%1024), T_INT(subframe_rx));
+#endif
+
+
+T(T_UE_PHY_INPUT_SIGNAL, T_INT(ue->Mod_id), T_INT(frame_rx%1024), T_INT(subframe_rx), T_INT(0),
+  T_BUFFER(&ue->common_vars.rxdata[0][subframe_rx*ue->frame_parms.samples_per_tti],
+           ue->frame_parms.samples_per_tti * 4));
+
+// start timers
+LOG_I(PHY," ****** start RX-Chain for AbsSubframe %d.%d ******  \n", frame_rx%1024, subframe_rx);
+start_meas(&ue->phy_proc_rx[subframe_rx&0x1]);
+start_meas(&ue->generic_stat);
+
+pmch_flag = is_pmch_subframe(frame_rx,subframe_rx,&ue->frame_parms) ? 1 : 0;
+
+
+// deactivate reception until we scan pdcch
+if (ue->dlsch[subframe_rx&0x1][eNB_id][0])
+  ue->dlsch[subframe_rx&0x1][eNB_id][0]->active = 0;
+if (ue->dlsch[subframe_rx&0x1][eNB_id][1])
+  ue->dlsch[subframe_rx&0x1][eNB_id][1]->active = 0;
+
+if (ue->dlsch_SI[eNB_id])
+  ue->dlsch_SI[eNB_id]->active = 0;
+if (ue->dlsch_p[eNB_id])
+  ue->dlsch_p[eNB_id]->active = 0;
+if (ue->dlsch_ra[eNB_id])
+  ue->dlsch_ra[eNB_id]->active = 0;
+
+if (subframe_select(&ue->frame_parms,subframe_rx) == SF_S) { // S-subframe, do first 5 symbols only
+l2 = 5;
+} else if (pmch_flag == 1) { // do first 2 symbols only
+l2 = 1;
+} else { // normal subframe, last symbol to be processed is the first of the second slot
+l2 = (ue->frame_parms.symbols_per_tti/2)-1;
+}
+
+int prev_subframe_rx = (subframe_rx - 1)<0? 9: (subframe_rx - 1);
+if (subframe_select(&ue->frame_parms,prev_subframe_rx) != SF_DL) {
+  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+  // RX processing of symbols l=0...l2
+  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+  first_ofdm_sym = 0;
+} else {
+  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+  // RX processing of symbols l=1...l2 (l=0 is done in last scheduling epoch)
+  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+  first_ofdm_sym = 1;
+}
+slot0  = (subframe_rx<<1);
+slot1  = (subframe_rx<<1) + 1;
+pilot0 = 0;
+if (ue->frame_parms.Ncp == 0) {  // normal prefix
+  pilot1 = 4;
+} else { // extended prefix
+  pilot1 = 3;
+}
+
+//LOG_I(PHY,"Set available channelEst to 0 AbsSubframe %d.%d \n",frame_rx,subframe_rx);
+//LOG_I(PHY,"Set available llrs slot1 to 0 AbsSubframe %d.%d \n",frame_rx,subframe_rx);
+//LOG_I(PHY,"Set available dci info slot0 to 0 AbsSubframe %d.%d \n",frame_rx,subframe_rx);
+proc->chan_est_pilot0_slot1_available=0;
+proc->llr_slot1_available=0;
+proc->dci_slot0_available=0;
+proc->first_symbol_available=0;
+
+#ifdef UE_SLOT_PARALLELISATION
+//LOG_I(PHY,"fep slot1 thread : instance_cnt %d \n",
+//          proc->instance_cnt_fep_slot1);
+proc->instance_cnt_fep_slot1++;
+if (proc->instance_cnt_fep_slot1 == 0) {
+    LOG_I(PHY,"unblock fep slot1 thread blocked on cond_fep_slot1 : instance_cnt_fep_slot1 %d \n", proc->instance_cnt_fep_slot1 );
+  if (pthread_cond_signal(&proc->cond_fep_slot1) != 0) {
+    LOG_E( PHY, "[SCHED][UE %d] ERROR pthread_cond_signal for UE FEP slot1 thread\n", ue->Mod_id);
+    exit_fun("nothing to add");
+  }
+} else {
+  LOG_E( PHY, "[SCHED][UE %d] UE RX thread busy (IC %d)!!\n", ue->Mod_id, proc->instance_cnt_fep_slot1);
+  if (proc->instance_cnt_fep_slot1 > 2)
+    exit_fun("instance_cnt_fep_slot1 > 2");
+}
+AssertFatal(pthread_cond_signal(&proc->cond_fep_slot1) ==0 ,"");
+AssertFatal(pthread_mutex_unlock(&proc->mutex_fep_slot1) ==0,"");
+#endif
+
+/**** FFT Slot0 + Slot1 ****/
+// I- start main thread for FFT/ChanEst symbol: 0/1 --> 7
+
+// 1- perform FFT for pilot ofdm symbols first (ofdmSym7 ofdmSym4 or (ofdmSym6 ofdmSym3))
+LOG_I(PHY,"FFT symbol %d slot %d \n",pilot0,slot1);
+front_end_fft(ue,
+        pilot0,
+        slot1,
+        0,
+        0);
+LOG_I(PHY,"FFT symbol %d slot %d \n",pilot1,slot0);
+front_end_fft(ue,
+        pilot1,
+        slot0,
+        0,
+        0);
+LOG_I(PHY,"ChanEst symbol %d slot %d\n",pilot1,slot0);
+front_end_chanEst(ue,
+        pilot1,
+        slot0,
+        0);
+LOG_I(PHY,"ChanEst symbol %d slot %d\n",pilot0,slot1);
+front_end_chanEst(ue,
+        pilot0,
+        slot1,
+        0);
+proc->chan_est_pilot0_slot1_available = 1;
+LOG_I(PHY,"Set available channelEst to 1 AbsSubframe %d.%d \n",frame_rx,subframe_rx);
+// 2- perform FFT for other ofdm symbols other than pilots
+for (l=first_ofdm_sym; l<=l2; l++)
+{
+    if( (l != pilot0) && (l != pilot1))
+    {
+        LOG_I(PHY,"FFT symbol %d slot %d \n", l, slot0);
+        start_meas(&ue->ofdm_demod_stats);
+        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
+        front_end_fft(ue,
+                l,
+                slot0,
+                0,
+                0);
+        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
+        stop_meas(&ue->ofdm_demod_stats);
+    }
+} // for l=1..l2
+
+// 3- perform Channel Estimation for slot0
+for (l=first_ofdm_sym; l<=l2; l++)
+{
+    if( (l != pilot0) && (l != pilot1))
+    {
+    LOG_I(PHY,"ChanEst symbol %d slot %d\n",l,slot0);
+    front_end_chanEst(ue,
+            l,
+            slot0,
+            0);
+    }
+    ue_measurement_procedures(l-1,ue,proc,eNB_id,(subframe_rx<<1),abstraction_flag,mode);
+}
+
+// PDCCH decoding
+if (ue_pdcch_procedures(eNB_id,ue,proc,abstraction_flag) == -1) {
+    LOG_E(PHY,"[UE  %d] Frame %d, subframe %d: Error in pdcch procedures\n",ue->Mod_id,frame_rx,subframe_rx);
+    return(-1);
+}
+
+LOG_I(PHY,"num_pdcch_symbols %d\n",ue->pdcch_vars[subframe_rx & 0x1][eNB_id]->num_pdcch_symbols);
+LOG_I(PHY,"Set available dci slot0 to 1 AbsSubframe %d.%d \n",frame_rx%1024,subframe_rx);
+proc->dci_slot0_available=1;
+
+
+// If this is PMCH, call procedures and return
+if (pmch_flag == 1) {
+  ue_pmch_procedures(ue,proc,eNB_id,abstraction_flag);
+  return 0;
+}
+
+#if 1
+// II- start slave thread for FFT/ChanEst
+// do first symbol of next downlink subframe for channel estimation
+int next_subframe_rx = (1+subframe_rx)%10;
+uint8_t next_subframe_slot0 = next_subframe_rx<<1;
+// 1- perform FFT for pilot ofdm symbols first (ofdmSym0 next subframe ofdmSym11)
+if (subframe_select(&ue->frame_parms,next_subframe_rx) != SF_UL)
+{
+    LOG_I(PHY,"FFT symbol %d slot %d \n", pilot0, next_subframe_slot0);
+    front_end_fft(ue,
+            pilot0,
+            next_subframe_slot0,
+            0,
+            0);
+}
+
+LOG_I(PHY,"FFT symbol %d slot %d \n",pilot1,slot1);
+front_end_fft(ue,
+        pilot1,
+        slot1,
+        0,
+        0);
+
+// 2- perform FFT for other ofdm symbols other than pilots
+for (l=1; l<ue->frame_parms.symbols_per_tti>>1; l++)
+{
+    if( (l != pilot0) && (l != pilot1))
+    {
+        LOG_I(PHY,"FFT symbol %d slot %d\n",l,slot1);
+        start_meas(&ue->ofdm_demod_stats);
+        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
+        front_end_fft(ue,
+                l,
+                slot1,
+                0,
+                0);
+        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
+        stop_meas(&ue->ofdm_demod_stats);
+    }
+} // for l=1..l2
+
+// 3- perform Channel Estimation for slot1
+for (l=1; l<ue->frame_parms.symbols_per_tti>>1; l++)
+{
+    if(l == pilot0)
+    {
+        //wait until channel estimation for pilot0/slot1 is available
+        uint32_t wait = 0;
+        while(proc->chan_est_pilot0_slot1_available == 0)
+        {
+          wait++;
+        }
+    }
+    LOG_I(PHY,"ChanEst symbol %d slot %d\n",l,slot1);
+    front_end_chanEst(ue,
+            l,
+            slot1,
+            0);
+    ue_measurement_procedures(l-1,ue,proc,eNB_id,1+(subframe_rx<<1),abstraction_flag,mode);
+}
+LOG_I(PHY,"ChanEst symbol %d slot %d\n",0,next_subframe_slot0);
+front_end_chanEst(ue,
+        pilot0,
+        next_subframe_slot0,
+        0);
+
+if ( (subframe_rx == 0) && (ue->decode_MIB == 1))
+{
+  ue_pbch_procedures(eNB_id,ue,proc,abstraction_flag);
+}
+#endif
+
+stop_meas(&ue->generic_stat);
+//printf("------Front-End PROC [SFN %d]: %5.2f ------\n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
+/**** End Subframe FFT-ChannelEst ****/
+
+
+/**** Pdsch Procedure Slot0 + Slot1 ****/
+// start main thread for Pdsch Procedure (slot0)
+// do procedures for C-RNTI
+//LOG_I(PHY,"AbsSubframe %d.%d Pdsch Procedure (slot0)\n",frame_rx%1024,subframe_rx);
+//LOG_I(PHY,"AbsSubframe %d.%d Pdsch Procedure PDSCH Active %d \n",frame_rx%1024,subframe_rx, ue->dlsch[subframe_rx&0x1][0][0]->active);
+
+start_meas(&ue->generic_stat);
+if (ue->dlsch[subframe_rx&0x1][eNB_id][0]->active == 1) {
+    LOG_I(PHY,"AbsSubframe %d.%d Pdsch Procedure PDSCH \n",frame_rx%1024,subframe_rx);
+  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_IN);
+  ue_pdsch_procedures(ue,
+          proc,
+          eNB_id,
+          PDSCH,
+          ue->dlsch[subframe_rx&0x1][eNB_id][0],
+          NULL,
+          ue->pdcch_vars[subframe_rx & 0x1][eNB_id]->num_pdcch_symbols,
+          ue->frame_parms.symbols_per_tti>>1,
+          abstraction_flag);
+  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_OUT);
+}
+
+// do procedures for SI-RNTI
+if ((ue->dlsch_SI[eNB_id]) && (ue->dlsch_SI[eNB_id]->active == 1)) {
+    LOG_I(PHY,"AbsSubframe %d.%d Pdsch Procedure SI-PDSCH \n",frame_rx%1024,subframe_rx);
+  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_SI, VCD_FUNCTION_IN);
+  ue_pdsch_procedures(ue,
+          proc,
+          eNB_id,
+          SI_PDSCH,
+          ue->dlsch_SI[eNB_id],
+          NULL,
+          ue->pdcch_vars[subframe_rx & 0x1][eNB_id]->num_pdcch_symbols,
+          ue->frame_parms.symbols_per_tti>>1,
+          abstraction_flag);
+  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_SI, VCD_FUNCTION_OUT);
+}
+
+// do procedures for SI-RNTI
+if ((ue->dlsch_p[eNB_id]) && (ue->dlsch_p[eNB_id]->active == 1)) {
+    LOG_I(PHY,"AbsSubframe %d.%d Pdsch Procedure P-PDSCH \n",frame_rx%1024,subframe_rx);
+  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_P, VCD_FUNCTION_IN);
+  ue_pdsch_procedures(ue,
+          proc,
+          eNB_id,
+          P_PDSCH,
+          ue->dlsch_p[eNB_id],
+          NULL,
+          ue->pdcch_vars[subframe_rx & 0x1][eNB_id]->num_pdcch_symbols,
+          ue->frame_parms.symbols_per_tti>>1,
+          abstraction_flag);
+  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_P, VCD_FUNCTION_OUT);
+}
+
+// do procedures for RA-RNTI
+if ((ue->dlsch_ra[eNB_id]) && (ue->dlsch_ra[eNB_id]->active == 1)) {
+    LOG_I(PHY,"AbsSubframe %d.%d Pdsch Procedure RA-PDSCH \n",frame_rx%1024,subframe_rx);
+  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_RA, VCD_FUNCTION_IN);
+  ue_pdsch_procedures(ue,
+          proc,
+          eNB_id,
+          RA_PDSCH,
+          ue->dlsch_ra[eNB_id],
+          NULL,
+          ue->pdcch_vars[subframe_rx & 0x1][eNB_id]->num_pdcch_symbols,
+          ue->frame_parms.symbols_per_tti>>1,
+          abstraction_flag);
+  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_RA, VCD_FUNCTION_OUT);
+}
+
+stop_meas(&ue->generic_stat);
+//printf("------LLR-Slot0  [SFN %d]: %5.2f ------\n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
+
+#if 1
+// start slave thread for Pdsch Procedure (slot1)
+// do procedures for C-RNTI
+
+if (ue->dlsch[subframe_rx&0x1][eNB_id][0]->active == 1) {
+  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_IN);
+  start_meas(&ue->pdsch_procedures_stat);
+  ue_pdsch_procedures(ue,
+          proc,
+          eNB_id,
+          PDSCH,
+          ue->dlsch[subframe_rx&0x1][eNB_id][0],
+          NULL,
+          1+(ue->frame_parms.symbols_per_tti>>1),
+          ue->frame_parms.symbols_per_tti-1,
+          abstraction_flag);
+  stop_meas(&ue->pdsch_procedures_stat);
+}
+
+// do procedures for SI-RNTI
+if ((ue->dlsch_SI[eNB_id]) && (ue->dlsch_SI[eNB_id]->active == 1)) {
+  ue_pdsch_procedures(ue,
+          proc,
+          eNB_id,
+          SI_PDSCH,
+          ue->dlsch_SI[eNB_id],
+          NULL,
+          1+(ue->frame_parms.symbols_per_tti>>1),
+          ue->frame_parms.symbols_per_tti-1,
+          abstraction_flag);
+}
+
+// do procedures for P-RNTI
+if ((ue->dlsch_p[eNB_id]) && (ue->dlsch_p[eNB_id]->active == 1)) {
+  ue_pdsch_procedures(ue,
+          proc,
+          eNB_id,
+          P_PDSCH,
+          ue->dlsch_p[eNB_id],
+          NULL,
+          1+(ue->frame_parms.symbols_per_tti>>1),
+          ue->frame_parms.symbols_per_tti-1,
+          abstraction_flag);
+}
+// do procedures for RA-RNTI
+if ((ue->dlsch_ra[eNB_id]) && (ue->dlsch_ra[eNB_id]->active == 1)) {
+  ue_pdsch_procedures(ue,
+          proc,
+          eNB_id,
+          RA_PDSCH,
+          ue->dlsch_ra[eNB_id],
+          NULL,
+          1+(ue->frame_parms.symbols_per_tti>>1),
+          ue->frame_parms.symbols_per_tti-1,
+          abstraction_flag);
+}
+proc->llr_slot1_available=1;
+#endif
+
+start_meas(&ue->generic_stat);
+// wait until llr on slot1 are available
+uint32_t wait=0;
+while(proc->llr_slot1_available==0)
+{
+    //wait until channel estimation for pilot0/slot1 is available
+    usleep(1);
+    wait++;
+}
+stop_meas(&ue->generic_stat);
+//printf("------ Waiting for LLR-Slot1  [SFN %d]: %5.2f ------\n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
+
+LOG_I(PHY,"==> Start Turbo Decoder wait %d\n", wait);
+// Start Turbo decoder
+if (ue->dlsch[subframe_rx&0x1][eNB_id][0]->active == 1) {
+   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_IN);
+   start_meas(&ue->dlsch_procedures_stat);
+   ue_dlsch_procedures(ue,
+           proc,
+           eNB_id,
+           PDSCH,
+           ue->dlsch[subframe_rx&0x1][eNB_id][0],
+           ue->dlsch[subframe_rx&0x1][eNB_id][1],
+           &ue->dlsch_errors[eNB_id],
+           mode,
+           abstraction_flag);
+   stop_meas(&ue->dlsch_procedures_stat);
+   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_OUT);
+ }
+
+ // do procedures for SI-RNTI
+ if ((ue->dlsch_SI[eNB_id]) && (ue->dlsch_SI[eNB_id]->active == 1)) {
+   ue_dlsch_procedures(ue,
+           proc,
+           eNB_id,
+           SI_PDSCH,
+           ue->dlsch_SI[eNB_id],
+           NULL,
+           &ue->dlsch_SI_errors[eNB_id],
+           mode,
+           abstraction_flag);
+   ue->dlsch_SI[eNB_id]->active = 0;
+ }
+
+ // do procedures for P-RNTI
+ if ((ue->dlsch_p[eNB_id]) && (ue->dlsch_p[eNB_id]->active == 1)) {
+   ue_dlsch_procedures(ue,
+           proc,
+           eNB_id,
+           P_PDSCH,
+           ue->dlsch_p[eNB_id],
+           NULL,
+           &ue->dlsch_p_errors[eNB_id],
+           mode,
+           abstraction_flag);
+   ue->dlsch_p[eNB_id]->active = 0;
+ }
+ // do procedures for RA-RNTI
+ if ((ue->dlsch_ra[eNB_id]) && (ue->dlsch_ra[eNB_id]->active == 1)) {
+   ue_dlsch_procedures(ue,
+           proc,
+           eNB_id,
+           RA_PDSCH,
+           ue->dlsch_ra[eNB_id],
+           NULL,
+           &ue->dlsch_ra_errors[eNB_id],
+           mode,
+           abstraction_flag);
+   ue->dlsch_ra[eNB_id]->active = 0;
+ }
+ //printf("------ Turbo Decoding [SFN %d]: %5.2f ------\n",subframe_rx,ue->dlsch_procedures_stat.p_time/(cpuf*1000.0));
+
+/**** End Pdsch processing for this subframe ****/
+
+if (subframe_rx==9) {
+  if (frame_rx % 10 == 0) {
+    if ((ue->dlsch_received[eNB_id] - ue->dlsch_received_last[eNB_id]) != 0)
+  ue->dlsch_fer[eNB_id] = (100*(ue->dlsch_errors[eNB_id] - ue->dlsch_errors_last[eNB_id]))/(ue->dlsch_received[eNB_id] - ue->dlsch_received_last[eNB_id]);
+
+    ue->dlsch_errors_last[eNB_id] = ue->dlsch_errors[eNB_id];
+    ue->dlsch_received_last[eNB_id] = ue->dlsch_received[eNB_id];
+  }
+
+
+  ue->bitrate[eNB_id] = (ue->total_TBS[eNB_id] - ue->total_TBS_last[eNB_id])*100;
+  ue->total_TBS_last[eNB_id] = ue->total_TBS[eNB_id];
+  LOG_D(PHY,"[UE %d] Calculating bitrate Frame %d: total_TBS = %d, total_TBS_last = %d, bitrate %f kbits\n",
+    ue->Mod_id,frame_rx,ue->total_TBS[eNB_id],
+    ue->total_TBS_last[eNB_id],(float) ue->bitrate[eNB_id]/1000.0);
+
+#if UE_AUTOTEST_TRACE
+  if ((frame_rx % 100 == 0)) {
+    LOG_I(PHY,"[UE  %d] AUTOTEST Metric : UE_DLSCH_BITRATE = %5.2f kbps (frame = %d) \n", ue->Mod_id, (float) ue->bitrate[eNB_id]/1000.0, frame_rx);
+  }
+#endif
+
+}
+
+//printf("after tubo until end of Rx %5.2f \n",ue->generic_stat.p_time/(cpuf*1000.0));
+
+#ifdef EMOS
+phy_procedures_emos_UE_RX(ue,slot,eNB_id);
+#endif
+
+VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX, VCD_FUNCTION_OUT);
+stop_meas(&ue->phy_proc_rx[subframe_rx&0x1]);
+
+
+//printf("------FULL RX PROC [SFN %d]: %5.2f ------\n",subframe_rx,ue->phy_proc_rx[subframe_rx&0x1].p_time/(cpuf*1000.0));
+LOG_I(PHY," ****** end RX-Chain  for AbsSubframe %d.%d ******  \n", frame_rx%1024, subframe_rx);
+
+return (0);
+}
    
 #if defined(Rel10) || defined(Rel14)
 int phy_procedures_RN_UE_RX(uint8_t slot_rx, uint8_t next_slot, relaying_type_t r_type)