integration fix: let dlsim_tm4 compile again
The variables that were duplicated per processing thread were adapted. 'cpuf' was defined and initialized.
This commit is contained in:
@@ -68,6 +68,7 @@ extern uint8_t interf_unaw_shift;
|
||||
PHY_VARS_eNB *eNB;
|
||||
PHY_VARS_UE *UE;
|
||||
|
||||
double cpuf;
|
||||
|
||||
int otg_enabled=0;
|
||||
/*the following parameters are used to control the processing times calculations*/
|
||||
@@ -296,7 +297,7 @@ int main(int argc, char **argv)
|
||||
|
||||
int threequarter_fs=0;
|
||||
|
||||
|
||||
cpuf = get_cpu_freq_GHz();
|
||||
|
||||
opp_enabled=1; // to enable the time meas
|
||||
|
||||
@@ -867,7 +868,7 @@ int main(int argc, char **argv)
|
||||
// bzero(r_im0[i],FRAME_LENGTH_COMPLEX_SAMPLES*sizeof(double));
|
||||
}
|
||||
|
||||
UE->pdcch_vars[0]->crnti = n_rnti;
|
||||
UE->pdcch_vars[subframe&0x1][0]->crnti = n_rnti;
|
||||
UE->transmission_mode[eNB_id]=transmission_mode;
|
||||
if (UE->transmission_mode[eNB_id] !=4)
|
||||
UE->measurements.rank[eNB_id]=0;
|
||||
@@ -2087,7 +2088,8 @@ int main(int argc, char **argv)
|
||||
reset_meas(&UE->dlsch_freq_offset_estimation_stats);
|
||||
reset_meas(&UE->rx_dft_stats);
|
||||
reset_meas(&UE->dlsch_llr_stats);
|
||||
reset_meas(&UE->dlsch_decoding_stats);
|
||||
reset_meas(&UE->dlsch_decoding_stats[0]);
|
||||
reset_meas(&UE->dlsch_decoding_stats[1]);
|
||||
reset_meas(&UE->dlsch_turbo_decoding_stats);
|
||||
reset_meas(&UE->dlsch_deinterleaving_stats);
|
||||
reset_meas(&UE->dlsch_rate_unmatching_stats);
|
||||
@@ -3488,9 +3490,7 @@ int main(int argc, char **argv)
|
||||
UE->UE_mode[0] = PUSCH;
|
||||
start_meas(&UE->dlsch_rx_pdcch_stats);
|
||||
|
||||
rx_pdcch(&UE->common_vars,
|
||||
UE->pdcch_vars,
|
||||
&UE->frame_parms,
|
||||
rx_pdcch(UE,
|
||||
trials,
|
||||
subframe,
|
||||
0,
|
||||
@@ -3500,7 +3500,7 @@ int main(int argc, char **argv)
|
||||
|
||||
stop_meas(&UE->dlsch_rx_pdcch_stats);
|
||||
// overwrite number of pdcch symbols
|
||||
UE->pdcch_vars[0]->num_pdcch_symbols = num_pdcch_symbols;
|
||||
UE->pdcch_vars[subframe&0x1][0]->num_pdcch_symbols = num_pdcch_symbols;
|
||||
|
||||
dci_cnt = dci_decoding_procedure(UE,
|
||||
dci_alloc_rx,1,
|
||||
@@ -3544,14 +3544,14 @@ int main(int argc, char **argv)
|
||||
0,
|
||||
P_RNTI,
|
||||
transmission_mode<7?0:transmission_mode,
|
||||
UE->pdcch_vars[0]->crnti_is_temporary? UE->pdcch_vars[0]->crnti: 0)==0)) {
|
||||
UE->pdcch_vars[subframe&0x1][0]->crnti_is_temporary? UE->pdcch_vars[subframe&0x1][0]->crnti: 0)==0)) {
|
||||
dump_dci(&UE->frame_parms,&dci_alloc_rx[i]);
|
||||
coded_bits_per_codeword[0]= get_G(&eNB->frame_parms,
|
||||
UE->dlsch[subframe&0x1][0][0]->harq_processes[UE->dlsch[subframe&0x1][0][0]->current_harq_pid]->nb_rb,
|
||||
UE->dlsch[subframe&0x1][0][0]->harq_processes[UE->dlsch[subframe&0x1][0][0]->current_harq_pid]->rb_alloc_even,
|
||||
get_Qm(UE->dlsch[subframe&0x1][0][0]->harq_processes[UE->dlsch[subframe&0x1][0][0]->current_harq_pid]->mcs),
|
||||
UE->dlsch[subframe&0x1][0][0]->harq_processes[UE->dlsch[subframe&0x1][0][0]->current_harq_pid]->Nl,
|
||||
UE->pdcch_vars[0]->num_pdcch_symbols,
|
||||
UE->pdcch_vars[subframe&0x1][0]->num_pdcch_symbols,
|
||||
0,
|
||||
subframe,
|
||||
transmission_mode>=7?transmission_mode:0);
|
||||
@@ -3561,7 +3561,7 @@ int main(int argc, char **argv)
|
||||
UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][0]->current_harq_pid]->rb_alloc_even,
|
||||
get_Qm(UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][0]->current_harq_pid]->mcs),
|
||||
UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][0]->current_harq_pid]->Nl,
|
||||
UE->pdcch_vars[1]->num_pdcch_symbols,
|
||||
UE->pdcch_vars[subframe&0x1][1]->num_pdcch_symbols,
|
||||
0,
|
||||
subframe,
|
||||
transmission_mode>=7?transmission_mode:0);
|
||||
@@ -3570,7 +3570,7 @@ int main(int argc, char **argv)
|
||||
rate = (double)dlsch_tbs25[get_I_TBS(UE->dlsch[subframe&0x1][0][0]->harq_processes[UE->dlsch[subframe&0x1][0][0]->current_harq_pid]->mcs)][UE->dlsch[subframe&0x1][0][0]->nb_rb-1]/(coded_bits_per_codeword);
|
||||
rate*=get_Qm(UE->dlsch[subframe&0x1][0][0]->harq_processes[UE->dlsch[subframe&0x1][0][0]->current_harq_pid]->mcs);
|
||||
*/
|
||||
printf("num_pdcch_symbols %d, G %d, TBS %d\n",UE->pdcch_vars[0]->num_pdcch_symbols,coded_bits_per_codeword [0],UE->dlsch[subframe&0x1][0][0]->harq_processes[UE->dlsch[subframe&0x1][0][0]->current_harq_pid]->TBS);
|
||||
printf("num_pdcch_symbols %d, G %d, TBS %d\n",UE->pdcch_vars[subframe&0x1][0]->num_pdcch_symbols,coded_bits_per_codeword [0],UE->dlsch[subframe&0x1][0][0]->harq_processes[UE->dlsch[subframe&0x1][0][0]->current_harq_pid]->TBS);
|
||||
|
||||
dlsch_active = 1; // what does it indicates???
|
||||
} else {
|
||||
@@ -3591,8 +3591,8 @@ int main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
} else { //dci_flag == 0
|
||||
UE->pdcch_vars[0]->crnti = n_rnti;
|
||||
UE->pdcch_vars[0]->num_pdcch_symbols = num_pdcch_symbols;
|
||||
UE->pdcch_vars[subframe&0x1][0]->crnti = n_rnti;
|
||||
UE->pdcch_vars[subframe&0x1][0]->num_pdcch_symbols = num_pdcch_symbols;
|
||||
if (round == 0) {
|
||||
UE->dlsch[subframe&0x1][0][0]->harq_processes[0]->first_tx=1;
|
||||
UE->dlsch[subframe&0x1][0][1]->harq_processes[0]->first_tx=1;
|
||||
@@ -3613,7 +3613,7 @@ int main(int argc, char **argv)
|
||||
0,
|
||||
P_RNTI,
|
||||
transmission_mode<7?0:transmission_mode,
|
||||
UE->pdcch_vars[0]->crnti_is_temporary? UE->pdcch_vars[0]->crnti: 0);
|
||||
UE->pdcch_vars[subframe&0x1][0]->crnti_is_temporary? UE->pdcch_vars[subframe&0x1][0]->crnti: 0);
|
||||
break;
|
||||
case 3:
|
||||
|
||||
@@ -3631,7 +3631,7 @@ int main(int argc, char **argv)
|
||||
0,
|
||||
P_RNTI,
|
||||
transmission_mode<7?0:transmission_mode,
|
||||
UE->pdcch_vars[0]->crnti_is_temporary? UE->pdcch_vars[0]->crnti: 0);
|
||||
UE->pdcch_vars[subframe&0x1][0]->crnti_is_temporary? UE->pdcch_vars[subframe&0x1][0]->crnti: 0);
|
||||
//printf("Rate: TM3 (after) round %d (%d) first_tx %d\n",round,UE->dlsch[subframe&0x1][0][0]->harq_processes[0]->round,UE->dlsch[subframe&0x1][0][0]->harq_processes[0]->first_tx);
|
||||
break;
|
||||
case 4:
|
||||
@@ -3647,7 +3647,7 @@ int main(int argc, char **argv)
|
||||
0,
|
||||
P_RNTI,
|
||||
transmission_mode<7?0:transmission_mode,
|
||||
UE->pdcch_vars[0]->crnti_is_temporary? UE->pdcch_vars[0]->crnti: 0);
|
||||
UE->pdcch_vars[subframe&0x1][0]->crnti_is_temporary? UE->pdcch_vars[subframe&0x1][0]->crnti: 0);
|
||||
|
||||
break;
|
||||
case 5:
|
||||
@@ -3664,7 +3664,7 @@ int main(int argc, char **argv)
|
||||
0,
|
||||
P_RNTI,
|
||||
transmission_mode<7?0:transmission_mode,
|
||||
UE->pdcch_vars[0]->crnti_is_temporary? UE->pdcch_vars[0]->crnti: 0);
|
||||
UE->pdcch_vars[subframe&0x1][0]->crnti_is_temporary? UE->pdcch_vars[subframe&0x1][0]->crnti: 0);
|
||||
break;
|
||||
}
|
||||
dlsch_active = 1;
|
||||
@@ -3690,7 +3690,7 @@ int main(int argc, char **argv)
|
||||
|
||||
start_meas(&UE->dlsch_llr_stats);
|
||||
|
||||
for (m=UE->pdcch_vars[0]->num_pdcch_symbols; m<pilot2; m++) {
|
||||
for (m=UE->pdcch_vars[subframe&0x1][0]->num_pdcch_symbols; m<pilot2; m++) {
|
||||
if (rx_pdsch(UE,
|
||||
PDSCH,
|
||||
eNB_id,
|
||||
@@ -3698,7 +3698,7 @@ int main(int argc, char **argv)
|
||||
0,
|
||||
subframe,
|
||||
m,
|
||||
(m==UE->pdcch_vars[0]->num_pdcch_symbols)?1:0,
|
||||
(m==UE->pdcch_vars[subframe&0x1][0]->num_pdcch_symbols)?1:0,
|
||||
rx_type,
|
||||
i_mod,
|
||||
UE->dlsch[subframe&0x1][0][0]->current_harq_pid)==-1){
|
||||
@@ -3849,7 +3849,7 @@ int main(int argc, char **argv)
|
||||
subframe<<1);
|
||||
stop_meas(&UE->dlsch_unscrambling_stats);
|
||||
|
||||
start_meas(&UE->dlsch_decoding_stats);
|
||||
start_meas(&UE->dlsch_decoding_stats[subframe&0x1]);
|
||||
ret[TB] = dlsch_decoding(UE,
|
||||
UE->pdsch_vars[subframe&0x1][eNB_id]->llr[UE->dlsch[subframe&0x1][0][TB]->harq_processes[UE->dlsch[subframe&0x1][0][TB]->current_harq_pid]->codeword],
|
||||
&UE->frame_parms,
|
||||
@@ -3859,7 +3859,7 @@ int main(int argc, char **argv)
|
||||
subframe,
|
||||
UE->dlsch[subframe&0x1][0][TB]->current_harq_pid,
|
||||
1,llr8_flag);
|
||||
stop_meas(&UE->dlsch_decoding_stats);
|
||||
stop_meas(&UE->dlsch_decoding_stats[subframe&0x1]);
|
||||
#ifdef DEBUG_HARQ
|
||||
printf("[DLSIM] ret[%d] = %d\n", TB, ret[TB]);
|
||||
#endif
|
||||
@@ -4208,7 +4208,7 @@ int main(int argc, char **argv)
|
||||
subframe<<1);
|
||||
stop_meas(&UE->dlsch_unscrambling_stats);
|
||||
|
||||
start_meas(&UE->dlsch_decoding_stats);
|
||||
start_meas(&UE->dlsch_decoding_stats[subframe&0x1]);
|
||||
|
||||
ret[1] = dlsch_decoding(UE,
|
||||
UE->pdsch_vars[subframe&0x1][eNB_id]->llr[UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid]->codeword],
|
||||
@@ -4219,7 +4219,7 @@ int main(int argc, char **argv)
|
||||
subframe,
|
||||
UE->dlsch[subframe&0x1][0][1]->current_harq_pid,
|
||||
1,llr8_flag);
|
||||
stop_meas(&UE->dlsch_decoding_stats);
|
||||
stop_meas(&UE->dlsch_decoding_stats[subframe&0x1]);
|
||||
|
||||
#ifdef DEBUG_HARQ
|
||||
printf("[DLSIM] Decoding TB1 in SIC: ret[1] = %d, round sic %d\n", ret[1], round_sic);
|
||||
@@ -4419,11 +4419,11 @@ int main(int argc, char **argv)
|
||||
*/
|
||||
|
||||
//pdcch_vars
|
||||
write_output("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
|
||||
write_output("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
|
||||
write_output("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[subframe&0x1][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
|
||||
write_output("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[subframe&0x1][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
|
||||
|
||||
write_output("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[eNB_id]->rxdataF_comp[0],4*300,1,1);
|
||||
write_output("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[eNB_id]->llr,2400,1,4);
|
||||
write_output("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[subframe&0x1][eNB_id]->rxdataF_comp[0],4*300,1,1);
|
||||
write_output("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[subframe&0x1][eNB_id]->llr,2400,1,4);
|
||||
|
||||
if (round == 3) exit(-1);
|
||||
}
|
||||
@@ -4534,7 +4534,7 @@ int main(int argc, char **argv)
|
||||
double t_rx = (double)UE->phy_proc_rx[subframe&0x1].p_time/cpu_freq_GHz/1000.0;
|
||||
double t_rx_fft = (double)UE->ofdm_demod_stats.p_time/cpu_freq_GHz/1000.0;
|
||||
double t_rx_demod = (double)UE->dlsch_rx_pdcch_stats.p_time/cpu_freq_GHz/1000.0;
|
||||
double t_rx_dec = (double)UE->dlsch_decoding_stats.p_time/cpu_freq_GHz/1000.0;
|
||||
double t_rx_dec = (double)UE->dlsch_decoding_stats[subframe&0x1].p_time/cpu_freq_GHz/1000.0;
|
||||
|
||||
|
||||
if (t_tx > t_tx_max)
|
||||
@@ -4891,12 +4891,12 @@ int main(int argc, char **argv)
|
||||
printf("|__ Statistcs std: %fus median %fus q1 %fus q3 %fus \n",std_phy_proc_rx_demod, rx_demod_median, rx_demod_q1, rx_demod_q3);
|
||||
printf("DLSCH unscrambling time :%f us (%d trials)\n",(double)UE->dlsch_unscrambling_stats.diff/UE->dlsch_unscrambling_stats.trials/cpu_freq_GHz/1000.0,
|
||||
UE->dlsch_unscrambling_stats.trials);
|
||||
std_phy_proc_rx_dec = sqrt((double)UE->dlsch_decoding_stats.diff_square/pow(cpu_freq_GHz,2)/pow(1000,
|
||||
2)/UE->dlsch_decoding_stats.trials - pow((double)UE->dlsch_decoding_stats.diff/UE->dlsch_decoding_stats.trials/cpu_freq_GHz/1000,2));
|
||||
std_phy_proc_rx_dec = sqrt((double)UE->dlsch_decoding_stats[subframe&0x1].diff_square/pow(cpu_freq_GHz,2)/pow(1000,
|
||||
2)/UE->dlsch_decoding_stats[subframe&0x1].trials - pow((double)UE->dlsch_decoding_stats[subframe&0x1].diff/UE->dlsch_decoding_stats[subframe&0x1].trials/cpu_freq_GHz/1000,2));
|
||||
printf("DLSCH Decoding time (%02.2f Mbit/s, avg iter %1.2f) :%f us (%d trials, max %f)\n",
|
||||
eNB->dlsch[0][0]->harq_processes[0]->TBS/1000.0,(double)avg_iter[0]/iter_trials[0],
|
||||
(double)UE->dlsch_decoding_stats.diff/UE->dlsch_decoding_stats.trials/cpu_freq_GHz/1000.0,UE->dlsch_decoding_stats.trials,
|
||||
(double)UE->dlsch_decoding_stats.max/cpu_freq_GHz/1000.0);
|
||||
(double)UE->dlsch_decoding_stats[subframe&0x1].diff/UE->dlsch_decoding_stats[subframe&0x1].trials/cpu_freq_GHz/1000.0,UE->dlsch_decoding_stats[subframe&0x1].trials,
|
||||
(double)UE->dlsch_decoding_stats[subframe&0x1].max/cpu_freq_GHz/1000.0);
|
||||
printf("|__ Statistcs std: %fus median %fus q1 %fus q3 %fus \n",std_phy_proc_rx_dec, rx_dec_median, rx_dec_q1, rx_dec_q3);
|
||||
printf("|__ DLSCH Rate Unmatching :%f us (%d trials)\n",
|
||||
(double)UE->dlsch_rate_unmatching_stats.diff/UE->dlsch_rate_unmatching_stats.trials/cpu_freq_GHz/1000.0,UE->dlsch_rate_unmatching_stats.trials);
|
||||
@@ -5194,7 +5194,7 @@ int main(int argc, char **argv)
|
||||
UE->dlsch_rx_pdcch_stats.trials,
|
||||
UE->dlsch_llr_stats.trials,
|
||||
UE->dlsch_unscrambling_stats.trials,
|
||||
UE->dlsch_decoding_stats.trials
|
||||
UE->dlsch_decoding_stats[subframe&0x1].trials
|
||||
);
|
||||
fprintf(time_meas_fd,"%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;",
|
||||
get_time_meas_us(&eNB->phy_proc_tx),
|
||||
@@ -5207,7 +5207,7 @@ int main(int argc, char **argv)
|
||||
get_time_meas_us(&UE->dlsch_rx_pdcch_stats),
|
||||
3*get_time_meas_us(&UE->dlsch_llr_stats),
|
||||
get_time_meas_us(&UE->dlsch_unscrambling_stats),
|
||||
get_time_meas_us(&UE->dlsch_decoding_stats)
|
||||
get_time_meas_us(&UE->dlsch_decoding_stats[subframe&0x1])
|
||||
);
|
||||
//fprintf(time_meas_fd,"eNB_PROC_TX_STD;eNB_PROC_TX_MAX;eNB_PROC_TX_MIN;eNB_PROC_TX_MED;eNB_PROC_TX_Q1;eNB_PROC_TX_Q3;eNB_PROC_TX_DROPPED;\n");
|
||||
fprintf(time_meas_fd,"%f;%f;%f;%f;%f;%f;%d;", std_phy_proc_tx, t_tx_max, t_tx_min, tx_median, tx_q1, tx_q3, n_tx_dropped);
|
||||
@@ -5247,7 +5247,7 @@ int main(int argc, char **argv)
|
||||
UE->dlsch_rx_pdcch_stats.trials,
|
||||
UE->dlsch_llr_stats.trials,
|
||||
UE->dlsch_unscrambling_stats.trials,
|
||||
UE->dlsch_decoding_stats.trials);
|
||||
UE->dlsch_decoding_stats[subframe&0x1].trials);
|
||||
*/
|
||||
printf("[passed] effective rate : %f (%2.1f%%,%f)): log and break \n",rate[0]*effective_rate, 100*effective_rate, rate[0]);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user