remove unused SSB ue phy unit tests

This commit is contained in:
francescomani
2025-03-10 17:01:41 +01:00
parent a936c88fb5
commit 272344df48
13 changed files with 0 additions and 2561 deletions
-13
View File
@@ -237,8 +237,6 @@ typedef struct {
/// estimated frequency offset (in radians) for all subcarriers
int32_t freq_offset;
/// nid2 is the PSS value, the PCI (physical cell id) will be: 3*NID1 (SSS value) + NID2 (PSS value)
int32_t nid2;
} NR_UE_COMMON;
#define NR_PRS_IDFT_OVERSAMP_FACTOR 1 // IDFT oversampling factor for NR PRS channel estimates in time domain, ALLOWED value 16x, and 1x is default(ie. IDFT size is frame_params->ofdm_symbol_size)
@@ -413,12 +411,6 @@ typedef struct PHY_VARS_NR_UE_s {
uint32_t PF;
uint32_t PO;
#if defined(UPGRADE_RAT_NR)
/// demodulation reference signal for NR PBCH
uint32_t dmrs_pbch_bitmap_nr[DMRS_PBCH_I_SSB][DMRS_PBCH_N_HF][DMRS_BITMAP_SIZE];
#endif
// Scrambling IDs used in PUSCH DMRS
c16_t X_u[64][839];
@@ -502,11 +494,6 @@ typedef struct PHY_VARS_NR_UE_s {
/// RF and Interface devices per CC
openair0_device rfdevice;
#if ENABLE_RAL
hash_table_t *ral_thresholds_timed;
SLIST_HEAD(ral_thresholds_gen_poll_s, ral_threshold_phy_t) ral_thresholds_gen_polled[RAL_LINK_PARAM_GEN_MAX];
SLIST_HEAD(ral_thresholds_lte_poll_s, ral_threshold_phy_t) ral_thresholds_lte_polled[RAL_LINK_PARAM_LTE_MAX];
#endif
void* scopeData;
// Pointers to hold PDSCH data only for phy simulators
void *phy_sim_rxdataF;
@@ -55,18 +55,6 @@ set(INC_UNIT_TESTS
${OPENAIR1_DIR}/SIMULATION/NR_UE_PHY/unit_tests/src/pss_util_test.h
)
add_executable(pss_test ${OPENAIR1_DIR}/SIMULATION/NR_UE_PHY/unit_tests/src/pss_test.c ${SRC_UNIT_TESTS} )
target_link_libraries(pss_test
-Wl,--start-group UTIL SCHED_NR_UE_LIB PHY PHY_COMMON PHY_UE PHY_NR_UE -Wl,--end-group
pthread m ${ATLAS_LIBRARIES}
)
add_executable(sss_test ${OPENAIR1_DIR}/SIMULATION/NR_UE_PHY/unit_tests/src/sss_test.c ${SRC_UNIT_TESTS} )
target_link_libraries(sss_test
-Wl,--start-group UTIL SCHED_NR_UE_LIB PHY PHY_COMMON PHY_UE PHY_NR_UE -Wl,--end-group
pthread m ${ATLAS_LIBRARIES}
)
add_executable(frame_config_test ${OPENAIR1_DIR}/SIMULATION/NR_UE_PHY/unit_tests/src/frame_config_test.c ${SRC_UNIT_TESTS} )
target_link_libraries(frame_config_test
-Wl,--start-group UTIL SCHED_NR_UE_LIB PHY PHY_COMMON PHY_UE PHY_NR_UE -Wl,--end-group
@@ -1,179 +0,0 @@
PSS TEST
----------
log init done
Start lte_param_init, frame_type 0, extended_prefix 0
[PHY][I][nr_init_frame_parms_ue] Initializing frame parms for mu 1, N_RB 106, Ncp 0
Initializing UE vars (abstraction 0) for eNB TXant 1, UE RXant 1
***********************************
PSS NR Test synchronisation
***********************************
------------------------------------------------
Test nr pss with Nid2 0 at position 0
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 0, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 0, val = 232379536 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 1 at position 0
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 0, val = 232105225 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 0, val = 232105225 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 2 at position 0
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 0, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 0, val = 231344100 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 0 at position 492
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 232379536 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 1 at position 492
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 492, val = 232105225 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 492, val = 232105225 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 2 at position 492
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 231344100 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 0 at position 493
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 230217517 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 230217517 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 1
------------------------------------------------
Test nr pss with Nid2 1 at position 493
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 492, val = 230099437 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 492, val = 230099437 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 1
------------------------------------------------
Test nr pss with Nid2 2 at position 493
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 229165600 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 229165600 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 1
------------------------------------------------
Test nr pss with Nid2 0 at position 56788
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 56788, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 56788, val = 232379536 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 1 at position 56788
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 56788, val = 232105225 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 56788, val = 232105225 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 2 at position 56788
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 56788, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 56788, val = 231344100 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 0 at position 56888
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 56888, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 56888, val = 232379536 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 1 at position 56888
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 56888, val = 232105225 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 56888, val = 232105225 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 2 at position 56888
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 56888, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 56888, val = 231344100 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 0 at position 111111
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 111112, val = 230349320 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 111112, val = 230349320 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 1
------------------------------------------------
Test nr pss with Nid2 1 at position 111111
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 111112, val = 230409881 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 111112, val = 230409881 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 1
------------------------------------------------
Test nr pss with Nid2 2 at position 111111
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 111112, val = 229601794 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 111112, val = 229601794 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 1
------------------------------------------------
Test nr pss with Nid2 0 at position 151234
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 151236, val = 219912170 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 151236, val = 219912170 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 2
------------------------------------------------
Test nr pss with Nid2 1 at position 151234
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 151236, val = 219714314 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 151236, val = 219714314 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 2
------------------------------------------------
Test nr pss with Nid2 2 at position 151234
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 151236, val = 219588850 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 151236, val = 219588850 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 2
------------------------------------------------
Test nr pss with Nid2 0 at position 151500
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 151500, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 151500, val = 232379536 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 1 at position 151500
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 151500, val = 232105225 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 151500, val = 232105225 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 2 at position 151500
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 151500, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 151500, val = 231344100 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 0 at position 200000
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 200000, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 200000, val = 232379536 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 1 at position 200000
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 200000, val = 232105225 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 200000, val = 232105225 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 2 at position 200000
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 200000, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 200000, val = 231344100 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 0 at position 250004
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 250004, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 250004, val = 232379536 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 1 at position 250004
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 250004, val = 232105225 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 250004, val = 232105225 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 2 at position 250004
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 250004, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 250004, val = 231344100 (41 dB)
PSS NR Test is pass: pss detected at right position
------------------------------------------------
Test nr pss with Nid2 0 at position 305152
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 305148, val = 185066768 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 305148, val = 185066768 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 4
------------------------------------------------
Test nr pss with Nid2 1 at position 305152
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 305148, val = 185490842 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 305148, val = 185490842 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 4
------------------------------------------------
Test nr pss with Nid2 2 at position 305152
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 305148, val = 185637380 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 305148, val = 185637380 (41 dB)
PSS NR Test is pass with warning: pss detected with a shift of 4
PSS NR Number of tests : 33 Pass : 21 Pass with warning : 12 Fail : 0
PSS NR Synchronisaton test is terminated.
@@ -1,709 +0,0 @@
SSS TEST
----------
log init done
Start lte_param_init, frame_type 0, extended_prefix 0
[PHY][I][nr_init_frame_parms_ue] Initializing frame parms for mu 1, N_RB 106, Ncp 0
Initializing UE vars (abstraction 0) for eNB TXant 1, UE RXant 1
***********************************
SSS NR Test synchronisation
***********************************
------------------------------------------------
Test nr pss with Nid2 0 at position 0
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 0, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 0, val = 232379536 (41 dB)
Test nr sss with Nid1 0
(phase,Nid1) (0,0), metric_phase -201728 tot_metric -201728, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,13), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,113), metric_phase 43008 tot_metric 43008, phase_max 0
(phase,Nid1) (0,135), metric_phase 45056 tot_metric 45056, phase_max 0
(phase,Nid1) (0,287), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (1,0), metric_phase 48128 tot_metric 48128, phase_max 1
(phase,Nid1) (2,0), metric_phase 310272 tot_metric 310272, phase_max 2
(phase,Nid1) (3,0), metric_phase 498176 tot_metric 498176, phase_max 3
(phase,Nid1) (4,0), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,0), metric_phase 760832 tot_metric 760832, phase_max 5
Nid2 0 Nid1 0 tot_metric 760832, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 0 Nid1 0 Nid2 0
------------------------------------------------
Test nr pss with Nid2 0 at position 492
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 232379536 (41 dB)
Test nr sss with Nid1 0
(phase,Nid1) (0,0), metric_phase -201728 tot_metric -201728, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,13), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,113), metric_phase 43008 tot_metric 43008, phase_max 0
(phase,Nid1) (0,135), metric_phase 45056 tot_metric 45056, phase_max 0
(phase,Nid1) (0,287), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (1,0), metric_phase 48128 tot_metric 48128, phase_max 1
(phase,Nid1) (2,0), metric_phase 310272 tot_metric 310272, phase_max 2
(phase,Nid1) (3,0), metric_phase 498176 tot_metric 498176, phase_max 3
(phase,Nid1) (4,0), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,0), metric_phase 760832 tot_metric 760832, phase_max 5
Nid2 0 Nid1 0 tot_metric 760832, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 492 Nid1 0 Nid2 0
------------------------------------------------
Test nr pss with Nid2 0 at position 493
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 230217517 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 230217517 (41 dB)
Test nr sss with Nid1 0
(phase,Nid1) (0,0), metric_phase -201728 tot_metric -201728, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,13), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,113), metric_phase 43008 tot_metric 43008, phase_max 0
(phase,Nid1) (0,135), metric_phase 45056 tot_metric 45056, phase_max 0
(phase,Nid1) (0,287), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (1,0), metric_phase 48128 tot_metric 48128, phase_max 1
(phase,Nid1) (2,0), metric_phase 310272 tot_metric 310272, phase_max 2
(phase,Nid1) (3,0), metric_phase 498176 tot_metric 498176, phase_max 3
(phase,Nid1) (4,0), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,0), metric_phase 760832 tot_metric 760832, phase_max 5
Nid2 0 Nid1 0 tot_metric 760832, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 493 Nid1 0 Nid2 0
------------------------------------------------
Test nr pss with Nid2 0 at position 56788
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 56788, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 56788, val = 232379536 (41 dB)
Test nr sss with Nid1 0
(phase,Nid1) (0,0), metric_phase -201728 tot_metric -201728, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,13), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,113), metric_phase 43008 tot_metric 43008, phase_max 0
(phase,Nid1) (0,135), metric_phase 45056 tot_metric 45056, phase_max 0
(phase,Nid1) (0,287), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (1,0), metric_phase 48128 tot_metric 48128, phase_max 1
(phase,Nid1) (2,0), metric_phase 310272 tot_metric 310272, phase_max 2
(phase,Nid1) (3,0), metric_phase 498176 tot_metric 498176, phase_max 3
(phase,Nid1) (4,0), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,0), metric_phase 760832 tot_metric 760832, phase_max 5
Nid2 0 Nid1 0 tot_metric 760832, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 56788 Nid1 0 Nid2 0
------------------------------------------------
Test nr pss with Nid2 0 at position 111111
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 111112, val = 230349320 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 111112, val = 230349320 (41 dB)
Test nr sss with Nid1 0
(phase,Nid1) (0,0), metric_phase -201728 tot_metric -201728, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,13), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,113), metric_phase 43008 tot_metric 43008, phase_max 0
(phase,Nid1) (0,135), metric_phase 45056 tot_metric 45056, phase_max 0
(phase,Nid1) (0,287), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (1,0), metric_phase 48128 tot_metric 48128, phase_max 1
(phase,Nid1) (2,0), metric_phase 310272 tot_metric 310272, phase_max 2
(phase,Nid1) (3,0), metric_phase 498176 tot_metric 498176, phase_max 3
(phase,Nid1) (4,0), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,0), metric_phase 760832 tot_metric 760832, phase_max 5
Nid2 0 Nid1 0 tot_metric 760832, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 111111 Nid1 0 Nid2 0
------------------------------------------------
Test nr pss with Nid2 0 at position 222222
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 222224, val = 219912170 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 222224, val = 219912170 (41 dB)
Test nr sss with Nid1 0
(phase,Nid1) (0,0), metric_phase -201728 tot_metric -201728, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,13), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,113), metric_phase 43008 tot_metric 43008, phase_max 0
(phase,Nid1) (0,135), metric_phase 45056 tot_metric 45056, phase_max 0
(phase,Nid1) (0,287), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (1,0), metric_phase 48128 tot_metric 48128, phase_max 1
(phase,Nid1) (2,0), metric_phase 310272 tot_metric 310272, phase_max 2
(phase,Nid1) (3,0), metric_phase 498176 tot_metric 498176, phase_max 3
(phase,Nid1) (4,0), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,0), metric_phase 760832 tot_metric 760832, phase_max 5
Nid2 0 Nid1 0 tot_metric 760832, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 222222 Nid1 0 Nid2 0
------------------------------------------------
Test nr pss with Nid2 0 at position 0
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 0, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 0, val = 232379536 (41 dB)
Test nr sss with Nid1 71
(phase,Nid1) (0,0), metric_phase -14336 tot_metric -14336, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 20480 tot_metric 20480, phase_max 0
(phase,Nid1) (0,23), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,79), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,113), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,226), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (1,71), metric_phase 60928 tot_metric 60928, phase_max 1
(phase,Nid1) (2,71), metric_phase 324608 tot_metric 324608, phase_max 2
(phase,Nid1) (3,71), metric_phase 509440 tot_metric 509440, phase_max 3
(phase,Nid1) (4,71), metric_phase 650240 tot_metric 650240, phase_max 4
(phase,Nid1) (5,71), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 0 Nid1 71 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 0 Nid1 71 Nid2 0
------------------------------------------------
Test nr pss with Nid2 0 at position 492
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 232379536 (41 dB)
Test nr sss with Nid1 71
(phase,Nid1) (0,0), metric_phase -14336 tot_metric -14336, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 20480 tot_metric 20480, phase_max 0
(phase,Nid1) (0,23), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,79), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,113), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,226), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (1,71), metric_phase 60928 tot_metric 60928, phase_max 1
(phase,Nid1) (2,71), metric_phase 324608 tot_metric 324608, phase_max 2
(phase,Nid1) (3,71), metric_phase 509440 tot_metric 509440, phase_max 3
(phase,Nid1) (4,71), metric_phase 650240 tot_metric 650240, phase_max 4
(phase,Nid1) (5,71), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 0 Nid1 71 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 492 Nid1 71 Nid2 0
------------------------------------------------
Test nr pss with Nid2 0 at position 493
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 230217517 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 492, val = 230217517 (41 dB)
Test nr sss with Nid1 71
(phase,Nid1) (0,0), metric_phase -14336 tot_metric -14336, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 20480 tot_metric 20480, phase_max 0
(phase,Nid1) (0,23), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,79), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,113), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,226), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (1,71), metric_phase 60928 tot_metric 60928, phase_max 1
(phase,Nid1) (2,71), metric_phase 324608 tot_metric 324608, phase_max 2
(phase,Nid1) (3,71), metric_phase 509440 tot_metric 509440, phase_max 3
(phase,Nid1) (4,71), metric_phase 650240 tot_metric 650240, phase_max 4
(phase,Nid1) (5,71), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 0 Nid1 71 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 493 Nid1 71 Nid2 0
------------------------------------------------
Test nr pss with Nid2 0 at position 56788
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 56788, val = 232379536 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 56788, val = 232379536 (41 dB)
Test nr sss with Nid1 71
(phase,Nid1) (0,0), metric_phase -14336 tot_metric -14336, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 20480 tot_metric 20480, phase_max 0
(phase,Nid1) (0,23), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,79), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,113), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,226), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (1,71), metric_phase 60928 tot_metric 60928, phase_max 1
(phase,Nid1) (2,71), metric_phase 324608 tot_metric 324608, phase_max 2
(phase,Nid1) (3,71), metric_phase 509440 tot_metric 509440, phase_max 3
(phase,Nid1) (4,71), metric_phase 650240 tot_metric 650240, phase_max 4
(phase,Nid1) (5,71), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 0 Nid1 71 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 56788 Nid1 71 Nid2 0
------------------------------------------------
Test nr pss with Nid2 0 at position 111111
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 111112, val = 230349320 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 111112, val = 230349320 (41 dB)
Test nr sss with Nid1 71
(phase,Nid1) (0,0), metric_phase -14336 tot_metric -14336, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 20480 tot_metric 20480, phase_max 0
(phase,Nid1) (0,23), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,79), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,113), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,226), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (1,71), metric_phase 60928 tot_metric 60928, phase_max 1
(phase,Nid1) (2,71), metric_phase 324608 tot_metric 324608, phase_max 2
(phase,Nid1) (3,71), metric_phase 509440 tot_metric 509440, phase_max 3
(phase,Nid1) (4,71), metric_phase 650240 tot_metric 650240, phase_max 4
(phase,Nid1) (5,71), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 0 Nid1 71 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 111111 Nid1 71 Nid2 0
------------------------------------------------
Test nr pss with Nid2 0 at position 222222
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 0, Peak found at pos 222224, val = 219912170 (41 dB)
[UE] nr_synchro_time: Sync source = 0, Peak found at pos 222224, val = 219912170 (41 dB)
Test nr sss with Nid1 71
(phase,Nid1) (0,0), metric_phase -14336 tot_metric -14336, phase_max 0
(phase,Nid1) (0,1), metric_phase 2048 tot_metric 2048, phase_max 0
(phase,Nid1) (0,3), metric_phase 18432 tot_metric 18432, phase_max 0
(phase,Nid1) (0,8), metric_phase 20480 tot_metric 20480, phase_max 0
(phase,Nid1) (0,23), metric_phase 22528 tot_metric 22528, phase_max 0
(phase,Nid1) (0,79), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,113), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,226), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (1,71), metric_phase 60928 tot_metric 60928, phase_max 1
(phase,Nid1) (2,71), metric_phase 324608 tot_metric 324608, phase_max 2
(phase,Nid1) (3,71), metric_phase 509440 tot_metric 509440, phase_max 3
(phase,Nid1) (4,71), metric_phase 650240 tot_metric 650240, phase_max 4
(phase,Nid1) (5,71), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 0 Nid1 71 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 222222 Nid1 71 Nid2 0
------------------------------------------------
Test nr pss with Nid2 2 at position 0
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 0, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 0, val = 231344100 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 0 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 492
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 231344100 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 492 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 493
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 229165600 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 229165600 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 493 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 56788
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 56788, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 56788, val = 231344100 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 56788 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 111111
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 111112, val = 229601794 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 111112, val = 229601794 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 111111 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 222222
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 222224, val = 219559301 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 222224, val = 219559301 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 222222 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 0
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 0, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 0, val = 231344100 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 0 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 492
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 231344100 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 492 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 493
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 229165600 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 229165600 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 493 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 56788
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 56788, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 56788, val = 231344100 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 56788 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 111111
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 111112, val = 229601794 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 111112, val = 229601794 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 111111 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 222222
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 222224, val = 219559301 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 222224, val = 219559301 (41 dB)
Test nr sss with Nid1 21
(phase,Nid1) (0,0), metric_phase 19456 tot_metric 19456, phase_max 0
(phase,Nid1) (0,8), metric_phase 21504 tot_metric 21504, phase_max 0
(phase,Nid1) (0,13), metric_phase 23552 tot_metric 23552, phase_max 0
(phase,Nid1) (0,88), metric_phase 24576 tot_metric 24576, phase_max 0
(phase,Nid1) (0,124), metric_phase 41984 tot_metric 41984, phase_max 0
(phase,Nid1) (0,135), metric_phase 46080 tot_metric 46080, phase_max 0
(phase,Nid1) (0,319), metric_phase 47104 tot_metric 47104, phase_max 0
(phase,Nid1) (2,21), metric_phase 308736 tot_metric 308736, phase_max 2
(phase,Nid1) (3,21), metric_phase 494592 tot_metric 494592, phase_max 3
(phase,Nid1) (4,21), metric_phase 642048 tot_metric 642048, phase_max 4
(phase,Nid1) (5,21), metric_phase 759808 tot_metric 759808, phase_max 5
Nid2 2 Nid1 21 tot_metric 759808, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 222222 Nid1 21 Nid2 2
------------------------------------------------
Test nr pss with Nid2 1 at position 0
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 0, val = 232105225 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 0, val = 232105225 (41 dB)
Test nr sss with Nid1 55
(phase,Nid1) (0,0), metric_phase -1536 tot_metric -1536, phase_max 0
(phase,Nid1) (0,1), metric_phase 1536 tot_metric 1536, phase_max 0
(phase,Nid1) (0,2), metric_phase 5632 tot_metric 5632, phase_max 0
(phase,Nid1) (0,3), metric_phase 20992 tot_metric 20992, phase_max 0
(phase,Nid1) (0,13), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,120), metric_phase 28160 tot_metric 28160, phase_max 0
(phase,Nid1) (0,135), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,228), metric_phase 44544 tot_metric 44544, phase_max 0
(phase,Nid1) (1,55), metric_phase 61440 tot_metric 61440, phase_max 1
(phase,Nid1) (2,55), metric_phase 326144 tot_metric 326144, phase_max 2
(phase,Nid1) (3,55), metric_phase 507392 tot_metric 507392, phase_max 3
(phase,Nid1) (4,55), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,55), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 1 Nid1 55 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 0 Nid1 55 Nid2 1
------------------------------------------------
Test nr pss with Nid2 1 at position 492
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 492, val = 232105225 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 492, val = 232105225 (41 dB)
Test nr sss with Nid1 55
(phase,Nid1) (0,0), metric_phase -1536 tot_metric -1536, phase_max 0
(phase,Nid1) (0,1), metric_phase 1536 tot_metric 1536, phase_max 0
(phase,Nid1) (0,2), metric_phase 5632 tot_metric 5632, phase_max 0
(phase,Nid1) (0,3), metric_phase 20992 tot_metric 20992, phase_max 0
(phase,Nid1) (0,13), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,120), metric_phase 28160 tot_metric 28160, phase_max 0
(phase,Nid1) (0,135), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,228), metric_phase 44544 tot_metric 44544, phase_max 0
(phase,Nid1) (1,55), metric_phase 61440 tot_metric 61440, phase_max 1
(phase,Nid1) (2,55), metric_phase 326144 tot_metric 326144, phase_max 2
(phase,Nid1) (3,55), metric_phase 507392 tot_metric 507392, phase_max 3
(phase,Nid1) (4,55), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,55), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 1 Nid1 55 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 492 Nid1 55 Nid2 1
------------------------------------------------
Test nr pss with Nid2 1 at position 493
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 492, val = 230099437 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 492, val = 230099437 (41 dB)
Test nr sss with Nid1 55
(phase,Nid1) (0,0), metric_phase -1536 tot_metric -1536, phase_max 0
(phase,Nid1) (0,1), metric_phase 1536 tot_metric 1536, phase_max 0
(phase,Nid1) (0,2), metric_phase 5632 tot_metric 5632, phase_max 0
(phase,Nid1) (0,3), metric_phase 20992 tot_metric 20992, phase_max 0
(phase,Nid1) (0,13), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,120), metric_phase 28160 tot_metric 28160, phase_max 0
(phase,Nid1) (0,135), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,228), metric_phase 44544 tot_metric 44544, phase_max 0
(phase,Nid1) (1,55), metric_phase 61440 tot_metric 61440, phase_max 1
(phase,Nid1) (2,55), metric_phase 326144 tot_metric 326144, phase_max 2
(phase,Nid1) (3,55), metric_phase 507392 tot_metric 507392, phase_max 3
(phase,Nid1) (4,55), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,55), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 1 Nid1 55 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 493 Nid1 55 Nid2 1
------------------------------------------------
Test nr pss with Nid2 1 at position 56788
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 56788, val = 232105225 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 56788, val = 232105225 (41 dB)
Test nr sss with Nid1 55
(phase,Nid1) (0,0), metric_phase -1536 tot_metric -1536, phase_max 0
(phase,Nid1) (0,1), metric_phase 1536 tot_metric 1536, phase_max 0
(phase,Nid1) (0,2), metric_phase 5632 tot_metric 5632, phase_max 0
(phase,Nid1) (0,3), metric_phase 20992 tot_metric 20992, phase_max 0
(phase,Nid1) (0,13), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,120), metric_phase 28160 tot_metric 28160, phase_max 0
(phase,Nid1) (0,135), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,228), metric_phase 44544 tot_metric 44544, phase_max 0
(phase,Nid1) (1,55), metric_phase 61440 tot_metric 61440, phase_max 1
(phase,Nid1) (2,55), metric_phase 326144 tot_metric 326144, phase_max 2
(phase,Nid1) (3,55), metric_phase 507392 tot_metric 507392, phase_max 3
(phase,Nid1) (4,55), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,55), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 1 Nid1 55 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 56788 Nid1 55 Nid2 1
------------------------------------------------
Test nr pss with Nid2 1 at position 111111
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 111112, val = 230409881 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 111112, val = 230409881 (41 dB)
Test nr sss with Nid1 55
(phase,Nid1) (0,0), metric_phase -1536 tot_metric -1536, phase_max 0
(phase,Nid1) (0,1), metric_phase 1536 tot_metric 1536, phase_max 0
(phase,Nid1) (0,2), metric_phase 5632 tot_metric 5632, phase_max 0
(phase,Nid1) (0,3), metric_phase 20992 tot_metric 20992, phase_max 0
(phase,Nid1) (0,13), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,120), metric_phase 28160 tot_metric 28160, phase_max 0
(phase,Nid1) (0,135), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,228), metric_phase 44544 tot_metric 44544, phase_max 0
(phase,Nid1) (1,55), metric_phase 61440 tot_metric 61440, phase_max 1
(phase,Nid1) (2,55), metric_phase 326144 tot_metric 326144, phase_max 2
(phase,Nid1) (3,55), metric_phase 507392 tot_metric 507392, phase_max 3
(phase,Nid1) (4,55), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,55), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 1 Nid1 55 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 111111 Nid1 55 Nid2 1
------------------------------------------------
Test nr pss with Nid2 1 at position 222222
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 1, Peak found at pos 222224, val = 219714314 (41 dB)
[UE] nr_synchro_time: Sync source = 1, Peak found at pos 222224, val = 219714314 (41 dB)
Test nr sss with Nid1 55
(phase,Nid1) (0,0), metric_phase -1536 tot_metric -1536, phase_max 0
(phase,Nid1) (0,1), metric_phase 1536 tot_metric 1536, phase_max 0
(phase,Nid1) (0,2), metric_phase 5632 tot_metric 5632, phase_max 0
(phase,Nid1) (0,3), metric_phase 20992 tot_metric 20992, phase_max 0
(phase,Nid1) (0,13), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,120), metric_phase 28160 tot_metric 28160, phase_max 0
(phase,Nid1) (0,135), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,228), metric_phase 44544 tot_metric 44544, phase_max 0
(phase,Nid1) (1,55), metric_phase 61440 tot_metric 61440, phase_max 1
(phase,Nid1) (2,55), metric_phase 326144 tot_metric 326144, phase_max 2
(phase,Nid1) (3,55), metric_phase 507392 tot_metric 507392, phase_max 3
(phase,Nid1) (4,55), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,55), metric_phase 770560 tot_metric 770560, phase_max 5
Nid2 1 Nid1 55 tot_metric 770560, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 222222 Nid1 55 Nid2 1
------------------------------------------------
Test nr pss with Nid2 2 at position 0
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 0, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 0, val = 231344100 (41 dB)
Test nr sss with Nid1 111
(phase,Nid1) (0,0), metric_phase 19968 tot_metric 19968, phase_max 0
(phase,Nid1) (0,13), metric_phase 22016 tot_metric 22016, phase_max 0
(phase,Nid1) (0,109), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,117), metric_phase 26112 tot_metric 26112, phase_max 0
(phase,Nid1) (0,124), metric_phase 37376 tot_metric 37376, phase_max 0
(phase,Nid1) (0,161), metric_phase 42496 tot_metric 42496, phase_max 0
(phase,Nid1) (0,170), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,210), metric_phase 45568 tot_metric 45568, phase_max 0
(phase,Nid1) (1,111), metric_phase 62464 tot_metric 62464, phase_max 1
(phase,Nid1) (2,111), metric_phase 327680 tot_metric 327680, phase_max 2
(phase,Nid1) (3,111), metric_phase 511488 tot_metric 511488, phase_max 3
(phase,Nid1) (4,111), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,111), metric_phase 770048 tot_metric 770048, phase_max 5
Nid2 2 Nid1 111 tot_metric 770048, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 0 Nid1 111 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 492
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 231344100 (41 dB)
Test nr sss with Nid1 111
(phase,Nid1) (0,0), metric_phase 19968 tot_metric 19968, phase_max 0
(phase,Nid1) (0,13), metric_phase 22016 tot_metric 22016, phase_max 0
(phase,Nid1) (0,109), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,117), metric_phase 26112 tot_metric 26112, phase_max 0
(phase,Nid1) (0,124), metric_phase 37376 tot_metric 37376, phase_max 0
(phase,Nid1) (0,161), metric_phase 42496 tot_metric 42496, phase_max 0
(phase,Nid1) (0,170), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,210), metric_phase 45568 tot_metric 45568, phase_max 0
(phase,Nid1) (1,111), metric_phase 62464 tot_metric 62464, phase_max 1
(phase,Nid1) (2,111), metric_phase 327680 tot_metric 327680, phase_max 2
(phase,Nid1) (3,111), metric_phase 511488 tot_metric 511488, phase_max 3
(phase,Nid1) (4,111), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,111), metric_phase 770048 tot_metric 770048, phase_max 5
Nid2 2 Nid1 111 tot_metric 770048, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 492 Nid1 111 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 493
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 229165600 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 492, val = 229165600 (41 dB)
Test nr sss with Nid1 111
(phase,Nid1) (0,0), metric_phase 19968 tot_metric 19968, phase_max 0
(phase,Nid1) (0,13), metric_phase 22016 tot_metric 22016, phase_max 0
(phase,Nid1) (0,109), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,117), metric_phase 26112 tot_metric 26112, phase_max 0
(phase,Nid1) (0,124), metric_phase 37376 tot_metric 37376, phase_max 0
(phase,Nid1) (0,161), metric_phase 42496 tot_metric 42496, phase_max 0
(phase,Nid1) (0,170), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,210), metric_phase 45568 tot_metric 45568, phase_max 0
(phase,Nid1) (1,111), metric_phase 62464 tot_metric 62464, phase_max 1
(phase,Nid1) (2,111), metric_phase 327680 tot_metric 327680, phase_max 2
(phase,Nid1) (3,111), metric_phase 511488 tot_metric 511488, phase_max 3
(phase,Nid1) (4,111), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,111), metric_phase 770048 tot_metric 770048, phase_max 5
Nid2 2 Nid1 111 tot_metric 770048, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 493 Nid1 111 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 56788
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 56788, val = 231344100 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 56788, val = 231344100 (41 dB)
Test nr sss with Nid1 111
(phase,Nid1) (0,0), metric_phase 19968 tot_metric 19968, phase_max 0
(phase,Nid1) (0,13), metric_phase 22016 tot_metric 22016, phase_max 0
(phase,Nid1) (0,109), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,117), metric_phase 26112 tot_metric 26112, phase_max 0
(phase,Nid1) (0,124), metric_phase 37376 tot_metric 37376, phase_max 0
(phase,Nid1) (0,161), metric_phase 42496 tot_metric 42496, phase_max 0
(phase,Nid1) (0,170), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,210), metric_phase 45568 tot_metric 45568, phase_max 0
(phase,Nid1) (1,111), metric_phase 62464 tot_metric 62464, phase_max 1
(phase,Nid1) (2,111), metric_phase 327680 tot_metric 327680, phase_max 2
(phase,Nid1) (3,111), metric_phase 511488 tot_metric 511488, phase_max 3
(phase,Nid1) (4,111), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,111), metric_phase 770048 tot_metric 770048, phase_max 5
Nid2 2 Nid1 111 tot_metric 770048, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 56788 Nid1 111 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 111111
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 111112, val = 229601794 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 111112, val = 229601794 (41 dB)
Test nr sss with Nid1 111
(phase,Nid1) (0,0), metric_phase 19968 tot_metric 19968, phase_max 0
(phase,Nid1) (0,13), metric_phase 22016 tot_metric 22016, phase_max 0
(phase,Nid1) (0,109), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,117), metric_phase 26112 tot_metric 26112, phase_max 0
(phase,Nid1) (0,124), metric_phase 37376 tot_metric 37376, phase_max 0
(phase,Nid1) (0,161), metric_phase 42496 tot_metric 42496, phase_max 0
(phase,Nid1) (0,170), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,210), metric_phase 45568 tot_metric 45568, phase_max 0
(phase,Nid1) (1,111), metric_phase 62464 tot_metric 62464, phase_max 1
(phase,Nid1) (2,111), metric_phase 327680 tot_metric 327680, phase_max 2
(phase,Nid1) (3,111), metric_phase 511488 tot_metric 511488, phase_max 3
(phase,Nid1) (4,111), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,111), metric_phase 770048 tot_metric 770048, phase_max 5
Nid2 2 Nid1 111 tot_metric 770048, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 111111 Nid1 111 Nid2 2
------------------------------------------------
Test nr pss with Nid2 2 at position 222222
[PHY][I][pss_search_time_nr] [UE] nr_synchro_time: Sync source = 2, Peak found at pos 222224, val = 219559301 (41 dB)
[UE] nr_synchro_time: Sync source = 2, Peak found at pos 222224, val = 219559301 (41 dB)
Test nr sss with Nid1 111
(phase,Nid1) (0,0), metric_phase 19968 tot_metric 19968, phase_max 0
(phase,Nid1) (0,13), metric_phase 22016 tot_metric 22016, phase_max 0
(phase,Nid1) (0,109), metric_phase 23040 tot_metric 23040, phase_max 0
(phase,Nid1) (0,117), metric_phase 26112 tot_metric 26112, phase_max 0
(phase,Nid1) (0,124), metric_phase 37376 tot_metric 37376, phase_max 0
(phase,Nid1) (0,161), metric_phase 42496 tot_metric 42496, phase_max 0
(phase,Nid1) (0,170), metric_phase 43520 tot_metric 43520, phase_max 0
(phase,Nid1) (0,210), metric_phase 45568 tot_metric 45568, phase_max 0
(phase,Nid1) (1,111), metric_phase 62464 tot_metric 62464, phase_max 1
(phase,Nid1) (2,111), metric_phase 327680 tot_metric 327680, phase_max 2
(phase,Nid1) (3,111), metric_phase 511488 tot_metric 511488, phase_max 3
(phase,Nid1) (4,111), metric_phase 651264 tot_metric 651264, phase_max 4
(phase,Nid1) (5,111), metric_phase 770048 tot_metric 770048, phase_max 5
Nid2 2 Nid1 111 tot_metric 770048, phase_max 5
SSS NR Test is pass with warning due to phase difference 5 (instead of 3) offset 222222 Nid1 111 Nid2 2
SSS NR Number of tests : 36 Pass : 0 Pass with warning : 36 Fail : 0
SSS NR Synchronisaton test is terminated.
@@ -63,9 +63,6 @@ TESTS_FAIL=0
# List of tests
tst_files="
pss_test
sss_test
pbch_test
frame_config_test"
#---------------------------------------------------------------------------
@@ -35,13 +35,7 @@ Build NR UE:
Specific test files
====================
pss_test.c: test for detection of primary synchronisation signal.
sss_test.c: test for detection of secundary synchronisation signal.
pbch_test.c: test for decoding of packet braodcast channel.
frame_config_test.c : test of frame configurations (FDD/TDD).
pss_util_test.c: common functions for running synchronisation tests.
pss_util_test.h: common headers for synchronisation tests.
input_buffer_test.h: it allows providing samples for pss test.
How to build & run tests
========================
@@ -66,16 +60,10 @@ First command to do:
cmake CMakeList.txt -> it generates makefiles to build all projects.
Then build of test:
make pss_test -> build pss_test: detection of NR (Primary Synchronisation Channel - synchronisation of UE).
make sss_test -> build sss_test: detection of NR SSS (Secundary Synchronisation Channel - second step for UE synchronisation).
make pbch_test -> build pbch_test: decoding of NR PBCH (Packet Broadcast Channel -> UE read MIB Master Information Block which gives network parameters).
make frame_config_test -> build frame_config_test: NR FDD/TDD configuration.
make clean -> clean all projects.
And execution of tests:
./pss_test -> run NR PSS tests.
./sss_test -> run NR SSS tests.
./pbch_test -> run NR PBCH tests.
./frame_config_test -> run NR frame configuration tests.
There is a script in build/run_test.sh which allows:
@@ -1,29 +0,0 @@
/**********************************************************************
* FILENAME : input_buffer_test
*
* MODULE : test of UE synchronisation
*
* DESCRIPTION : it allows unitary tests of UE synchronisation on host machine
*
************************************************************************/
#ifndef INPUT_BUFFER_H
#define INPUT_BUFFER_H
#ifdef DEFINE_VARIABLES_INPUT_BUFFER_TEST_H
#define EXTERNAL
#define INIT_VARIABLES_INPUT_BUFFER_H
#else
#define EXTERNAL extern
#undef INIT_VARIABLES_INPUT_BUFFER_H
#endif
#ifndef INIT_VARIABLES_INPUT_BUFFER_H
EXTERNAL short input_buffer[]
#else
EXTERNAL short input_buffer[307360] = {0}
#endif /* INIT_VARIABLES_INPUT_BUFFER_H */
;
#undef EXTERNAL
#undef INIT_VARIABLES_INPUT_BUFFER_H
#endif /* INPUT_BUFFER_H */
@@ -1,464 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/**********************************************************************
*
* FILENAME : pbch_test.c
*
* MODULE : UE test bench for sss tests
*
* DESCRIPTION : it allows unitary tests for SSS on host machine
*
************************************************************************/
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
typedef int nfapi_nr_pfcch_commonSearchSpaces_t;
#include "../nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h"
#include "PHY/defs_nr_UE.h"
#include "PHY/phy_extern_nr_ue.h"
#include "PHY/INIT/init_extern.h"
#include "PHY/NR_UE_TRANSPORT/nr_transport_ue.h"
#include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h"
#include "PHY/NR_REFSIG/ss_pbch_nr.h"
#include "PHY/NR_REFSIG/pss_nr.h"
#include "PHY/NR_REFSIG/sss_nr.h"
#include "PHY/NR_REFSIG/dmrs_nr.h"
#include "../../unit_tests/src/pss_util_test.h"
/************** EXTERNAL ******************************************/
extern int pbch_detection(PHY_VARS_NR_UE *ue, runmode_t mode);
/*******************************************************************
*
* NAME : test_synchro_pss_sss_nr
*
* INPUT : UE context
* for first and second pss sequence
* - position of pss in the received UE buffer
* - number of pss sequence
*
* RETURN : 0 if OK else error
*
* DESCRIPTION : detect pss sequences in the received UE buffer
* then detect sss sequence
*
* Test procedure:
* - reference pss sequences (first, second or both) are written at specific
* positions
* - correlation is done between the received buffer and the possible pss sequences
* - results indicate pss sequence number and correlation result
* - reference sss sequences are written at specific positions
* - correlation is done with possible sss sequence
*
* (10 ms)
* <--------------------------------------------------------------------------->
* -----------------------------------------------------------------------------
* | Received UE data buffer |
* ----------------------------------------------------------------------------
* ---------------------------------------------
* <-------------->| pss | pbch | sss | pbch |
* ---------------------------------------------
* offset
*
* SSS/PBCH block contains following symbols: pss + pbch + sss + pbch
*
*********************************************************************/
int test_synchro_pss_sss_nr(PHY_VARS_NR_UE *PHY_vars_UE, int position_symbol, int pss_sequence_number)
{
NR_DL_FRAME_PARMS *frame_parms = &(PHY_vars_UE->frame_parms);
UE_nr_rxtx_proc_t proc = {0};
int synchro_position;
int offset;
int16_t *tmp;
int32_t metric_fdd_ncp=0;
uint8_t phase_fdd_ncp;
int rate_change = SYNCHRO_RATE_CHANGE_FACTOR;
int decoded_pbch = -1;
set_sequence_pss(PHY_vars_UE, position_symbol, pss_sequence_number);
synchro_position = pss_synchro_nr(PHY_vars_UE, rate_change);
synchro_position = synchro_position * rate_change;
if (abs(synchro_position - position_symbol) > PSS_DETECTION_MARGIN_MAX)
{
printf("NR Pss has been detected at position %d instead of %d \n", synchro_position, position_symbol);
}
/* symbols order for synchronisation block is PSS - PBCH - SSS */
/* knowing that synchronisation position gives pss ofdm start one can deduce start of sss symbol */
offset = (position_symbol + (SSS_SYMBOL_NB - PSS_SYMBOL_NB)*(frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples));
tmp = (int16_t *)&PHY_vars_UE->common_vars.rxdata[0][offset];
insert_sss_nr(tmp, frame_parms);
//PHY_vars_UE->rx_offset = position_symbol; /* offset is given for samples of type int16 */
PHY_vars_UE->rx_offset = synchro_position; /* offset is given for samples of type int16 */
#if TEST_SYNCHRO_TIMING_PSS
start_meas(&generic_time[TIME_SSS]);
#endif
rx_sss_nr(PHY_vars_UE, &proc, &metric_fdd_ncp, &phase_fdd_ncp);
#if TEST_SYNCHRO_TIMING_PSS
stop_meas(&generic_time[TIME_SSS]);
#ifndef NR_UNIT_TEST
printf("PSS execution duration %5.2f \n", generic_time[TIME_PSS].p_time/(cpuf*1000.0));
printf("SSS execution duration %5.2f \n", generic_time[TIME_SSS].p_time/(cpuf*1000.0));
#endif
#endif
if (phase_fdd_ncp != INDEX_NO_PHASE_DIFFERENCE) {
printf("Error: detected phase on sss is not correct: expected index phase is %d, detected index phase is %d !\n", INDEX_NO_PHASE_DIFFERENCE, phase_fdd_ncp);
return -1;
}
generate_dmrs_pbch(PHY_vars_UE->dmrs_pbch_bitmap_nr, frame_parms->Nid_cell);
decoded_pbch = pbch_detection(PHY_vars_UE, PHY_vars_UE->mode);
return decoded_pbch;
}
/*******************************************************************
*
* NAME : set_sequence_sss
*
* PARAMETERS : UE context
* position of sss in the received UE buffer
*
* RETURN : none
*
* DESCRIPTION : write reference sss sequence at a specified sample position in the received UE buffer
*
*********************************************************************/
void set_sequence_sss(PHY_VARS_NR_UE *PHY_vars_UE, int offset, int slot_offset)
{
NR_DL_FRAME_PARMS *frame_parms = &(PHY_vars_UE->frame_parms);
int length = frame_parms->ofdm_symbol_size;
int size = length * IQ_SIZE; /* i & q */
nfapi_config_request_t nfapi_config;
int16_t data_sss[LENGTH_SSS_NR];
nfapi_config.sch_config.physical_cell_id.value = PHY_vars_UE->frame_parms.Nid_cell;
/* reinitialise random for always getting same data */
srand(0);
int random;
for (int i=0; i< size/2; i++) {
random = ((rand() % AMP) - AMP/2); /* AMP allows to get a scaling of samples */
synchroF_tmp[i] = random;
}
bzero(synchro_tmp, size);
/* Computation of below offset has been added due to function generate_sss which is used for eNodeB to process transmission */
/* so it is based on a transmitted buffer which has been dimensioned for a full frame */
/* here one uses a smaller buffer according to the size of an ofdm symbol so it can not properly work in this case. */
/* so in order to only write in this buffer, pointer of the buffer has been modified in such a way that function */
/* generate_sss writes correct data at the right buffer location */
/* this address offset is applied for SSS which is in the second part of the frame */
int Nsymb = (frame_parms->Ncp==NORMAL)?14:12;
int index_offset = slot_offset*Nsymb/2*frame_parms->ofdm_symbol_size;
int16_t *tmp = synchroF_tmp - (2*index_offset);
#if 0
nr_generate_sss(data_sss,
(int32_t **)&tmp,
AMP,
0, // symbol number
&nfapi_config,
frame_parms);
/* get sss in the frequency domain by applying an inverse FFT */
idft2048(synchroF_tmp, /* complex input */
synchro_tmp, /* complex output */
1); /* scaling factor */
for (int aa=0;aa<PHY_vars_UE->frame_parms.nb_antennas_rx;aa++) {
/* copy sss in rx buffer */
for (int i=0; i<length; i++) {
((int32_t*)PHY_vars_UE->common_vars.rxdata[aa])[i + offset] = ((int32_t *)synchro_tmp)[i];
}
}
#else
insert_sss_nr(tmp, frame_parms);
#endif
}
/*******************************************************************
*
* NAME : insert_sequence_sss
*
* PARAMETERS : UE context
* position of sss in the received UE buffer
*
* RETURN : none
*
* DESCRIPTION : write reference sss sequence at a specified sample position in the received UE buffer
*
*********************************************************************/
void insert_sequence_sss(PHY_VARS_NR_UE *PHY_vars_UE, int offset)
{
NR_DL_FRAME_PARMS *frame_parms = &(PHY_vars_UE->frame_parms);
int samples_for_half_frame = frame_parms->samples_per_frame / 2;
set_sequence_sss(PHY_vars_UE, offset, 0);
set_sequence_sss(PHY_vars_UE, offset + samples_for_half_frame, 10);
}
/********************************************************************
*
* NAME : test_synchro_pss_sss
*
* INPUT : UE context
* for first and second pss sequence
* - position of pss in the received UE buffer
* - number of pss sequence
*
* RETURN : 0 if OK else error
*
* DESCRIPTION : detect pss sequences in the received UE buffer
* then detect sss sequence
*
* Test procedure:
*
* - reference pss sequences (first, second or both) are written at specific
* positions
* - correlation is done between the received buffer and the possible pss sequences
* - results indicate pss sequence number and correlation result
* - reference sss sequences are written at specific positions
* - correlation is done with possible sss sequence
*
* (10 ms)
* <--------------------------------------------------------------------------->
* -----------------------------------------------------------------------------
* | Received UE data buffer |
* ----------------------------------------------------------------------------
* ------------- -------------
* <-------------->| first pss |<--------------------->| second pss |
* position ------------- (5 ms) -------------
* ---------- ----------
* | first sss| |second sss|
* ------------ -----------
* As specified by the standard:
* - first and second sss sequence are different -> allow to get frame slot timing
* - first sss sequence is located in slot 0 and second sss sequence is in slot 10
* - ofdm symbol of sss is just before ofdm symbol of pss
*
*********************************************************************/
int test_synchro_pss_sss(PHY_VARS_NR_UE *PHY_vars_UE, int position_symbol, int sequence_number, test_t *test)
{
VOID_PARAMETER test;
NR_DL_FRAME_PARMS *frame_parms = &(PHY_vars_UE->frame_parms);
int synchro_position;
int offset;
int32_t metric_fdd_ncp=0;
uint8_t flip_fdd_ncp;
uint8_t phase_fdd_ncp;
int rate_change = SYNCHRO_RATE_CHANGE_FACTOR; /* by default there is no sampling rate change */
int decoded_pbch = -1;
offset = position_symbol - frame_parms->ofdm_symbol_size - frame_parms->nb_prefix_samples;
if (offset < 0)
{
printf("Test aborted because sss position is outside the window\n");
exit(0);
}
set_sequence_pss(PHY_vars_UE, position_symbol, sequence_number);
synchro_position = pss_synchro_nr(PHY_vars_UE, rate_change);
printf("Pss has been detected at position %d with Nid2 %d \n", synchro_position, PHY_vars_UE->common_vars.eNb_id );
insert_sequence_sss(PHY_vars_UE, offset);
if ((frame_parms->Ncp != NORMAL) || (frame_parms->frame_type != FDD)) {
printf("This configuration is not supported. Please use call to function ""initial_sync"" for covering others configurations.\n");
exit(0);
}
int sync_pos2 = synchro_position - frame_parms->nb_prefix_samples;
int sync_pos_slot = (frame_parms->samples_per_slot>>1) - frame_parms->ofdm_symbol_size - frame_parms->nb_prefix_samples;
if (sync_pos2 >= sync_pos_slot)
PHY_vars_UE->rx_offset = sync_pos2 - sync_pos_slot;
else
PHY_vars_UE->rx_offset = FRAME_LENGTH_COMPLEX_SAMPLES + sync_pos2 - sync_pos_slot;
rx_sss(PHY_vars_UE, &metric_fdd_ncp, &flip_fdd_ncp, &phase_fdd_ncp);
if (phase_fdd_ncp != INDEX_NO_PHASE_DIFFERENCE) {
printf("Error: detected phase on sss is not correct: expected index phase is %d, detected index phase is %d !\n", INDEX_NO_PHASE_DIFFERENCE, phase_fdd_ncp);
return -1;
}
init_frame_parms(&PHY_vars_UE->frame_parms,1);
//lte_gold_new(frame_parms, PHY_vars_UE->lte_gold_table[0],frame_parms->Nid_cell);
decoded_pbch = pbch_detection(PHY_vars_UE, PHY_vars_UE->mode);
return decoded_pbch;
}
/*******************************************************************
*
* NAME : main
*
* DESCRIPTION : test bench for synchronisation sequence (pss/sss/pbch)
* purpose of test is to check that synchronisation sequence can be
* properly detected depending of input waveforms.
*
* - First step of synchronisation consists in pss search (primary synchronisation signal).
* pss sequence should be detected at the right position
* in the received buffer whatever the position along the
* received data buffer.
* Detection of position is based on correlation in time domain between
* received signal and pss sequence -> position is given by
* peak of correlation result.
* - Second step of synchronisation is sss decoding (secundary synchronisation signal).
* sss detection is based on position of detected pss.
*
*********************************************************************/
int main(int argc, char *argv[])
{
VOID_PARAMETER argc;
VOID_PARAMETER argv;
uint8_t transmission_mode = 1;
uint8_t nb_antennas_tx = 1;
uint8_t nb_antennas_rx = 1;
uint8_t frame_type = FDD;
int N_RB_DL=100;
lte_prefix_type_t extended_prefix_flag = NORMAL;
int decoded_pbch = -1;
int Nid1, Nid2;
const char *name_test = " PBCH NR ";
test_t test = { name_test, 0, 0, 0, 0};
#if 1
int test_position[] = { 20000 }; /* this is the sample number in the frame */
#else
int test_position[] = { -1 }; /* to get samples from a buffer initialised from an external file */
#endif
int size_test_position;
/* this is a pointer to the function in charge of the test */
int (*p_test_synchro_pss_sss)(PHY_VARS_NR_UE *PHY_vars_UE, int position_symbol, int sequence_number) = test_synchro_pss_sss_nr;
#if 0
int Nid_cell[] = { (3*0+0), (3*71+0), (3*21+2), (3*21+2), (3*55+1), (3*111+2) };
#else
int Nid_cell[] = { ((3*1+2)) };
#endif
printf(" PBCH TEST \n");
printf("----------\n");
if (init_test(nb_antennas_tx, nb_antennas_rx, transmission_mode, extended_prefix_flag, frame_type, Nid_cell[0], N_RB_DL) != 0) {
printf("Initialisation problem for synchronisation test \n");
exit(-1);;
}
p_test_synchro_pss_sss = test_synchro_pss_sss_nr;
size_test_position = sizeof(test_position)/sizeof(int);
printf("***********************************\n");
printf(" %s Test NR synchroisation \n", test.test_current);
printf("***********************************\n");
for (unsigned int index = 0; index < (sizeof(Nid_cell)/sizeof(int)); index++) {
Nid2 = GET_NID2(Nid_cell[index]);
Nid1 = GET_NID1(Nid_cell[index]);
for (int position = 0; position < size_test_position; position++) {
PHY_vars_UE->frame_parms.Nid_cell = (3 * N_ID_1_NUMBER) + N_ID_2_NUMBER; /* set to unvalid value */
decoded_pbch = (*p_test_synchro_pss_sss)(PHY_vars_UE, test_position[position], Nid2); /* return phase index which gives phase error from an array */
test.number_of_tests++;
printf("\n%s ", test.test_current);
if (PHY_vars_UE->frame_parms.Nid_cell == (3 * Nid1) + Nid2) {
if (decoded_pbch != -1) {
printf("Test is pass with offset %d Nid1 %d Nid2 %d \n", test_position[position], Nid1, Nid2);
test.number_of_pass++;
}
else {
printf("Test is fail because pbch has not been decoded \n");
test.number_of_fail++;
}
}
else {
printf("Test is fail with offset %d Nid1 %d Nid2 %d \n", test_position[position], Nid1, Nid2);
test.number_of_fail++;
}
break;
}
break;
}
printf("\n %s Number of tests : %d Pass : %d Pass with warning : %d Fail : %d \n", test.test_current, test.number_of_tests, test.number_of_pass, test.number_of_pass_warning, test.number_of_fail);
printf("%s Synchronisaton test is terminated.\n\n", test.test_current);
/* reset test statistics */
test.number_of_tests = test.number_of_pass = test.number_of_pass_warning = test.number_of_fail = 0;
free_context_synchro_nr();
return(0);
}
@@ -1,239 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/**********************************************************************
*
* FILENAME : pss_test.c
*
* MODULE : UE test bench for synchronisation
*
* DESCRIPTION : it allows unitary tests of UE synchronisation on host machine
*
************************************************************************/
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include "../../unit_tests/src/pss_util_test.h"
#include "PHY/defs_nr_UE.h"
#include "PHY/INIT/init_extern.h"
#include "PHY/phy_extern_nr_ue.h"
#include "PHY/NR_REFSIG/ss_pbch_nr.h"
#include "PHY/NR_REFSIG/pss_nr.h"
#include "PHY/NR_REFSIG/sss_nr.h"
#include "PHY/NR_REFSIG/dmrs_nr.h"
/************** DEFINE *******************************************/
/*************** LOCAL VARIABLES***********************************/
/*************** FUNCTIONS ****************************************/
/********************************************************************
*
* NAME : pss_test
*
* INPUT : UE context
* for a pss sequence
* - position of pss in the received UE buffer
* - number of pss sequence
*
* RETURN : 0 if OK else error
*
* DESCRIPTION : detect pss sequences in the received UE buffer
*
* Test procedure:
*
* - reference pss sequences is written at a specific position
* - correlation is done between the received buffer and the possible pss sequences
* - results indicate pss sequence number and correlation result.
*
* Test is pass if detection of pss position is the one which has been set.
*
* (10 ms)
* <--------------------------------------------------------------------------->
* -----------------------------------------------------------------------------
* | Received UE data buffer |
* ----------------------------------------------------------------------------
* +-----------+
* <--------->| pss |
* position +-----------+
* ^
* |
* peak position
* given by maximum of correlation result
* position matches beginning of ofdm symbol
*
* Remark: memory position should be aligned on a multiple of 4 due to I & Q samples of int16
* An OFDM symbol is composed of x number of received samples depending of Rf front end sample rate.
*
* I & Q storage in memory
*
* First samples Second samples
* ------------------------- ------------------------- ...
* | I1 | Q1 | I2 | Q2 |
* --------------------------------------------------- ...
* ^ 16 bits 16 bits ^
* | |
* --------------------------------------------------- ...
* | sample 1 | sample 2 |
* ---------------------------------------------------- ...
* ^
* |
* OFDM in time
*
*********************************************************************/
void test_synchro_pss_nr(PHY_VARS_NR_UE *PHY_VARS_NR_UE, int position_symbol, int pss_sequence_number, test_t *test)
{
int rate_change = SYNCHRO_RATE_CHANGE_FACTOR;
int synchro_position;
int NID2_value;
display_test_configuration_pss(position_symbol, pss_sequence_number);
set_sequence_pss(PHY_VARS_NR_UE, position_symbol, pss_sequence_number);
/* search pss */
synchro_position = pss_synchro_nr(PHY_VARS_NR_UE, rate_change);
int pss_sequence = get_softmodem_params()->sl_mode == 0 ? NUMBER_PSS_SEQUENCE : NUMBER_PSS_SEQUENCE_SL;
if (pss_sequence_number < pss_sequence) {
NID2_value = pss_sequence_number;
} else {
NID2_value = pss_sequence;
}
if (NID2_value < pss_sequence) {
test->number_of_tests++;
/* position should be adjusted with i&q samples which are successively stored as int16 in the received buffer */
int test_margin = PSS_DETECTION_MARGIN_MAX; /* warning correlation results give an offset position between 0 and 12 */
int delta_position = abs(position_symbol - (synchro_position*rate_change));
printf("%s ", test->test_current);
if (PHY_VARS_NR_UE->common_vars.eNb_id == pss_sequence_number) {
if ( delta_position != 0) {
if (delta_position > test_margin*rate_change) {
printf("Test is fail due to wrong position %d instead of %d \n", (synchro_position*rate_change), position_symbol);
printf("%s ", test->test_current);
printf("Test is fail : pss detected with a shift of %d \n", delta_position);
test->number_of_fail++;
}
else {
printf("Test is pass with warning: pss detected with a shift of %d \n", delta_position);
test->number_of_pass_warning++;
}
}
else {
printf("Test is pass: pss detected at right position \n");
test->number_of_pass++;
}
}
else {
printf("Test is fail due to wrong NID2 detection %d instead of %d \n", PHY_VARS_NR_UE->common_vars.eNb_id, NID2_value);
test->number_of_fail++;
}
}
}
/*******************************************************************
*
* NAME : main
*
* DESCRIPTION : test bench for synchronisation sequence (pss/sss/pbch)
* purpose of test is to check that synchronisation sequence can be
* properly detected depending of input waveforms.
*
* - First step of synchronisation is pss sequence.
* pss sequence should be detected at the right position
* in the received buffer whatever the position along the
* received data buffer.
* Detection of position is based on correlation in time domain between
* received signal and pss sequence -> position is given by
* peak of correlation result.
*
*********************************************************************/
int main(int argc, char *argv[])
{
VOID_PARAMETER argc;
VOID_PARAMETER argv;
uint8_t transmission_mode = 1;
uint8_t nb_antennas_tx = 1;
uint8_t nb_antennas_rx = 1;
uint16_t Nid_cell=123;
uint8_t frame_type=FDD;
int N_RB_DL=100;
lte_prefix_type_t extended_prefix_flag=NORMAL;
const char *name_test = "PSS NR";
test_t test = { name_test, 0, 0, 0, 0};
/* this is a pointer to the function in charge of the test */
void (*p_test_synchro_pss)(PHY_VARS_NR_UE *PHY_VARS_NR_UE, int position_symbol, int pss_sequence_number, test_t *test) = test_synchro_pss_nr;
int test_position[] = { 0, 492, 493, 56788, 56888, 111111, 151234, 151500, 200000, 250004, (307200-2048) };
int size_test_position = sizeof(test_position)/sizeof(int);
printf(" PSS TEST \n");
printf("----------\n");
if (init_test(nb_antennas_tx, nb_antennas_rx, transmission_mode, extended_prefix_flag, frame_type, Nid_cell, N_RB_DL) != 0) {
printf("Initialisation problem for synchronisation test \n");
exit(-1);;
}
printf("***********************************\n");
printf(" %s Test synchronisation \n", test.test_current);
printf("***********************************\n");
#if 0
printf("Synchronisation with random data\n");
test_synchro_pss_nr(PHY_vars_UE, 0, INVALID_PSS_SEQUENCE, &test);
#endif
int pss_sequence = get_softmodem_params()->sl_mode == 0 ? NUMBER_PSS_SEQUENCE : NUMBER_PSS_SEQUENCE_SL;
for (int index_position = 0; index_position < size_test_position; index_position++) {
for (int number_pss_sequence = 0; number_pss_sequence < pss_sequence; number_pss_sequence++) {
p_test_synchro_pss(PHY_vars_UE, test_position[index_position], number_pss_sequence, &test);
//break;
}
//break;
}
printf("\n%s Number of tests : %d Pass : %d Pass with warning : %d Fail : %d \n\n", test.test_current, test.number_of_tests, test.number_of_pass, test.number_of_pass_warning, test.number_of_fail);
printf("%s Synchronisaton test is terminated.\n\n", test.test_current);
/* reset test statistics */
test.number_of_tests = test.number_of_pass = test.number_of_pass_warning = test.number_of_fail = 0;
free_context_synchro_nr();
return(0);
}
@@ -1,523 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*********************************************************************
*
* FILENAME : pss_util_test.c
*
* MODULE : UE test bench for unit tests
*
* DESCRIPTION : it allows unitary tests of NR UE
*
************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <limits.h>
#include <signal.h>
#include <time.h>
#include "PHY/defs_nr_UE.h"
#include "PHY/INIT/phy_init.h"
#include "PHY/phy_extern_nr_ue.h"
/* to declare ue variables */
#include "PHY/phy_vars_nr_ue.h"
#include "PHY/LTE_TRANSPORT/transport_vars.h"
#include "PHY/NR_REFSIG/pss_nr.h"
#include "PHY/NR_REFSIG/sss_nr.h"
#include "PHY/NR_UE_TRANSPORT/cic_filter_nr.h"
#define DEFINE_VARIABLES_PSS_NR_H
#include "../../unit_tests/src/pss_util_test.h"
#undef DEFINE_VARIABLES_PSS_NR_H
#define DEFINE_VARIABLES_INPUT_BUFFER_TEST_H
#include "../../unit_tests/src/input_buffer_test.h"
#undef DEFINE_VARIABLES_INPUT_BUFFER_TEST_H
#include "common/utils/LOG/log.h"
/************** DEFINE *******************************************/
/*************** LOCAL VARIABLES***********************************/
static nfapi_config_request_t config_t;
static nfapi_config_request_t *config =&config_t;
/*************** FUNCTIONS ****************************************/
//void phy_init_nr_top(NR_DL_FRAME_PARMS *frame_parms);
int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_eNB);
/*******************************************************************
*
* NAME : apply phase shift
*
* PARAMETERS : pointer to buffer in frequency
* length of sample
*
* RETURN : none
*
* DESCRIPTION : apply phase shift to samples
*
*********************************************************************/
void phase_shift_samples(int16_t *samples, int length, int16_t phase_shift_re, int16_t phase_shift_im) {
int16_t sample_re, sample_im;
for (int i = 0; i < length; i++) {
sample_re = (((phase_shift_re*samples[2*i])>>SCALING_METRIC_SSS_NR) - ((phase_shift_im*samples[2*i+1])>>SCALING_METRIC_SSS_NR));
sample_im = (((phase_shift_im*samples[2*i])>>SCALING_METRIC_SSS_NR) + ((phase_shift_re*samples[2*i+1])>>SCALING_METRIC_SSS_NR));
samples[2*i] = sample_re;
samples[2*i+1] = sample_im;
}
}
/*******************************************************************
*
* NAME : display_data
*
* PARAMETERS : pointer to buffer
* position in the buffer
*
* RETURN : none
*
* DESCRIPTION : display pss sequence and data of a buffer
*
*
*********************************************************************/
void display_data(int pss_sequence_number, int16_t *rxdata, int position) {
#ifdef DEBUG_TEST_PSS
int pss_sequence = get_softmodem_params()->sl_mode == 0 ? NUMBER_PSS_SEQUENCE : NUMBER_PSS_SEQUENCE_SL;
int16_t *pss_sequence[pss_sequence] = {primary_synch0_time, primary_synch1_time, primary_synch2_time};
int16_t *pss_sequence_sl[pss_sequence] = {primary_synch0_time, primary_synch1_time};
int16_t *pss_sequence_time = pss_sequence[pss_sequence_number];;
if (get_softmodem_params()->sl_mode != 0)
pss_sequence_time = pss_sequence_sl[pss_sequence_number];
printf(" pss %6d data \n", pss_sequence_number);
for (int i = 0; i < 4; i++) {
if (pss_sequence_number < pss_sequence) {
printf("[i %6d] : %4d [i %6d] : %8i at address : %p \n", i, pss_sequence_time[2*i], (i + position), rxdata[2*i + (position*2)], &(rxdata[2*i + (position*2)]));
printf("[q %6d] : %4d [q %6d] : %8i at address : %p \n", i, pss_sequence_time[2*i+1], (i + position), rxdata[2*i + 1 + (position*2)], &(rxdata[2*i + 1 + (position*2)]));
} else {
printf("[i %6d] : Undef [i %6d] : %8i at address : %p \n", i, (i + position), rxdata[2*i + (position*2)], &(rxdata[2*i + (position*2)]));
printf("[q %6d] : Undef [q %6d] : %8i at address : %p \n", i, (i + position), rxdata[2*i + 1 + (position*2)], &(rxdata[2*i + 1 + (position*2)]));
}
}
nr_init_frame_parms
printf(" ... ... \n");
#else
(void) pss_sequence_number;
(void) rxdata;
(void) position;
#endif
}
/*******************************************************************
*
* NAME : display_test_configuration_pss
*
* PARAMETERS :
*
*
* RETURN : none
*
* DESCRIPTION : display test configuration of pss
*
*********************************************************************/
void display_test_configuration_pss(int position, int pss_sequence_number) {
const char next_test_text[] = "------------------------------------------------\n";
const char test_text_pss[] = "Test nr pss with Nid2 %i at position %i \n";
printf(next_test_text);
printf(test_text_pss, pss_sequence_number, position);
}
/*******************************************************************
*
* NAME : display_test_configuration_sss
*
* PARAMETERS :
*
*
* RETURN : none
*
* DESCRIPTION : display test configuration of pss
*
*********************************************************************/
void display_test_configuration_sss(int sss_sequence_number) {
const char test_text_sss[] = "Test nr sss with Nid1 %i \n";
printf(test_text_sss, sss_sequence_number);
}
/*******************************************************************
*
* NAME : undefinedFunction
*
* PARAMETERS : function name
*
* RETURN : none
*
* DESCRIPTION : these functions allow to solve undefined functions at link
* function name is printed at execution time for checking that
* each function is not called
*
*********************************************************************/
void undefined_function(const char *function) {
printf("%s undefined \n", function);
printf("Warning: function \"%s\" has been replaced by an empty function for avoiding undefined function error at build \n", function);
}
/*******************************************************************
*
* NAME : init_synchro_test
*
* PARAMETERS : configuration for UE and eNB
*
* RETURN : 0 if OK else error
*
* DESCRIPTION : initialisation of UE and eNode contexts
*
*********************************************************************/
int init_test(unsigned char N_tx, unsigned char N_rx, unsigned char transmission_mode,
unsigned char extended_prefix_flag, uint8_t frame_type, uint16_t Nid_cell, int N_RB_DL) {
(void) transmission_mode;
NR_DL_FRAME_PARMS *frame_parms;
int log_level = OAILOG_TRACE;
logInit();
// enable these lines if you need debug info
//set_comp_log(PHY,LOG_DEBUG,LOG_HIGH,1);
set_glog(log_level);
#ifndef NR_UNIT_TEST
cpuf = get_cpu_freq_GHz();
//LOG_I(PHY, "[CONFIG] Test of UE synchronisation \n");
set_component_filelog(USIM); // file located in /tmp/testSynchroue.txt
#endif
//randominit(0);
//set_taus_seed(0);
printf("Start lte_param_init, frame_type %d, extended_prefix %d\n",frame_type,extended_prefix_flag);
PHY_vars_UE = malloc(sizeof(PHY_VARS_NR_UE));
bzero(PHY_vars_UE, sizeof(PHY_VARS_NR_UE));
if (PHY_vars_UE == NULL)
return(-1);
frame_parms = &(PHY_vars_UE->frame_parms);
frame_parms->N_RB_DL = N_RB_DL; //50 for 10MHz and 25 for 5 MHz
frame_parms->N_RB_UL = N_RB_DL;
frame_parms->Ncp = extended_prefix_flag;
frame_parms->Nid_cell = Nid_cell;
frame_parms->nb_antennas_tx = N_tx;
frame_parms->nb_antennas_rx = N_rx;
frame_parms->frame_type = frame_type;
frame_parms->nb_antenna_ports_gNB = 1;
frame_parms->threequarter_fs = 0;
frame_parms->numerology_index = NUMEROLOGY_INDEX_MAX_NR;
int mu = 1;
int n_ssb_crb = 0;
int ssb_subcarrier_offset = 0;
nr_init_frame_parms_ue(frame_parms, mu, extended_prefix_flag, N_RB_DL, n_ssb_crb, ssb_subcarrier_offset);
int nid_2_num = get_softmodem_params()->sl_mode == 0 ? N_ID_2_NUMBER : N_ID_2_NUMBER_SL;
PHY_vars_UE->frame_parms.Nid_cell = (3 * N_ID_1_NUMBER) + nid_2_num; /* set to unvalid value */
//phy_init_nr_top(frame_parms);
if (init_nr_ue_signal(PHY_vars_UE, 1) != 0) {
LOG_E(PHY,"Error at UE NR initialisation : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME);
return (0);
}
/* dummy initialisation of global structure PHY_vars_UE_g */
uint16_t NB_UE_INST=1;
PHY_vars_UE_g = (PHY_VARS_NR_UE ** *)calloc( NB_UE_INST, sizeof(PHY_VARS_NR_UE **));
for (int UE_id=0; UE_id<NB_UE_INST; UE_id++) {
PHY_vars_UE_g[UE_id] = (PHY_VARS_NR_UE **) calloc( MAX_NUM_CCs, sizeof(PHY_VARS_NR_UE *));
for (int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
//(frame_parms[CC_id])->nb_antennas_tx = 1;
//(frame_parms[CC_id])->nb_antennas_rx = nb_antennas_rx_ue;
// PHY_vars_UE_g[UE_id][CC_id] = init_lte_UE(frame_parms[CC_id], UE_id,abstraction_flag);
PHY_vars_UE_g[UE_id][CC_id] = calloc(1, sizeof(PHY_VARS_NR_UE));
PHY_vars_UE_g[UE_id][CC_id]->Mod_id=UE_id;
PHY_vars_UE_g[UE_id][CC_id]->CC_id=CC_id;
}
}
return (0);
}
/*******************************************************************
*
* NAME : set_random_rx_buffer
*
* PARAMETERS : Ue context
*
* RETURN : 0 if OK else error
*
* DESCRIPTION : write random data in received UE buffer of the synchronisation window
*
*********************************************************************/
typedef enum {
ZERO_DATA,
SINUSOIDAL_DATA,
RANDOM_DATA,
RANDOM_MAX_DATA
} random_data_format_t;
/* data is a pure cosinus wave */
#define SAMPLING_RATE (30720000L)
#define SCALING_SINUSOIDAL_DATA (4) /* 16 is max value without decimation */
#define FREQUENCY_15_MHZ (15360000L)
#define FREQUENCY (FREQUENCY_15_MHZ) /* to generate a frequency with a sampling of 30,72 MHz 5 gives 770 KHz, 20 gives 1,5 MHz, 40 gives 3 MHz */
void set_random_rx_buffer(PHY_VARS_NR_UE *PHY_vars_UE, int amp) {
NR_DL_FRAME_PARMS *frame_parms = &(PHY_vars_UE->frame_parms);
int samples_for_frame = frame_parms->samples_per_frame;
int16_t random;
int16_t *data_p;
random_data_format_t data_format = SINUSOIDAL_DATA;
/* reinitialise random for always getting same data */
srand(0);
double n = 0;
for (int aa=0; aa<PHY_vars_UE->frame_parms.nb_antennas_rx; aa++) {
data_p = (int16_t *) &(PHY_vars_UE->common_vars.rxdata[aa][0]);
int frequency_switch = samples_for_frame/LTE_NUMBER_OF_SUBFRAMES_PER_FRAME;
int frequency_step = 0;
double beat = (2*M_PI*FREQUENCY_15_MHZ)/(SAMPLING_RATE);
for (int i=0; i< samples_for_frame; i++) {
switch(data_format) {
case ZERO_DATA: {
/* all data are forced to zero */
random = 0;
break;
}
case SINUSOIDAL_DATA: {
/* sinusoidal signal */
n = cos(beat*i);
random = n * (amp * SCALING_SINUSOIDAL_DATA);
frequency_step++;
if (frequency_step == frequency_switch) {
beat = beat/2; /* frequency is divided by 2 */
//printf("frequency %f at %d\n", (beat/2*M_PI), i);
frequency_step = 0;
}
//printf("%d : cos %d %d \n", i, n, random);
break;
}
case RANDOM_DATA: {
/* random data can take any value between -SHRT_MAX and SHRT_MAX */
/* in this case one can use maxim value for uint16 because there is no saturation */
#define SCALING_RANDOM_DATA (24) /* 48 is max value without decimation */
#define RANDOM_MAX_AMP (amp * SCALING_RANDOM_DATA)
random = ((rand() % RANDOM_MAX_AMP) - RANDOM_MAX_AMP/2);
break;
}
case RANDOM_MAX_DATA: {
/* random data can take only two value (-RANDOM_MAX) or RANDOM_MAX */
/* In this case saturation can occur with value of scaling_value greater than 23 */
#define SCALING_RANDOM_MAX_DATA (8)
#define RANDOM_VALUE (amp * SCALING_RANDOM_DATA)
const int random_number[2] = {-1,+1};
random = random_number[rand()%2] * RANDOM_VALUE;
break;
}
default: {
printf("Format of data is undefined \n");
assert(0);
break;
}
}
data_p[2*i] = random;
data_p[2*i+1] = random;
#if 0
if (i < 10) {
printf("random %d \n", random);
printf("data[%d] : %d %d at address %p \n", i, data_p[2*i], data_p[2*i+1], &data_p[2*i]);
}
#endif
}
}
}
/*******************************************************************
*
* NAME : set_pss_in_rx_buffer_from_external_buffer
*
* PARAMETERS : UE context
* position of pss in the received UE buffer
* number of pss sequence*
*
* RETURN : 0 if OK else error
*
* DESCRIPTION : set received buffer according to an external buffer
*
*********************************************************************/
int set_pss_in_rx_buffer_from_external_buffer(PHY_VARS_NR_UE *PHY_vars_UE, short *input_buffer) {
NR_DL_FRAME_PARMS *frame_parms = &(PHY_vars_UE->frame_parms);
int samples_for_frame = frame_parms->samples_per_frame; /* both i and q */
for (int aa=0; aa<PHY_vars_UE->frame_parms.nb_antennas_rx; aa++) {
for (int i = 0; i < samples_for_frame; i++) {
((int16_t *)PHY_vars_UE->common_vars.rxdata[aa])[2*i] = input_buffer[2*i]; /* real part */
((int16_t *)PHY_vars_UE->common_vars.rxdata[aa])[2*i+1] = input_buffer[2*i+1]; /* imaginary part */
}
}
/* check that sequence has been properly copied */
for (int aa=0; aa<PHY_vars_UE->frame_parms.nb_antennas_rx; aa++) {
for (int i=0; i<samples_for_frame; i++) {
if ((input_buffer[2*i] != ((int16_t *)PHY_vars_UE->common_vars.rxdata[aa])[2*i])
|| (input_buffer[2*i+1] != ((int16_t *)PHY_vars_UE->common_vars.rxdata[aa])[2*i+1])) {
printf("Sequence pss was not properly copied into received buffer at index %d \n", i);
exit(-1);
}
}
}
return (0);
}
/*******************************************************************
*
* NAME : set_pss_in_rx_buffer
*
* PARAMETERS : UE context
* position of pss in the received UE buffer
* number of pss sequence*
*
* RETURN : 0 if OK else error
*
* DESCRIPTION : write reference pss sequence at a specified sample position in the received UE buffer
*
* first pss sequence is written into the buffer only if:
* - pss sequence is valid
* - there is enough room for written the complete sequence
*
* second sequence is written at a position of 5 ms after first pss sequence if:
* - pss sequence is valid
* - there is enough room for written the complete sequence*
*
*********************************************************************/
int set_pss_in_rx_buffer(PHY_VARS_NR_UE *PHY_vars_UE, int position_symbol, int pss_sequence_number) {
NR_DL_FRAME_PARMS *frame_parms = &(PHY_vars_UE->frame_parms);
int samples_for_frame = frame_parms->samples_per_frame;
int16_t *pss_sequence_time;
if ((position_symbol > samples_for_frame)
|| ((position_symbol + frame_parms->ofdm_symbol_size) > samples_for_frame)) {
printf("This pss sequence can not be fully written in the received window \n");
return (-1);
}
int pss_sequence = get_softmodem_params()->sl_mode == 0 ? NUMBER_PSS_SEQUENCE : NUMBER_PSS_SEQUENCE_SL;
if ((pss_sequence_number >= pss_sequence) && (pss_sequence_number < 0)) {
printf("Unknow pss sequence %d \n", pss_sequence_number);
return (-1);
}
pss_sequence_time = primary_synchro_time_nr[pss_sequence_number];
for (int aa=0; aa<PHY_vars_UE->frame_parms.nb_antennas_rx; aa++) {
for (int i = 0; i < frame_parms->ofdm_symbol_size; i++) {
((int16_t *)PHY_vars_UE->common_vars.rxdata[aa])[(position_symbol*2) + (2*i)] = pss_sequence_time[2*i]; /* real part */
((int16_t *)PHY_vars_UE->common_vars.rxdata[aa])[(position_symbol*2) + (2*i+1)] = pss_sequence_time[2*i+1]; /* imaginary part */
}
}
/* check that sequence has been properly copied */
for (int aa=0; aa<PHY_vars_UE->frame_parms.nb_antennas_rx; aa++) {
for (int i=0; i<(frame_parms->ofdm_symbol_size); i++) {
if ((pss_sequence_time[2*i] != ((int16_t *)PHY_vars_UE->common_vars.rxdata[aa])[(position_symbol*2) + (2*i)])
|| (pss_sequence_time[2*i+1] != ((int16_t *)PHY_vars_UE->common_vars.rxdata[aa])[(position_symbol*2) + (2*i+1)])) {
printf("Sequence pss was not properly copied into received buffer at index %d \n", i);
exit(-1);
}
}
}
return (0);
}
/*******************************************************************
*
* NAME : set_sequence_pss
*
* PARAMETERS : UE context
* position of pss in the received UE buffer
* number of pss sequence*
*
* RETURN : 0 if OK else error
*
* DESCRIPTION : write reference pss sequence at a specified sample position in the received UE buffer
*
* pss sequence is written into the buffer only if:
* - pss sequence is valid
* - there is enough room for written the complete sequence*
*
*********************************************************************/
void set_sequence_pss(PHY_VARS_NR_UE *PHY_vars_UE, int position_symbol, int pss_sequence_number) {
NR_DL_FRAME_PARMS *frame_parms = &(PHY_vars_UE->frame_parms);
int samples_for_frame = frame_parms->samples_per_frame;
/* initialise received ue data with random */
set_random_rx_buffer(PHY_vars_UE, AMP);
/* in this case input buffer is provided by an external buffer */
if (position_symbol < 0) {
set_pss_in_rx_buffer_from_external_buffer(PHY_vars_UE, input_buffer);
}
int pss_sequence = get_softmodem_params()->sl_mode == 0 ? NUMBER_PSS_SEQUENCE : NUMBER_PSS_SEQUENCE_SL;
/* write pss sequence in received ue buffer */
else if (pss_sequence_number < pss_sequence) {
if (position_symbol > (samples_for_frame - frame_parms->ofdm_symbol_size)) {
printf("This position for pss sequence %d is not supported because it exceeds the frame length %d!\n", position_symbol, samples_for_frame);
exit(0);
}
if (set_pss_in_rx_buffer(PHY_vars_UE, position_symbol, pss_sequence_number) != 0)
printf("Warning: pss sequence can not be properly written into received buffer !\n");
}
display_data(pss_sequence_number, (int16_t *)&(PHY_vars_UE->common_vars.rxdata[0][0]), position_symbol);
}
@@ -1,109 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/**********************************************************************
*
* FILENAME : pss_util_test.h
*
* MODULE : UE utilities for test bench of synchronisation
*
* DESCRIPTION : it allows unitary tests of UE synchronisation on host machine
*
************************************************************************/
#ifndef PSS_UTIL_TEST_H
#define PSS_UTIL_TEST_H
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include "PHY/defs_nr_UE.h"
#include "PHY/INIT/init_extern.h"
#include "PHY/phy_extern_nr_ue.h"
#include "PHY/NR_REFSIG/pss_nr.h"
#ifdef DEFINE_VARIABLES_PSS_NR_H
#define EXTERN
#define INIT_VARIABLES_PSS_NR_H
#else
#define EXTERN extern
#undef INIT_VARIABLES_PSS_NR_H
#endif
/************** DEFINE *******************************************/
//#define DEBUG_TEST_PSS
#define PSS_DETECTION_MARGIN_MAX (4)
#define NUMEROLOGY_INDEX_MAX_NR (5)
/*************** TYPE*********************************************/
typedef struct {
const char *test_current;
int number_of_tests;
int number_of_pass;
int number_of_pass_warning;
int number_of_fail;
} test_t;
/*************** GLOBAL VARIABLES***********************************/
EXTERN PHY_VARS_eNB *PHY_vars_eNB;
EXTERN PHY_VARS_NR_UE *PHY_vars_UE;
/*************** FUNCTIONS *****************************************/
void undefined_function(const char *function);
void display_data(int pss_sequence_number, int16_t *rxdata, int position);
void init_decimator_test(void);
void decimation_synchro_nr(PHY_VARS_NR_UE *PHY_vars_UE, int **rxdata);
void restore_context_frame(int **rxdata);
int set_pss_in_rx_buffer(PHY_VARS_NR_UE *PHY_vars_UE, int position_symbol, int pss_sequence_number);
int init_test(unsigned char N_tx, unsigned char N_rx, unsigned char transmission_mode,
unsigned char extended_prefix_flag, uint8_t frame_type, uint16_t Nid_cell,
int N_RB_DL);
void display_test_configuration_pss(int position, int pss_sequence_number);
void display_test_configuration_sss(int sss_sequence_number);
int set_pss_nr(int ofdm_symbol_size);
void set_random_rx_buffer(PHY_VARS_NR_UE *PHY_vars_UE, int amp);
void set_sequence_pss(PHY_VARS_NR_UE *PHY_vars_UE, int position_symbol, int pss_sequence_number);
int set_pss_in_rx_buffer_from_external_buffer(PHY_VARS_NR_UE *PHY_vars_UE, short *inputBuffer);
void phase_shift_samples(int16_t *samples, int length, int16_t phase_shift_re, int16_t phase_shift_im);
#endif /* PSS_UTIL_TEST_H */
@@ -1,269 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/**********************************************************************
*
* FILENAME : sss_test.c
*
* MODULE : UE test bench for sss tests
*
* DESCRIPTION : it allows unitary tests for SSS on host machine
*
************************************************************************/
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include "../../unit_tests/src/pss_util_test.h"
#include "PHY/defs_nr_UE.h"
#include "PHY/INIT/init_extern.h"
#include "PHY/phy_extern_nr_ue.h"
#include "PHY/NR_REFSIG/ss_pbch_nr.h"
#include "PHY/NR_REFSIG/pss_nr.h"
#include "PHY/NR_REFSIG/sss_nr.h"
#include "PHY/NR_REFSIG/dmrs_nr.h"
/*******************************************************************
*
* NAME : test_synchro_pss_sss_nr
*
* INPUT : UE context
* for first and second pss sequence
* - position of pss in the received UE buffer
* - number of pss sequence
*
* RETURN : 0 if OK else error
*
* DESCRIPTION : detect pss sequences in the received UE buffer
* then detect sss sequence
*
* Test procedure:
* - reference pss sequences (first, second or both) are written at specific
* positions
* - correlation is done between the received buffer and the possible pss sequences
* - results indicate pss sequence number and correlation result
* - reference sss sequences are written at specific positions
* - correlation is done with possible sss sequence
*
* (10 ms)
* <--------------------------------------------------------------------------->
* -----------------------------------------------------------------------------
* | Received UE data buffer |
* ----------------------------------------------------------------------------
* ---------------------------------------------
* <-------------->| pss | pbch | sss | pbch |
* ---------------------------------------------
* offset
*
* SSS/PBCH block contains following symbols: pss + pbch + sss + pbch
*
*********************************************************************/
int test_synchro_pss_sss_nr(PHY_VARS_NR_UE *PHY_vars_UE, int position_symbol, NR_DL_FRAME_PARMS *frame_parms_gNB, test_t *test)
{
UE_nr_rxtx_proc_t proc = {0};
VOID_PARAMETER test;
int synchro_position;
int offset;
int16_t *tmp;
int32_t metric_fdd_ncp=0;
uint8_t phase_fdd_ncp;
int rate_change = SYNCHRO_RATE_CHANGE_FACTOR;
int Nid2 = GET_NID2(frame_parms_gNB->Nid_cell);
int Nid1 = GET_NID1(frame_parms_gNB->Nid_cell);
display_test_configuration_pss(position_symbol, Nid2);
set_sequence_pss(PHY_vars_UE, position_symbol, Nid2);
synchro_position = pss_synchro_nr(PHY_vars_UE, rate_change);
display_test_configuration_sss(Nid1);
synchro_position = synchro_position * rate_change;
if (abs(synchro_position - position_symbol) > PSS_DETECTION_MARGIN_MAX)
{
printf("NR Pss has been detected at position %d instead of %d \n", synchro_position, position_symbol);
}
/* symbols order for synchronisation block is PSS - PBCH - SSS */
/* knowing that synchronisation position gives pss ofdm start one can deduce start of sss symbol */
offset = (position_symbol + (SSS_SYMBOL_NB - PSS_SYMBOL_NB)*(PHY_vars_UE->frame_parms.ofdm_symbol_size + PHY_vars_UE->frame_parms.nb_prefix_samples));
tmp = (int16_t *)&PHY_vars_UE->common_vars.rxdata[0][offset];
insert_sss_nr(tmp, frame_parms_gNB);
PHY_vars_UE->rx_offset = position_symbol; /* offset is given for samples of type int16 */
#if 0
int samples_for_frame = PHY_vars_UE->frame_parms.samples_per_frame;
write_output("rxdata0_rand.m","rxd0_rand", &PHY_vars_UE->common_vars.rxdata[0][0], samples_for_frame, 1, 1);
#endif
#if TEST_SYNCHRO_TIMING_PSS
start_meas(&generic_time[TIME_SSS]);
#endif
rx_sss_nr(PHY_vars_UE, &proc, &metric_fdd_ncp, &phase_fdd_ncp);
#if TEST_SYNCHRO_TIMING_PSS
stop_meas(&generic_time[TIME_SSS]);
#ifndef NR_UNIT_TEST
printf("PSS execution duration %5.2f \n", generic_time[TIME_PSS].p_time/(cpuf*1000.0));
printf("SSS execution duration %5.2f \n", generic_time[TIME_SSS].p_time/(cpuf*1000.0));
#endif
#endif
return phase_fdd_ncp;
}
/*******************************************************************
*
* NAME : main
*
* DESCRIPTION : test bench for synchronisation sequence (pss/sss/pbch)
* purpose of test is to check that synchronisation sequence can be
* properly detected depending of input waveforms.
*
* - First step of synchronisation consists in pss search (primary synchronisation signal).
* pss sequence should be detected at the right position
* in the received buffer whatever the position along the
* received data buffer.
* Detection of position is based on correlation in time domain between
* received signal and pss sequence -> position is given by
* peak of correlation result.
* - Second step of synchronisation is sss decoding (secundary synchronisation signal).
* sss detection is based on position of detected pss.
*
*********************************************************************/
int main(int argc, char *argv[])
{
VOID_PARAMETER argc;
VOID_PARAMETER argv;
uint8_t transmission_mode = 1;
uint8_t nb_antennas_tx = 1;
uint8_t nb_antennas_rx = 1;
uint8_t frame_type = FDD;
int N_RB_DL=100;
lte_prefix_type_t extended_prefix_flag = NORMAL;
int phase;
int Nid1, Nid2;
NR_DL_FRAME_PARMS frame_parms_gNB;
const char *name_test = "SSS NR";
test_t test = { name_test, 0, 0, 0, 0};
#if 1
int test_position[] = { 0, 492, 493, 56788, 111111, 222222 }; /* this is the sample number in the frame */
#else
int test_position[] = {-1}; /* to get samples from an array */
#endif
int size_test_position = sizeof(test_position)/sizeof(int);
/* this is a pointer to the function in charge of the test */
int (*p_test_synchro_pss_sss)(PHY_VARS_NR_UE *PHY_vars_UE, int position_symbol, NR_DL_FRAME_PARMS *frame_parms, test_t *test) = test_synchro_pss_sss_nr;
#if 1
int Nid_cell[] = { (3*0+0), (3*71+0), (3*21+2), (3*21+2), (3*55+1), (3*111+2) };
#else
int Nid_cell[] = { ((3*1+2)) };
#endif
printf(" SSS TEST \n");
printf("----------\n");
if (init_test(nb_antennas_tx, nb_antennas_rx, transmission_mode, extended_prefix_flag, frame_type, Nid_cell[0], N_RB_DL) != 0) {
printf("Initialisation problem for synchronisation test \n");
exit(-1);;
}
memcpy((void *)&frame_parms_gNB, (void*)&PHY_vars_UE->frame_parms, sizeof(NR_DL_FRAME_PARMS));
printf("***********************************\n");
printf(" %s Test synchronisation \n", test.test_current);
printf("***********************************\n");
for (unsigned int index = 0; index < (sizeof(Nid_cell)/sizeof(int)); index++) {
frame_parms_gNB.Nid_cell = Nid_cell[index];
Nid2 = GET_NID2(Nid_cell[index]);
Nid1 = GET_NID1(Nid_cell[index]);
int nid_2_num = get_softmodem_params()->sl_mode == 0 ? N_ID_2_NUMBER : N_ID_2_NUMBER_SL;
for (int position = 0; position < size_test_position; position++) {
PHY_vars_UE->frame_parms.Nid_cell = (3 * N_ID_1_NUMBER) + nid_2_num; /* set to invalid value */
phase = (*p_test_synchro_pss_sss)(PHY_vars_UE, test_position[position], &frame_parms_gNB, &test); /* return phase index which gives phase error from an array */
test.number_of_tests++;
printf("%s ", test.test_current);
if (PHY_vars_UE->frame_parms.Nid_cell == (3 * Nid1) + Nid2) {
if (phase != INDEX_NO_PHASE_DIFFERENCE) {
printf("Test is pass with warning due to phase difference %d (instead of %d) offset %d Nid1 %d Nid2 %d \n",
phase, INDEX_NO_PHASE_DIFFERENCE, test_position[position], Nid1, Nid2);
test.number_of_pass_warning++;
} else {
printf("Test is pass with offset %d Nid1 %d Nid2 %d \n", test_position[position], Nid1, Nid2);
test.number_of_pass++;
}
}
else {
printf("Test is fail with offset %d Nid1 %d Nid2 %d \n", test_position[position], Nid1, Nid2);
test.number_of_fail++;
}
//break;
}
//break;
}
printf("\n%s Number of tests : %d Pass : %d Pass with warning : %d Fail : %d \n", test.test_current, test.number_of_tests, test.number_of_pass, test.number_of_pass_warning, test.number_of_fail);
printf("%s Synchronisaton test is terminated.\n\n", test.test_current);
/* reset test statistics */
test.number_of_tests = test.number_of_pass = test.number_of_pass_warning = test.number_of_fail = 0;
free_context_synchro_nr();
return(0);
}