add 256qam test case to dlsim
This commit is contained in:
@@ -1093,17 +1093,18 @@
|
|||||||
(Test8: 217 PRB 100 PDSCH-PRBs 110 PDSCH-Offset),
|
(Test8: 217 PRB 100 PDSCH-PRBs 110 PDSCH-Offset),
|
||||||
(Test9: 106 PRBs 50 PDSCH-PRBs MCS Index 27),
|
(Test9: 106 PRBs 50 PDSCH-PRBs MCS Index 27),
|
||||||
(Test10: 106 PRBs 50 PDSCH-PRBs MCS Index 16),
|
(Test10: 106 PRBs 50 PDSCH-PRBs MCS Index 16),
|
||||||
(Test11: HARQ test 25% TP (4 rounds),
|
(Test11: 106 MCS-TABLE 256 QAM MCS Index 26),
|
||||||
(Test12: HARQ test 33% TP (3 rounds),
|
(Test12: HARQ test 25% TP (4 rounds),
|
||||||
(Test13: HARQ test 50% TP (2 rounds),
|
(Test13: HARQ test 33% TP (3 rounds),
|
||||||
(Test14: 3 PTRS, 8 Interpolated Symbols),
|
(Test14: HARQ test 50% TP (2 rounds),
|
||||||
(Test15: 6 PTRS, 5 Interpolated Symbols),
|
(Test15: 3 PTRS, 8 Interpolated Symbols),
|
||||||
(Test16: 11 PTRS, 0 Interpolated Symbols),
|
(Test16: 6 PTRS, 5 Interpolated Symbols),
|
||||||
(Test17: Mapping type A, 2 DMRS Symbols),
|
(Test17: 11 PTRS, 0 Interpolated Symbols),
|
||||||
(Test18: Mapping type A, 3 DMRS Symbols),
|
(Test18: Mapping type A, 2 DMRS Symbols),
|
||||||
(Test19: Mapping type B, 4 DMRS Symbols),
|
(Test19: Mapping type A, 3 DMRS Symbols),
|
||||||
(Test20: 4x4 MIMO, 1 Layer),
|
(Test20: Mapping type B, 4 DMRS Symbols),
|
||||||
(Test21: 4x4 MIMO, 2 Layers)</desc>
|
(Test21: 4x4 MIMO, 1 Layer),
|
||||||
|
(Test22: 4x4 MIMO, 2 Layers)</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>
|
||||||
@@ -1118,8 +1119,9 @@
|
|||||||
-n100 -R217 -b100 -s5
|
-n100 -R217 -b100 -s5
|
||||||
-n100 -R217 -a80 -s5
|
-n100 -R217 -a80 -s5
|
||||||
-n100 -R217 -a110 -s5 -b100
|
-n100 -R217 -a110 -s5 -b100
|
||||||
-n100 -e27 -s30
|
-n100 -e27 -s30
|
||||||
-n100 -e16 -s10
|
-n100 -e16 -s10
|
||||||
|
-n100 -q1 -e26 -s30
|
||||||
-n100 -s1 -t25
|
-n100 -s1 -t25
|
||||||
-n100 -s1 -t33
|
-n100 -s1 -t33
|
||||||
-n100 -s1 -t50
|
-n100 -s1 -t50
|
||||||
@@ -1131,7 +1133,7 @@
|
|||||||
-n100 -s2 -U 2 1 3
|
-n100 -s2 -U 2 1 3
|
||||||
-n10 -s20 -U 3 0 0 2 -gR -x1 -y4 -z4
|
-n10 -s20 -U 3 0 0 2 -gR -x1 -y4 -z4
|
||||||
-n10 -s20 -U 3 0 0 2 -gR -x2 -y4 -z4</main_exec_args>
|
-n10 -s20 -U 3 0 0 2 -gR -x2 -y4 -z4</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.test11 nr_dlsim.test12 nr_dlsim.test13 nr_dlsim.test14 nr_dlsim.test15 nr_dlsim.test16 nr_dlsim.test17 nr_dlsim.test18 nr_dlsim.test19 nr_dlsim.test20 nr_dlsim.test21</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.test11 nr_dlsim.test12 nr_dlsim.test13 nr_dlsim.test14 nr_dlsim.test15 nr_dlsim.test16 nr_dlsim.test17 nr_dlsim.test18 nr_dlsim.test19 nr_dlsim.test20 nr_dlsim.test21 nr_dlsim.test22</tags>
|
||||||
<search_expr_true>PDSCH test OK</search_expr_true>
|
<search_expr_true>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>
|
||||||
|
|||||||
@@ -431,7 +431,7 @@ int main(int argc, char **argv)
|
|||||||
FILE *scg_fd=NULL;
|
FILE *scg_fd=NULL;
|
||||||
|
|
||||||
|
|
||||||
while ((c = getopt (argc, argv, "f:hA:pf:g:in:s:S:t:x:y:z:M:N:F:GR:dPIL:Ea:b:D:e:m:w:T:U:q")) != -1) {
|
while ((c = getopt (argc, argv, "f:hA:pf:g:in:s:S:t:x:y:z:M:N:F:GR:dPIL:Ea:b:D:e:q:m:w:T:U")) != -1) {
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'f':
|
case 'f':
|
||||||
@@ -598,13 +598,19 @@ int main(int argc, char **argv)
|
|||||||
case 'b':
|
case 'b':
|
||||||
g_rbSize = atoi(optarg);
|
g_rbSize = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'D':
|
case 'D':
|
||||||
dlsch_threads = atoi(optarg);
|
dlsch_threads = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'e':
|
case 'e':
|
||||||
g_mcsIndex = atoi(optarg);
|
g_mcsIndex = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'q':
|
||||||
|
g_mcsTableIdx = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'm':
|
case 'm':
|
||||||
mu = atoi(optarg);
|
mu = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
@@ -660,6 +666,7 @@ int main(int argc, char **argv)
|
|||||||
printf("-c Start symbol for PDSCH (fixed for now)\n");
|
printf("-c Start symbol for PDSCH (fixed for now)\n");
|
||||||
printf("-j Number of symbols for PDSCH (fixed for now)\n");
|
printf("-j Number of symbols for PDSCH (fixed for now)\n");
|
||||||
printf("-e MSC index\n");
|
printf("-e MSC index\n");
|
||||||
|
printf("-q MCS Table index\n");
|
||||||
printf("-t Acceptable effective throughput (in percentage)\n");
|
printf("-t Acceptable effective throughput (in percentage)\n");
|
||||||
printf("-T Enable PTRS, arguments list L_PTRS{0,1,2} K_PTRS{2,4}, e.g. -T 2 0 2 \n");
|
printf("-T Enable PTRS, arguments list L_PTRS{0,1,2} K_PTRS{2,4}, e.g. -T 2 0 2 \n");
|
||||||
printf("-U Change DMRS Config, arguments list DMRS TYPE{0=A,1=B} DMRS AddPos{0:2} DMRS ConfType{1:2}, e.g. -U 3 0 2 1 \n");
|
printf("-U Change DMRS Config, arguments list DMRS TYPE{0=A,1=B} DMRS AddPos{0:2} DMRS ConfType{1:2}, e.g. -U 3 0 2 1 \n");
|
||||||
@@ -759,11 +766,14 @@ int main(int argc, char **argv)
|
|||||||
fill_scc_sim(rrc.carrier.servingcellconfigcommon,&ssb_bitmap,N_RB_DL,N_RB_DL,mu,mu);
|
fill_scc_sim(rrc.carrier.servingcellconfigcommon,&ssb_bitmap,N_RB_DL,N_RB_DL,mu,mu);
|
||||||
ssb_bitmap = 1;// Enable only first SSB with index ssb_indx=0
|
ssb_bitmap = 1;// Enable only first SSB with index ssb_indx=0
|
||||||
fix_scc(scc,ssb_bitmap);
|
fix_scc(scc,ssb_bitmap);
|
||||||
|
|
||||||
prepare_scd(scd);
|
prepare_scd(scd);
|
||||||
|
|
||||||
|
NR_UE_NR_Capability_t* UE_Capability_nr = CALLOC(1,sizeof(NR_UE_NR_Capability_t));
|
||||||
|
prepare_sim_uecap(UE_Capability_nr,scc,mu,
|
||||||
|
N_RB_DL,g_mcsTableIdx);
|
||||||
|
|
||||||
// TODO do a UECAP for phy-sim
|
// TODO do a UECAP for phy-sim
|
||||||
fill_default_secondaryCellGroup(scc, scd, secondaryCellGroup, NULL, 0, 1, n_tx, 6, 0, 0, 0);
|
fill_default_secondaryCellGroup(scc, scd, secondaryCellGroup, UE_Capability_nr, 0, 1, n_tx, 6, 0, 0, 0);
|
||||||
|
|
||||||
/* RRC parameter validation for secondaryCellGroup */
|
/* RRC parameter validation for secondaryCellGroup */
|
||||||
fix_scd(scd);
|
fix_scd(scd);
|
||||||
|
|||||||
@@ -31,6 +31,50 @@
|
|||||||
#include "nr_rrc_config.h"
|
#include "nr_rrc_config.h"
|
||||||
#include "common/utils/nr/nr_common.h"
|
#include "common/utils/nr/nr_common.h"
|
||||||
|
|
||||||
|
void prepare_sim_uecap(NR_UE_NR_Capability_t *cap,
|
||||||
|
NR_ServingCellConfigCommon_t *scc,
|
||||||
|
int numerology,
|
||||||
|
int rbsize,
|
||||||
|
int mcs_table) {
|
||||||
|
|
||||||
|
int band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
|
||||||
|
NR_BandNR_t *nr_bandnr = CALLOC(1,sizeof(NR_BandNR_t));
|
||||||
|
nr_bandnr->bandNR = band;
|
||||||
|
ASN_SEQUENCE_ADD(&cap->rf_Parameters.supportedBandListNR.list,
|
||||||
|
nr_bandnr);
|
||||||
|
if (mcs_table == 1) {
|
||||||
|
int bw = get_supported_band_index(numerology, band, rbsize);
|
||||||
|
if (band>256) {
|
||||||
|
NR_BandNR_t *bandNRinfo = cap->rf_Parameters.supportedBandListNR.list.array[0];
|
||||||
|
bandNRinfo->pdsch_256QAM_FR2 = CALLOC(1,sizeof(*bandNRinfo->pdsch_256QAM_FR2));
|
||||||
|
*bandNRinfo->pdsch_256QAM_FR2 = NR_BandNR__pdsch_256QAM_FR2_supported;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cap->phy_Parameters.phy_ParametersFR1 = CALLOC(1,sizeof(*cap->phy_Parameters.phy_ParametersFR1));
|
||||||
|
NR_Phy_ParametersFR1_t *phy_fr1 = cap->phy_Parameters.phy_ParametersFR1;
|
||||||
|
phy_fr1->pdsch_256QAM_FR1 = CALLOC(1,sizeof(*phy_fr1->pdsch_256QAM_FR1));
|
||||||
|
*phy_fr1->pdsch_256QAM_FR1 = NR_Phy_ParametersFR1__pdsch_256QAM_FR1_supported;
|
||||||
|
}
|
||||||
|
cap->featureSets = CALLOC(1,sizeof(*cap->featureSets));
|
||||||
|
NR_FeatureSets_t *fs=cap->featureSets;
|
||||||
|
fs->featureSetsDownlinkPerCC = CALLOC(1,sizeof(*fs->featureSetsDownlinkPerCC));
|
||||||
|
NR_FeatureSetDownlinkPerCC_t *fs_cc = CALLOC(1,sizeof(NR_FeatureSetDownlinkPerCC_t));
|
||||||
|
fs_cc->supportedSubcarrierSpacingDL = numerology;
|
||||||
|
if(band>256) {
|
||||||
|
fs_cc->supportedBandwidthDL.present = NR_SupportedBandwidth_PR_fr2;
|
||||||
|
fs_cc->supportedBandwidthDL.choice.fr2 = bw;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
fs_cc->supportedBandwidthDL.present = NR_SupportedBandwidth_PR_fr1;
|
||||||
|
fs_cc->supportedBandwidthDL.choice.fr1 = bw;
|
||||||
|
}
|
||||||
|
fs_cc->supportedModulationOrderDL = CALLOC(1,sizeof(*fs_cc->supportedModulationOrderDL));
|
||||||
|
*fs_cc->supportedModulationOrderDL = NR_ModulationOrder_qam256;
|
||||||
|
ASN_SEQUENCE_ADD(&fs->featureSetsDownlinkPerCC->list,
|
||||||
|
fs_cc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void nr_rrc_config_dl_tda(NR_ServingCellConfigCommon_t *scc){
|
void nr_rrc_config_dl_tda(NR_ServingCellConfigCommon_t *scc){
|
||||||
|
|
||||||
lte_frame_type_t frame_type = get_frame_type(*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing);
|
lte_frame_type_t frame_type = get_frame_type(*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing);
|
||||||
|
|||||||
@@ -114,6 +114,11 @@ typedef struct physicalcellgroup_s{
|
|||||||
void nr_rrc_config_dl_tda(NR_ServingCellConfigCommon_t *scc);
|
void nr_rrc_config_dl_tda(NR_ServingCellConfigCommon_t *scc);
|
||||||
void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay);
|
void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay);
|
||||||
void set_dl_mcs_table(NR_BWP_Downlink_t *bwp, NR_ServingCellConfigCommon_t *scc, NR_UE_NR_Capability_t *cap);
|
void set_dl_mcs_table(NR_BWP_Downlink_t *bwp, NR_ServingCellConfigCommon_t *scc, NR_UE_NR_Capability_t *cap);
|
||||||
|
void prepare_sim_uecap(NR_UE_NR_Capability_t *cap,
|
||||||
|
NR_ServingCellConfigCommon_t *scc,
|
||||||
|
int numerology,
|
||||||
|
int rbsize,
|
||||||
|
int mcs_table);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user