2021-05-04 14:56:25 +00:00
|
|
|
/* OGT templated version of the lteenb configuration file for 4G and 5G NSA */
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
{
|
|
|
|
|
2020-04-01 11:55:51 +00:00
|
|
|
%if enb.license_server_addr != '0.0.0.0':
|
2020-03-30 11:51:21 +00:00
|
|
|
license_server: {
|
|
|
|
server_addr: "${enb.license_server_addr}",
|
|
|
|
name: "amarisoft",
|
|
|
|
},
|
2020-04-01 11:55:51 +00:00
|
|
|
%endif
|
2020-03-30 11:51:21 +00:00
|
|
|
|
2020-04-02 15:21:47 +00:00
|
|
|
% if enb.rf_dev_type == 'zmq':
|
|
|
|
/* Force sampling rate (if uncommented) */
|
|
|
|
sample_rate: ${enb.sample_rate},
|
|
|
|
%endif
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
/* Log filter: syntax: layer.field=value[,...]
|
|
|
|
|
|
|
|
Possible layers are phy, mac, rlc, pdcp, rrc, nas, s1ap, x2ap, gtpu and
|
|
|
|
all. The 'all' layer is used to address all the layers at the
|
|
|
|
same time.
|
|
|
|
|
|
|
|
field values:
|
|
|
|
|
|
|
|
- 'level': the log level of each layer can be set to 'none',
|
|
|
|
'error', 'info' or 'debug'. Use 'debug' to log all the messages.
|
|
|
|
|
|
|
|
- 'max_size': set the maximum size of the hex dump. 0 means no
|
|
|
|
hex dump. -1 means no limit.
|
|
|
|
*/
|
2020-06-16 12:42:28 +00:00
|
|
|
log_options: "${enb.log_options}",
|
2020-03-30 11:51:21 +00:00
|
|
|
log_filename: "${enb.log_filename}",
|
|
|
|
|
2020-07-15 12:43:51 +00:00
|
|
|
% if enb.enable_pcap == 'true':
|
|
|
|
pcap: {filename:"${enb.pcap_filename}"},
|
|
|
|
%endif
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
/* Enable remote API and Web interface */
|
|
|
|
com_addr: "${enb.addr}:9001",
|
|
|
|
|
|
|
|
/* RF driver configuration */
|
|
|
|
include "amarisoft_rf_driver.cfg",
|
|
|
|
|
2020-07-01 13:44:09 +00:00
|
|
|
% if enb.enable_dl_awgn:
|
|
|
|
channel_dl: {
|
|
|
|
type: "awgn",
|
|
|
|
snr: ${enb.dl_awgn_snr}
|
|
|
|
},
|
|
|
|
% endif
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
mme_list: [
|
|
|
|
{
|
2020-06-11 11:15:53 +00:00
|
|
|
s1ap_bind_addr: "${enb.addr}",
|
2020-03-30 11:51:21 +00:00
|
|
|
/* address of MME for S1AP connection. Must be modified if the MME
|
|
|
|
runs on a different host. */
|
|
|
|
mme_addr: "${enb.mme_addr}",
|
|
|
|
},
|
|
|
|
],
|
|
|
|
/* GTP bind address (=address of the ethernet interface connected to
|
|
|
|
the MME). Must be modified if the MME runs on a different host. */
|
2020-04-14 20:24:00 +00:00
|
|
|
gtp_addr: "${enb.gtp_bind_addr}",
|
2020-03-30 11:51:21 +00:00
|
|
|
|
|
|
|
/* high 20 bits of SIB1.cellIdentifier */
|
2020-04-20 12:20:43 +00:00
|
|
|
enb_id: ${enb.id},
|
2020-03-30 11:51:21 +00:00
|
|
|
|
2021-05-04 14:56:25 +00:00
|
|
|
% if int(enb.num_nr_cells) > 0:
|
|
|
|
nr_support: true,
|
|
|
|
% endif
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
/* list of cells */
|
|
|
|
cell_list: [
|
2020-04-06 12:51:31 +00:00
|
|
|
|
2020-04-17 14:23:54 +00:00
|
|
|
%for cell in enb.cell_list:
|
2021-05-04 14:56:25 +00:00
|
|
|
%if loop.index == 0:
|
2020-04-06 12:51:31 +00:00
|
|
|
{
|
2020-04-17 14:23:54 +00:00
|
|
|
dl_earfcn: ${cell.dl_earfcn},
|
2020-04-21 19:14:30 +00:00
|
|
|
rf_port: ${cell.rf_port},
|
2020-04-17 14:23:54 +00:00
|
|
|
cell_id: ${cell.cell_id},
|
2020-04-20 15:02:08 +00:00
|
|
|
n_id_cell: ${cell.pci},
|
2020-09-23 15:03:21 +00:00
|
|
|
tac: 0x0007,
|
2020-09-30 12:46:27 +00:00
|
|
|
root_sequence_index: ${loop.index * 10 + 204}, /* PRACH root sequence index */
|
2020-04-06 12:51:31 +00:00
|
|
|
|
2020-04-20 10:15:06 +00:00
|
|
|
ncell_list: [
|
2020-11-09 17:52:05 +00:00
|
|
|
%for ncell in cell.ncell_list:
|
|
|
|
{ n_id_cell: ${ncell.pci}, dl_earfcn: ${ncell.dl_earfcn}, cell_id: ${ncell.cell_id}, tac: 7 },
|
2020-04-20 10:15:06 +00:00
|
|
|
%endfor
|
|
|
|
],
|
|
|
|
|
2020-04-06 12:51:31 +00:00
|
|
|
scell_list: [
|
2020-04-17 14:23:54 +00:00
|
|
|
%for scell_id in cell.scell_list:
|
|
|
|
{ cell_id: ${scell_id}, cross_carrier_scheduling: false, scheduling_cell_id: ${cell.cell_id}, ul_allowed: true},
|
2021-05-04 14:56:25 +00:00
|
|
|
%endfor
|
|
|
|
],
|
|
|
|
|
|
|
|
nr_scell_list: [
|
|
|
|
%for nr_scell_id in cell.nr_scell_list:
|
|
|
|
{ cell_id: ${nr_scell_id} },
|
2020-04-17 14:23:54 +00:00
|
|
|
%endfor
|
2020-04-06 12:51:31 +00:00
|
|
|
],
|
2020-03-30 11:51:21 +00:00
|
|
|
},
|
2021-05-04 14:56:25 +00:00
|
|
|
%endif
|
2020-04-17 14:23:54 +00:00
|
|
|
%endfor
|
2020-03-30 11:51:21 +00:00
|
|
|
], /* cell_list */
|
|
|
|
|
2021-05-04 14:56:25 +00:00
|
|
|
% if int(enb.num_nr_cells) > 0:
|
|
|
|
|
|
|
|
nr_cell_list: [
|
|
|
|
|
|
|
|
%for nr_cell in enb.nr_cell_list:
|
|
|
|
%if loop.index == 0:
|
|
|
|
{
|
|
|
|
rf_port: ${nr_cell.rf_port},
|
|
|
|
cell_id: ${nr_cell.cell_id},
|
|
|
|
band: ${nr_cell.band},
|
|
|
|
dl_nr_arfcn: ${nr_cell.dl_nr_arfcn},
|
|
|
|
},
|
|
|
|
%endif
|
|
|
|
%endfor
|
|
|
|
|
|
|
|
], /* nr_cell_list */
|
|
|
|
|
|
|
|
% endif
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
/* default cell parameters */
|
|
|
|
cell_default: {
|
2020-04-06 12:51:31 +00:00
|
|
|
/* Broadcasted PLMN identities */
|
|
|
|
plmn_list: [
|
2020-07-09 13:55:04 +00:00
|
|
|
"${'{0:03}'.format(int(enb.mcc))}${'{0:02}'.format(int(enb.mnc))}",
|
2020-04-06 12:51:31 +00:00
|
|
|
],
|
|
|
|
|
2020-10-15 13:46:29 +00:00
|
|
|
% if enb.get('duplex') == "tdd":
|
|
|
|
uldl_config: ${enb.tdd_uldl_config},
|
|
|
|
sp_config: ${enb.tdd_special_subframe_pattern},
|
|
|
|
% endif
|
|
|
|
|
2020-04-14 12:04:32 +00:00
|
|
|
% if int(enb.get('transmission_mode')) == 1:
|
2020-03-30 11:51:21 +00:00
|
|
|
n_antenna_dl: 1, /* number of DL antennas */
|
|
|
|
n_antenna_ul: 1, /* number of UL antennas */
|
2020-04-14 12:04:32 +00:00
|
|
|
% else:
|
|
|
|
n_antenna_dl: 2, /* number of DL antennas */
|
|
|
|
n_antenna_ul: 2, /* number of UL antennas */
|
|
|
|
% endif
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
n_rb_dl: ${enb.num_prb}, /* Bandwidth: 25: 5 MHz, 50: 10 MHz, 75: 15 MHz, 100: 20 MHz */
|
|
|
|
cyclic_prefix: "normal",
|
|
|
|
|
|
|
|
phich_duration: "normal",
|
|
|
|
phich_resource: "1", /* ratio of NG */
|
|
|
|
|
|
|
|
/* System Information Block type 1 */
|
|
|
|
sib1: "amarisoft_sib1.asn",
|
|
|
|
|
|
|
|
/* other SIBs, in same order as the scheduling list in SIB 1 */
|
|
|
|
sib_sched_list: [ "amarisoft_sib23.asn" ],
|
|
|
|
|
2021-05-04 14:56:25 +00:00
|
|
|
% if int(enb.num_prb) == 6:
|
2020-03-30 11:51:21 +00:00
|
|
|
si_coderate: 0.30, /* maximum code rate for SI/RA/P-RNTI messages */
|
2021-05-04 14:56:25 +00:00
|
|
|
% else:
|
|
|
|
si_coderate: 0.20, /* maximum code rate for SI/RA/P-RNTI messages */
|
|
|
|
% endif
|
2020-03-30 11:51:21 +00:00
|
|
|
si_pdcch_format: 2, /* 2 or 3. Log2 of the number of CCEs for PDCCH
|
|
|
|
for SI/RA/P-RNTI */
|
|
|
|
|
|
|
|
n_symb_cch: 0, /* number of symbols for CCH (0 = auto) */
|
|
|
|
|
|
|
|
/* PDSCH dedicated config (currently same for all UEs) */
|
|
|
|
pdsch_dedicated: {
|
|
|
|
p_a: 0,
|
|
|
|
},
|
|
|
|
|
|
|
|
/* If defined, force for number of CCEs for UE specific PDCCH to
|
|
|
|
2^pdcch_format. Otherwise it is computed from the reported
|
|
|
|
CQI. Range: 0 to 3. */
|
2020-06-22 11:10:24 +00:00
|
|
|
//pdcch_format: 1,
|
2020-03-30 11:51:21 +00:00
|
|
|
|
|
|
|
/* if defined, force the PDSCH MCS for all UEs. Otherwise it is
|
|
|
|
computed from the reported CQI */
|
|
|
|
/* pdsch_mcs: 12, */
|
|
|
|
|
|
|
|
/* PUSCH dedicated config (currently same for all UEs) */
|
|
|
|
pusch_dedicated: {
|
|
|
|
beta_offset_ack_index: 9,
|
|
|
|
beta_offset_ri_index: 6,
|
|
|
|
beta_offset_cqi_index: 6,
|
|
|
|
},
|
|
|
|
|
|
|
|
/* MCS for Msg3 (=CCCH RRC Connection Request) */
|
|
|
|
pusch_msg3_mcs: 0,
|
|
|
|
|
|
|
|
/* this CQI value is assumed when none is received from the UE */
|
2021-05-04 14:56:25 +00:00
|
|
|
% if int(enb.num_prb) == 6:
|
2020-03-30 11:51:21 +00:00
|
|
|
initial_cqi: 5,
|
2021-05-04 14:56:25 +00:00
|
|
|
% else:
|
|
|
|
initial_cqi: 3,
|
|
|
|
% endif
|
2020-03-30 11:51:21 +00:00
|
|
|
|
|
|
|
/* if defined, force the PUSCH MCS for all UEs. Otherwise it is
|
|
|
|
computed from the last received SRS/PUSCH. */
|
|
|
|
// pusch_mcs: 18,
|
|
|
|
|
|
|
|
transmission_mode: ${enb.transmission_mode},
|
|
|
|
|
2021-05-04 14:56:25 +00:00
|
|
|
dl_256qam: true,
|
|
|
|
ul_64qam: true,
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
/* Scheduling request period (ms). Must be >= 40 for HD-FDD */
|
|
|
|
sr_period: 20,
|
|
|
|
|
|
|
|
/* CQI report config */
|
2020-06-22 11:10:24 +00:00
|
|
|
cqi_period: 40, /* period (ms). Must be >= 32 for HD-FDD */
|
2020-03-30 11:51:21 +00:00
|
|
|
|
|
|
|
/* RI reporting is done with a period of m_ri * cqi_period.
|
|
|
|
m_ri = 0 (default) disables RI reporting. */
|
2020-05-28 13:22:18 +00:00
|
|
|
% if int(enb.get('transmission_mode')) > 1:
|
|
|
|
m_ri: 8,
|
|
|
|
% endif
|
2020-03-30 11:51:21 +00:00
|
|
|
|
2020-04-06 12:51:31 +00:00
|
|
|
pucch_dedicated: {
|
|
|
|
/* ack/nack feedback mode when carrier aggregation is
|
|
|
|
enabled. It can be "cs" (for at most two scells) or "pucch3"
|
|
|
|
(used in all cases if more than two cells). */
|
|
|
|
ack_nack_feedback_mode_ca: "cs",
|
|
|
|
|
|
|
|
/* TDD ack/nack feedback mode when a rel 10 UE is detected. It
|
|
|
|
can be "bundling", "multiplexing", "cs" or "pucch3". By
|
|
|
|
default is it the same as tdd_ack_nack_feedback_mode. */
|
2020-10-15 13:46:29 +00:00
|
|
|
% if enb.get('duplex') == "tdd":
|
|
|
|
tdd_ack_nack_feedback_mode: "bundling",
|
2020-04-06 12:51:31 +00:00
|
|
|
// tdd_ack_nack_feedback_mode_r10: "cs",
|
2020-10-15 13:46:29 +00:00
|
|
|
% endif
|
2020-04-06 12:51:31 +00:00
|
|
|
|
2021-05-04 14:56:25 +00:00
|
|
|
n1_pucch_sr_count: 11, /* increase if more UEs are needed */
|
|
|
|
cqi_pucch_n_rb: 1, /* increase if more UEs are needed */
|
|
|
|
|
2020-04-06 12:51:31 +00:00
|
|
|
/* number of PUCCH 1b CS resources. It determines
|
|
|
|
the maximum number of UEs that can be scheduled in one TTI
|
|
|
|
using carrier aggregation with PUCCH 1b CS ack/nack feedback. */
|
|
|
|
n1_pucch_an_cs_count: 1,
|
|
|
|
|
|
|
|
/* number of resource blocks for PUCCH 3. It determines
|
|
|
|
the maximum number of UEs that can be scheduled in one TTI
|
|
|
|
using carrier aggregation with PUCCH 3 ack/nack feedback. */
|
|
|
|
n3_pucch_an_n_rb: 0,
|
|
|
|
},
|
|
|
|
|
2020-03-30 11:51:21 +00:00
|
|
|
/* SRS dedicated config. All UEs share these
|
|
|
|
parameters. srs_config_index and freq_domain_position are
|
|
|
|
allocated for each UE) */
|
|
|
|
srs_dedicated: {
|
2020-06-22 11:10:24 +00:00
|
|
|
srs_period: 160, /* period (ms). Must be >= 40 for HD-FDD */
|
2020-03-30 11:51:21 +00:00
|
|
|
srs_bandwidth: 1,
|
|
|
|
srs_hopping_bandwidth: 0,
|
|
|
|
},
|
|
|
|
|
|
|
|
/* MAC configuration (same for all UEs) */
|
|
|
|
mac_config: {
|
|
|
|
ul_max_harq_tx: 5, /* max number of HARQ transmissions for uplink */
|
|
|
|
dl_max_harq_tx: 5, /* max number of HARQ transmissions for downlink */
|
2020-09-29 21:10:53 +00:00
|
|
|
ul_max_consecutive_retx: 1000,
|
2020-03-30 11:51:21 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
/* CPU load limitation */
|
|
|
|
pusch_max_its: 6, /* max number of turbo decoder iterations */
|
|
|
|
|
|
|
|
/* dynamic power control */
|
|
|
|
dpc: true,
|
|
|
|
dpc_pusch_snr_target: 15,
|
|
|
|
dpc_pucch_snr_target: 10,
|
|
|
|
|
|
|
|
/* RRC/UP ciphering algorithm preference. EEA0 is always the last. */
|
2020-12-03 13:14:31 +00:00
|
|
|
cipher_algo_pref: [${', '.join(list(dict.fromkeys(enb.cipher_list))).split("eea")[1] if len(list(dict.fromkeys(enb.cipher_list))) > 0 else ''}],
|
2020-03-30 11:51:21 +00:00
|
|
|
/* RRC integrity algorithm preference. EIA0 is always the last. */
|
2020-12-03 13:14:31 +00:00
|
|
|
integ_algo_pref: [${', '.join(list(dict.fromkeys(enb.integrity_list))).split("eia")[1]}],
|
2020-03-30 11:51:21 +00:00
|
|
|
|
|
|
|
/* (in ms) send RRC connection release after this time of network
|
|
|
|
inactivity */
|
2020-08-26 16:19:15 +00:00
|
|
|
inactivity_timer: ${enb.inactivity_timer},
|
2020-03-30 11:51:21 +00:00
|
|
|
|
|
|
|
/* SRB configuration */
|
|
|
|
srb_config: [
|
|
|
|
{
|
|
|
|
id: 1,
|
|
|
|
maxRetxThreshold: 32,
|
|
|
|
t_Reordering: 45,
|
|
|
|
t_PollRetransmit: 60,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: 2 ,
|
|
|
|
maxRetxThreshold: 32,
|
|
|
|
t_Reordering: 45,
|
|
|
|
t_PollRetransmit: 60,
|
|
|
|
}
|
|
|
|
],
|
|
|
|
|
|
|
|
/* DRB configuration */
|
|
|
|
drb_config: "amarisoft_drb.cfg",
|
enb: add measurement modifier to scenario files
this commit adds basic support for configuring measurements in the
eNB config. It currently support A1, A2, and A3 events.
By default UE measurements are turned off and need to be enabled by
configuring an event with:
+mod-enb-meas-event@{name},{report_type},{value},{hysterisis},{time to trigger}
For example one can update the a2 and a3 event with:
+mod-enb-meas-event@a2,rsrq,-40,2,480+mod-enb-meas-event@a3,rsrp,6,1,512
Change-Id: Ia7657be2396886840570bc41645450a268b4cfff
2020-04-07 12:38:27 +00:00
|
|
|
|
|
|
|
% if enb.enable_measurements:
|
|
|
|
/* measurement configuration */
|
|
|
|
meas_config_desc: {
|
|
|
|
a1_report_type: "${enb.a1_report_type}",
|
|
|
|
a1_${enb.a1_report_type}: ${enb.a1_report_value},
|
|
|
|
a1_hysteresis: ${enb.a1_hysteresis},
|
|
|
|
a1_time_to_trigger: ${enb.a1_time_to_trigger},
|
|
|
|
a2_report_type: "${enb.a2_report_type}",
|
|
|
|
a2_${enb.a2_report_type}: ${enb.a2_report_value},
|
|
|
|
a2_hysteresis: ${enb.a2_hysteresis},
|
|
|
|
a2_time_to_trigger: ${enb.a2_time_to_trigger},
|
|
|
|
a3_report_type: "${enb.a3_report_type}",
|
|
|
|
a3_offset: ${enb.a3_report_value},
|
|
|
|
a3_hysteresis: ${enb.a3_hysteresis},
|
|
|
|
a3_time_to_trigger: ${enb.a3_time_to_trigger},
|
2021-05-04 14:56:25 +00:00
|
|
|
% if int(enb.num_nr_cells) > 0:
|
|
|
|
// NR events hard-coded
|
|
|
|
nr_b1_report_type: "rsrp",
|
|
|
|
nr_b1_rsrp: -100,
|
|
|
|
nr_b1_hysteresis: 0,
|
|
|
|
nr_b1_time_to_trigger: 100,
|
|
|
|
nr_rsrp_filter_coeff: 3
|
|
|
|
% endif
|
enb: add measurement modifier to scenario files
this commit adds basic support for configuring measurements in the
eNB config. It currently support A1, A2, and A3 events.
By default UE measurements are turned off and need to be enabled by
configuring an event with:
+mod-enb-meas-event@{name},{report_type},{value},{hysterisis},{time to trigger}
For example one can update the a2 and a3 event with:
+mod-enb-meas-event@a2,rsrq,-40,2,480+mod-enb-meas-event@a3,rsrp,6,1,512
Change-Id: Ia7657be2396886840570bc41645450a268b4cfff
2020-04-07 12:38:27 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
/* measurement gap configuration */
|
|
|
|
meas_gap_config: "gp0",
|
|
|
|
|
|
|
|
/* if true, initiate a handover when a suitable measurement report
|
|
|
|
is received */
|
|
|
|
ho_from_meas: true,
|
|
|
|
% endif
|
2020-03-30 11:51:21 +00:00
|
|
|
},
|
2021-05-04 14:56:25 +00:00
|
|
|
|
|
|
|
% if int(enb.num_nr_cells) > 0:
|
|
|
|
nr_cell_default: {
|
|
|
|
subcarrier_spacing: 15, /* kHz */
|
|
|
|
ssb_subcarrier_spacing: 30,
|
|
|
|
bandwidth: ${enb.nr_bandwidth}, /* MHz */
|
|
|
|
n_antenna_dl: 1,
|
|
|
|
n_antenna_ul: 1,
|
|
|
|
|
|
|
|
/* force the timing TA offset (optional) */
|
|
|
|
n_timing_advance_offset: 0,
|
|
|
|
|
|
|
|
tdd_ul_dl_config: {
|
|
|
|
pattern1: {
|
|
|
|
period: 10,
|
|
|
|
dl_slots: 6,
|
|
|
|
dl_symbols: 0,
|
|
|
|
ul_slots: 3,
|
|
|
|
ul_symbols: 0,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
ssb_pos_bitmap: "10000000",
|
|
|
|
ssb_period: 20, /* in ms */
|
|
|
|
n_id_cell: 500,
|
|
|
|
|
|
|
|
root_sequence_index: 1, /* PRACH root sequence index */
|
|
|
|
|
|
|
|
/* Scheduling request period (slots). */
|
|
|
|
sr_period: 40,
|
|
|
|
|
|
|
|
dmrs_type_a_pos: 2,
|
|
|
|
|
|
|
|
/* to limit the number of HARQ feedback in UL, use pdsch_harq_ack_max;
|
|
|
|
allows to workaround issues with SM-G977N for example */
|
|
|
|
//pdsch_harq_ack_max: 2,
|
|
|
|
|
|
|
|
prach: {
|
|
|
|
prach_config_index: 0,
|
|
|
|
msg1_subcarrier_spacing: 15, /* kHz */
|
|
|
|
msg1_fdm: 1,
|
|
|
|
% if int(enb.nr_bandwidth) == 10:
|
|
|
|
msg1_frequency_start: 1,
|
|
|
|
% else:
|
|
|
|
msg1_frequency_start: 3,
|
|
|
|
% endif
|
|
|
|
zero_correlation_zone_config: 0,
|
|
|
|
preamble_received_target_power: -110, /* in dBm */
|
|
|
|
preamble_trans_max: 7,
|
|
|
|
power_ramping_step: 4, /* in dB */
|
|
|
|
ra_response_window: 10, /* in slots */
|
|
|
|
restricted_set_config: "unrestricted_set",
|
|
|
|
ra_contention_resolution_timer: 64, /* in ms */
|
|
|
|
ssb_per_prach_occasion: 1,
|
|
|
|
cb_preambles_per_ssb: 8,
|
|
|
|
},
|
|
|
|
|
|
|
|
pdcch: {
|
|
|
|
common_coreset: {
|
|
|
|
rb_start: -1, /* -1 to have the maximum bandwidth */
|
|
|
|
l_crb: -1, /* -1 means all the bandwidth */
|
|
|
|
duration: 1,
|
|
|
|
precoder_granularity: "sameAsREG_bundle",
|
|
|
|
//dmrs_scid: 0,
|
|
|
|
},
|
|
|
|
|
|
|
|
dedicated_coreset: {
|
|
|
|
rb_start: -1, /* -1 to have the maximum bandwidth */
|
|
|
|
l_crb: -1, /* -1 means all the bandwidth */
|
|
|
|
duration: 1,
|
|
|
|
precoder_granularity: "sameAsREG_bundle",
|
|
|
|
//dmrs_scid: 0,
|
|
|
|
},
|
|
|
|
|
|
|
|
css: {
|
|
|
|
n_candidates: [ 1, 1, 1, 0, 0 ],
|
|
|
|
},
|
|
|
|
rar_al_index: 2,
|
|
|
|
|
|
|
|
uss: {
|
|
|
|
n_candidates: [ 0, 2, 1, 0, 0 ],
|
|
|
|
dci_0_1_and_1_1: false,
|
|
|
|
force_dci_0_0: true, // Forces DCI format 0_0 for Uplink
|
|
|
|
force_dci_1_0: true, // Forces DCI format 1_0 for Downlink
|
|
|
|
},
|
|
|
|
al_index: 1,
|
|
|
|
},
|
|
|
|
|
|
|
|
pdsch: {
|
|
|
|
mapping_type: "typeA",
|
|
|
|
start_symb: 1,
|
|
|
|
n_symb: 13,
|
|
|
|
dmrs_add_pos: 1,
|
|
|
|
dmrs_type: 1,
|
|
|
|
dmrs_max_len: 1,
|
|
|
|
k0: 0, /* delay in slots from DCI to PDSCH */
|
|
|
|
/* delay in slots from PDSCH to PUCCH/PUSCH ACK/NACK */
|
|
|
|
k1: [ 8, 7, 6, 6, 5, 4],
|
|
|
|
mcs_table: "qam64",
|
|
|
|
|
|
|
|
rar_mcs: 2,
|
|
|
|
/* If defined, force the PDSCH MCS for all UEs. Otherwise it is computed
|
|
|
|
* based on DL channel quality estimation */
|
|
|
|
/* mcs: 24, */
|
|
|
|
},
|
|
|
|
|
|
|
|
csi_rs: {
|
|
|
|
nzp_csi_rs_resource: [
|
|
|
|
{
|
|
|
|
csi_rs_id: 0,
|
|
|
|
n_ports: 1,
|
|
|
|
frequency_domain_allocation: "row2",
|
|
|
|
bitmap: "100000000000",
|
|
|
|
cdm_type: "no_cdm",
|
|
|
|
density: 1,
|
|
|
|
first_symb: 4,
|
|
|
|
rb_start: 0,
|
|
|
|
l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */
|
|
|
|
power_control_offset: 0, /* dB */
|
|
|
|
power_control_offset_ss: 0, /* dB */
|
|
|
|
scrambling_id: 0,
|
|
|
|
period: 80,
|
|
|
|
offset: 1, /* != 0 to avoid collision with SSB */
|
|
|
|
qcl_info_periodic_csi_rs: 0,
|
|
|
|
},
|
|
|
|
#define USE_TRS
|
|
|
|
#ifdef USE_TRS
|
|
|
|
/* TRS : period of 40 ms, slots 1 & 2, symbols 4 and 8 */
|
|
|
|
{
|
|
|
|
csi_rs_id: 1,
|
|
|
|
n_ports: 1,
|
|
|
|
frequency_domain_allocation: "row1",
|
|
|
|
bitmap: "0001",
|
|
|
|
cdm_type: "no_cdm",
|
|
|
|
density: 3,
|
|
|
|
first_symb: 4,
|
|
|
|
rb_start: 0,
|
|
|
|
l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */
|
|
|
|
power_control_offset: 0, /* dB */
|
|
|
|
power_control_offset_ss: 0, /* dB */
|
|
|
|
scrambling_id: 0,
|
|
|
|
period: 40,
|
|
|
|
offset: 11,
|
|
|
|
qcl_info_periodic_csi_rs: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
csi_rs_id: 2,
|
|
|
|
n_ports: 1,
|
|
|
|
frequency_domain_allocation: "row1",
|
|
|
|
bitmap: "0001",
|
|
|
|
cdm_type: "no_cdm",
|
|
|
|
density: 3,
|
|
|
|
first_symb: 8,
|
|
|
|
rb_start: 0,
|
|
|
|
l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */
|
|
|
|
power_control_offset: 0, /* dB */
|
|
|
|
power_control_offset_ss: 0, /* dB */
|
|
|
|
scrambling_id: 0,
|
|
|
|
period: 40,
|
|
|
|
offset: 11,
|
|
|
|
qcl_info_periodic_csi_rs: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
csi_rs_id: 3,
|
|
|
|
n_ports: 1,
|
|
|
|
frequency_domain_allocation: "row1",
|
|
|
|
bitmap: "0001",
|
|
|
|
cdm_type: "no_cdm",
|
|
|
|
density: 3,
|
|
|
|
first_symb: 4,
|
|
|
|
rb_start: 0,
|
|
|
|
l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */
|
|
|
|
power_control_offset: 0, /* dB */
|
|
|
|
power_control_offset_ss: 0, /* dB */
|
|
|
|
scrambling_id: 0,
|
|
|
|
period: 40,
|
|
|
|
offset: 12,
|
|
|
|
qcl_info_periodic_csi_rs: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
csi_rs_id: 4,
|
|
|
|
n_ports: 1,
|
|
|
|
frequency_domain_allocation: "row1",
|
|
|
|
bitmap: "0001",
|
|
|
|
cdm_type: "no_cdm",
|
|
|
|
density: 3,
|
|
|
|
first_symb: 8,
|
|
|
|
rb_start: 0,
|
|
|
|
l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */
|
|
|
|
power_control_offset: 0, /* dB */
|
|
|
|
power_control_offset_ss: 0, /* dB */
|
|
|
|
scrambling_id: 0,
|
|
|
|
period: 40,
|
|
|
|
offset: 12,
|
|
|
|
qcl_info_periodic_csi_rs: 0,
|
|
|
|
},
|
|
|
|
#endif
|
|
|
|
],
|
|
|
|
nzp_csi_rs_resource_set: [
|
|
|
|
{
|
|
|
|
csi_rs_set_id: 0,
|
|
|
|
nzp_csi_rs_resources: [ 0 ],
|
|
|
|
repetition: false,
|
|
|
|
},
|
|
|
|
#ifdef USE_TRS
|
|
|
|
{
|
|
|
|
csi_rs_set_id: 1,
|
|
|
|
nzp_csi_rs_resources: [ 1, 2, 3, 4 ],
|
|
|
|
repetition: false,
|
|
|
|
trs_info: true,
|
|
|
|
},
|
|
|
|
#endif
|
|
|
|
],
|
|
|
|
|
|
|
|
csi_im_resource: [
|
|
|
|
{
|
|
|
|
csi_im_id: 0,
|
|
|
|
pattern: 1,
|
|
|
|
subcarrier_location: 8,
|
|
|
|
symbol_location: 8,
|
|
|
|
rb_start: 0,
|
|
|
|
l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */
|
|
|
|
period: 80,
|
|
|
|
offset: 1, /* != 0 to avoid collision with SSB */
|
|
|
|
},
|
|
|
|
],
|
|
|
|
csi_im_resource_set: [
|
|
|
|
{
|
|
|
|
csi_im_set_id: 0,
|
|
|
|
csi_im_resources: [ 0 ],
|
|
|
|
}
|
|
|
|
],
|
|
|
|
/* ZP CSI-RS to set the CSI-IM REs to zero */
|
|
|
|
zp_csi_rs_resource: [
|
|
|
|
{
|
|
|
|
csi_rs_id: 0,
|
|
|
|
frequency_domain_allocation: "row4",
|
|
|
|
bitmap: "100",
|
|
|
|
n_ports: 4,
|
|
|
|
cdm_type: "fd_cdm2",
|
|
|
|
first_symb: 8,
|
|
|
|
density: 1,
|
|
|
|
rb_start: 0,
|
|
|
|
l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */
|
|
|
|
period: 80,
|
|
|
|
offset: 1,
|
|
|
|
},
|
|
|
|
],
|
|
|
|
p_zp_csi_rs_resource_set: [
|
|
|
|
{
|
|
|
|
zp_csi_rs_resources: [ 0 ],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
|
|
|
|
csi_resource_config: [
|
|
|
|
{
|
|
|
|
csi_rsc_config_id: 0,
|
|
|
|
nzp_csi_rs_resource_set_list: [ 0 ],
|
|
|
|
resource_type: "periodic",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
csi_rsc_config_id: 1,
|
|
|
|
csi_im_resource_set_list: [ 0 ],
|
|
|
|
resource_type: "periodic",
|
|
|
|
},
|
|
|
|
#ifdef USE_TRS
|
|
|
|
{
|
|
|
|
csi_rsc_config_id: 2,
|
|
|
|
nzp_csi_rs_resource_set_list: [ 1 ],
|
|
|
|
resource_type: "periodic",
|
|
|
|
},
|
|
|
|
#endif
|
|
|
|
],
|
|
|
|
csi_report_config: [
|
|
|
|
{
|
|
|
|
resources_for_channel_measurement: 0,
|
|
|
|
csi_im_resources_for_interference: 1,
|
|
|
|
report_config_type: "periodic",
|
|
|
|
period: 80,
|
|
|
|
report_quantity: "CRI_RI_PMI_CQI",
|
|
|
|
cqi_table: 2,
|
|
|
|
subband_size: "value1",
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
|
|
|
|
pucch: {
|
|
|
|
pucch_group_hopping: "neither",
|
|
|
|
hopping_id: -1, /* -1 = n_cell_id */
|
|
|
|
p0_nominal: -90,
|
|
|
|
pucch1: {
|
|
|
|
n_cs: 3,
|
|
|
|
n_occ: 3,
|
|
|
|
freq_hopping: false,
|
|
|
|
},
|
|
|
|
pucch2: {
|
|
|
|
n_symb: 2,
|
|
|
|
n_prb: 1,
|
|
|
|
freq_hopping: false,
|
|
|
|
simultaneous_harq_ack_csi: false,
|
|
|
|
max_code_rate: 0.25,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
pusch: {
|
|
|
|
mapping_type: "typeA",
|
|
|
|
n_symb: 14,
|
|
|
|
dmrs_add_pos: 1,
|
|
|
|
dmrs_type: 1,
|
|
|
|
dmrs_max_len: 1,
|
|
|
|
tf_precoding: false,
|
|
|
|
mcs_table: "qam64", /* without transform precoding */
|
|
|
|
mcs_table_tp: "qam64", /* with transform precoding */
|
|
|
|
ldpc_max_its: 5,
|
|
|
|
k2: 4, /* delay in slots from DCI to PUSCH */
|
|
|
|
p0_nominal_with_grant: -90,
|
|
|
|
msg3_k2: 5,
|
|
|
|
msg3_mcs: 4,
|
|
|
|
msg3_delta_power: 0, /* in dB */
|
|
|
|
beta_offset_ack_index: 9,
|
|
|
|
|
|
|
|
/* hardcoded scheduling parameters */
|
|
|
|
n_dmrs_cdm_groups: 1,
|
|
|
|
n_layer: 1,
|
|
|
|
/* if defined, force the PUSCH MCS for all UEs. Otherwise it is
|
|
|
|
computed from the last received PUSCH. */
|
|
|
|
//mcs: 16,
|
|
|
|
//max_mcs: 16,
|
|
|
|
},
|
|
|
|
|
|
|
|
/* MAC configuration */
|
|
|
|
mac_config: {
|
|
|
|
msg3_max_harq_tx: 5,
|
|
|
|
ul_max_harq_tx: 5, /* max number of HARQ transmissions for uplink */
|
|
|
|
dl_max_harq_tx: 5, /* max number of HARQ transmissions for downlink */
|
|
|
|
ul_max_consecutive_retx: 30, /* disconnect UE if reached */
|
|
|
|
dl_max_consecutive_retx: 30, /* disconnect UE if reached */
|
|
|
|
periodic_bsr_timer: 20,
|
|
|
|
retx_bsr_timer: 320,
|
|
|
|
periodic_phr_timer: 500,
|
|
|
|
prohibit_phr_timer: 200,
|
|
|
|
phr_tx_power_factor_change: "dB3",
|
|
|
|
sr_prohibit_timer: 0, /* in ms, 0 to disable the timer */
|
|
|
|
sr_trans_max: 64,
|
|
|
|
},
|
|
|
|
|
|
|
|
cipher_algo_pref: [${', '.join(list(dict.fromkeys(enb.cipher_list))).split("eea")[1] if len(list(dict.fromkeys(enb.cipher_list))) > 0 else ''}],
|
|
|
|
integ_algo_pref: [${', '.join(list(dict.fromkeys(enb.integrity_list))).split("eia")[1]}],
|
|
|
|
|
|
|
|
inactivity_timer: ${enb.inactivity_timer},
|
|
|
|
|
|
|
|
drb_config: "amarisoft_drb_nr.cfg",
|
|
|
|
},
|
|
|
|
% endif
|
|
|
|
}
|