NR UE Symbol based PDCCH processing
Part of !2196 (closed)
- Refactor PDCCH PHY functions to take rxdataF of one OFDM symbol and produce LLR for each search space. The modified functions take rxdataF in a different format than that produced by nr_slot_fep(). So for now a memcpy is used to change the array structure. Once nr_slot_fep() is modified, this memcpy will no longer be needed and will be removed.
- Modify DCI functions to decode DCI in the last PDCCH symbol and inidcate to MAC once.
- Fix PDCCH monitoring for start symbol > 0.
- Fix multiple PDCCH monitoring within slot.
Merge request reports
Activity
changed milestone to %REVIEW_CAN_START
added 5G-NR label
OAI RAN-Container-Parent build (8516): failed (https://jenkins-oai.eurecom.fr/job/RAN-Container-Parent/8516/)
List of failing test stages:
I appreciate the effort to put const. However, I also tried to understand what's going on. The problem is, I see so many
const
changes, and not the real change, in like 10min. Please split the const changes and the actual sympbol-based processing change in two commits, so that it becomes possible to see where are the actual changes for somebody without detailed knowledge of the existing code.
added 93 commits
-
18b79b93...74977924 - 91 commits from branch
develop
- 1b99b197 - Symbol based PDCCH processing
- f38c0e01 - Adding const and code clean-up
-
18b79b93...74977924 - 91 commits from branch
OAI RAN-Container-Parent build (8526): failed (https://jenkins-oai.eurecom.fr/job/RAN-Container-Parent/8526/)
List of failing test stages:
added 2 commits
OAI RAN-Container-Parent build (8527): failed (https://jenkins-oai.eurecom.fr/job/RAN-Container-Parent/8527/)
List of failing test stages:
170 171 172 const int data_sc = 9; // 9 sub-carriers with data per PRB 171 173 int rb_count = 0; 172 int data_sc = 9; // 9 sub-carriers with data per PRB 173 for (int c_id = 0; c_id < number_of_candidates; c_id++) { 174 for (int symbol_idx = start_symbol; symbol_idx < start_symbol + coreset_time_dur; symbol_idx++) { 175 for (int cce_count = 0; cce_count < L[c_id]; cce_count++) { 174 for (int c_id = 0; c_id < number_of_candidates; c_id++ ) { 175 for (int symbol_idx = start_symbol; symbol_idx < start_symbol+coreset_time_dur; symbol_idx++) { 176 for (int cce_count = 0; cce_count < L[c_id]; cce_count ++) { 176 177 for (int k = 0; k < NR_NB_REG_PER_CCE / reg_bundle_size_L; k++) { // loop over REG bundles 177 178 int f = f_bundle_j_list_ord[c_id][k + NR_NB_REG_PER_CCE * cce_count / reg_bundle_size_L]; 178 179 for (int rb = 0; rb < B_rb; rb++) { // loop over the RBs of the bundle 179 180 c16_t *out = e_rx + data_sc * rb_count; 180 c16_t *in = llr + (uint16_t)(f * B_rb + rb + symbol_idx * coreset_nbr_rb) * data_sc; 181 const c16_t *in = llr + (uint16_t)(f * B_rb + rb + symbol_idx * coreset_nbr_rb) * data_sc; changed this line in version 4 of the diff
299 304 #define NBR_RE_PER_RB_WITH_DMRS 12 300 305 // after removing the 3 DMRS RE, the RB contains 9 RE with PDCCH 301 306 #define NBR_RE_PER_RB_WITHOUT_DMRS 9 307 // uint8_t rb_count_bit; 308 302 309 for (int aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) { 303 const c16_t *dl_ch0 = dl_ch_estimates[aarx] + frame_parms->ofdm_symbol_size * symbol; 304 c16_t *rxFbase = rxdataF[aarx] + frame_parms->ofdm_symbol_size * symbol; 310 const c16_t *dl_ch0 = &dl_ch_estimates[aarx][0]; changed this line in version 4 of the diff
425 static void nr_pdcch_channel_compensation(const int32_t rx_size, 426 const c16_t rxdataF_ext[][rx_size], 427 const c16_t dl_ch_estimates_ext[][rx_size], 428 c16_t rxdataF_comp[][rx_size], 429 const NR_DL_FRAME_PARMS *frame_parms, 430 const uint8_t output_shift, 431 const uint32_t coreset_nbr_rb) 430 432 { 431 433 for (int aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) { 432 simde__m128i *dl_ch128 = (simde__m128i *)&dl_ch_estimates_ext[aarx][symbol * coreset_nbr_rb * 12]; 433 simde__m128i *rxdataF128 = (simde__m128i *)&rxdataF_ext[aarx][symbol * coreset_nbr_rb * 12]; 434 simde__m128i *rxdataF_comp128 = (simde__m128i *)&rxdataF_comp[aarx][symbol * coreset_nbr_rb * 12]; 435 //printf("ch compensation dl_ch ext addr %p \n", &dl_ch_estimates_ext[(aatx<<1)+aarx][symbol*20*12]); 436 //printf("rxdataf ext addr %p symbol %d\n", &rxdataF_ext[aarx][symbol*20*12], symbol); 437 //printf("rxdataf_comp addr %p\n",&rxdataF_comp[(aatx<<1)+aarx][symbol*20*12]); 434 const simde__m128i *dl_ch128 = (simde__m128i *)&dl_ch_estimates_ext[aarx][0]; changed this line in version 4 of the diff
added 384 commits
-
56a9b74f...707aab3a - 382 commits from branch
develop
- d66b9d0a - Symbol based PDCCH processing
- df73609d - Adding const and code clean-up
-
56a9b74f...707aab3a - 382 commits from branch
requested review from @lthomas
OAI RAN-Container-Parent build (9163): failed (https://jenkins-oai.eurecom.fr/job/RAN-Container-Parent/9163/)
List of failing test stages: