From aa232879a32243ab1ccee10ac13f796161eb2a49 Mon Sep 17 00:00:00 2001 From: Wang Tsu-Han <wangts@eurecom.fr> Date: Tue, 6 Nov 2018 15:15:56 +0100 Subject: [PATCH] adding VCD log in file --- common/utils/LOG/vcd_signal_dumper.c | 16 +++++- common/utils/LOG/vcd_signal_dumper.h | 15 ++++++ common/utils/T/T_defs.h | 4 +- common/utils/T/T_messages.txt | 54 +++++++++++++++++++ openair2/GNB_APP/gnb_config.c | 2 + .../CONF/gnb.band78.tm1.106PRB.usrpx300.conf | 9 ++++ targets/RT/USER/nr-gnb.c | 21 +++++++- targets/RT/USER/nr-ru.c | 7 ++- targets/RT/USER/nr-uesoftmodem.h | 4 +- 9 files changed, 122 insertions(+), 10 deletions(-) diff --git a/common/utils/LOG/vcd_signal_dumper.c b/common/utils/LOG/vcd_signal_dumper.c index 666bf46d44..cb28be8550 100644 --- a/common/utils/LOG/vcd_signal_dumper.c +++ b/common/utils/LOG/vcd_signal_dumper.c @@ -189,7 +189,17 @@ const char* eurecomVariablesNames[] = { "ue0_trx_write_ns_missing", "enb_thread_rxtx_CPUID", "ru_thread_CPUID", - "ru_thread_tx_CPUID" + "ru_thread_tx_CPUID", + + /*signal for NR*/ + "frame_number_TX0_gNB", + "frame_number_TX1_gNB", + "frame_number_RX0_gNB", + "frame_number_RX1_gNB", + "subframe_number_TX0_gNB", + "subframe_number_TX1_gNB", + "subframe_number_RX0_gNB", + "subframe_number_RX1_gNB" }; const char* eurecomFunctionsNames[] = { @@ -408,6 +418,10 @@ const char* eurecomFunctionsNames[] = { "pdcch_interleaving", "pdcch_tx", + /*NR softmodem signal*/ + "gNB_thread_rxtx0", + "gNB_thread_rxtx1" + }; struct vcd_module_s vcd_modules[] = { diff --git a/common/utils/LOG/vcd_signal_dumper.h b/common/utils/LOG/vcd_signal_dumper.h index 749978bb48..5c1ba9e7fe 100644 --- a/common/utils/LOG/vcd_signal_dumper.h +++ b/common/utils/LOG/vcd_signal_dumper.h @@ -167,6 +167,17 @@ typedef enum { VCD_SIGNAL_DUMPER_VARIABLES_CPUID_ENB_THREAD_RXTX, VCD_SIGNAL_DUMPER_VARIABLES_CPUID_RU_THREAD, VCD_SIGNAL_DUMPER_VARIABLES_CPUID_RU_THREAD_TX, + + /*signal for NR*/ + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_GNB, + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX1_GNB, + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_GNB, + VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX1_GNB, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_GNB, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX1_GNB, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_GNB, + VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX1_GNB, + VCD_SIGNAL_DUMPER_VARIABLES_END } vcd_signal_dump_variables; @@ -389,6 +400,10 @@ typedef enum { VCD_SIGNAL_DUMPER_FUNCTIONS_PDCCH_INTERLEAVING, VCD_SIGNAL_DUMPER_FUNCTIONS_PDCCH_TX, + /*NR softmodem signal*/ + VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX0, + VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX1, + VCD_SIGNAL_DUMPER_FUNCTIONS_END } vcd_signal_dump_functions; diff --git a/common/utils/T/T_defs.h b/common/utils/T/T_defs.h index 83a380662d..5300237178 100644 --- a/common/utils/T/T_defs.h +++ b/common/utils/T/T_defs.h @@ -41,10 +41,10 @@ typedef struct { } T_cache_t; /* number of VCD functions (to be kept up to date! see in T_messages.txt) */ -#define VCD_NUM_FUNCTIONS 190 +#define VCD_NUM_FUNCTIONS 192//190 /* number of VCD variables (to be kept up to date! see in T_messages.txt) */ -#define VCD_NUM_VARIABLES 128 +#define VCD_NUM_VARIABLES 136//128 /* first VCD function (to be kept up to date! see in T_messages.txt) */ #define VCD_FIRST_FUNCTION ((uintptr_t)T_VCD_FUNCTION_RT_SLEEP) diff --git a/common/utils/T/T_messages.txt b/common/utils/T/T_messages.txt index ec0585c799..6057c09f1c 100644 --- a/common/utils/T/T_messages.txt +++ b/common/utils/T/T_messages.txt @@ -1680,6 +1680,48 @@ ID = VCD_VARIABLE_CPUID_RU_THREAD_TX FORMAT = ulong,value VCD_NAME = ru_thread_tx_CPUID + #variable for gNB +ID = VCD_VARIABLE_FRAME_NUMBER_TX0_GNB + DESC = VCD variable FRAME_NUMBER_TX0_GNB + GROUP = ALL:VCD:ENB:VCD_VARIABLE + FORMAT = ulong,value + VCD_NAME = frame_number_TX0_gNB +ID = VCD_VARIABLE_FRAME_NUMBER_TX1_GNB + DESC = VCD variable FRAME_NUMBER_TX1_GNB + GROUP = ALL:VCD:ENB:VCD_VARIABLE + FORMAT = ulong,value + VCD_NAME = frame_number_TX1_gNB +ID = VCD_VARIABLE_FRAME_NUMBER_RX0_GNB + DESC = VCD variable FRAME_NUMBER_RX0_GNB + GROUP = ALL:VCD:ENB:VCD_VARIABLE + FORMAT = ulong,value + VCD_NAME = frame_number_RX0_gNB +ID = VCD_VARIABLE_FRAME_NUMBER_RX1_GNB + DESC = VCD variable FRAME_NUMBER_RX1_GNB + GROUP = ALL:VCD:ENB:VCD_VARIABLE + FORMAT = ulong,value + VCD_NAME = frame_number_RX1_gNB +ID = VCD_VARIABLE_SUBFRAME_NUMBER_TX0_GNB + DESC = VCD variable SUBFRAME_NUMBER_TX0_GNB + GROUP = ALL:VCD:ENB:VCD_VARIABLE + FORMAT = ulong,value + VCD_NAME = subframe_number_TX0_gNB +ID = VCD_VARIABLE_SUBFRAME_NUMBER_TX1_GNB + DESC = VCD variable SUBFRAME_NUMBER_TX1_GNB + GROUP = ALL:VCD:ENB:VCD_VARIABLE + FORMAT = ulong,value + VCD_NAME = subframe_number_TX1_gNB +ID = VCD_VARIABLE_SUBFRAME_NUMBER_RX0_GNB + DESC = VCD variable SUBFRAME_NUMBER_RX0_GNB + GROUP = ALL:VCD:ENB:VCD_VARIABLE + FORMAT = ulong,value + VCD_NAME = subframe_number_RX0_gNB +ID = VCD_VARIABLE_SUBFRAME_NUMBER_RX1_GNB + DESC = VCD variable SUBFRAME_NUMBER_RX1_GNB + GROUP = ALL:VCD:ENB:VCD_VARIABLE + FORMAT = ulong,value + VCD_NAME = subframe_number_RX1_gNB + #functions ID = VCD_FUNCTION_RT_SLEEP @@ -2637,3 +2679,15 @@ ID = VCD_FUNCTION_PDCCH_TX GROUP = ALL:VCD:ENB:VCD_FUNCTION FORMAT = int,value VCD_NAME = pdcch_tx + + #function for gNB +ID = VCD_FUNCTION_gNB_PROC_RXTX0 + DESC = VCD function gNB_PROC_RXTX0 + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = gNB_thread_rxtx0 +ID = VCD_FUNCTION_gNB_PROC_RXTX1 + DESC = VCD function gNB_PROC_RXTX1 + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = gNB_thread_rxtx1 diff --git a/openair2/GNB_APP/gnb_config.c b/openair2/GNB_APP/gnb_config.c index db1bc52090..7270ce9258 100644 --- a/openair2/GNB_APP/gnb_config.c +++ b/openair2/GNB_APP/gnb_config.c @@ -3004,8 +3004,10 @@ int RCconfig_nr_parallel(void) { } if(parallel_config == NULL) set_parallel_conf(parallel_conf); +if(parallel_config == NULL)printf("~~~~~~~~~~~~~~~~~~~~parallel_conf = %s\n",parallel_conf); if(worker_config == NULL) set_worker_conf(worker_conf); +if(worker_config == NULL)printf("~~~~~~~~~~~~~~~~~~~~worker_conf = %s\n",worker_conf); return 0; } diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf index cd85fe7a33..721c307f71 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf @@ -259,6 +259,15 @@ RUs = ( } ); +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_DISABLE"; + } +); + NETWORK_CONTROLLER : { FLEXRAN_ENABLED = "no"; diff --git a/targets/RT/USER/nr-gnb.c b/targets/RT/USER/nr-gnb.c index 34e9f295fd..58e9be4a9e 100644 --- a/targets/RT/USER/nr-gnb.c +++ b/targets/RT/USER/nr-gnb.c @@ -290,6 +290,8 @@ static void* gNB_L1_thread_tx(void* param) { gNB_L1_proc_t *gNB_proc = (gNB_L1_proc_t*)param; gNB_L1_rxtx_proc_t *proc = &gNB_proc->L1_proc_tx; PHY_VARS_gNB *gNB = RC.gNB[0][proc->CC_id]; + +printf("~~~~~~~~~~~~~~~~~~~~gNB_L1_thread_tx is created\n"); char thread_name[100]; sprintf(thread_name,"TXnp4_%d\n",&gNB->proc.L1_proc == proc ? 0 : 1); @@ -299,8 +301,9 @@ static void* gNB_L1_thread_tx(void* param) { while (!oai_exit) { - + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX1, 0 ); if (wait_on_condition(&proc->mutex,&proc->cond,&proc->instance_cnt,thread_name)<0) break; + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX1, 1 ); if (oai_exit) break; // ***************************************** // TX processing for subframe n+4 @@ -308,6 +311,11 @@ static void* gNB_L1_thread_tx(void* param) { // (may be relaxed in the future for performance reasons) // ***************************************** + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX1_GNB,proc->subframe_tx); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX1_GNB,proc->subframe_rx); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX1_GNB,proc->frame_tx); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX1_GNB,proc->frame_rx); + phy_procedures_gNB_TX(gNB, proc, 1); pthread_mutex_lock( &proc->mutex ); @@ -337,6 +345,8 @@ static void* gNB_L1_thread( void* param ) { gNB_L1_rxtx_proc_t *proc = &gNB_proc->L1_proc; PHY_VARS_gNB *gNB = RC.gNB[0][proc->CC_id]; +printf("~~~~~~~~~~~~~~~~~~~~gNB_L1_thread_tx is created\n"); + char thread_name[100]; @@ -349,8 +359,14 @@ static void* gNB_L1_thread( void* param ) { while (!oai_exit) { + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX0, 0 ); if (wait_on_condition(&proc->mutex,&proc->cond,&proc->instance_cnt,thread_name)<0) break; + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX0, 1 ); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_GNB,proc->subframe_tx); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_GNB,proc->subframe_rx); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_GNB,proc->frame_tx); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_GNB,proc->frame_rx); if (oai_exit) break; @@ -769,7 +785,9 @@ void init_gNB_proc(int inst) { LOG_I(PHY,"gNB->single_thread_flag:%d\n", gNB->single_thread_flag); +printf("~~~~~~~~~~~~~~~~~~~thread_parallel = %d",get_thread_parallel_conf()); if (get_thread_parallel_conf() == PARALLEL_RU_L1_SPLIT || get_thread_parallel_conf() == PARALLEL_RU_L1_TRX_SPLIT) { +printf("~~~~~~~~~~~~~~~~~~~~~~~creating gNB_L1_thread and gNB_L1_thread_tx \n"); pthread_create( &L1_proc->pthread, attr0, gNB_L1_thread, proc ); pthread_create( &L1_proc_tx->pthread, attr1, gNB_L1_thread_tx, proc); } @@ -1046,6 +1064,7 @@ void init_eNB_afterRU(void) { //init_transport(gNB); //init_precoding_weights(RC.gNB[inst][CC_id]); } +printf("~~~~~~~~~~~~~~~~~~~~~~~start init gNB proc\n"); init_gNB_proc(inst); } diff --git a/targets/RT/USER/nr-ru.c b/targets/RT/USER/nr-ru.c index 83410608e6..f4481dcbf6 100644 --- a/targets/RT/USER/nr-ru.c +++ b/targets/RT/USER/nr-ru.c @@ -1407,8 +1407,7 @@ static void* ru_thread_tx( void* param ) { printf( "ru_thread_tx ready\n"); while (!oai_exit) { - - VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_CPUID_RU_THREAD_TX,sched_getcpu()); + if (oai_exit) break; @@ -1430,7 +1429,7 @@ static void* ru_thread_tx( void* param ) { } else { - if(proc->frame_tx == print_frame) + /*if(proc->frame_tx == print_frame) { for (i=0; i<ru->nb_tx; i++) { @@ -1454,7 +1453,7 @@ static void* ru_thread_tx( void* param ) { } }//if(proc->subframe_tx == 9) }//for (i=0; i<ru->nb_tx; i++) - }//if(proc->frame_tx == print_frame) + }//if(proc->frame_tx == print_frame)*/ }//else emulate_rf release_thread(&proc->mutex_gNBs,&proc->instance_cnt_gNBs,"ru_thread_tx"); for(i = 0; i<ru->num_gNB; i++) diff --git a/targets/RT/USER/nr-uesoftmodem.h b/targets/RT/USER/nr-uesoftmodem.h index 90887fe128..dd74adc014 100644 --- a/targets/RT/USER/nr-uesoftmodem.h +++ b/targets/RT/USER/nr-uesoftmodem.h @@ -179,8 +179,8 @@ {"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \ {"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0}, \ {"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0}, \ -{"codingw" , CONFIG_HLP_CODINGW, PARAMFLAG_BOOL, iptr:&codingw, defintval:0, TYPE_INT, 0}, \ -{"fepw" , CONFIG_HLP_FEPW, PARAMFLAG_BOOL, iptr:&fepw, defintval:0, TYPE_INT, 0}, \ +{"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0}, \ +{"worker-config", CONFIG_HLP_WORKER_CMD, 0, strptr:(char **)&worker_config, defstrval:NULL, TYPE_STRING, 0}, \ {"nbiot-disable", CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL, iptr:&nonbiotflag, defintval:0, TYPE_INT, 0} \ } -- 2.26.2