diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 8936eba73f..aad0b71eb2 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -244,6 +244,7 @@ add_boolean_option(TEST_OMG False "???") add_boolean_option(DEBUG_OMG False "???") add_boolean_option(PRINT_STATS False "This adds the possibility to see the status") add_boolean_option(T_TRACER True "Activate the T tracer, a debugging/monitoring framework" ) +add_boolean_option(ENABLE_VCD True "always true now, time measurements of proc calls and var displays") add_boolean_option(UE_AUTOTEST_TRACE False "Activate UE autotest specific logs") add_boolean_option(UE_DEBUG_TRACE False "Activate UE debug trace") add_boolean_option(UE_TIMING_TRACE False "Activate UE timing trace") @@ -1032,7 +1033,7 @@ set(UTIL_SRC ${OPENAIR2_DIR}/UTIL/LISTS/list.c ${OPENAIR2_DIR}/UTIL/LISTS/list2.c ${OPENAIR_DIR}/common/utils/LOG/log.c -# ${OPENAIR2_DIR}/UTIL/LOG/vcd_signal_dumper.c + ${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c ${OPENAIR2_DIR}/UTIL/MATH/oml.c # ${OPENAIR2_DIR}/UTIL/MEM/mem_block.c # ${OPENAIR2_DIR}/UTIL/OCG/OCG.c @@ -2537,6 +2538,7 @@ add_executable(nr-uesoftmodem ${OPENAIR_DIR}/common/utils/system.c ${XFORMS_SOURCE_NR} ${T_SOURCE} + ${UTIL_SRC} ${CONFIG_SOURCES} ${SHLIB_LOADER_SOURCES} ) diff --git a/common/utils/LOG/vcd_signal_dumper.c b/common/utils/LOG/vcd_signal_dumper.c index 1d80670324..6ba942a09f 100644 --- a/common/utils/LOG/vcd_signal_dumper.c +++ b/common/utils/LOG/vcd_signal_dumper.c @@ -343,6 +343,7 @@ const char* eurecomFunctionsNames[] = { "phy_procedures_ue_tx", "phy_procedures_ue_rx", "phy_procedures_ue_tx_ulsch_uespec", + "phy_procedures_nr_ue_tx_ulsch_uespec", "phy_procedures_ue_tx_pucch", "phy_procedures_ue_tx_ulsch_common", "phy_procedures_ue_tx_prach", diff --git a/common/utils/LOG/vcd_signal_dumper.h b/common/utils/LOG/vcd_signal_dumper.h index 33af6cbeef..5c99e9827f 100644 --- a/common/utils/LOG/vcd_signal_dumper.h +++ b/common/utils/LOG/vcd_signal_dumper.h @@ -324,6 +324,7 @@ typedef enum { VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_UESPEC, + VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_NR_UE_TX_ULSCH_UESPEC, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PUCCH, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_COMMON, VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PRACH, @@ -549,12 +550,20 @@ extern int ouput_vcd; #include "T.h" +#define VCD_SIGNAL_DUMPER_INIT(x) /* nothing */ +#define VCD_SIGNAL_DUMPER_CLOSE() /* nothing */ +#define VCD_SIGNAL_DUMPER_CREATE_HEADER() /* nothing */ #define VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(var, val) T_VCD_VARIABLE(var, val) #define VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(var, val) T_VCD_FUNCTION(var, val) -#else -#define VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(var, val) -#define VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(var, val) +#else /* T_TRACER */ + +#define VCD_SIGNAL_DUMPER_INIT(aRgUmEnT) vcd_signal_dumper_init(aRgUmEnT) +#define VCD_SIGNAL_DUMPER_CLOSE() vcd_signal_dumper_close() +#define VCD_SIGNAL_DUMPER_CREATE_HEADER() vcd_signal_dumper_create_header() +#define VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(vAr1,vAr2) vcd_signal_dumper_dump_variable_by_name(vAr1,vAr2) +#define VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(vAr1,vAr2) vcd_signal_dumper_dump_function_by_name(vAr1,vAr2) + #endif /* T_TRACER */ diff --git a/common/utils/T/T_defs.h b/common/utils/T/T_defs.h index 7d55d9b336..bc5fbfece2 100644 --- a/common/utils/T/T_defs.h +++ b/common/utils/T/T_defs.h @@ -73,7 +73,7 @@ typedef struct { } T_cache_t; /* number of VCD functions (to be kept up to date! see in T_messages.txt) */ -#define VCD_NUM_FUNCTIONS (231) +#define VCD_NUM_FUNCTIONS (232) /* number of VCD variables (to be kept up to date! see in T_messages.txt) */ #define VCD_NUM_VARIABLES (185) diff --git a/common/utils/T/T_messages.txt b/common/utils/T/T_messages.txt index 5af1f1232f..2758a0f546 100644 --- a/common/utils/T/T_messages.txt +++ b/common/utils/T/T_messages.txt @@ -2493,6 +2493,11 @@ ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_UESPEC GROUP = ALL:VCD:UE:VCD_FUNCTION FORMAT = int,value VCD_NAME = phy_procedures_ue_tx_ulsch_uespec +ID = VCD_FUNCTION_PHY_PROCEDURES_NR_UE_TX_ULSCH_UESPEC + DESC = VCD function PHY_PROCEDURES_NR_UE_TX_ULSCH_UESPEC + GROUP = ALL:VCD:UE:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = phy_procedures_nr_ue_tx_ulsch_uespec ID = VCD_FUNCTION_PHY_PROCEDURES_UE_TX_PUCCH DESC = VCD function PHY_PROCEDURES_UE_TX_PUCCH GROUP = ALL:VCD:UE:VCD_FUNCTION diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c index 05d0f485e7..9c8cd7b350 100644 --- a/executables/nr-uesoftmodem.c +++ b/executables/nr-uesoftmodem.c @@ -121,6 +121,7 @@ int threequarter_fs=0; uint32_t downlink_frequency[MAX_NUM_CCs][4]; int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; + extern int16_t nr_dlsch_demod_shift; int UE_scan = 0; @@ -398,7 +399,7 @@ int16_t dlsch_demod_shift; static void get_options(void) { int CC_id; - int tddflag=0, nonbiotflag; + int tddflag=0, nonbiotflag, vcdflag=0; char *loopfile=NULL; int dumpframe=0; uint32_t online_log_messages; @@ -467,6 +468,9 @@ static void get_options(void) { frame_parms[CC_id]->frame_type = TDD; } + if (vcdflag > 0) + ouput_vcd = 1; + /*if (frame_parms[0]->N_RB_DL !=0) { if ( frame_parms[0]->N_RB_DL < 6 ) { frame_parms[0]->N_RB_DL = 6; @@ -704,6 +708,10 @@ int main( int argc, char **argv ) { LOG_E(OPT,"failed to run OPT \n"); } + if (ouput_vcd) { + vcd_signal_dumper_init("/tmp/openair_dump_nrUE.vcd"); + } + #ifdef PDCP_USE_NETLINK netlink_init(); #if defined(PDCP_USE_NETLINK_QUEUES) @@ -799,5 +807,8 @@ int main( int argc, char **argv ) { while(true) sleep(3600); + if (ouput_vcd) + vcd_signal_dumper_close(); + return 0; } diff --git a/executables/nr-uesoftmodem.h b/executables/nr-uesoftmodem.h index ddac4fe9bc..3edffc30e1 100644 --- a/executables/nr-uesoftmodem.h +++ b/executables/nr-uesoftmodem.h @@ -79,6 +79,7 @@ {"q" , CONFIG_HLP_STMON, PARAMFLAG_BOOL, iptr:&opp_enabled, defintval:0, TYPE_INT, 0}, \ {"S" , CONFIG_HLP_MSLOTS, PARAMFLAG_BOOL, u8ptr:&exit_missed_slots, defintval:1, TYPE_UINT8, 0}, \ {"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \ + {"V" , CONFIG_HLP_VCD, PARAMFLAG_BOOL, iptr:&vcdflag, 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}, \ {"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0}, \ diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c index b370f40c2b..25f415601e 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c @@ -36,6 +36,7 @@ #include "PHY/MODULATION/nr_modulation.h" #include "PHY/MODULATION/modulation_common.h" #include "common/utils/assertions.h" +#include "common/utils/LOG/vcd_signal_dumper.h" #include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" #include "PHY/NR_TRANSPORT/nr_sch_dmrs.h" #include "PHY/defs_nr_common.h"