From 98cbcf619be03ef2a1e95cab1c38762df046e7d0 Mon Sep 17 00:00:00 2001 From: Raymond Knopp <raymond.knopp@eurecom.fr> Date: Tue, 18 Apr 2017 04:45:42 -0700 Subject: [PATCH] vcd modifications for RU-RAU split, gtkw for rau_if4 --- openair1/PHY/LTE_TRANSPORT/if4_tools.c | 6 +- openair2/UTIL/LOG/vcd_signal_dumper.c | 12 +- openair2/UTIL/LOG/vcd_signal_dumper.h | 12 +- targets/ARCH/ETHERNET/USERSPACE/LIB/eth_udp.c | 2 +- .../ETHERNET/USERSPACE/LIB/ethernet_lib.c | 5 +- targets/RT/USER/lte-ru.c | 18 +- targets/RT/USER/rau_if4_single_thread.gtkw | 155 ++++++++++++++++++ 7 files changed, 195 insertions(+), 15 deletions(-) create mode 100644 targets/RT/USER/rau_if4_single_thread.gtkw diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.c b/openair1/PHY/LTE_TRANSPORT/if4_tools.c index 3c2d950a9e..be4191a4ba 100755 --- a/openair1/PHY/LTE_TRANSPORT/if4_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.c @@ -62,7 +62,7 @@ void send_IF4p5(RU_t *ru, int frame, int subframe, uint16_t packet_type, int k) if (ru->idx==0) VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4, 1 ); if (packet_type == IF4p5_PDLFFT) { - LOG_I(PHY,"send DL_IF4p5: RU %d frame %d, subframe %d\n",ru->idx,frame,subframe); + LOG_D(PHY,"send DL_IF4p5: RU %d frame %d, subframe %d\n",ru->idx,frame,subframe); if (subframe_select(fp,subframe)==SF_S) nsym=fp->dl_symbols_in_S_subframe; @@ -234,7 +234,7 @@ void recv_IF4p5(RU_t *ru, int *frame, int *subframe, uint16_t *packet_type, uint IF4p5_header_t *packet_header=NULL; uint16_t *data_block=NULL, *i=NULL; - LOG_I(PHY,"recv IF4p5: RU %d waiting (%d samples)\n",ru->idx,db_fulllength); + LOG_D(PHY,"recv IF4p5: RU %d waiting (%d samples)\n",ru->idx,db_fulllength); if (ru->ifdevice.trx_read_func(&ru->ifdevice, (int64_t*) packet_type, &rx_buffer, @@ -261,7 +261,7 @@ void recv_IF4p5(RU_t *ru, int *frame, int *subframe, uint16_t *packet_type, uint if (*packet_type == IF4p5_PDLFFT) { *symbol_number = ((packet_header->frame_status)>>26)&0x000f; - LOG_I(PHY,"DL_IF4p5: RU %d frame %d, subframe %d, symbol %d\n",ru->idx,*frame,*subframe,*symbol_number); + LOG_D(PHY,"DL_IF4p5: RU %d frame %d, subframe %d, symbol %d\n",ru->idx,*frame,*subframe,*symbol_number); slotoffsetF = (*symbol_number)*(fp->ofdm_symbol_size);// + (*subframe)*(fp->ofdm_symbol_size)*((fp->Ncp==1) ? 12 : 14) + 1; blockoffsetF = slotoffsetF + fp->ofdm_symbol_size - db_halflength - 1; diff --git a/openair2/UTIL/LOG/vcd_signal_dumper.c b/openair2/UTIL/LOG/vcd_signal_dumper.c index 96f173833a..8f7c83673f 100644 --- a/openair2/UTIL/LOG/vcd_signal_dumper.c +++ b/openair2/UTIL/LOG/vcd_signal_dumper.c @@ -75,6 +75,14 @@ const char* eurecomVariablesNames[] = { "subframe_number_TX1_eNB", "subframe_number_RX0_eNB", "subframe_number_RX1_eNB", + "frame_number_TX0_RU", + "frame_number_TX1_RU", + "frame_number_RX0_RU", + "frame_number_RX1_RU", + "subframe_number_TX0_RU", + "subframe_number_TX1_RU", + "subframe_number_RX0_RU", + "subframe_number_RX1_RU", "runtime_TX_eNB", "runtime_RX_eNB", "frame_number_TX0_UE", @@ -230,8 +238,8 @@ const char* eurecomFunctionsNames[] = { "lte_ue_pbch_procedures", "phy_procedures_eNb_tx0", "phy_procedures_eNb_tx1", - "phy_procedures_eNb_rx_common0", - "phy_procedures_eNb_rx_common1", + "phy_procedures_ru_feprx0", + "phy_procedures_ru_feprx1", "phy_procedures_eNb_rx_uespec0", "phy_procedures_eNb_rx_uespec1", "phy_eNB_slot_fep", diff --git a/openair2/UTIL/LOG/vcd_signal_dumper.h b/openair2/UTIL/LOG/vcd_signal_dumper.h index e1bcff39fc..fdd590a7b7 100644 --- a/openair2/UTIL/LOG/vcd_signal_dumper.h +++ b/openair2/UTIL/LOG/vcd_signal_dumper.h @@ -47,6 +47,14 @@ typedef enum { VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX1_ENB, VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_ENB, VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX1_ENB, + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_RU, + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX1_RU, + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_RU, + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX1_RU, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_RU, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX1_RU, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_RU, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX1_RU, VCD_SIGNAL_DUMPER_VARIABLES_RUNTIME_TX_ENB, VCD_SIGNAL_DUMPER_VARIABLES_RUNTIME_RX_ENB, VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_UE, @@ -204,8 +212,8 @@ typedef enum { VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX1, - VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON, - VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON1, + VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX, + VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX1, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC1, VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_SLOT_FEP, diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_udp.c b/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_udp.c index 41507565cc..074886890e 100644 --- a/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_udp.c +++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_udp.c @@ -224,7 +224,7 @@ int trx_eth_write_udp_IF4p5(openair0_device *device, openair0_timestamp timestam } eth->tx_nsamps = nblocks; - printf("Sending %d bytes to %s\n",packet_size,str); + //printf("Sending %d bytes to %s\n",packet_size,str); bytes_sent = sendto(eth->sockfd, buff[0], diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c b/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c index c989b763f2..1d58206968 100644 --- a/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c +++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c @@ -86,8 +86,9 @@ int trx_eth_start(openair0_device *device) { } else if (eth->flags == ETH_UDP_IF4p5_MODE) { printf("Setting ETHERNET to UDP_IF4p5_MODE\n"); if (eth_socket_init_udp(device)!=0) return -1; - printf("Setting Timenout to 999999 usecs\n"); - if(ethernet_tune (device,RCV_TIMEOUT,999999)!=0) return -1; + + // printf("Setting Timeout to 999999 usecs\n"); + // if(ethernet_tune (device,RCV_TIMEOUT,999999)!=0) return -1; if (device->host_type == RAU_HOST) { diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index aa46ae3caa..2696df5db4 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -223,6 +223,7 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) { proc->timestamp_tx = proc->timestamp_rx + (4*fp->samples_per_tti); proc->subframe_tx = (sf+4)%10; proc->frame_tx = (sf>5) ? (f+1)&1023 : f; + if (proc->first_rx == 0) { if (proc->subframe_rx != *subframe){ @@ -239,6 +240,13 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) { *subframe = proc->subframe_rx; } + if (ru == RC.ru[0]) { + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_RU, f ); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_RU, sf ); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_RU, proc->frame_tx ); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_RU, proc->subframe_tx ); + } + proc->symbol_mask[sf] = 0; VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, proc->timestamp_rx&0xffffffff ); @@ -370,8 +378,8 @@ void fh_if4p5_north_in(RU_t *ru,int *frame,int *subframe) { // dump VCD output for first RU in list if (ru == RC.ru[0]) { - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_ENB, *frame ); - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_ENB, *subframe ); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_RU, *frame ); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_RU, *subframe ); } } @@ -468,14 +476,14 @@ void fh_if4p5_north_out(RU_t *ru) { RU_proc_t *proc=&ru->proc; LTE_DL_FRAME_PARMS *fp = &ru->frame_parms; const int subframe = proc->subframe_rx; - if (ru->idx==0) VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_ENB, proc->subframe_rx ); + if (ru->idx==0) VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_RU, proc->subframe_rx ); if ((fp->frame_type == TDD) && (subframe_select(fp,subframe)!=SF_UL)) { /// **** in TDD during DL send_IF4 of ULTICK to RCC **** /// send_IF4p5(ru, proc->frame_rx, proc->subframe_rx, IF4p5_PULTICK, 0); return; } - if (ru->idx == 0) VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON, 1 ); + if (ru->idx == 0) VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX, 1 ); AssertFatal(ru->feprx!=NULL,"No northbound FEP function, exiting\n"); if (ru->feprx) { @@ -484,7 +492,7 @@ void fh_if4p5_north_out(RU_t *ru) { send_IF4p5(ru, proc->frame_rx, proc->subframe_rx, IF4p5_PULFFT, 0); } - if (ru->idx == 0) VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON, 0 ); + if (ru->idx == 0) VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX, 0 ); } void rx_rf(RU_t *ru,int *frame,int *subframe) { diff --git a/targets/RT/USER/rau_if4_single_thread.gtkw b/targets/RT/USER/rau_if4_single_thread.gtkw new file mode 100644 index 0000000000..454c36b753 --- /dev/null +++ b/targets/RT/USER/rau_if4_single_thread.gtkw @@ -0,0 +1,155 @@ +[*] +[*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI +[*] Tue Apr 18 08:34:21 2017 +[*] +[dumpfile] "/tmp/openair_dump_eNB.vcd" +[dumpfile_mtime] "Tue Apr 18 08:25:27 2017" +[dumpfile_size] 5288218 +[savefile] "/home/knopp/oai/openairinterface5g/targets/RT/USER/rau_if4_single_thread.gtkw" +[timestart] 64780000000 +[size] 1301 716 +[pos] 309 0 +*-27.793451 65200000000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +[sst_width] 284 +[signals_width] 262 +[sst_expanded] 1 +[sst_vpaned_height] 294 +@24 +variables.trx_ts[63:0] +variables.trx_tst[63:0] +@28 +functions.recv_if4 +functions.send_if4 +functions.eNB_thread_rxtx0 +@24 +variables.frame_number_RX0_RU[63:0] +variables.subframe_number_RX0_RU[63:0] +variables.frame_number_RX0_eNB[63:0] +variables.subframe_number_RX0_eNB[63:0] +variables.frame_number_TX0_RU[63:0] +variables.subframe_number_TX0_RU[63:0] +variables.frame_number_TX0_eNB[63:0] +variables.subframe_number_TX0_eNB[63:0] +@29 +functions.phy_procedures_ru_feprx0 +@28 +functions.phy_procedures_eNb_tx0 +functions.phy_procedures_eNb_rx_uespec0 +functions.phy_enb_sfgen +functions.phy_eNB_slot_fep +functions.phy_enb_prach_rx +@24 +variables.dci_info[63:0] +variables.ue0_BO[63:0] +@420 +variables.ue0_BSR[63:0] +variables.ue0_timing_advance[63:0] +@28 +functions.macxface_initiate_ra_proc +functions.macxface_terminate_ra_proc +functions.phy_enb_ulsch_msg3 +functions.macxface_SR_indication +@420 +variables.ue0_SR_ENERGY[63:0] +variables.ue0_SR_THRES[63:0] +@28 +functions.phy_enb_ulsch_decoding0 +@24 +variables.ue0_res0[63:0] +@420 +variables.ue0_rssi0[63:0] +variables.ue0_MCS0[63:0] +variables.ue0_RB0[63:0] +@24 +variables.ue0_ROUND0[63:0] +variables.ue0_SFN0[63:0] +@28 +functions.phy_enb_ulsch_decoding1 +@24 +variables.ue0_res1[63:0] +@420 +variables.ue0_rssi1[63:0] +variables.ue0_MCS1[63:0] +variables.ue0_RB1[63:0] +@24 +variables.ue0_ROUND1[63:0] +variables.ue0_SFN1[63:0] +@28 +functions.phy_enb_ulsch_decoding2 +@24 +variables.ue0_res2[63:0] +@420 +variables.ue0_rssi2[63:0] +variables.ue0_MCS2[63:0] +variables.ue0_RB2[63:0] +@24 +variables.ue0_ROUND2[63:0] +variables.ue0_SFN2[63:0] +@28 +functions.phy_enb_ulsch_decoding3 +@24 +variables.ue0_res3[63:0] +@420 +variables.ue0_rssi3[63:0] +variables.ue0_MCS3[63:0] +variables.ue0_RB3[63:0] +@24 +variables.ue0_ROUND3[63:0] +variables.ue0_SFN3[63:0] +@28 +functions.phy_enb_ulsch_decoding4 +@420 +variables.ue0_rssi4[63:0] +@24 +variables.ue0_res4[63:0] +@420 +variables.ue0_MCS4[63:0] +variables.ue0_RB4[63:0] +@24 +variables.ue0_ROUND4[63:0] +variables.ue0_SFN4[63:0] +@28 +functions.phy_enb_ulsch_decoding5 +@24 +variables.ue0_res5[63:0] +@420 +variables.ue0_rssi5[63:0] +variables.ue0_MCS5[63:0] +variables.ue0_RB5[63:0] +@24 +variables.ue0_ROUND5[63:0] +variables.ue0_SFN5[63:0] +@28 +functions.phy_enb_ulsch_decoding6 +@24 +variables.ue0_res6[63:0] +@420 +variables.ue0_rssi6[63:0] +variables.ue0_MCS6[63:0] +variables.ue0_RB6[63:0] +@24 +variables.ue0_ROUND6[63:0] +variables.ue0_SFN6[63:0] +@28 +functions.phy_enb_ulsch_decoding7 +@24 +variables.ue0_res7[63:0] +@420 +variables.ue0_rssi7[63:0] +variables.ue0_MCS7[63:0] +variables.ue0_RB7[63:0] +@24 +variables.ue0_ROUND7[63:0] +variables.ue0_SFN7[63:0] +@28 +functions.phy_enb_prach_rx +functions.phy_eNB_dlsch_encoding +functions.phy_eNB_dlsch_modulation +functions.phy_eNB_dlsch_scrambling +functions.phy_enb_pdcch_tx +functions.phy_enb_rs_tx +functions.rrc_mac_config_req +functions.rlc_data_req +functions.udp_enb_task +[pattern_trace] 1 +[pattern_trace] 0 -- GitLab