feat(nrLDPC_coding_interface): Use reworked interface in PHY simulators
This commit is contained in:
@@ -35,6 +35,7 @@
|
|||||||
#include "PHY/defs_nr_common.h"
|
#include "PHY/defs_nr_common.h"
|
||||||
#include "PHY/defs_nr_UE.h"
|
#include "PHY/defs_nr_UE.h"
|
||||||
#include "PHY/types.h"
|
#include "PHY/types.h"
|
||||||
|
#include "PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface.h"
|
||||||
#include "PHY/INIT/nr_phy_init.h"
|
#include "PHY/INIT/nr_phy_init.h"
|
||||||
#include "PHY/MODULATION/modulation_eNB.h"
|
#include "PHY/MODULATION/modulation_eNB.h"
|
||||||
#include "PHY/MODULATION/modulation_UE.h"
|
#include "PHY/MODULATION/modulation_UE.h"
|
||||||
@@ -380,7 +381,7 @@ int main(int argc, char **argv)
|
|||||||
RC.gNB[0] = calloc(1, sizeof(PHY_VARS_gNB));
|
RC.gNB[0] = calloc(1, sizeof(PHY_VARS_gNB));
|
||||||
gNB = RC.gNB[0];
|
gNB = RC.gNB[0];
|
||||||
initNamedTpool(gNBthreads, &gNB->threadPool, true, "gNB-tpool");
|
initNamedTpool(gNBthreads, &gNB->threadPool, true, "gNB-tpool");
|
||||||
initFloatingCoresTpool(dlsch_threads, &nrUE_params.Tpool, false, "UE-tpool");
|
initFloatingCoresTpool(dlsch_threads, &nrUE_params.Tpool, false, "UE-tpool");
|
||||||
//gNB_config = &gNB->gNB_config;
|
//gNB_config = &gNB->gNB_config;
|
||||||
frame_parms = &gNB->frame_parms; //to be initialized I suppose (maybe not necessary for PBCH)
|
frame_parms = &gNB->frame_parms; //to be initialized I suppose (maybe not necessary for PBCH)
|
||||||
frame_parms->nb_antennas_tx = n_tx;
|
frame_parms->nb_antennas_tx = n_tx;
|
||||||
@@ -430,6 +431,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
//nr_init_frame_parms_ue(&UE->frame_parms);
|
//nr_init_frame_parms_ue(&UE->frame_parms);
|
||||||
//init_nr_ue_transport(UE, 0);
|
//init_nr_ue_transport(UE, 0);
|
||||||
|
UE->nrLDPC_coding_interface = gNB->nrLDPC_coding_interface;
|
||||||
|
|
||||||
NR_UE_DLSCH_t dlsch_ue[NR_MAX_NB_LAYERS > 4? 2:1] = {0};
|
NR_UE_DLSCH_t dlsch_ue[NR_MAX_NB_LAYERS > 4? 2:1] = {0};
|
||||||
int num_codeword = NR_MAX_NB_LAYERS > 4? 2:1;
|
int num_codeword = NR_MAX_NB_LAYERS > 4? 2:1;
|
||||||
nr_ue_dlsch_init(dlsch_ue, num_codeword, 5);
|
nr_ue_dlsch_init(dlsch_ue, num_codeword, 5);
|
||||||
@@ -513,7 +516,8 @@ int main(int argc, char **argv)
|
|||||||
unsigned char output[rel15->rbSize * NR_SYMBOLS_PER_SLOT * NR_NB_SC_PER_RB * 8 * NR_MAX_NB_LAYERS] __attribute__((aligned(32)));
|
unsigned char output[rel15->rbSize * NR_SYMBOLS_PER_SLOT * NR_NB_SC_PER_RB * 8 * NR_MAX_NB_LAYERS] __attribute__((aligned(32)));
|
||||||
bzero(output,rel15->rbSize * NR_SYMBOLS_PER_SLOT * NR_NB_SC_PER_RB * 8 * NR_MAX_NB_LAYERS);
|
bzero(output,rel15->rbSize * NR_SYMBOLS_PER_SLOT * NR_NB_SC_PER_RB * 8 * NR_MAX_NB_LAYERS);
|
||||||
if (input_fd == NULL) {
|
if (input_fd == NULL) {
|
||||||
nr_dlsch_encoding(gNB, frame, slot, &dlsch->harq_process, frame_parms,output,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
|
msgDataTx.num_pdsch_slot = 1;
|
||||||
|
nr_dlsch_encoding(gNB, &msgDataTx, frame, slot, frame_parms, output, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (SNR = snr0; SNR < snr1; SNR += snr_step) {
|
for (SNR = snr0; SNR < snr1; SNR += snr_step) {
|
||||||
@@ -569,20 +573,18 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
uint32_t dlsch_bytes = a_segments*1056; // allocated bytes per segment
|
uint32_t dlsch_bytes = a_segments*1056; // allocated bytes per segment
|
||||||
__attribute__ ((aligned(32))) uint8_t b[dlsch_bytes];
|
__attribute__ ((aligned(32))) uint8_t b[dlsch_bytes];
|
||||||
|
uint8_t DLSCH_ids[1] = {0};
|
||||||
|
short *p_channel_output_fixed = channel_output_fixed;
|
||||||
|
uint8_t *p_b = b;
|
||||||
|
int available_bits_array[1] = { available_bits };
|
||||||
ret = nr_dlsch_decoding(UE,
|
ret = nr_dlsch_decoding(UE,
|
||||||
&proc,
|
&proc,
|
||||||
0,
|
|
||||||
channel_output_fixed,
|
|
||||||
&UE->frame_parms,
|
|
||||||
dlsch0_ue,
|
dlsch0_ue,
|
||||||
harq_process,
|
&p_channel_output_fixed,
|
||||||
frame,
|
&p_b,
|
||||||
nb_symb_sch,
|
available_bits_array,
|
||||||
slot,
|
1,
|
||||||
harq_pid,
|
DLSCH_ids);
|
||||||
dlsch_bytes,
|
|
||||||
b,
|
|
||||||
available_bits);
|
|
||||||
|
|
||||||
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING0, VCD_FUNCTION_OUT);
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DECODING0, VCD_FUNCTION_OUT);
|
||||||
|
|
||||||
@@ -661,7 +663,10 @@ int main(int argc, char **argv)
|
|||||||
free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list[i].max_num_of_symbol_per_slot_list);
|
free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list[i].max_num_of_symbol_per_slot_list);
|
||||||
free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list);
|
free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list);
|
||||||
|
|
||||||
|
free_nrLDPC_coding_interface(&gNB->nrLDPC_coding_interface);
|
||||||
|
|
||||||
abortTpool(&gNB->threadPool);
|
abortTpool(&gNB->threadPool);
|
||||||
|
|
||||||
phy_free_nr_gNB(gNB);
|
phy_free_nr_gNB(gNB);
|
||||||
free(RC.gNB[0]);
|
free(RC.gNB[0]);
|
||||||
free(RC.gNB);
|
free(RC.gNB);
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
#include "NR_ServingCellConfig.h"
|
#include "NR_ServingCellConfig.h"
|
||||||
#include "NR_SetupRelease.h"
|
#include "NR_SetupRelease.h"
|
||||||
#include "NR_UE_PHY_INTERFACE/NR_IF_Module.h"
|
#include "NR_UE_PHY_INTERFACE/NR_IF_Module.h"
|
||||||
#include "PHY/CODING/nrLDPC_extern.h"
|
#include "PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface.h"
|
||||||
#include "PHY/INIT/nr_phy_init.h"
|
#include "PHY/INIT/nr_phy_init.h"
|
||||||
#include "PHY/MODULATION/modulation_common.h"
|
#include "PHY/MODULATION/modulation_common.h"
|
||||||
#include "PHY/NR_REFSIG/ptrs_nr.h"
|
#include "PHY/NR_REFSIG/ptrs_nr.h"
|
||||||
@@ -297,7 +297,6 @@ int main(int argc, char **argv)
|
|||||||
uint8_t n_tx=1,n_rx=1;
|
uint8_t n_tx=1,n_rx=1;
|
||||||
uint8_t round;
|
uint8_t round;
|
||||||
uint8_t num_rounds = 4;
|
uint8_t num_rounds = 4;
|
||||||
int ldpc_offload_flag = 0;
|
|
||||||
char gNBthreads[128]="n";
|
char gNBthreads[128]="n";
|
||||||
|
|
||||||
channel_desc_t *gNB2UE;
|
channel_desc_t *gNB2UE;
|
||||||
@@ -360,7 +359,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
FILE *scg_fd=NULL;
|
FILE *scg_fd=NULL;
|
||||||
|
|
||||||
while ((c = getopt(argc, argv, "--:O:f:hA:p:f:g:i:n:s:S:t:v:x:y:z:o:M:N:F:GR:d:PI:L:a:b:e:m:w:T:U:q:X:Y:Z:c")) != -1) {
|
while ((c = getopt(argc, argv, "--:O:f:hA:p:f:g:i:n:s:S:t:v:x:y:z:o:M:N:F:GR:d:PI:L:a:b:e:m:w:T:U:q:X:Y:Z:")) != -1) {
|
||||||
|
|
||||||
/* ignore long options starting with '--', option '-O' and their arguments that are handled by configmodule */
|
/* ignore long options starting with '--', option '-O' and their arguments that are handled by configmodule */
|
||||||
/* with this opstring getopt returns 1 for non-option arguments, refer to 'man 3 getopt' */
|
/* with this opstring getopt returns 1 for non-option arguments, refer to 'man 3 getopt' */
|
||||||
@@ -412,10 +411,6 @@ int main(int argc, char **argv)
|
|||||||
n_trials = atoi(optarg);
|
n_trials = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'c':
|
|
||||||
ldpc_offload_flag = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
snr0 = atof(optarg);
|
snr0 = atof(optarg);
|
||||||
printf("Setting SNR0 to %f\n",snr0);
|
printf("Setting SNR0 to %f\n",snr0);
|
||||||
@@ -580,7 +575,6 @@ int main(int argc, char **argv)
|
|||||||
//printf("-j Relative strength of second intefering gNB (in dB) - cell_id mod 3 = 2\n");
|
//printf("-j Relative strength of second intefering gNB (in dB) - cell_id mod 3 = 2\n");
|
||||||
printf("-R N_RB_DL\n");
|
printf("-R N_RB_DL\n");
|
||||||
printf("-O oversampling factor (1,2,4,8,16)\n");
|
printf("-O oversampling factor (1,2,4,8,16)\n");
|
||||||
printf("-c ldpc offload flag\n");
|
|
||||||
printf("-A Interpolation_filname Run with Abstraction to generate Scatter plot using interpolation polynomial in file\n");
|
printf("-A Interpolation_filname Run with Abstraction to generate Scatter plot using interpolation polynomial in file\n");
|
||||||
//printf("-C Generate Calibration information for Abstraction (effective SNR adjustment to remove Pe bias w.r.t. AWGN)\n");
|
//printf("-C Generate Calibration information for Abstraction (effective SNR adjustment to remove Pe bias w.r.t. AWGN)\n");
|
||||||
printf("-f raw file containing RRC configuration (generated by gNB)\n");
|
printf("-f raw file containing RRC configuration (generated by gNB)\n");
|
||||||
@@ -640,7 +634,6 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
gNB = RC.gNB[0];
|
gNB = RC.gNB[0];
|
||||||
gNB->ofdm_offset_divisor = UINT_MAX;
|
gNB->ofdm_offset_divisor = UINT_MAX;
|
||||||
gNB->ldpc_offload_flag = ldpc_offload_flag;
|
|
||||||
gNB->phase_comp = true; // we need to perform phase compensation, otherwise everything will fail
|
gNB->phase_comp = true; // we need to perform phase compensation, otherwise everything will fail
|
||||||
frame_parms = &gNB->frame_parms; //to be initialized I suppose (maybe not necessary for PBCH)
|
frame_parms = &gNB->frame_parms; //to be initialized I suppose (maybe not necessary for PBCH)
|
||||||
frame_parms->nb_antennas_tx = n_tx;
|
frame_parms->nb_antennas_tx = n_tx;
|
||||||
@@ -849,6 +842,7 @@ int main(int argc, char **argv)
|
|||||||
memcpy(&UE->frame_parms,frame_parms,sizeof(NR_DL_FRAME_PARMS));
|
memcpy(&UE->frame_parms,frame_parms,sizeof(NR_DL_FRAME_PARMS));
|
||||||
UE->frame_parms.nb_antennas_rx = n_rx;
|
UE->frame_parms.nb_antennas_rx = n_rx;
|
||||||
UE->frame_parms.nb_antenna_ports_gNB = n_tx;
|
UE->frame_parms.nb_antenna_ports_gNB = n_tx;
|
||||||
|
UE->nrLDPC_coding_interface = gNB->nrLDPC_coding_interface;
|
||||||
UE->max_ldpc_iterations = max_ldpc_iterations;
|
UE->max_ldpc_iterations = max_ldpc_iterations;
|
||||||
init_nr_ue_phy_cpu_stats(&UE->phy_cpu_stats);
|
init_nr_ue_phy_cpu_stats(&UE->phy_cpu_stats);
|
||||||
|
|
||||||
@@ -1337,8 +1331,7 @@ int main(int argc, char **argv)
|
|||||||
free(UE->phy_sim_pdsch_dl_ch_estimates_ext);
|
free(UE->phy_sim_pdsch_dl_ch_estimates_ext);
|
||||||
free(UE->phy_sim_dlsch_b);
|
free(UE->phy_sim_dlsch_b);
|
||||||
|
|
||||||
if (gNB->ldpc_offload_flag)
|
free_nrLDPC_coding_interface(&gNB->nrLDPC_coding_interface);
|
||||||
free_LDPClib(&ldpc_interface_offload);
|
|
||||||
|
|
||||||
if (output_fd)
|
if (output_fd)
|
||||||
fclose(output_fd);
|
fclose(output_fd);
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
#include "PHY/defs_nr_common.h"
|
#include "PHY/defs_nr_common.h"
|
||||||
#include "PHY/defs_nr_UE.h"
|
#include "PHY/defs_nr_UE.h"
|
||||||
#include "PHY/defs_gNB.h"
|
#include "PHY/defs_gNB.h"
|
||||||
|
#include "PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface.h"
|
||||||
#include "PHY/INIT/nr_phy_init.h"
|
#include "PHY/INIT/nr_phy_init.h"
|
||||||
#include "PHY/NR_REFSIG/refsig_defs_ue.h"
|
#include "PHY/NR_REFSIG/refsig_defs_ue.h"
|
||||||
#include "PHY/MODULATION/modulation_eNB.h"
|
#include "PHY/MODULATION/modulation_eNB.h"
|
||||||
@@ -90,28 +91,6 @@ void deref_sched_response(int _)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int nr_postDecode_sim(PHY_VARS_gNB *gNB, ldpcDecode_t *rdata, int *nb_ok)
|
|
||||||
{
|
|
||||||
NR_UL_gNB_HARQ_t *ulsch_harq = rdata->ulsch_harq;
|
|
||||||
int r = rdata->segment_r;
|
|
||||||
|
|
||||||
bool decodeSuccess = (rdata->decodeIterations <= rdata->decoderParms.numMaxIter);
|
|
||||||
ulsch_harq->processedSegments++;
|
|
||||||
|
|
||||||
if (decodeSuccess) {
|
|
||||||
memcpy(ulsch_harq->b+rdata->offset,
|
|
||||||
ulsch_harq->c[r],
|
|
||||||
rdata->Kr_bytes - (ulsch_harq->F>>3) -((ulsch_harq->C>1)?3:0));
|
|
||||||
}
|
|
||||||
|
|
||||||
// if all segments are done
|
|
||||||
if (rdata->nbSegments == ulsch_harq->processedSegments) {
|
|
||||||
return *nb_ok == rdata->nbSegments;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
nrUE_params_t nrUE_params;
|
nrUE_params_t nrUE_params;
|
||||||
|
|
||||||
nrUE_params_t *get_nrUE_params(void) {
|
nrUE_params_t *get_nrUE_params(void) {
|
||||||
@@ -143,7 +122,6 @@ int main(int argc, char **argv)
|
|||||||
NR_DL_FRAME_PARMS *frame_parms;
|
NR_DL_FRAME_PARMS *frame_parms;
|
||||||
double sigma;
|
double sigma;
|
||||||
unsigned char qbits = 8;
|
unsigned char qbits = 8;
|
||||||
int ret=0;
|
|
||||||
int loglvl = OAILOG_WARNING;
|
int loglvl = OAILOG_WARNING;
|
||||||
uint64_t SSB_positions=0x01;
|
uint64_t SSB_positions=0x01;
|
||||||
uint16_t nb_symb_sch = 12;
|
uint16_t nb_symb_sch = 12;
|
||||||
@@ -439,6 +417,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
UE->frame_parms.nb_antennas_tx = n_tx;
|
UE->frame_parms.nb_antennas_tx = n_tx;
|
||||||
UE->frame_parms.nb_antennas_rx = 1;
|
UE->frame_parms.nb_antennas_rx = 1;
|
||||||
|
UE->nrLDPC_coding_interface = gNB->nrLDPC_coding_interface;
|
||||||
|
|
||||||
//phy_init_nr_top(frame_parms);
|
//phy_init_nr_top(frame_parms);
|
||||||
if (init_nr_ue_signal(UE, 1) != 0) {
|
if (init_nr_ue_signal(UE, 1) != 0) {
|
||||||
@@ -448,6 +427,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
nr_init_ul_harq_processes(UE->ul_harq_processes, NR_MAX_ULSCH_HARQ_PROCESSES, UE->frame_parms.N_RB_UL, UE->frame_parms.nb_antennas_tx);
|
nr_init_ul_harq_processes(UE->ul_harq_processes, NR_MAX_ULSCH_HARQ_PROCESSES, UE->frame_parms.N_RB_UL, UE->frame_parms.nb_antennas_tx);
|
||||||
|
|
||||||
|
initFloatingCoresTpool(1, &nrUE_params.Tpool, false, "UE-tpool");
|
||||||
|
|
||||||
unsigned char harq_pid = 0;
|
unsigned char harq_pid = 0;
|
||||||
unsigned int TBS = 8424;
|
unsigned int TBS = 8424;
|
||||||
unsigned int available_bits;
|
unsigned int available_bits;
|
||||||
@@ -530,7 +511,8 @@ int main(int argc, char **argv)
|
|||||||
unsigned int G = available_bits;
|
unsigned int G = available_bits;
|
||||||
|
|
||||||
if (input_fd == NULL) {
|
if (input_fd == NULL) {
|
||||||
nr_ulsch_encoding(UE, ulsch_ue, frame_parms, harq_pid, TBS>>3, G);
|
uint8_t ULSCH_ids[] = {0};
|
||||||
|
nr_ulsch_encoding(UE, ulsch_ue, 0, 0, &G, 1, ULSCH_ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
@@ -594,21 +576,11 @@ int main(int argc, char **argv)
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ldpcDecode_t arr[16] = {0};
|
nr_ulsch_decoding(gNB, frame_parms, frame, subframe, &G, &UE_id, 1);
|
||||||
task_ans_t ans[16] = {0};
|
bool crc_valid = check_crc(harq_process_gNB->b, lenWithCrc(1, (harq_process_gNB->TBS) << 3), crcType(1, (harq_process_gNB->TBS) << 3));
|
||||||
thread_info_tm_t t_info = {.buf = (uint8_t *)arr, .cap = 16, .len = 0, .ans = ans};
|
if (!crc_valid) {
|
||||||
int nbDecode =
|
|
||||||
nr_ulsch_decoding(gNB, UE_id, channel_output_fixed, frame_parms, rel15_ul, frame, subframe, harq_pid, G, &t_info);
|
|
||||||
DevAssert(nbDecode > 0);
|
|
||||||
|
|
||||||
int nb_ok = 0;
|
|
||||||
join_task_ans(t_info.ans, t_info.len);
|
|
||||||
for (size_t i = 0; i < nbDecode; ++i) {
|
|
||||||
ret = nr_postDecode_sim(gNB, &arr[i], &nb_ok);
|
|
||||||
}
|
|
||||||
nbDecode = 0;
|
|
||||||
if (ret)
|
|
||||||
n_errors++;
|
n_errors++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("*****************************************\n");
|
printf("*****************************************\n");
|
||||||
@@ -633,6 +605,8 @@ int main(int argc, char **argv)
|
|||||||
free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list[i].max_num_of_symbol_per_slot_list);
|
free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list[i].max_num_of_symbol_per_slot_list);
|
||||||
free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list);
|
free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list);
|
||||||
|
|
||||||
|
free_nrLDPC_coding_interface(&gNB->nrLDPC_coding_interface);
|
||||||
|
|
||||||
term_nr_ue_signal(UE, 1);
|
term_nr_ue_signal(UE, 1);
|
||||||
free(UE);
|
free(UE);
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
#include "NR_ReconfigurationWithSync.h"
|
#include "NR_ReconfigurationWithSync.h"
|
||||||
#include "NR_ServingCellConfig.h"
|
#include "NR_ServingCellConfig.h"
|
||||||
#include "NR_UE-NR-Capability.h"
|
#include "NR_UE-NR-Capability.h"
|
||||||
#include "PHY/CODING/nrLDPC_extern.h"
|
#include "PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface.h"
|
||||||
#include "PHY/INIT/nr_phy_init.h"
|
#include "PHY/INIT/nr_phy_init.h"
|
||||||
#include "PHY/MODULATION/nr_modulation.h"
|
#include "PHY/MODULATION/nr_modulation.h"
|
||||||
#include "PHY/NR_REFSIG/dmrs_nr.h"
|
#include "PHY/NR_REFSIG/dmrs_nr.h"
|
||||||
@@ -212,7 +212,6 @@ int main(int argc, char *argv[])
|
|||||||
double effRate;
|
double effRate;
|
||||||
double effTP;
|
double effTP;
|
||||||
float eff_tp_check = 100;
|
float eff_tp_check = 100;
|
||||||
int ldpc_offload_flag = 0;
|
|
||||||
uint8_t max_rounds = 4;
|
uint8_t max_rounds = 4;
|
||||||
int chest_type[2] = {0};
|
int chest_type[2] = {0};
|
||||||
int enable_ptrs = 0;
|
int enable_ptrs = 0;
|
||||||
@@ -251,7 +250,7 @@ int main(int argc, char *argv[])
|
|||||||
InitSinLUT();
|
InitSinLUT();
|
||||||
|
|
||||||
int c;
|
int c;
|
||||||
while ((c = getopt(argc, argv, "--:O:a:b:c:d:ef:g:h:i:k:m:n:op:q:r:s:t:u:v:w:y:z:A:C:F:G:H:I:M:N:PR:S:T:U:L:ZW:E:X:")) != -1) {
|
while ((c = getopt(argc, argv, "--:O:a:b:c:d:ef:g:h:i:k:m:n:p:q:r:s:t:u:v:w:y:z:A:C:F:G:H:I:M:N:PR:S:T:U:L:ZW:E:X:")) != -1) {
|
||||||
|
|
||||||
/* ignore long options starting with '--', option '-O' and their arguments that are handled by configmodule */
|
/* ignore long options starting with '--', option '-O' and their arguments that are handled by configmodule */
|
||||||
/* with this opstring getopt returns 1 for non-option arguments, refer to 'man 3 getopt' */
|
/* with this opstring getopt returns 1 for non-option arguments, refer to 'man 3 getopt' */
|
||||||
@@ -364,10 +363,6 @@ int main(int argc, char *argv[])
|
|||||||
n_trials = atoi(optarg);
|
n_trials = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'o':
|
|
||||||
ldpc_offload_flag = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'p':
|
case 'p':
|
||||||
extended_prefix_flag = 1;
|
extended_prefix_flag = 1;
|
||||||
break;
|
break;
|
||||||
@@ -531,7 +526,6 @@ int main(int argc, char *argv[])
|
|||||||
printf("-k 3/4 sampling\n");
|
printf("-k 3/4 sampling\n");
|
||||||
printf("-m MCS value\n");
|
printf("-m MCS value\n");
|
||||||
printf("-n Number of trials to simulate\n");
|
printf("-n Number of trials to simulate\n");
|
||||||
printf("-o ldpc offload flag\n");
|
|
||||||
printf("-p Use extended prefix mode\n");
|
printf("-p Use extended prefix mode\n");
|
||||||
printf("-q MCS table\n");
|
printf("-q MCS table\n");
|
||||||
printf("-r Number of allocated resource blocks for PUSCH\n");
|
printf("-r Number of allocated resource blocks for PUSCH\n");
|
||||||
@@ -682,7 +676,6 @@ int main(int argc, char *argv[])
|
|||||||
cfg->carrier_config.num_rx_ant.value = n_rx;
|
cfg->carrier_config.num_rx_ant.value = n_rx;
|
||||||
|
|
||||||
// nr_phy_config_request_sim(gNB,N_RB_DL,N_RB_DL,mu,0,0x01);
|
// nr_phy_config_request_sim(gNB,N_RB_DL,N_RB_DL,mu,0,0x01);
|
||||||
gNB->ldpc_offload_flag = ldpc_offload_flag;
|
|
||||||
gNB->chest_freq = chest_type[0];
|
gNB->chest_freq = chest_type[0];
|
||||||
gNB->chest_time = chest_type[1];
|
gNB->chest_time = chest_type[1];
|
||||||
|
|
||||||
@@ -729,6 +722,7 @@ int main(int argc, char *argv[])
|
|||||||
memcpy(&UE->frame_parms, frame_parms, sizeof(NR_DL_FRAME_PARMS));
|
memcpy(&UE->frame_parms, frame_parms, sizeof(NR_DL_FRAME_PARMS));
|
||||||
UE->frame_parms.nb_antennas_tx = n_tx;
|
UE->frame_parms.nb_antennas_tx = n_tx;
|
||||||
UE->frame_parms.nb_antennas_rx = 0;
|
UE->frame_parms.nb_antennas_rx = 0;
|
||||||
|
UE->nrLDPC_coding_interface = gNB->nrLDPC_coding_interface;
|
||||||
|
|
||||||
if (init_nr_ue_signal(UE, 1) != 0) {
|
if (init_nr_ue_signal(UE, 1) != 0) {
|
||||||
printf("Error at UE NR initialisation\n");
|
printf("Error at UE NR initialisation\n");
|
||||||
@@ -751,6 +745,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
UE_mac->if_module = nr_ue_if_module_init(0);
|
UE_mac->if_module = nr_ue_if_module_init(0);
|
||||||
|
|
||||||
|
initFloatingCoresTpool(threadCnt, &nrUE_params.Tpool, false, "UE-tpool");
|
||||||
|
|
||||||
nr_ue_phy_config_request(&UE_mac->phy_config);
|
nr_ue_phy_config_request(&UE_mac->phy_config);
|
||||||
|
|
||||||
unsigned char harq_pid = 0;
|
unsigned char harq_pid = 0;
|
||||||
@@ -1596,8 +1592,8 @@ int main(int argc, char *argv[])
|
|||||||
num_dmrs_cdm_grps_no_data);
|
num_dmrs_cdm_grps_no_data);
|
||||||
|
|
||||||
free_MIB_NR(mib);
|
free_MIB_NR(mib);
|
||||||
if (gNB->ldpc_offload_flag)
|
|
||||||
free_LDPClib(&ldpc_interface_offload);
|
free_nrLDPC_coding_interface(&gNB->nrLDPC_coding_interface);
|
||||||
|
|
||||||
if (output_fd)
|
if (output_fd)
|
||||||
fclose(output_fd);
|
fclose(output_fd);
|
||||||
|
|||||||
Reference in New Issue
Block a user