feat(nr_ulsim): detailed ULSCH decoding timers
Add timers to provide ULSCH decoding time split between decoding, rate recovery and deinterleaving.
This commit is contained in:
@@ -305,6 +305,10 @@ int nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
|
|||||||
LOG_D(PHY, "ULSCH %d in error\n", ULSCH_id);
|
LOG_D(PHY, "ULSCH %d in error\n", ULSCH_id);
|
||||||
}
|
}
|
||||||
offset += ((harq_process->K >> 3) - (harq_process->F >> 3) - ((harq_process->C > 1) ? 3 : 0));
|
offset += ((harq_process->K >> 3) - (harq_process->F >> 3) - ((harq_process->C > 1) ? 3 : 0));
|
||||||
|
|
||||||
|
merge_meas(&phy_vars_gNB->ts_deinterleave, &nrLDPC_segment_decoding_parameters.ts_deinterleave);
|
||||||
|
merge_meas(&phy_vars_gNB->ts_rate_unmatch, &nrLDPC_segment_decoding_parameters.ts_rate_unmatch);
|
||||||
|
merge_meas(&phy_vars_gNB->ts_ldpc_decode, &nrLDPC_segment_decoding_parameters.ts_ldpc_decode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -521,6 +521,9 @@ typedef struct PHY_VARS_gNB_s {
|
|||||||
time_stats_t slot_indication_stats;
|
time_stats_t slot_indication_stats;
|
||||||
time_stats_t schedule_response_stats;
|
time_stats_t schedule_response_stats;
|
||||||
time_stats_t ulsch_decoding_stats;
|
time_stats_t ulsch_decoding_stats;
|
||||||
|
time_stats_t ts_deinterleave;
|
||||||
|
time_stats_t ts_rate_unmatch;
|
||||||
|
time_stats_t ts_ldpc_decode;
|
||||||
time_stats_t ulsch_deinterleaving_stats;
|
time_stats_t ulsch_deinterleaving_stats;
|
||||||
time_stats_t ulsch_channel_estimation_stats;
|
time_stats_t ulsch_channel_estimation_stats;
|
||||||
time_stats_t pusch_channel_estimation_antenna_processing_stats;
|
time_stats_t pusch_channel_estimation_antenna_processing_stats;
|
||||||
|
|||||||
@@ -1341,7 +1341,7 @@ printf("%d\n", slot);
|
|||||||
printStatIndent3(&gNB->tprep,"DLSCH LDPC input preparation time");
|
printStatIndent3(&gNB->tprep,"DLSCH LDPC input preparation time");
|
||||||
printStatIndent3(&gNB->tparity,"DLSCH LDPC parity generation time");
|
printStatIndent3(&gNB->tparity,"DLSCH LDPC parity generation time");
|
||||||
printStatIndent3(&gNB->toutput,"DLSCH LDPC output generation time");
|
printStatIndent3(&gNB->toutput,"DLSCH LDPC output generation time");
|
||||||
printStatIndent3(&gNB->dlsch_rate_matching_stats,"DLSCH Rate Mataching time");
|
printStatIndent3(&gNB->dlsch_rate_matching_stats,"DLSCH Rate Matching time");
|
||||||
printStatIndent3(&gNB->dlsch_interleaving_stats, "DLSCH Interleaving time");
|
printStatIndent3(&gNB->dlsch_interleaving_stats, "DLSCH Interleaving time");
|
||||||
printStatIndent2(&gNB->dlsch_modulation_stats,"DLSCH modulation time");
|
printStatIndent2(&gNB->dlsch_modulation_stats,"DLSCH modulation time");
|
||||||
printStatIndent2(&gNB->dlsch_scrambling_stats, "DLSCH scrambling time");
|
printStatIndent2(&gNB->dlsch_scrambling_stats, "DLSCH scrambling time");
|
||||||
|
|||||||
@@ -1026,6 +1026,9 @@ int main(int argc, char *argv[])
|
|||||||
reset_meas(&gNB->rx_pusch_init_stats);
|
reset_meas(&gNB->rx_pusch_init_stats);
|
||||||
reset_meas(&gNB->rx_pusch_symbol_processing_stats);
|
reset_meas(&gNB->rx_pusch_symbol_processing_stats);
|
||||||
reset_meas(&gNB->ulsch_decoding_stats);
|
reset_meas(&gNB->ulsch_decoding_stats);
|
||||||
|
reset_meas(&gNB->ts_deinterleave);
|
||||||
|
reset_meas(&gNB->ts_rate_unmatch);
|
||||||
|
reset_meas(&gNB->ts_ldpc_decode);
|
||||||
reset_meas(&gNB->ulsch_channel_estimation_stats);
|
reset_meas(&gNB->ulsch_channel_estimation_stats);
|
||||||
reset_meas(&gNB->pusch_channel_estimation_antenna_processing_stats);
|
reset_meas(&gNB->pusch_channel_estimation_antenna_processing_stats);
|
||||||
reset_meas(&gNB->rx_srs_stats);
|
reset_meas(&gNB->rx_srs_stats);
|
||||||
@@ -1587,6 +1590,9 @@ int main(int argc, char *argv[])
|
|||||||
printStatIndent2(&gNB->rx_pusch_init_stats, "RX PUSCH Initialization time");
|
printStatIndent2(&gNB->rx_pusch_init_stats, "RX PUSCH Initialization time");
|
||||||
printStatIndent2(&gNB->rx_pusch_symbol_processing_stats, "RX PUSCH Symbol Processing time");
|
printStatIndent2(&gNB->rx_pusch_symbol_processing_stats, "RX PUSCH Symbol Processing time");
|
||||||
printStatIndent(&gNB->ulsch_decoding_stats,"ULSCH total decoding time");
|
printStatIndent(&gNB->ulsch_decoding_stats,"ULSCH total decoding time");
|
||||||
|
printStatIndent2(&gNB->ts_deinterleave, "ULSCH segment deinterleaving time");
|
||||||
|
printStatIndent2(&gNB->ts_rate_unmatch, "ULSCH segment rate recovery time");
|
||||||
|
printStatIndent2(&gNB->ts_ldpc_decode, "ULSCH segments decoding time");
|
||||||
|
|
||||||
printf("\nUE TX\n");
|
printf("\nUE TX\n");
|
||||||
for (int i = PHY_PROC_TX; i <= OFDM_MOD_STATS; i++) {
|
for (int i = PHY_PROC_TX; i <= OFDM_MOD_STATS; i++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user