Improved NR PDCCH unit test

This commit is contained in:
Xavier Arteaga 2020-11-27 16:18:31 +01:00 committed by Andre Puschmann
parent 315394560d
commit 85d5026e38
1 changed files with 22 additions and 16 deletions

View File

@ -24,13 +24,14 @@
#include <getopt.h>
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: