From 85d5026e38a683f3dc3edb042083fb74cc434d09 Mon Sep 17 00:00:00 2001 From: Xavier Arteaga Date: Fri, 27 Nov 2020 16:18:31 +0100 Subject: [PATCH] Improved NR PDCCH unit test --- lib/src/phy/phch/test/pdcch_nr_test.c | 38 ++++++++++++++++----------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/lib/src/phy/phch/test/pdcch_nr_test.c b/lib/src/phy/phch/test/pdcch_nr_test.c index 9deb9320c..10f20732f 100644 --- a/lib/src/phy/phch/test/pdcch_nr_test.c +++ b/lib/src/phy/phch/test/pdcch_nr_test.c @@ -24,13 +24,14 @@ #include static srslte_carrier_nr_t carrier = { - 0, // cell_id - 0, // numerology - SRSLTE_MAX_PRB_NR, // nof_prb - 0 // start + 0, // cell_id + 0, // numerology + 50, // nof_prb + 0 // start }; -static uint16_t rnti = 0x1234; +static uint16_t rnti = 0x1234; +static bool fast_sweep = true; typedef struct { uint64_t time_us; @@ -72,23 +73,23 @@ static int test(srslte_pdcch_nr_t* tx, static void usage(char* prog) { - printf("Usage: %s [v] \n", prog); + printf("Usage: %s [pFv] \n", prog); printf("\t-p Number of carrier PRB [Default %d]\n", carrier.nof_prb); - // printf("\t-m MCS PRB, set to >28 for steering [Default %d]\n", mcs); - // printf("\t-T Provide MCS table (64qam, 256qam, 64qamLowSE) [Default %s]\n", - // srslte_mcs_table_to_str(pdsch_cfg.sch_cfg.mcs_table)); - // printf("\t-L Provide number of layers [Default %d]\n", pdsch_cfg.sch_cfg.max_mimo_layers); + printf("\t-F Fast CORESET frequency resource sweeping [Default %s]\n", fast_sweep ? "Enabled" : "Disabled"); printf("\t-v [set srslte_verbose to debug, default none]\n"); } static int parse_args(int argc, char** argv) { int opt; - while ((opt = getopt(argc, argv, "vp")) != -1) { + while ((opt = getopt(argc, argv, "pFv")) != -1) { switch (opt) { case 'p': carrier.nof_prb = (uint32_t)strtol(argv[optind], NULL, 10); break; + case 'F': + fast_sweep ^= true; + break; case 'v': srslte_verbose++; break; @@ -140,7 +141,8 @@ int main(int argc, char** argv) srslte_coreset_t coreset = {}; uint32_t nof_frequency_resource = SRSLTE_MIN(SRSLTE_CORESET_FREQ_DOMAIN_RES_SIZE, carrier.nof_prb / 6); - for (uint32_t frequency_resources = 1; frequency_resources < (1U << nof_frequency_resource); frequency_resources++) { + for (uint32_t frequency_resources = 1; frequency_resources < (1U << nof_frequency_resource); + frequency_resources = (fast_sweep) ? ((frequency_resources << 1U) | 1U) : (frequency_resources + 1)) { for (uint32_t i = 0; i < nof_frequency_resource; i++) { uint32_t mask = ((frequency_resources >> i) & 1U); coreset.freq_resources[i] = (mask == 1); @@ -228,17 +230,21 @@ int main(int argc, char** argv) } } - printf("%6s %6s %6s\n", " ", " Time ", " Time "); - printf("%6s %6s %6s\n", "L", "Encode", "Decode"); - printf("%6s %6s %6s\n", " ", " (us) ", " (us) "); + printf("+--------+--------+--------+--------+\n"); + printf("| %6s | %6s | %6s | %6s |\n", " ", " ", " Time ", " Time "); + printf("| %6s | %6s | %6s | %6s |\n", " L ", "Count", "Encode", "Decode"); + printf("| %6s | %6s | %6s | %6s |\n", " ", " ", " (us) ", " (us) "); + printf("+--------+--------+--------+--------+\n"); for (uint32_t i = 0; i < SRSLTE_SEARCH_SPACE_NOF_AGGREGATION_LEVELS_NR; i++) { if (enc_time[i].count > 0 && dec_time[i].count) { - printf("%6d %6.1f %6.1f\n", + printf("| %6d | %6ld | %6.1f | %6.1f |\n", i, + enc_time[i].count, (double)enc_time[i].time_us / (double)enc_time[i].count, (double)dec_time[i].time_us / (double)dec_time[i].count); } } + printf("+--------+--------+--------+--------+\n"); ret = SRSLTE_SUCCESS; clean_exit: