Commit f35d25bc authored by kaltenbe's avatar kaltenbe

adding a few vdc signals to debug ue realtime behaviour


git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7634 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 014010e5
...@@ -101,6 +101,8 @@ const char* eurecomVariablesNames[] = { ...@@ -101,6 +101,8 @@ const char* eurecomVariablesNames[] = {
"itti_alloc_msg", "itti_alloc_msg",
"mp_alloc", "mp_alloc",
"mp_free", "mp_free",
"ue_inst_cnt_rx",
"ue_inst_cnt_tx"
}; };
const char* eurecomFunctionsNames[] = { const char* eurecomFunctionsNames[] = {
...@@ -128,6 +130,8 @@ const char* eurecomFunctionsNames[] = { ...@@ -128,6 +130,8 @@ const char* eurecomFunctionsNames[] = {
"eNB_thread_rx8", "eNB_thread_rx8",
"eNB_thread_tx9", "eNB_thread_tx9",
"eNB_thread_rx9", "eNB_thread_rx9",
"ue_thread_tx",
"ue_thread_rx",
/* PHY signals */ /* PHY signals */
"ue_synch", "ue_synch",
...@@ -198,6 +202,7 @@ const char* eurecomFunctionsNames[] = { ...@@ -198,6 +202,7 @@ const char* eurecomFunctionsNames[] = {
"mac_dlsch_preprocessor", "mac_dlsch_preprocessor",
"mac_schedule_dlsch", "mac_schedule_dlsch",
"mac_fill_dlsch_dci", "mac_fill_dlsch_dci",
"macxface_out_of_sync_ind", "macxface_out_of_sync_ind",
"macxface_ue_decode_si", "macxface_ue_decode_si",
"macxface_ue_decode_ccch", "macxface_ue_decode_ccch",
...@@ -210,7 +215,6 @@ const char* eurecomFunctionsNames[] = { ...@@ -210,7 +215,6 @@ const char* eurecomFunctionsNames[] = {
"macxface_ue_get_sr", "macxface_ue_get_sr",
"ue_send_mch_sdu", "ue_send_mch_sdu",
"ue_synch",
/*RLC signals */ /*RLC signals */
"rlc_data_req", "rlc_data_req",
......
...@@ -73,6 +73,8 @@ typedef enum { ...@@ -73,6 +73,8 @@ typedef enum {
VCD_SIGNAL_DUMPER_VARIABLE_ITTI_ALLOC_MSG, VCD_SIGNAL_DUMPER_VARIABLE_ITTI_ALLOC_MSG,
VCD_SIGNAL_DUMPER_VARIABLE_MP_ALLOC, VCD_SIGNAL_DUMPER_VARIABLE_MP_ALLOC,
VCD_SIGNAL_DUMPER_VARIABLE_MP_FREE, VCD_SIGNAL_DUMPER_VARIABLE_MP_FREE,
VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_RX,
VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_TX,
VCD_SIGNAL_DUMPER_VARIABLES_LAST, VCD_SIGNAL_DUMPER_VARIABLES_LAST,
VCD_SIGNAL_DUMPER_VARIABLES_END = VCD_SIGNAL_DUMPER_VARIABLES_LAST, VCD_SIGNAL_DUMPER_VARIABLES_END = VCD_SIGNAL_DUMPER_VARIABLES_LAST,
} vcd_signal_dump_variables; } vcd_signal_dump_variables;
...@@ -102,6 +104,8 @@ typedef enum { ...@@ -102,6 +104,8 @@ typedef enum {
VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RX8, VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RX8,
VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_TX9, VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_TX9,
VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RX9, VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RX9,
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_TX,
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_RX,
/* PHY signals */ /* PHY signals */
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SYNCH, VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SYNCH,
......
...@@ -623,6 +623,7 @@ static void *UE_thread_tx(void *arg) ...@@ -623,6 +623,7 @@ static void *UE_thread_tx(void *arg)
exit_fun("nothing to add"); exit_fun("nothing to add");
return &UE_thread_tx_retval; return &UE_thread_tx_retval;
} }
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_TX, 1 );
if ((subframe_select( &UE->lte_frame_parms, UE->slot_tx>>1 ) == SF_UL) || if ((subframe_select( &UE->lte_frame_parms, UE->slot_tx>>1 ) == SF_UL) ||
(UE->lte_frame_parms.frame_type == FDD)) { (UE->lte_frame_parms.frame_type == FDD)) {
...@@ -661,6 +662,17 @@ static void *UE_thread_tx(void *arg) ...@@ -661,6 +662,17 @@ static void *UE_thread_tx(void *arg)
} }
#endif #endif
UE->slot_tx += 2;
if (UE->slot_tx >= 20) {
UE->slot_tx -= 20;
UE->frame_tx++;
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX_UE, UE->frame_tx );
}
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX_UE, UE->slot_tx>>1 );
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_TX, 0 );
if (pthread_mutex_lock(&UE->mutex_tx) != 0) { if (pthread_mutex_lock(&UE->mutex_tx) != 0) {
LOG_E( PHY, "[SCHED][UE] error locking mutex for UE TX thread\n" ); LOG_E( PHY, "[SCHED][UE] error locking mutex for UE TX thread\n" );
...@@ -669,6 +681,7 @@ static void *UE_thread_tx(void *arg) ...@@ -669,6 +681,7 @@ static void *UE_thread_tx(void *arg)
} }
UE->instance_cnt_tx--; UE->instance_cnt_tx--;
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_TX, UE->instance_cnt_tx);
if (pthread_mutex_unlock(&UE->mutex_tx) != 0) { if (pthread_mutex_unlock(&UE->mutex_tx) != 0) {
LOG_E( PHY, "[SCHED][UE] error unlocking mutex for UE TX thread\n" ); LOG_E( PHY, "[SCHED][UE] error unlocking mutex for UE TX thread\n" );
...@@ -676,15 +689,6 @@ static void *UE_thread_tx(void *arg) ...@@ -676,15 +689,6 @@ static void *UE_thread_tx(void *arg)
return &UE_thread_tx_retval; return &UE_thread_tx_retval;
} }
UE->slot_tx += 2;
if (UE->slot_tx >= 20) {
UE->slot_tx -= 20;
UE->frame_tx++;
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX_UE, UE->frame_tx );
}
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX_UE, UE->slot_tx>>1 );
} }
return &UE_thread_tx_retval; return &UE_thread_tx_retval;
...@@ -794,6 +798,7 @@ static void *UE_thread_rx(void *arg) ...@@ -794,6 +798,7 @@ static void *UE_thread_rx(void *arg)
return &UE_thread_rx_retval; return &UE_thread_rx_retval;
} }
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_RX, 1 );
for (i=0; i<2; i++) { for (i=0; i<2; i++) {
if ((subframe_select( &UE->lte_frame_parms, UE->slot_rx>>1 ) == SF_DL) || if ((subframe_select( &UE->lte_frame_parms, UE->slot_rx>>1 ) == SF_DL) ||
(UE->lte_frame_parms.frame_type == FDD)) { (UE->lte_frame_parms.frame_type == FDD)) {
...@@ -908,6 +913,8 @@ static void *UE_thread_rx(void *arg) ...@@ -908,6 +913,8 @@ static void *UE_thread_rx(void *arg)
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX_UE, UE->slot_rx>>1 ); VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX_UE, UE->slot_rx>>1 );
} }
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_THREAD_RX, 0 );
if (pthread_mutex_lock(&UE->mutex_rx) != 0) { if (pthread_mutex_lock(&UE->mutex_rx) != 0) {
LOG_E( PHY, "[SCHED][UE] error locking mutex for UE RX\n" ); LOG_E( PHY, "[SCHED][UE] error locking mutex for UE RX\n" );
...@@ -916,6 +923,7 @@ static void *UE_thread_rx(void *arg) ...@@ -916,6 +923,7 @@ static void *UE_thread_rx(void *arg)
} }
UE->instance_cnt_rx--; UE->instance_cnt_rx--;
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_RX, UE->instance_cnt_rx);
if (pthread_mutex_unlock(&UE->mutex_rx) != 0) { if (pthread_mutex_unlock(&UE->mutex_rx) != 0) {
LOG_E( PHY, "[SCHED][UE] error unlocking mutex for UE RX\n" ); LOG_E( PHY, "[SCHED][UE] error unlocking mutex for UE RX\n" );
...@@ -1110,6 +1118,9 @@ void *UE_thread(void *arg) ...@@ -1110,6 +1118,9 @@ void *UE_thread(void *arg)
return &UE_thread_retval; return &UE_thread_retval;
} }
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_RX, instance_cnt_rx);
if (instance_cnt_rx == 0) { if (instance_cnt_rx == 0) {
if (pthread_cond_signal(&UE->cond_rx) != 0) { if (pthread_cond_signal(&UE->cond_rx) != 0) {
LOG_E( PHY, "[SCHED][UE] ERROR pthread_cond_signal for UE RX thread\n" ); LOG_E( PHY, "[SCHED][UE] ERROR pthread_cond_signal for UE RX thread\n" );
...@@ -1117,6 +1128,8 @@ void *UE_thread(void *arg) ...@@ -1117,6 +1128,8 @@ void *UE_thread(void *arg)
return &UE_thread_retval; return &UE_thread_retval;
} }
LOG_D(HW,"signalled rx thread to wake up, hw_frame %d, hw_subframe %d (time %lli)\n", frame, hw_subframe, rt_get_time_ns()-T0 );
if (UE->mode == rx_calib_ue) { if (UE->mode == rx_calib_ue) {
if (frame == 10) { if (frame == 10) {
LOG_D(PHY, LOG_D(PHY,
...@@ -1156,6 +1169,8 @@ void *UE_thread(void *arg) ...@@ -1156,6 +1169,8 @@ void *UE_thread(void *arg)
exit_fun("nothing to add"); exit_fun("nothing to add");
return &UE_thread_retval; return &UE_thread_retval;
} }
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_TX, instance_cnt_tx);
if (instance_cnt_tx == 0) { if (instance_cnt_tx == 0) {
if (pthread_cond_signal(&UE->cond_tx) != 0) { if (pthread_cond_signal(&UE->cond_tx) != 0) {
...@@ -1163,6 +1178,8 @@ void *UE_thread(void *arg) ...@@ -1163,6 +1178,8 @@ void *UE_thread(void *arg)
exit_fun("nothing to add"); exit_fun("nothing to add");
return &UE_thread_retval; return &UE_thread_retval;
} }
LOG_D(HW,"signalled tx thread to wake up, hw_frame %d, hw_subframe %d (time %lli)\n", frame, hw_subframe, rt_get_time_ns()-T0 );
} else { } else {
LOG_E( PHY, "[SCHED][UE] UE TX thread busy!!\n" ); LOG_E( PHY, "[SCHED][UE] UE TX thread busy!!\n" );
exit_fun("nothing to add"); exit_fun("nothing to add");
...@@ -1504,11 +1521,13 @@ void *UE_thread(void *arg) ...@@ -1504,11 +1521,13 @@ void *UE_thread(void *arg)
exit_fun("nothing to add"); exit_fun("nothing to add");
} else { } else {
UE->instance_cnt_rx++; int instance_cnt_rx = ++UE->instance_cnt_rx;
//printf("UE_thread: Unlocking UE mutex_rx\n");
pthread_mutex_unlock(&UE->mutex_rx); pthread_mutex_unlock(&UE->mutex_rx);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_RX, instance_cnt_rx);
if (UE->instance_cnt_rx == 0) { if (instance_cnt_rx == 0) {
LOG_D(HW,"Scheduling UE RX for frame %d (hw frame %d), subframe %d (%d), mode %d\n",UE->frame_rx,frame,slot>>1,UE->slot_rx>>1,UE->mode); LOG_D(HW,"Scheduling UE RX for frame %d (hw frame %d), subframe %d (%d), mode %d\n",UE->frame_rx,frame,slot>>1,UE->slot_rx>>1,UE->mode);
if (pthread_cond_signal(&UE->cond_rx) != 0) { if (pthread_cond_signal(&UE->cond_rx) != 0) {
...@@ -1548,11 +1567,12 @@ void *UE_thread(void *arg) ...@@ -1548,11 +1567,12 @@ void *UE_thread(void *arg)
exit_fun("nothing to add"); exit_fun("nothing to add");
} else { } else {
UE->instance_cnt_tx++; int instance_cnt_tx = ++UE->instance_cnt_tx;
//printf("UE_thread: Unlocking UE mutex_rx\n");
pthread_mutex_unlock(&UE->mutex_tx); pthread_mutex_unlock(&UE->mutex_tx);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE_INST_CNT_TX, instance_cnt_tx);
if (UE->instance_cnt_tx == 0) { if (instance_cnt_tx == 0) {
LOG_D(HW,"Scheduling UE TX for frame %d (hw frame %d), subframe %d (%d), mode %d\n",UE->frame_tx,frame,slot>>1,UE->slot_tx>>1,UE->mode); LOG_D(HW,"Scheduling UE TX for frame %d (hw frame %d), subframe %d (%d), mode %d\n",UE->frame_tx,frame,slot>>1,UE->slot_tx>>1,UE->mode);
if (pthread_cond_signal(&UE->cond_tx) != 0) { if (pthread_cond_signal(&UE->cond_tx) != 0) {
......
[*] [*]
[*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI [*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI
[*] Thu Feb 5 17:45:30 2015 [*] Tue Jun 23 10:22:38 2015
[*] [*]
[dumpfile] "/tmp/openair_dump_UE.vcd" [dumpfile] "/tmp/openair_dump_UE.vcd"
[dumpfile_mtime] "Thu Feb 5 17:10:05 2015" [dumpfile_mtime] "Tue Jun 23 10:21:56 2015"
[dumpfile_size] 18764854 [dumpfile_size] 15561726
[savefile] "/home/ephese/openair4G/targets/RT/USER/ue_exmimo2.gtkw" [savefile] "/home/stevens/openair4G/targets/RT/USER/ue_exmimo2.gtkw"
[timestart] 4937140000 [timestart] 10448200000
[size] 1463 640 [size] 1215 640
[pos] 105 102 [pos] 105 102
*-22.000000 4947033063 -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 *-23.292629 -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 -1
[sst_width] 224 [sst_width] 224
[signals_width] 262 [signals_width] 262
[sst_expanded] 1 [sst_expanded] 1
...@@ -26,9 +26,15 @@ functions.rt_sleep ...@@ -26,9 +26,15 @@ functions.rt_sleep
variables.subframe_number_RX_UE[63:0] variables.subframe_number_RX_UE[63:0]
variables.subframe_number_TX_UE[63:0] variables.subframe_number_TX_UE[63:0]
variables.slot_number_RX_UE[63:0] variables.slot_number_RX_UE[63:0]
@25
variables.slot_number_RX_UE[63:0] variables.slot_number_RX_UE[63:0]
@28 @28
functions.ue_thread_rx
functions.ue_thread_tx
@420
variables.ue_inst_cnt_rx[63:0]
@421
variables.ue_inst_cnt_tx[63:0]
@28
functions.phy_procedures_ue_rx functions.phy_procedures_ue_rx
functions.phy_procedures_ue_tx functions.phy_procedures_ue_tx
@24 @24
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment