diff --git a/ci-scripts/conf_files/gnb.band78.tm1.162PRB.usrpn300.conf b/ci-scripts/conf_files/gnb.band78.tm1.162PRB.usrpn300.conf
new file mode 100644
index 0000000000..aefbe78887
--- /dev/null
+++ b/ci-scripts/conf_files/gnb.band78.tm1.162PRB.usrpn300.conf
@@ -0,0 +1,240 @@
+Active_gNBs = ( "gNB-Eurecom-5GNRBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+gNBs =
+(
+ {
+ ////////// Identification parameters:
+ gNB_ID = 0xe00;
+
+ cell_type = "CELL_MACRO_GNB";
+
+ gNB_name = "gNB-Eurecom-5GNRBox";
+
+ // Tracking area code, 0x0000 and 0xfffe are reserved values
+ tracking_area_code = 1;
+
+ plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;});
+
+ tr_s_preference = "local_mac"
+
+ ////////// Physical parameters:
+
+ min_rxtxtime = 6;
+
+ servingCellConfigCommon = (
+ {
+ #spCellConfigCommon
+
+ physCellId = 0;
+
+# downlinkConfigCommon
+ #frequencyInfoDL
+ # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP)
+ absoluteFrequencySSB = 621312;
+ dl_frequencyBand = 78;
+ # this is 3600 MHz
+ dl_absoluteFrequencyPointA = 620040;
+ #scs-SpecificCarrierList
+ dl_offstToCarrier = 0;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ dl_subcarrierSpacing = 1;
+ dl_carrierBandwidth = 162;
+ #initialDownlinkBWP
+ #genericParameters
+ # this is RBstart=41,L=24 (275*(L-1))+RBstart
+ initialDLBWPlocationAndBandwidth = 31624;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ initialDLBWPsubcarrierSpacing = 1;
+ #pdcch-ConfigCommon
+ initialDLBWPcontrolResourceSetZero = 12;
+ initialDLBWPsearchSpaceZero = 0;
+
+ #uplinkConfigCommon
+ #frequencyInfoUL
+ ul_frequencyBand = 78;
+ #scs-SpecificCarrierList
+ ul_offstToCarrier = 0;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ ul_subcarrierSpacing = 1;
+ ul_carrierBandwidth = 162;
+ pMax = 20;
+ #initialUplinkBWP
+ #genericParameters
+ initialULBWPlocationAndBandwidth = 31624;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ initialULBWPsubcarrierSpacing = 1;
+ #rach-ConfigCommon
+ #rach-ConfigGeneric
+ prach_ConfigurationIndex = 98;
+#prach_msg1_FDM
+#0 = one, 1=two, 2=four, 3=eight
+ prach_msg1_FDM = 0;
+ prach_msg1_FrequencyStart = 0;
+ zeroCorrelationZoneConfig = 13;
+ preambleReceivedTargetPower = -118;
+#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
+ preambleTransMax = 6;
+#powerRampingStep
+# 0=dB0,1=dB2,2=dB4,3=dB6
+ powerRampingStep = 1;
+#ra_ReponseWindow
+#1,2,4,8,10,20,40,80
+ ra_ResponseWindow = 4;
+#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
+#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
+ ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
+#oneHalf (0..15) 4,8,12,16,...60,64
+ ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
+#ra_ContentionResolutionTimer
+#(0..7) 8,16,24,32,40,48,56,64
+ ra_ContentionResolutionTimer = 7;
+ rsrp_ThresholdSSB = 19;
+#prach-RootSequenceIndex_PR
+#1 = 839, 2 = 139
+ prach_RootSequenceIndex_PR = 2;
+ prach_RootSequenceIndex = 1;
+ # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
+ #
+ msg1_SubcarrierSpacing = 1,
+# restrictedSetConfig
+# 0=unrestricted, 1=restricted type A, 2=restricted type B
+ restrictedSetConfig = 0,
+
+ msg3_DeltaPreamble = 1;
+ p0_NominalWithGrant =-90;
+
+# pucch-ConfigCommon setup :
+# pucchGroupHopping
+# 0 = neither, 1= group hopping, 2=sequence hopping
+ pucchGroupHopping = 0;
+ hoppingId = 40;
+ p0_nominal = -90;
+# ssb_PositionsInBurs_BitmapPR
+# 1=short, 2=medium, 3=long
+ ssb_PositionsInBurst_PR = 2;
+ ssb_PositionsInBurst_Bitmap = 1;
+
+# ssb_periodicityServingCell
+# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
+ ssb_periodicityServingCell = 2;
+
+# dmrs_TypeA_position
+# 0 = pos2, 1 = pos3
+ dmrs_TypeA_Position = 0;
+
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ subcarrierSpacing = 1;
+
+
+ #tdd-UL-DL-ConfigurationCommon
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ referenceSubcarrierSpacing = 1;
+ # pattern1
+ # dl_UL_TransmissionPeriodicity
+ # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
+ dl_UL_TransmissionPeriodicity = 6;
+ nrofDownlinkSlots = 7;
+ nrofDownlinkSymbols = 6;
+ nrofUplinkSlots = 2;
+ nrofUplinkSymbols = 4;
+
+ ssPBCH_BlockPower = -25;
+ }
+
+ );
+
+
+ # ------- SCTP definitions
+ SCTP :
+ {
+ # Number of streams to use in input/output
+ SCTP_INSTREAMS = 2;
+ SCTP_OUTSTREAMS = 2;
+ };
+
+
+ ////////// MME parameters:
+ mme_ip_address = ( { ipv4 = "192.168.12.26";
+ ipv6 = "192:168:30::17";
+ port = 36412 ;
+ active = "yes";
+ preference = "ipv4";
+ }
+ );
+
+ NETWORK_INTERFACES : {
+ GNB_INTERFACE_NAME_FOR_S1_MME = "eth0";
+ GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24";
+ GNB_INTERFACE_NAME_FOR_S1U = "eth0";
+ GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24";
+ GNB_PORT_FOR_S1U = 2152; # Spec 2152
+ };
+ }
+);
+
+MACRLCs = ({
+ num_cc = 1;
+ tr_s_preference = "local_L1";
+ tr_n_preference = "local_RRC";
+});
+
+L1s = ({
+ num_cc = 1;
+ tr_n_preference = "local_mac";
+});
+
+RUs = ({
+ local_rf = "yes"
+ nb_tx = 1
+ nb_rx = 1
+ att_tx = 0
+ att_rx = 0;
+ bands = [7];
+ max_pdschReferenceSignalPower = -27;
+ max_rxgain = 50;
+ eNB_instances = [0];
+ bf_weights = [0x00007fff, 0x0000];
+ sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2";
+});
+
+THREAD_STRUCT = ({
+ #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
+ parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
+ #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
+ worker_config = "WORKER_ENABLE";
+});
+
+security = {
+ # preferred ciphering algorithms
+ # the first one of the list that an UE supports in chosen
+ # valid values: nea0, nea1, nea2, nea3
+ ciphering_algorithms = ( "nea0" );
+
+ # preferred integrity algorithms
+ # the first one of the list that an UE supports in chosen
+ # valid values: nia0, nia1, nia2, nia3
+ integrity_algorithms = ( "nia2", "nia0" );
+
+ # setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
+ # what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
+ drb_ciphering = "yes";
+ drb_integrity = "no";
+};
+
+log_config : {
+ global_log_level = "info";
+ hw_log_level = "info";
+ phy_log_level = "info";
+ mac_log_level = "info";
+ rlc_log_level = "info";
+ pdcp_log_level = "info";
+ rrc_log_level = "info";
+};
diff --git a/ci-scripts/datalog_rt_stats.1x1.60.yaml b/ci-scripts/datalog_rt_stats.1x1.60.yaml
index 492a3bd8bf..b87bb3c8f5 100644
--- a/ci-scripts/datalog_rt_stats.1x1.60.yaml
+++ b/ci-scripts/datalog_rt_stats.1x1.60.yaml
@@ -7,18 +7,18 @@ ColNames :
- Average; Max; Count
- Average vs Reference Deviation (Reference Value; Acceptability Threshold)
Ref :
- feprx : 48.0
- feptx_prec : 16.0
+ feprx : 46.0
+ feptx_prec : 11.0
feptx_ofdm : 35.0
- feptx_total : 59.0
+ feptx_total : 57.0
L1 Tx processing : 210.0
- DLSCH encoding : 129.0
- L1 Rx processing : 359.0
- PUSCH inner-receiver : 166.0
- PUSCH decoding : 270.0
- Schedule Response : 52.0
+ DLSCH encoding : 137.0
+ L1 Rx processing : 345.0
+ PUSCH inner-receiver : 184.0
+ PUSCH decoding : 276.0
+ Schedule Response : 48.0
DL & UL scheduling timing : 13.0
- UL Indication : 65.0
+ UL Indication : 60.0
Threshold :
feprx : 1.25
feptx_prec : 1.25
diff --git a/ci-scripts/datalog_rt_stats.60.2x2.yaml b/ci-scripts/datalog_rt_stats.60.2x2.yaml
new file mode 100644
index 0000000000..b0d861d758
--- /dev/null
+++ b/ci-scripts/datalog_rt_stats.60.2x2.yaml
@@ -0,0 +1,34 @@
+#this is a configuration file
+#used to build real time processing statistics
+#for 5G NR phy test (gNB terminate)
+Title : Processing Time (us)
+ColNames :
+ - Metric
+ - Average; Max; Count
+ - Average vs Reference Deviation (Reference Value; Acceptability Threshold)
+Ref :
+ feprx : 84.0
+ feptx_prec : 11.0
+ feptx_ofdm : 35.0
+ feptx_total : 100.0
+ L1 Tx processing : 400.0
+ DLSCH encoding : 177.0
+ L1 Rx processing : 345.0
+ PUSCH inner-receiver : 184.0
+ PUSCH decoding : 276.0
+ Schedule Response : 111.0
+ DL & UL scheduling timing : 37.0
+ UL Indication : 127.0
+Threshold :
+ feprx : 1.25
+ feptx_prec : 1.25
+ feptx_ofdm : 1.25
+ feptx_total : 1.25
+ L1 Tx processing : 1.25
+ DLSCH encoding : 1.25
+ L1 Rx processing : 1.25
+ PUSCH inner-receiver : 1.25
+ PUSCH decoding : 1.25
+ Schedule Response : 48.0
+ DL & UL scheduling timing : 1.25
+ UL Indication : 1.25
diff --git a/ci-scripts/datalog_rt_stats.default.yaml b/ci-scripts/datalog_rt_stats.default.yaml
index 2b8a7233ae..971e72944a 100644
--- a/ci-scripts/datalog_rt_stats.default.yaml
+++ b/ci-scripts/datalog_rt_stats.default.yaml
@@ -7,15 +7,15 @@ ColNames :
- Average; Max; Count
- Average vs Reference Deviation (Reference Value; Acceptability Threshold)
Ref :
- feprx : 53.0
- feptx_prec : 20.0
- feptx_ofdm : 37.0
- feptx_total : 62.0
+ feprx : 43.0
+ feptx_prec : 13.0
+ feptx_ofdm : 33.0
+ feptx_total : 55.0
L1 Tx processing : 170.0
DLSCH encoding : 118.0
- L1 Rx processing : 275.0
- PUSCH inner-receiver : 107.0
- PUSCH decoding : 246.0
+ L1 Rx processing : 305.0
+ PUSCH inner-receiver : 117.0
+ PUSCH decoding : 303.0
Schedule Response : 25.0
DL & UL scheduling timing : 10.0
UL Indication : 34.0
diff --git a/ci-scripts/main.py b/ci-scripts/main.py
index 762798b526..d60477427e 100644
--- a/ci-scripts/main.py
+++ b/ci-scripts/main.py
@@ -187,6 +187,9 @@ def GetParametersFromXML(action):
else :
RAN.air_interface[RAN.eNB_instance] = 'ocp-enb'
+ cmd_prefix = test.findtext('cmd_prefix')
+ if cmd_prefix is not None: RAN.cmd_prefix = cmd_prefix
+
elif action == 'Terminate_eNB':
eNB_instance=test.findtext('eNB_instance')
if (eNB_instance is None):
diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py
index d978539097..da2ac9a401 100644
--- a/ci-scripts/ran.py
+++ b/ci-scripts/ran.py
@@ -99,6 +99,7 @@ class RANManagement():
self.USRPIPAddress = ''
#checkers from xml
self.ran_checkers={}
+ self.cmd_prefix = '' # prefix before {lte,nr}-softmodem
#-----------------------------------------------------------
@@ -472,11 +473,7 @@ class RANManagement():
gNB = False
else:
gNB = True
- if ((self.USRPIPAddress!='') and (gNB==True)):
- mySSH.command('echo ' + lPassWord + ' | echo "ulimit -c unlimited && sudo UHD_RFNOC_DIR=/usr/local/share/uhd/rfnoc ./ran_build/build/' + self.air_interface[self.eNB_instance] + ' -O ' + lSourcePath + '/' + ci_full_config_file + extra_options + '" > ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
- #otherwise the regular command is ok
- else:
- mySSH.command('echo "ulimit -c unlimited && catchsegv ./ran_build/build/' + self.air_interface[self.eNB_instance] + ' -O ' + lSourcePath + '/' + ci_full_config_file + extra_options + '" > ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
+ mySSH.command(f'echo "ulimit -c unlimited && {self.cmd_prefix} ./ran_build/build/{self.air_interface[self.eNB_instance]} -O {lSourcePath}/{ci_full_config_file} {extra_options}" > ./my-lte-softmodem-run{self.eNB_instance}.sh', '\$', 5)
mySSH.command('chmod 775 ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
mySSH.command('echo ' + lPassWord + ' | sudo -S rm -Rf enb_' + self.testCase_id + '.log', '\$', 5)
@@ -567,7 +564,7 @@ class RANManagement():
mySSH.close()
- HTML.CreateHtmlTestRow(self.air_interface[self.eNB_instance] + ' -O ' + config_file + extra_options, 'OK', CONST.ALL_PROCESSES_OK)
+ HTML.CreateHtmlTestRow(f'{self.cmd_prefix} {self.air_interface[self.eNB_instance]} -O {config_file} {extra_options}', 'OK', CONST.ALL_PROCESSES_OK)
logging.debug('\u001B[1m Initialize eNB/gNB/ocp-eNB Completed\u001B[0m')
def CheckeNBProcess(self, status_queue):
diff --git a/ci-scripts/xml_files/fr1_sa_quectel.xml b/ci-scripts/xml_files/fr1_sa_quectel.xml
index cc44bdf051..cdae3678f9 100644
--- a/ci-scripts/xml_files/fr1_sa_quectel.xml
+++ b/ci-scripts/xml_files/fr1_sa_quectel.xml
@@ -64,7 +64,7 @@
Initialize_eNB
Initialize gNB
- -O ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.ddsuu.2x2.usrpn310.conf --sa -q --usrp-tx-thread-config 1 --T_stdout 2 --tune-offset 30000000 --log_config.global_log_options level,nocolor,time
+ -O ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.ddsuu.2x2.usrpn310.conf --sa -q --usrp-tx-thread-config 1 --T_stdout 2 --tune-offset 30000000 --thread-pool 1,3,5,7,9,11,13,15 --log_config.global_log_options level,nocolor,time
0
0
nr
@@ -72,6 +72,7 @@
yes
datalog_rt_stats.2x2.yaml
172.21.19.14
+ numactl --cpunodebind=netdev:ens2f0np0 --membind=netdev:ens2f0np0
diff --git a/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml b/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml
index 776486013d..693848cd39 100644
--- a/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml
+++ b/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml
@@ -62,7 +62,7 @@
Initialize_eNB
Initialize gNB
- -O ci-scripts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf --sa -q --usrp-tx-thread-config 1 --tune-offset 30000000 --log_config.global_log_options level,nocolor,time
+ -O ci-scripts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf --sa -q --usrp-tx-thread-config 1 --tune-offset 30000000 --thread-pool 1,3,5,7,9,11,13,15 --log_config.global_log_options level,nocolor,time
0
0
nr
@@ -70,6 +70,7 @@
yes
datalog_rt_stats.2x2.yaml
172.21.19.14
+ numactl --cpunodebind=netdev:ens2f0np0 --membind=netdev:ens2f0np0
diff --git a/ci-scripts/xml_files/fr1_sa_quectel_stages.xml b/ci-scripts/xml_files/fr1_sa_quectel_stages.xml
index 20225b0a1a..0a2e721ce7 100644
--- a/ci-scripts/xml_files/fr1_sa_quectel_stages.xml
+++ b/ci-scripts/xml_files/fr1_sa_quectel_stages.xml
@@ -68,7 +68,7 @@
Initialize_eNB
Initialize gNB
- -O ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf --sa -q --usrp-tx-thread-config 1 --tune-offset 30000000 --log_config.global_log_options level,nocolor,time
+ -O ci-scripts/conf_files/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf --sa -q --usrp-tx-thread-config 1 --tune-offset 30000000 --thread-pool 1,3,5,7,9,11,13,15 --log_config.global_log_options level,nocolor,time
0
0
nr
@@ -76,6 +76,7 @@
yes
datalog_rt_stats.2x2.yaml
172.21.19.14
+ numactl --cpunodebind=netdev:ens2f0np0 --membind=netdev:ens2f0np0
diff --git a/ci-scripts/xml_files/fr1_sa_quectel_stages_162prb.xml b/ci-scripts/xml_files/fr1_sa_quectel_stages_162prb.xml
deleted file mode 100644
index 9371e46ec9..0000000000
--- a/ci-scripts/xml_files/fr1_sa_quectel_stages_162prb.xml
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
- TEST-SA-FR1-Tab4
- SA Staged DL with QUECTEL
- tasks
- 1
-
- 040000
- 000002
- 010000
- 000001
- 050000
- 000001
- 070000
- 000001
- 070001
- 000001
- 070002
- 000001
- 070003
- 000001
- 070004
- 000001
- 070005
- 000001
- 010002
- 080000
-
-
-
-
- Initialize_UE
- Initialize Quectel
- nrmodule2_quectel
- yes
-
-
-
-
- Terminate_UE
- Terminate Quectel
- nrmodule2_quectel
-
-
-
-
- Initialize_eNB
- Initialize gNB
- -O ci-scripts/conf_files/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf --sa -q --usrp-tx-thread-config 1 --log_config.global_log_options level,nocolor,time
- 0
- 0
- nr
- yes
- yes
- datalog_rt_stats.2x2.yaml
- 172.21.19.14
-
-
-
- IdleSleep
- Sleep
- 5
-
-
-
- IdleSleep
- Sleep
- 20
-
-
-
-
- Ping
- Ping: 20pings in 20sec
- nrmodule2_quectel
- -c 20
- 5
-
-
-
-
- Iperf
- iperf (DL/10Mbps/UDP)(30 sec)(single-ue profile)
- -u -b 10M -t 30
- DL
- nrmodule2_quectel
- 5
- single-ue
-
-
- Iperf
- iperf (DL/20Mbps/UDP)(30 sec)(single-ue profile)
- -u -b 20M -t 30
- DL
- nrmodule2_quectel
- 5
- single-ue
-
-
- Iperf
- iperf (DL/40Mbps/UDP)(30 sec)(single-ue profile)
- -u -b 40M -t 30
- DL
- nrmodule2_quectel
- 5
- single-ue
-
-
- Iperf
- iperf (DL/60Mbps/UDP)(30 sec)(single-ue profile)
- -u -b 60M -t 30
- DL
- nrmodule2_quectel
- 5
- single-ue
-
-
- Iperf
- iperf (DL/90Mbps/UDP)(30 sec)(single-ue profile)
- -u -b 90M -t 30
- DL
- nrmodule2_quectel
- 5
- single-ue
-
-
- Iperf
- iperf (DL/140Mbps/UDP)(30 sec)(single-ue profile)
- -u -b 140M -t 30
- DL
- nrmodule2_quectel
- 5
- single-ue
-
-
-
-
- Terminate_eNB
- Terminate gNB
- 0
- 0
- nr
-
-
-
-
diff --git a/ci-scripts/xml_files/gnb_phytest_usrp_run.xml b/ci-scripts/xml_files/gnb_phytest_usrp_run.xml
index 9a184c9e52..7a9eafeb8f 100644
--- a/ci-scripts/xml_files/gnb_phytest_usrp_run.xml
+++ b/ci-scripts/xml_files/gnb_phytest_usrp_run.xml
@@ -37,6 +37,7 @@
datalog_rt_stats.default.yaml
NR
192.168.20.2
+ numactl --cpunodebind=netdev:enp94s0f0 --membind=netdev:enp94s0f0
diff --git a/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml b/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml
index d46c1c0caf..ed80a8b1e1 100644
--- a/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml
+++ b/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml
@@ -33,10 +33,11 @@
Initialize_eNB
Initialize gNB USRP
- -O ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf --phy-test --gNBs.[0].servingCellConfigCommon.[0].dl_carrierBandwidth 162 --gNBs.[0].servingCellConfigCommon.[0].ul_carrierBandwidth 162 -q -U 787200 -T 162 -t 23 -D 130175 -m 23 -M 162 --usrp-tx-thread-config 1 --log_config.global_log_options level,nocolor,time
+ -O ci-scripts/conf_files/gnb.band78.tm1.162PRB.usrpn300.conf --phy-test -q -U 787200 -T 162 -t 23 -D 130175 -m 23 -M 162 --usrp-tx-thread-config 1 --log_config.global_log_options level,nocolor,time
datalog_rt_stats.1x1.60.yaml
NR
192.168.20.2
+ numactl --cpunodebind=netdev:enp94s0f0 --membind=netdev:enp94s0f0
diff --git a/ci-scripts/xml_files/gnb_phytest_usrp_run_60_2x2.xml b/ci-scripts/xml_files/gnb_phytest_usrp_run_60_2x2.xml
new file mode 100644
index 0000000000..831ed5b096
--- /dev/null
+++ b/ci-scripts/xml_files/gnb_phytest_usrp_run_60_2x2.xml
@@ -0,0 +1,56 @@
+
+
+ gNB-PHY-Test-60-2x2
+ Timing phytest 60 MHz 2x2
+ tasks
+ 1
+
+290101 000001 290109
+
+
+
+
+ Initialize_eNB
+ Initialize gNB USRP
+ -O ci-scripts/conf_files/gnb.band78.tm1.162PRB.usrpn300.conf --phy-test --gNBs.[0].pdsch_AntennaPorts_XP 2 --RUs.[0].nb_tx 2 --RUs.[0].nb_rx 2 -q -U 787200 -T 162 -t 23 -D 130175 -m 23 -M 162 -l 2 --usrp-tx-thread-config 1 --log_config.global_log_options level,nocolor,time
+ datalog_rt_stats.60.2x2.yaml
+ NR
+ 192.168.20.2
+ numactl --cpunodebind=netdev:enp94s0f0 --membind=netdev:enp94s0f0
+
+
+
+ IdleSleep
+ Sleep
+ 60
+
+
+
+
+ Terminate_eNB
+ Terminate gNB
+ NR
+
+
+