Dlsim dump processing buffers
Write extracted rxF buffer to output bin file. Fix offset in writing rxF buffer.
This commit is contained in:
@@ -480,10 +480,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
ue->phy_cpu_stats.cpu_time_stats[DLSCH_EXTRACT_RBS_STATS].p_time / (cpuf * 1000.0));
|
ue->phy_cpu_stats.cpu_time_stats[DLSCH_EXTRACT_RBS_STATS].p_time / (cpuf * 1000.0));
|
||||||
}
|
}
|
||||||
if (ue->phy_sim_pdsch_rxdataF_ext)
|
if (ue->phy_sim_pdsch_rxdataF_ext)
|
||||||
for (unsigned char aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) {
|
memcpy(ue->phy_sim_pdsch_rxdataF_ext + symbol * sizeof(rxdataF_ext), rxdataF_ext, sizeof(rxdataF_ext));
|
||||||
int offset = ((void *)rxdataF_ext[aarx] - (void *)rxdataF_ext) + symbol * rx_size_symbol;
|
|
||||||
memcpy(ue->phy_sim_pdsch_rxdataF_ext + offset, rxdataF_ext, rx_size_symbol * sizeof(c16_t));
|
|
||||||
}
|
|
||||||
|
|
||||||
nb_re_pdsch = (pilots == 1) ? ((config_type == NFAPI_NR_DMRS_TYPE1) ? nb_rb_pdsch * (12 - 6 * dlsch_config->n_dmrs_cdm_groups)
|
nb_re_pdsch = (pilots == 1) ? ((config_type == NFAPI_NR_DMRS_TYPE1) ? nb_rb_pdsch * (12 - 6 * dlsch_config->n_dmrs_cdm_groups)
|
||||||
: nb_rb_pdsch * (12 - 4 * dlsch_config->n_dmrs_cdm_groups))
|
: nb_rb_pdsch * (12 - 4 * dlsch_config->n_dmrs_cdm_groups))
|
||||||
@@ -776,12 +773,16 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
if (ue->phy_sim_pdsch_rxdataF_comp)
|
if (ue->phy_sim_pdsch_rxdataF_comp)
|
||||||
for (int a = 0; a < nbRx; a++) {
|
for (int a = 0; a < nbRx; a++) {
|
||||||
int offset = (void *)rxdataF_comp[0][a] - (void *)rxdataF_comp[0] + symbol * rx_size_symbol * sizeof(c16_t);
|
for (int l = 0; l < nl; l++) {
|
||||||
memcpy(ue->phy_sim_pdsch_rxdataF_comp + offset, rxdataF_comp[0][a] + symbol * rx_size_symbol, sizeof(c16_t) * rx_size_symbol);
|
int offset = (void *)rxdataF_comp[l][a] - (void *)rxdataF_comp[0] + symbol * rx_size_symbol * sizeof(c16_t);
|
||||||
|
memcpy(ue->phy_sim_pdsch_rxdataF_comp + offset,
|
||||||
|
rxdataF_comp[l][a] + symbol * rx_size_symbol,
|
||||||
|
sizeof(c16_t) * rx_size_symbol);
|
||||||
|
}
|
||||||
memcpy((c16_t *)ue->phy_sim_pdsch_dl_ch_estimates + pdsch_est_size * a, dl_ch_estimates, pdsch_est_size * sizeof(c16_t));
|
memcpy((c16_t *)ue->phy_sim_pdsch_dl_ch_estimates + pdsch_est_size * a, dl_ch_estimates, pdsch_est_size * sizeof(c16_t));
|
||||||
}
|
}
|
||||||
if (ue->phy_sim_pdsch_dl_ch_estimates_ext)
|
if (ue->phy_sim_pdsch_dl_ch_estimates_ext)
|
||||||
memcpy((c16_t *)ue->phy_sim_pdsch_dl_ch_estimates_ext + symbol * rx_size_symbol,
|
memcpy(ue->phy_sim_pdsch_dl_ch_estimates_ext + symbol * sizeof(dl_ch_estimates_ext),
|
||||||
dl_ch_estimates_ext,
|
dl_ch_estimates_ext,
|
||||||
sizeof(dl_ch_estimates_ext));
|
sizeof(dl_ch_estimates_ext));
|
||||||
return (0);
|
return (0);
|
||||||
|
|||||||
@@ -1042,6 +1042,8 @@ int pbch_pdcch_processing(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, nr_
|
|||||||
phy_pdcch_config->nb_search_space = 0;
|
phy_pdcch_config->nb_search_space = 0;
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP_PDCCH, VCD_FUNCTION_OUT);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP_PDCCH, VCD_FUNCTION_OUT);
|
||||||
TracyCZoneEnd(ctx);
|
TracyCZoneEnd(ctx);
|
||||||
|
if (ue->phy_sim_rxdataF)
|
||||||
|
memcpy(ue->phy_sim_rxdataF, rxdataF[0], sizeof(int32_t) * nb_symb_pdcch * ue->frame_parms.ofdm_symbol_size);
|
||||||
return sampleShift;
|
return sampleShift;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1166,9 +1168,11 @@ void pdsch_processing(PHY_VARS_NR_UE *ue, const UE_nr_rxtx_proc_t *proc, nr_phy_
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ue->phy_sim_rxdataF)
|
if (ue->phy_sim_rxdataF)
|
||||||
memcpy(ue->phy_sim_rxdataF, rxdataF, sizeof(int32_t)*rxdataF_sz*ue->frame_parms.nb_antennas_rx);
|
memcpy(ue->phy_sim_rxdataF + start_symb_sch * ue->frame_parms.ofdm_symbol_size * sizeof(c16_t),
|
||||||
|
&rxdataF[0][start_symb_sch * ue->frame_parms.ofdm_symbol_size],
|
||||||
|
sizeof(int32_t) * nb_symb_sch * ue->frame_parms.ofdm_symbol_size);
|
||||||
if (ue->phy_sim_pdsch_llr)
|
if (ue->phy_sim_pdsch_llr)
|
||||||
memcpy(ue->phy_sim_pdsch_llr, llr[0], sizeof(int16_t)*rx_llr_buf_sz);
|
memcpy(ue->phy_sim_pdsch_llr, llr[0], sizeof(int16_t) * rx_llr_buf_sz);
|
||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_OUT);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_OUT);
|
||||||
for (int i=0; i<nb_codewords; i++)
|
for (int i=0; i<nb_codewords; i++)
|
||||||
|
|||||||
@@ -1239,11 +1239,11 @@ printf("%d\n", slot);
|
|||||||
int16_t *UE_llr = (int16_t*)UE->phy_sim_pdsch_llr;
|
int16_t *UE_llr = (int16_t*)UE->phy_sim_pdsch_llr;
|
||||||
|
|
||||||
TBS = dlsch0->dlsch_config.TBS;//rel15->TBSize[0];
|
TBS = dlsch0->dlsch_config.TBS;//rel15->TBSize[0];
|
||||||
uint16_t length_dmrs = get_num_dmrs(rel15->dlDmrsSymbPos);
|
uint16_t length_dmrs = get_num_dmrs(dlsch0->dlsch_config.dlDmrsSymbPos);
|
||||||
uint16_t nb_rb = rel15->rbSize;
|
uint16_t nb_rb = dlsch0->dlsch_config.number_rbs;
|
||||||
uint8_t nb_re_dmrs = rel15->dmrsConfigType == NFAPI_NR_DMRS_TYPE1 ? 6*dlsch0->dlsch_config.n_dmrs_cdm_groups : 4*dlsch0->dlsch_config.n_dmrs_cdm_groups;
|
uint8_t nb_re_dmrs = dlsch0->dlsch_config.dmrsConfigType == NFAPI_NR_DMRS_TYPE1 ? 6*dlsch0->dlsch_config.n_dmrs_cdm_groups : 4*dlsch0->dlsch_config.n_dmrs_cdm_groups;
|
||||||
uint8_t mod_order = rel15->qamModOrder[0];
|
uint8_t mod_order = dlsch0->dlsch_config.qamModOrder;
|
||||||
uint8_t nb_symb_sch = rel15->NrOfSymbols;
|
uint8_t nb_symb_sch = dlsch0->dlsch_config.number_symbols;
|
||||||
uint32_t unav_res = ptrsSymbPerSlot * ptrsRePerSymb;
|
uint32_t unav_res = ptrsSymbPerSlot * ptrsRePerSymb;
|
||||||
available_bits = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs, unav_res, mod_order, rel15->nrOfLayers);
|
available_bits = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs, unav_res, mod_order, rel15->nrOfLayers);
|
||||||
if (pdu_bit_map & 0x1) {
|
if (pdu_bit_map & 0x1) {
|
||||||
@@ -1367,23 +1367,38 @@ printf("%d\n", slot);
|
|||||||
if (UE->frame_parms.nb_antennas_rx>1)
|
if (UE->frame_parms.nb_antennas_rx>1)
|
||||||
LOG_M("rxsig1.m", "rxs1", UE->common_vars.rxdata[1], frame_length_complex_samples, dec, op_format);
|
LOG_M("rxsig1.m", "rxs1", UE->common_vars.rxdata[1], frame_length_complex_samples, dec, op_format);
|
||||||
LOG_M("rxF0.m", "rxF0", UE->phy_sim_rxdataF, frame_parms->samples_per_slot_wCP, dec, op_format);
|
LOG_M("rxF0.m", "rxF0", UE->phy_sim_rxdataF, frame_parms->samples_per_slot_wCP, dec, op_format);
|
||||||
LOG_M("rxF_ext.m", "rxFe", UE->phy_sim_pdsch_rxdataF_ext, g_rbSize * 12 * 14, dec, op_format);
|
|
||||||
const uint32_t numReSym = (g_rbSize * 12 + 15) & (~15);
|
const uint32_t numReSym = (g_rbSize * 12 + 15) & (~15);
|
||||||
const uint32_t numValidReSym = g_rbSize * 12;
|
for (int l = 0; l < g_nrOfLayers; l++) {
|
||||||
{
|
for (int r = 0; r < n_rx; r++) {
|
||||||
const int s = rel15->StartSymbolIndex;
|
const int s = rel15->StartSymbolIndex;
|
||||||
const int n = rel15->NrOfSymbols;
|
const int n = rel15->NrOfSymbols;
|
||||||
for (int i = s; i < s + n; i++) {
|
for (int i = s; i < s + n; i++) {
|
||||||
char fName[50];
|
const uint32_t dmrsBitMap = phy_data.dlsch[0].dlsch_config.dlDmrsSymbPos;
|
||||||
snprintf(fName, sizeof(fName), "chestF0_ext_s%d.m", i);
|
const uint32_t dmrsCfg = phy_data.dlsch[0].dlsch_config.dmrsConfigType;
|
||||||
LOG_M(fName,
|
const uint32_t nrb = phy_data.dlsch[0].dlsch_config.number_rbs;
|
||||||
"chF0_ext",
|
const uint32_t ncdmg = phy_data.dlsch[0].dlsch_config.n_dmrs_cdm_groups;
|
||||||
((c16_t *)UE->phy_sim_pdsch_dl_ch_estimates_ext) + (i * numReSym),
|
const uint32_t numValidReSym = ((dmrsBitMap >> i) & 1)
|
||||||
numValidReSym,
|
? ((dmrsCfg == NFAPI_NR_DMRS_TYPE1) ? nrb * (12 - 6 * ncdmg) : nrb * (12 - 4 * ncdmg))
|
||||||
dec,
|
: (nrb * 12);
|
||||||
op_format);
|
char fName[50];
|
||||||
snprintf(fName, sizeof(fName), "rxF_comp_s%d.m", i);
|
snprintf(fName, sizeof(fName), "chestF_ext_l%d_r%d_s%d.m", l, r, i);
|
||||||
LOG_M(fName, "rxFc", ((c16_t *)UE->phy_sim_pdsch_rxdataF_comp) + (i * numReSym), numValidReSym, dec, op_format);
|
uint32_t buff_offset = (i * g_nrOfLayers * n_rx * numReSym) + (l * n_rx * numReSym) + (r * numReSym);
|
||||||
|
LOG_M(fName,
|
||||||
|
"chF0_ext",
|
||||||
|
((c16_t *)UE->phy_sim_pdsch_dl_ch_estimates_ext) + buff_offset,
|
||||||
|
numValidReSym,
|
||||||
|
dec,
|
||||||
|
op_format);
|
||||||
|
snprintf(fName, sizeof(fName), "rxF_comp_l%d_s%d.m", l, i);
|
||||||
|
LOG_M(fName, "rxFc", ((c16_t *)UE->phy_sim_pdsch_rxdataF_comp) + (l * NR_SYMBOLS_PER_SLOT * numReSym) + (i * numReSym), numValidReSym, dec, op_format);
|
||||||
|
if (l == 0) {
|
||||||
|
snprintf(fName, sizeof(fName), "rxF_ext_r%d_s%d.m", r, i);
|
||||||
|
buff_offset = (i * n_rx * numReSym) + (r * numReSym);
|
||||||
|
LOG_M(fName, "rxFext", ((c16_t *)UE->phy_sim_pdsch_rxdataF_ext) + buff_offset, numValidReSym, dec, op_format);
|
||||||
|
}
|
||||||
|
snprintf(fName, sizeof(fName), "chestF0_s%d.m", i);
|
||||||
|
LOG_M(fName, "chF0", ((c16_t *)UE->phy_sim_pdsch_dl_ch_estimates) + i * frame_parms->ofdm_symbol_size, nrb*12, dec, op_format);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOG_M("chestF0.m", "chF0", UE->phy_sim_pdsch_dl_ch_estimates, frame_parms->ofdm_symbol_size * 14, dec, op_format);
|
LOG_M("chestF0.m", "chF0", UE->phy_sim_pdsch_dl_ch_estimates, frame_parms->ofdm_symbol_size * 14, dec, op_format);
|
||||||
|
|||||||
Reference in New Issue
Block a user