Merge branch 'nr-tbs-fixes' of https://gitlab.eurecom.fr/oai/openairinterface5g into nr-tbs-fixes
This commit is contained in:
@@ -1089,8 +1089,8 @@
|
|||||||
(Test8: 217 PRB 100 PDSCH-PRBs),
|
(Test8: 217 PRB 100 PDSCH-PRBs),
|
||||||
(Test9: 217 PRB 80 PDSCH-Offset),
|
(Test9: 217 PRB 80 PDSCH-Offset),
|
||||||
(Test10: 217 PRB 100 PDSCH-PRBs 80 PDSCH-Offset),-->
|
(Test10: 217 PRB 100 PDSCH-PRBs 80 PDSCH-Offset),-->
|
||||||
(Test13: 106 PRB 0 MCS),
|
(Test6: 106 PRB 0 MCS),
|
||||||
(Test14: 273 PRB 28 MCS)</desc>
|
(Test7: 273 PRB 28 MCS)</desc>
|
||||||
<pre_compile_prog></pre_compile_prog>
|
<pre_compile_prog></pre_compile_prog>
|
||||||
<compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
|
<compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
|
||||||
<compile_prog_args> --phy_simulators -c </compile_prog_args>
|
<compile_prog_args> --phy_simulators -c </compile_prog_args>
|
||||||
@@ -1109,7 +1109,7 @@
|
|||||||
-n100 -R217 -a80 -b100-->
|
-n100 -R217 -a80 -b100-->
|
||||||
-n100 -R106 -e0
|
-n100 -R106 -e0
|
||||||
-n100 -R273 -e28</main_exec_args>
|
-n100 -R273 -e28</main_exec_args>
|
||||||
<tags>nr_dlsim.test1 nr_dlsim.test2 nr_dlsim.test3 nr_dlsim.test4 nr_dlsim.test5 <!--nr_dlsim.test6 nr_dlsim.test7 nr_dlsim.test8 nr_dlsim.test9 nr_dlsim.test10-->nr_dlsim.test13 nr_dlsim.test14</tags>
|
<tags>nr_dlsim.test1 nr_dlsim.test2 nr_dlsim.test3 nr_dlsim.test4 nr_dlsim.test5 <!--nr_dlsim.test6 nr_dlsim.test7 nr_dlsim.test8 nr_dlsim.test9 nr_dlsim.test10-->nr_dlsim.test6 nr_dlsim.test7</tags>
|
||||||
<search_expr_true>"PDCCH test OK" "PDSCH test OK"</search_expr_true>
|
<search_expr_true>"PDCCH test OK" "PDSCH test OK"</search_expr_true>
|
||||||
<search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
|
<search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
|
||||||
<nruns>3</nruns>
|
<nruns>3</nruns>
|
||||||
|
|||||||
@@ -310,7 +310,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
|
|||||||
uint16_t nb_rb = nfapi_ulsch_pdu_rel15->number_rbs;
|
uint16_t nb_rb = nfapi_ulsch_pdu_rel15->number_rbs;
|
||||||
uint16_t number_symbols = nfapi_ulsch_pdu_rel15->number_symbols;
|
uint16_t number_symbols = nfapi_ulsch_pdu_rel15->number_symbols;
|
||||||
uint8_t Qm = nfapi_ulsch_pdu_rel15->Qm;
|
uint8_t Qm = nfapi_ulsch_pdu_rel15->Qm;
|
||||||
uint8_t R = nfapi_ulsch_pdu_rel15->R;
|
uint16_t R = nfapi_ulsch_pdu_rel15->R;
|
||||||
uint8_t mcs = nfapi_ulsch_pdu_rel15->mcs;
|
uint8_t mcs = nfapi_ulsch_pdu_rel15->mcs;
|
||||||
uint8_t n_layers = nfapi_ulsch_pdu_rel15->n_layers;
|
uint8_t n_layers = nfapi_ulsch_pdu_rel15->n_layers;
|
||||||
uint8_t nb_re_dmrs = nfapi_ulsch_pdu_rel15->nb_re_dmrs;
|
uint8_t nb_re_dmrs = nfapi_ulsch_pdu_rel15->nb_re_dmrs;
|
||||||
@@ -353,33 +353,14 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
|
|||||||
// This is a new packet, so compute quantities regarding segmentation
|
// This is a new packet, so compute quantities regarding segmentation
|
||||||
harq_process->B = A+24;
|
harq_process->B = A+24;
|
||||||
|
|
||||||
// [hna] Perform nr_segmenation with input and output set to NULL to calculate only (B, C, K, Z, F)
|
if (R<1024)
|
||||||
nr_segmentation(NULL,
|
Coderate = (float) R /(float) 1024;
|
||||||
NULL,
|
else
|
||||||
harq_process->B,
|
Coderate = (float) R /(float) 2048;
|
||||||
&harq_process->C,
|
|
||||||
&harq_process->K,
|
|
||||||
&harq_process->Z, // [hna] Z is Zc
|
|
||||||
&harq_process->F,
|
|
||||||
p_decParams->BG);
|
|
||||||
|
|
||||||
#ifdef DEBUG_ULSCH_DECODING
|
if ((A <=292) || ((A<=3824) && (Coderate <= 0.6667)) || Coderate <= 0.25){
|
||||||
printf("ulsch decoding nr segmentation Z %d\n", harq_process->Z);
|
p_decParams->BG = 2;
|
||||||
if (!frame%100)
|
if (Coderate < 0.3333) {
|
||||||
printf("K %d C %d Z %d nl %d \n", harq_process->K, harq_process->C, harq_process->Z, harq_process->Nl);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
p_decParams->Z = harq_process->Z;
|
|
||||||
|
|
||||||
if (R<1024)
|
|
||||||
Coderate = (float) R /(float) 1024;
|
|
||||||
else
|
|
||||||
Coderate = (float) R /(float) 2048;
|
|
||||||
|
|
||||||
if ((A <=292) || ((A<=3824) && (Coderate <= 0.6667)) || Coderate <= 0.25){
|
|
||||||
p_decParams->BG = 2;
|
|
||||||
if (Coderate < 0.3333) {
|
|
||||||
p_decParams->R = 15;
|
p_decParams->R = 15;
|
||||||
kc = 52;
|
kc = 52;
|
||||||
}
|
}
|
||||||
@@ -407,6 +388,25 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [hna] Perform nr_segmenation with input and output set to NULL to calculate only (B, C, K, Z, F)
|
||||||
|
nr_segmentation(NULL,
|
||||||
|
NULL,
|
||||||
|
harq_process->B,
|
||||||
|
&harq_process->C,
|
||||||
|
&harq_process->K,
|
||||||
|
&harq_process->Z, // [hna] Z is Zc
|
||||||
|
&harq_process->F,
|
||||||
|
p_decParams->BG);
|
||||||
|
|
||||||
|
#ifdef DEBUG_ULSCH_DECODING
|
||||||
|
printf("ulsch decoding nr segmentation Z %d\n", harq_process->Z);
|
||||||
|
if (!frame%100)
|
||||||
|
printf("K %d C %d Z %d nl %d \n", harq_process->K, harq_process->C, harq_process->Z, harq_process->Nl);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
p_decParams->Z = harq_process->Z;
|
||||||
|
|
||||||
|
|
||||||
p_decParams->numMaxIter = ulsch->max_ldpc_iterations;
|
p_decParams->numMaxIter = ulsch->max_ldpc_iterations;
|
||||||
p_decParams->outMode= 0;
|
p_decParams->outMode= 0;
|
||||||
|
|
||||||
|
|||||||
@@ -207,6 +207,7 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch,
|
|||||||
uint32_t Tbslbrm;
|
uint32_t Tbslbrm;
|
||||||
uint8_t nb_re_dmrs;
|
uint8_t nb_re_dmrs;
|
||||||
uint16_t length_dmrs;
|
uint16_t length_dmrs;
|
||||||
|
uint16_t R;
|
||||||
float Coderate;
|
float Coderate;
|
||||||
|
|
||||||
///////////
|
///////////
|
||||||
@@ -223,6 +224,7 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch,
|
|||||||
A = harq_process->TBS;
|
A = harq_process->TBS;
|
||||||
pz = &Z;
|
pz = &Z;
|
||||||
mod_order = nr_get_Qm_ul(harq_process->mcs,0);
|
mod_order = nr_get_Qm_ul(harq_process->mcs,0);
|
||||||
|
R = nr_get_code_rate_ul(harq_process->mcs, 0);
|
||||||
Kr=0;
|
Kr=0;
|
||||||
r_offset=0;
|
r_offset=0;
|
||||||
BG = 1;
|
BG = 1;
|
||||||
@@ -284,7 +286,10 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch,
|
|||||||
///////////////////////// b---->| block segmentation |---->c /////////////////////////
|
///////////////////////// b---->| block segmentation |---->c /////////////////////////
|
||||||
///////////
|
///////////
|
||||||
|
|
||||||
Coderate = (float) A /(float) G;
|
if (R<1024)
|
||||||
|
Coderate = (float) R /(float) 1024;
|
||||||
|
else
|
||||||
|
Coderate = (float) R /(float) 2048;
|
||||||
|
|
||||||
if ((A <=292) || ((A<=3824) && (Coderate <= 0.6667)) || Coderate <= 0.25){
|
if ((A <=292) || ((A<=3824) && (Coderate <= 0.6667)) || Coderate <= 0.25){
|
||||||
BG = 2;
|
BG = 2;
|
||||||
@@ -303,7 +308,6 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch,
|
|||||||
BG);
|
BG);
|
||||||
|
|
||||||
F = harq_process->F;
|
F = harq_process->F;
|
||||||
|
|
||||||
Kr = harq_process->K;
|
Kr = harq_process->K;
|
||||||
#ifdef DEBUG_DLSCH_CODING
|
#ifdef DEBUG_DLSCH_CODING
|
||||||
uint16_t Kr_bytes;
|
uint16_t Kr_bytes;
|
||||||
|
|||||||
Reference in New Issue
Block a user