From 65cbcec57a4545ea6d74a822eb6612e90a11eb39 Mon Sep 17 00:00:00 2001 From: francescomani Date: Fri, 20 Sep 2024 12:22:32 +0200 Subject: [PATCH] fixes to allow FR2 dlsim test --- cmake_targets/autotests/test_case_list.xml | 8 ++-- common/utils/nr/nr_common.c | 4 +- openair1/SIMULATION/NR_PHY/dlsim.c | 5 +- openair2/GNB_APP/gnb_config.c | 55 +++++++++++++++------- 4 files changed, 47 insertions(+), 25 deletions(-) diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml index 32876634c0..7f712a434b 100755 --- a/cmake_targets/autotests/test_case_list.xml +++ b/cmake_targets/autotests/test_case_list.xml @@ -168,7 +168,8 @@ (Test4: HARQ test 25% TP 4 rounds), (Test5: HARQ test 33% TP 3 rounds), (Test6: HARQ test 50% TP 2 rounds), - (Test7: 25 PRBs, 15 kHz SCS) + (Test7: 25 PRBs, 15 kHz SCS), + (Test8: 32 PRBs, 120 kHz SCS) nr_dlsim -n100 -R106 -b106 -s5 -n100 -R217 -b217 -s5 @@ -176,8 +177,9 @@ -n100 -s1 -S2 -t25 -n100 -s1 -S2 -t33 -n100 -s5 -S7 -t50 - -n100 -m0 -e0 -R25 -b25 -i 2 1 0 - test1 test2 test3 test4 test5 test6 test7 + -n100 -m0 -e0 -R25 -b25 -i 2 1 0 + -n100 -s5 -m3 -R32 -b32 + test1 test2 test3 test4 test5 test6 test7 test8 PDSCH test OK segmentation fault|assertion|exiting|fatal 3 diff --git a/common/utils/nr/nr_common.c b/common/utils/nr/nr_common.c index 9b029657ad..5862c91990 100644 --- a/common/utils/nr/nr_common.c +++ b/common/utils/nr/nr_common.c @@ -423,9 +423,7 @@ int get_supported_bw_mhz(frequency_range_t frequency_range, int bw_index) { if (frequency_range == FR1) { int bandwidth_index_to_mhz[] = {5, 10, 15, 20, 25, 30, 40, 50, 60, 80, 90, 100}; - AssertFatal(bw_index >= 0 && bw_index <= sizeofArray(bandwidth_index_to_mhz), - "Bandwidth index %d is invalid\n", - bw_index); + AssertFatal(bw_index >= 0 && bw_index <= sizeofArray(bandwidth_index_to_mhz), "Bandwidth index %d is invalid\n", bw_index); return bandwidth_index_to_mhz[bw_index]; } else { int bandwidth_index_to_mhz[] = {50, 100, 200, 400}; diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c index 72f4705520..e9af64ed3c 100644 --- a/openair1/SIMULATION/NR_PHY/dlsim.c +++ b/openair1/SIMULATION/NR_PHY/dlsim.c @@ -147,10 +147,9 @@ extern void fix_scd(NR_ServingCellConfig_t *scd);// forward declaration /* specific dlsim DL preprocessor: uses rbStart/rbSize/mcs/nrOfLayers from command line of dlsim */ int g_mcsIndex = -1, g_mcsTableIdx = 0, g_rbStart = -1, g_rbSize = -1, g_nrOfLayers = 1, g_pmi = 0; -void nr_dlsim_preprocessor(module_id_t module_id, - frame_t frame, - sub_frame_t slot) { +void nr_dlsim_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t slot) +{ NR_UE_info_t *UE_info = RC.nrmac[module_id]->UE_info.list[0]; AssertFatal(RC.nrmac[module_id]->UE_info.list[1]==NULL, "can have only a single UE\n"); NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl; diff --git a/openair2/GNB_APP/gnb_config.c b/openair2/GNB_APP/gnb_config.c index a57d2e0287..730f08dd7d 100644 --- a/openair2/GNB_APP/gnb_config.c +++ b/openair2/GNB_APP/gnb_config.c @@ -274,15 +274,29 @@ void fill_scc_sim(NR_ServingCellConfigCommon_t *scc, uint64_t *ssb_bitmap, int N scc->dmrs_TypeA_Position = NR_ServingCellConfigCommon__dmrs_TypeA_Position_pos2; *scc->ssbSubcarrierSpacing = mu_dl; - struct NR_FrequencyInfoDL *frequencyInfoDL = scc->downlinkConfigCommon->frequencyInfoDL; - if (mu_dl == 0) { - *frequencyInfoDL->absoluteFrequencySSB = 520432; - *frequencyInfoDL->frequencyBandList.list.array[0] = 38; - frequencyInfoDL->absoluteFrequencyPointA = 520000; - } else { - *frequencyInfoDL->absoluteFrequencySSB = 641032; - *frequencyInfoDL->frequencyBandList.list.array[0] = 78; - frequencyInfoDL->absoluteFrequencyPointA = 640000; + NR_FrequencyInfoDL_t *frequencyInfoDL = scc->downlinkConfigCommon->frequencyInfoDL; + NR_TDD_UL_DL_ConfigCommon_t *tdd_UL_DL_Config = scc->tdd_UL_DL_ConfigurationCommon; + switch (mu_dl) { + case 0 : + *frequencyInfoDL->absoluteFrequencySSB = 520432; + *frequencyInfoDL->frequencyBandList.list.array[0] = 38; + frequencyInfoDL->absoluteFrequencyPointA = 520000; + tdd_UL_DL_Config->pattern1.dl_UL_TransmissionPeriodicity = NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms10; + break; + case 1 : + *frequencyInfoDL->absoluteFrequencySSB = 641032; + *frequencyInfoDL->frequencyBandList.list.array[0] = 78; + frequencyInfoDL->absoluteFrequencyPointA = 640000; + tdd_UL_DL_Config->pattern1.dl_UL_TransmissionPeriodicity = NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms5; + break; + case 3 : + *frequencyInfoDL->absoluteFrequencySSB = 2071387; + *frequencyInfoDL->frequencyBandList.list.array[0] = 257; + frequencyInfoDL->absoluteFrequencyPointA = 2071003; + tdd_UL_DL_Config->pattern1.dl_UL_TransmissionPeriodicity = NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms1p25; + break; + default : + AssertFatal(false, "Numerolgy %d not supported\n", mu_dl); } *frequencyInfoDL->scs_SpecificCarrierList.list.array[0] = configure_scs_carrier(mu_dl, N_RB_DL); @@ -306,7 +320,19 @@ void fill_scc_sim(NR_ServingCellConfigCommon_t *scc, uint64_t *ssb_bitmap, int N timedomainresourceallocation1); struct NR_FrequencyInfoUL *frequencyInfoUL = scc->uplinkConfigCommon->frequencyInfoUL; - *frequencyInfoUL->frequencyBandList->list.array[0] = mu_ul ? 78 : 38; + switch (mu_ul) { + case 0 : + *frequencyInfoUL->frequencyBandList->list.array[0] = 38; + break; + case 1 : + *frequencyInfoUL->frequencyBandList->list.array[0] = 78; + break; + case 3 : + *frequencyInfoUL->frequencyBandList->list.array[0] = 257; + break; + default : + AssertFatal(false, "Numerolgy %d not supported\n", mu_ul); + } *frequencyInfoUL->absoluteFrequencyPointA = -1; *frequencyInfoUL->scs_SpecificCarrierList.list.array[0] = configure_scs_carrier(mu_ul, N_RB_UL); *frequencyInfoUL->p_Max = 20; @@ -348,18 +374,15 @@ void fill_scc_sim(NR_ServingCellConfigCommon_t *scc, uint64_t *ssb_bitmap, int N scc->ssb_PositionsInBurst->present = NR_ServingCellConfigCommon__ssb_PositionsInBurst_PR_mediumBitmap; *ssb_bitmap = 0xff; - struct NR_TDD_UL_DL_ConfigCommon *tdd_UL_DL_ConfigurationCommon = scc->tdd_UL_DL_ConfigurationCommon; - tdd_UL_DL_ConfigurationCommon->referenceSubcarrierSpacing = mu_dl; + tdd_UL_DL_Config->referenceSubcarrierSpacing = mu_dl; - NR_TDD_UL_DL_Pattern_t *p1 = &tdd_UL_DL_ConfigurationCommon->pattern1; - p1->dl_UL_TransmissionPeriodicity = (mu_dl == 0) ? NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms10 - : NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms5; + NR_TDD_UL_DL_Pattern_t *p1 = &tdd_UL_DL_Config->pattern1; p1->nrofDownlinkSlots = 7; p1->nrofDownlinkSymbols = 6; p1->nrofUplinkSlots = 2; p1->nrofUplinkSymbols = 4; - struct NR_TDD_UL_DL_Pattern *p2 = tdd_UL_DL_ConfigurationCommon->pattern2; + struct NR_TDD_UL_DL_Pattern *p2 = tdd_UL_DL_Config->pattern2; if (p2) { p2->dl_UL_TransmissionPeriodicity = 321; p2->nrofDownlinkSlots = -1;