Amarisoft

NR SA CSI Report

 

The purpose of this tutorial is to show you how to configure CSI-RS and Report configuration. This would be the most complicated configuration in 5G NR and many parameters are involved in Amarisoft configuration as well.  Main purpose of this tutorial is to show how each of the configuration parameter in enb.cfg is associated with RRC Configuration for CSI Report.

Amarisoft gNB provides two different ways of configuring CSI RS/CSI Report as listed below :

NOTE : If you are using 2022-06-17 or later release, please refer to Reference Configuration : Auto CSI Configuration first.

NOTE :  Since the release 2022-06-17, all the default nr configuration (e.g, gnb-sa.cfg and gnb-nsa.cfg) are modified to use autoconfiguration. If you are using your own configuration file based on previous release, you may revise it based on gnb-sa.cfg / gnb-nsa.cfg released after 2022-06-17 to make the configuration simple, but this is not necessary. Your configuration file with manual CSI configuration should still work with 2022-06-17 or later release

 

 

Table of Contents

 

 

For those frustrated with 5G CSI

 

If you are so struggling with 5G CSI, don't get frustrated. You are not the only one. I think almost everybody would be in same situation to some degree. Even those who is working in this specific technical area (in development or verification), they would need to turn to 3GPP documents or other documents every time when there is details they need to figure out.

The frustration that I personally have are

This frustration would persist with testing this feature. Too simple or Too complex situation happens here again with most of test system

How Amarisoft does ?

Can Amarisoft provides anything simple and flexible ? To be honest, No. but 'simple and flexible' is mutually exclusive. I haven't seen any solution with 'simple and flexible at the same time'. A kind of trade off that Amarisoft takes is to provide both simple way and complex way to gether so that user can choose depending on their necessity. Amarisoft provide the options as follows :

 

 

Plan before Doing

 

At 10000 feet view, CSI report configuration follows along a long and winding path of configurations : CSI Resource --> CSI Resource Set --> CSI Resource Config --> CSI Report. The first hurdle is to understand all the details of these configuration in terms of 3GPP. But let's assume that you get the full understandins on the configuration itself. However the fact that you have full understanding does not necessarily mean that you can start writing configuration and testing without any prep. There are two major check points (preparation) that I want to suggest

First step would be done relatively easy and it may be done in your head, but the second step would not go as easy unless you have done a lot of practice. The best way would be to draw with your hand first and have some imagination on how it would look like when they are really transmitted. One example of final image you can think of would be something as below. Of course, you would not get the exact details of every possible physical signal shown below since some of these signal is dynamically allocated and would vary depending on the situation, but you should get the clear image about CSI RS since they are static or semi-static.

NR SA CSI Plan 01

Image captured by Amarisoft sdr_spectrum

Other form of imagination can be as follows. If you can plot this kind of image for each of the symbols in your brain, you are ready to go with the real configuration and test.

NR SA CSI Plan 02

Image captured by Amarisoft sdr_spectrum

 

 

Test Setup

 

Test setup for this tutorial is as shown below.  This is just for low layer testing, you may not need any complicated IP layer setup.

TestSetup Callbox UE 1sdr 01

 

 

 

Key Configuration Parameters

 

Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.

 

 

 

Reference Configuration  : Auto CSI Configuration

 

NOTE : This feature is supported after 2022-06-17. If you are using the older version or you want to configure the CSI configuration as per your own requirement, refer to various Test configurations shown in this tutorial. If you don't care much of the detailed CSI configuration and you just need some configuration good enough to get CSI report from UE, I would recommend you to use the auto configuration as in gnb-sa.cfg file. This section is not for testing anything.. this is just to show how the CSI is configured by default for information sharing purpose. The detailed configuration shown in the RRC message varies depending on the number of antenna and TDD Pattern you selected in the configuration. The example shown in this section is based on 2x2 MIMO and TDD Pattern 2 in gnb-sa.cfg.

 

 

Configuration

Since this is a reference test, I just used a default reference configuration gnb-sa.cfg.

NR SA CSI ReferenceConfig Config 01

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  To apply TDD configuration, you first need to configure the duplex mode (NR_TDD) to 1 (TDD). And then I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration. And I set the channel bandwidth (NR_BANDWIDTH) to 20Mhz and 2x2 MIMO (N_ANTENNA_DL = 2)

NR SA CSI ReferenceConfig Config 02

Here you can enable csi_rs simply by sing resource_auto and specify a couple of simple setting like nzp_csi_rs_period and trs_presence in stead of configuring all the complicated individual csi resources and csi resource sets.

NR SA CSI ReferenceConfig Config 03

 

Following table shows an example of csi configuration that just configures a single set of TRS and one csi-report. You would notice how simple it get with auto CSI configuration.

Configuration without AutoCSI

Configuration with AutoCSI

This is the configuration in gnb-sa.cfg before AutoCSI feature is supported This is the configuration in gnb-sa.cfg after AutoCSI feature is supported

    csi_rs: {

      nzp_csi_rs_resource: [

        {

          csi_rs_id: 0,

#if N_ANTENNA_DL == 1

          n_ports: 1,

          frequency_domain_allocation: "row2",

          bitmap: "100000000000",

          cdm_type: "no_cdm",

#elif N_ANTENNA_DL == 2

          n_ports: 2,

          frequency_domain_allocation: "other",

          bitmap: "100000",

          cdm_type: "fd_cdm2",

#elif N_ANTENNA_DL == 4

          n_ports: 4,

          frequency_domain_allocation: "row4",

          bitmap: "100",

          cdm_type: "fd_cdm2",

#elif N_ANTENNA_DL == 8

          n_ports: 8,

          frequency_domain_allocation: "other",

          bitmap: "110011",

          cdm_type: "fd_cdm2",

#else

#error unsupported number of DL antennas

#endif

          density: 1,

          first_symb: 4,

          rb_start: 0,

          l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */

          power_control_offset: 0, /* dB */

          power_control_offset_ss: 0, /* dB */

          period: 80,

          offset: 1, /* != 0 to avoid collision with SSB */

          qcl_info_periodic_csi_rs: 0,

        },

#if FR2 == 0

#define USE_TRS

#endif

#ifdef USE_TRS

        /* TRS : period of 40 ms, slots 1 & 2, symbols 4 and 8 */

        {

          csi_rs_id: 1,

          n_ports: 1,

          frequency_domain_allocation: "row1",

          bitmap: "0001",

          cdm_type: "no_cdm",

          density: 3,

          first_symb: 4,

          rb_start: 0,

          l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */

          power_control_offset: 0, /* dB */

          power_control_offset_ss: 0, /* dB */

          period: 40,

          offset: 11,

          qcl_info_periodic_csi_rs: 0,

        },

        {

          csi_rs_id: 2,

          n_ports: 1,

          frequency_domain_allocation: "row1",

          bitmap: "0001",

          cdm_type: "no_cdm",

          density: 3,

          first_symb: 8,

          rb_start: 0,

          l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */

          power_control_offset: 0, /* dB */

          power_control_offset_ss: 0, /* dB */

          period: 40,

          offset: 11,

          qcl_info_periodic_csi_rs: 0,

        },

        {

          csi_rs_id: 3,

          n_ports: 1,

          frequency_domain_allocation: "row1",

          bitmap: "0001",

          cdm_type: "no_cdm",

          density: 3,

          first_symb: 4,

          rb_start: 0,

          l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */

          power_control_offset: 0, /* dB */

          power_control_offset_ss: 0, /* dB */

          period: 40,

          offset: 12,

          qcl_info_periodic_csi_rs: 0,

        },

        {

          csi_rs_id: 4,

          n_ports: 1,

          frequency_domain_allocation: "row1",

          bitmap: "0001",

          cdm_type: "no_cdm",

          density: 3,

          first_symb: 8,

          rb_start: 0,

          l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */

          power_control_offset: 0, /* dB */

          power_control_offset_ss: 0, /* dB */

          period: 40,

          offset: 12,

          qcl_info_periodic_csi_rs: 0,

        },

#endif

      ],

      nzp_csi_rs_resource_set: [

        {

          csi_rs_set_id: 0,

          nzp_csi_rs_resources: [ 0 ],

          repetition: false,

        },

#ifdef USE_TRS

        {

          csi_rs_set_id: 1,

          nzp_csi_rs_resources: [ 1, 2, 3, 4 ],

          repetition: false,

          trs_info: true,

        },

#endif

      ],

      

     csi_im_resource: [

        {

          csi_im_id: 0,

          pattern: 1,

          subcarrier_location: 8,

          symbol_location: 8,

          rb_start: 0,

          l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */

          period: 80,

          offset: 1, /* != 0 to avoid collision with SSB */

        },

      ],

      csi_im_resource_set: [

        {

          csi_im_set_id: 0,

          csi_im_resources: [ 0 ],

        }

      ],

      /* ZP CSI-RS to set the CSI-IM REs to zero */

      zp_csi_rs_resource: [

        {

          csi_rs_id: 0,

          frequency_domain_allocation: "row4",

          bitmap: "100",

          n_ports: 4,

          cdm_type: "fd_cdm2",

          first_symb: 8,

          density: 1,

          rb_start: 0,

          l_crb: -1, /* -1 means from rb_start to the end of the bandwidth */

          period: 80,

          offset: 1,

        },

      ],

      p_zp_csi_rs_resource_set: [

        {

          zp_csi_rs_resources: [ 0 ],

        },

      ],

 

      csi_resource_config: [

        {

          csi_rsc_config_id: 0,

          nzp_csi_rs_resource_set_list: [ 0 ],

          resource_type: "periodic",

        },

        {

          csi_rsc_config_id: 1,

          csi_im_resource_set_list: [ 0 ],

          resource_type: "periodic",

        },

#ifdef USE_TRS

        {

          csi_rsc_config_id: 2,

          nzp_csi_rs_resource_set_list: [ 1 ],

          resource_type: "periodic",

        },

#endif

      ],

      csi_report_config: [

        {

          resources_for_channel_measurement: 0,

          csi_im_resources_for_interference: 1,

          report_config_type: "periodic",

          period: 80,

          report_quantity: "CRI_RI_PMI_CQI",

#if N_ANTENNA_DL > 1    

          codebook_config: {

            codebook_type: "type1",

            sub_type: "typeI_SinglePanel",

#if N_ANTENNA_DL == 2

#elif N_ANTENNA_DL == 4

            n1: 2,

            n2: 1,

            codebook_mode: 1,

#elif N_ANTENNA_DL == 8

            n1: 4,

            n2: 1,

            codebook_mode: 1,

#endif

          },

#endif

          cqi_table: 2,

          subband_size: "value1",

        },

      ],

    },

    csi_rs: {

      resource_auto: {

        nzp_csi_rs_period: 80,

#if FR2

        trs_presence: false,

#endif

      },

      csi_report_config: [

        {

          report_config_type: "periodic",

          period: 80,

        },

      ],

    },

 

NOTE :  This example shows a very minimum configuration of resource_auto. We provides some more optional parameters to allow more specific configuration. (Refer to resource_auto in enb document).

NOTE :   When a certain number of csi rs port (e.g, p8, p16 etc) can be configured by multiple different options (i.e, different rows defined in 38.211-Table 7.4.1.5.3-1: CSI-RS locations within a slot), we pick only one of the option and hardcoded in the gNB software, meaning that the row number cannot be selected arbitrarilly. You need to use manual configuration if you want to set this row number specifically as you want.

NOTE :  Amarisoft gNB / UEsim allows the configuration where the csi rs number of port is greater than the number of physical antenna. For example, you can configure csi-rs p8,p16,p32 etc for 2x2 MIMO (i.e, 2 physical antenna)

 

 

Log Analysis

 

This is just for showing the association between the configuration shown above and IE (Information Elements) in RRC.

NOTE : Tracking all the detailed RRC configuration for CSI is pretty complicated and hard to get the big picture. If you are not familiar with meaning of the detailed configuration, check out this note and this note.

 

First check out zp-CSI-RS-ResourceToAddModList in pdsch-Config. All the detailed IEs within the configuration was set automatically by the resource_auto configuration parameter.

NR SA CSI ReferenceConfig Log 01

Then you can check out nzp-CSI-RS-ResourceToAddModList in csi-MeasConfig IE. Here you see 5 csi resources are configured.

NR SA CSI ReferenceConfig Log 02

NR SA CSI ReferenceConfig Log 03

Then by checking nzp-CSI-RS-ResourceSetToAddModList, you can figure out how the 5 csi resources configured above are grouped together for a specific purpose. Here you see nzp-CSI-RS 1,2,3,4 are grouped into a single set and is used for trs. nzp-CSI-RS 0 will be used for CSI report.

Also here you see csi-IM-ResourceToAddModList is configured. This is a special CSI resources for interference measurement.

NR SA CSI ReferenceConfig Log 04

By checking csi-ResourceConfigToAddModList, you can figure out how each CSI resport group of csi rs (i.e, csi resource set assigned for CSI report) is configured for the report. Here you see CSI Resource Set 0 and CSI IM Resource Set 0 are configured for periodic Report. In addition to this, SSB is also configured for periodic report.

NR SA CSI ReferenceConfig Log 05

As the last step, csi-ReportConfigToAddModList is configured for the report configuation based on all the configurations specified above.

NR SA CSI ReferenceConfig Log 06

 

 

 

Test 1 : Periodic CSI Report

 

In this test, I will show you how to configure manually the periodic CSI report and validate it. Obviously manual configuration is much more complicated than the auto configuration, but you will have full flexibility for the configuration.

 

Configuration

The configuration shown here is common configuration for all the subtests belonging to Test 1 and I will not show this configuration repeatedly for every subtest.

I have used gnb-sa-rq-ri-pmi-cqi.cfg which is copied and modified from gnb-sa.cfg

NR SA CSI Test 1 Config 01

I am using the default mme, ims config as shown below.

NR BWP Test1 Configuration 02

In gnb-sa-rq-ri-pmi-cqi.cfg, it is configured as follows.

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  To apply TDD configuration, you first need to configure the duplex mode (NR_TDD) to 1 (TDD). And then I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration. And I set the channel bandwidth (NR_BANDWIDTH) to 20Mhz and 2x2 MIMO (N_ANTENNA_DL = 2)

NR SA CSI Test 1 Config 02

Here the band is set to n78 which is a TDD band. The important part is ssb_pos_bitmap. In this test, only ssb 0 is enabled and all the csi-rs is configured not to collide with the ssb 0 symbols. If you want to change this part, you may need to change CSI-RS symbols accordingly not to collide the changed ssb burst position.

NR SA CSI Test 1 Config 03

Here comes the difficult parts which is about configuring all the physical resources. The first physical resource is configured for CSI report. Applying different csi port depending on the number of DL antenna. This configurations are related to 38.211-Table 7.4.1.5.3-1.

NOTE : Actually the usage of each of these physical resource is not determined by the position (index) of the physical resource configuration. The usage of each of these physical resources is determined by other configuration sitting at higher position in hiearchy (resource set, resource config). However, Amarisoft default configuration usually the first csi resource is assigned for CSI report.

One important thing for you to pay attention to especially for TDD is to make it sure that this configuration should fall into DL slots/symbols in TDD UL/DL common configuration and should not collide with other physical resources like SSB, PDCCH or PDSCH DMRS etc.

NR SA CSI Test 1 Config 04

NR SA CSI Test 1 Config 05

Now four csi resources are configured to define TRS in such a way to meet 3GPP requirement.  

Again One important thing for you to pay attention to especially for TDD is to make it sure that this configuration should fall into DL slots/symbols in TDD UL/DL common configuration and should not collide with other physical resources like SSB, PDCCH or PDSCH DMRS etc.

NR SA CSI Test 1 Config 06

NR SA CSI Test 1 Config 07

NR SA CSI Test 1 Config 08

Next step is to group the nzp csi resource defined above as per usage (purpose). This is done by nzp_csi_rs_resource_set configuration parameter. Here two group (two sets) are defined. The first group is the one with only one elements in nzp_csi_rs_resources array which will be used for CSI report and the second group (set) is the one with 4 elements in nzp_csi_rs_resources array which will be used for TRS.

NR SA CSI Test 1 Config 11

Last part of the csi resource configuration in this test is for the resources for interference measurement, which are IM resources and ZP CSI resources shown here. CSI IM is configured by the parameter csi_im_resources and ZP CSI resources is configured by zp_csi_rs_resources. Again and Again, one important thing for you to pay attention to especially for TDD is to make it sure that this configuration should fall into DL slots/symbols in TDD UL/DL common configuration and should not collide with other physical resources like SSB, PDCCH or PDSCH DMRS etc.

NR SA CSI Test 1 Config 09

One step above the physical resource grouping (i.e, csi rs resource set) is csi resource config (csi_resource_config) which groups the resource sets (it is a kind of super group with the restpect of csi resource) and assign a specific type (resource_type) to the group. In this test, all the resources sets are set to periodic.

NR SA CSI Test 1 Config 10

 

 

Log Analysis

This is just for showing the association between the configuration shown above and IE (Information Elements) in RRC.

In this specific test, it is not so important but it is worth noting that at least one tci-state gets configured in RRC even when you didn't configure anything in configuration file. Here, you see one tci-State assciated with ssb 0 is configured in tci-StatesToAddModList of pdsch-Config. Regarding the TCI/QCL, you may refer to this note.

NR SA CSI Test 1 Log 01

Now let's take a look into csi configuration that is under pdsch-Config. It is zp-CSI-RS-ResourceToAddModList IE in pdsch-Config. This IE is set by the configuration parameter zp_csi_rs_resource and p_zp_csi_resource_set as shown here.

NR SA CSI Test 1 Log 02

Next, check how each of the nzp CSI RS is configured in RRC. These configurations are set in csi-MeasConfig. The individual nzp CSI RS Resource are configured in nzp-CSI-RS-ResourceToAddModList. This is the first nzp-CSI-RS-Resource which will be used for CSI Report.

NR SA CSI Test 1 Log 03

Next comes with two additional csi rs resouces that will be used for TRS.

NR SA CSI Test 1 Log 04

Next comes with additional two additional csi rs resouces that will be used for TRS.

NR SA CSI Test 1 Log 05

Once all the physical resources for CSI RS are configured, a step high level grouping happens by nzp-CSI-RS-ResourcesSetToAddModList. In this test, two group are formed. The first group is made up of only one nzp-CSI-RS-Resource and the second group is made up of 4 nzp-CSI-RS-Resources.

NR SA CSI Test 1 Log 06

Next is to check on the configuration for interference measurement. You can check it with csi-IM-ResourceToAddModList IE and csi-IM-ResourceSetToAddModList IE. These IEs are configured by csi_im_resource and csi_im_resource_set respectively.

NR SA CSI Test 1 Log 07

With all the CSI Resource Sets configured, we need to check on the next level grouping which is CSI Resource Config. It is configured in csi-ResourceConfigAddModList in RRC which is configured by csi_resource_config in Amarisoft gNB configuration.

In this specific example, all of the csi resource set is configured to be periodic.

NR SA CSI Test 1 Log 08

Now let's check on what is sitting at the top of CSI configuration hierarchy which is csi-ReportConfigAddModList. This configuration is set by the configuration parameter csi_report_config. In this specific test,  periodic CSI report for cri-RI-PMI-CQI is configured.

NR SA CSI Test 1 Log 09

 

 

Sub Test 1 : RI-PMI-CQI

The purpose of this Sub Test is just to change report quantity to RI-PMI-CQI while all other configurations are set same as in the main test.

 

I have used gnb-sa-rq-ri-pmi-cqi.cfg which is copied and modified from gnb-sa.cfg

NR SA CSI Test 1 SubTest 1 01

Configuratio is set as follows. Just report_quantity is changed to "CRI_RI_PMI_CQI" and All other configuration not shown here is assumed to be same as the configuration in Common Configuration of Test 1

NR SA CSI Test 1 SubTest 1 02

This configuration will be reflected in RRC as shown below. Check out reportQuantity of csi-ReportConfigToAddModList IE and confirm that it is set to cri-RI-PMI-CQI as set in the configuration file.

NR SA CSI Test 1 SubTest 1 03

 

Perform the test.

Start LTE service (gNB) and run 'cell phy' and 'cell' command, then everything is configured as you intended.

NR SA CSI Test 1 SubTest 1 04

Before powering on UE, run 't' command first. You can run this command anytime, but I would recommend you to run it before powering on UE to collect the trace log from the very beginning of the attach process.

NR SA CSI Test 1 SubTest 1 05

Check PUCCH with CSI Report. First thing to check is that the gNB is getting csi report with the period set in the configuration file.

NOTE : If you add phy.csi = 1 or enable CSI in WebGUI property window, you can get the decoded CSI value in the log as shown here.

NR SA CSI Test 1 SubTest 1 06

 

 

Sub Test 2 : RI-CQI

The purpose of this Sub Test is just to change report quantity to RI-CQI while all other configurations are set same as in the main test.

 

I have used gnb-sa-rq-ri-cqi.cfg which is copied and modified from gnb-sa.cfg

NR SA CSI Test 1 SubTest 2 01

Configuratio is set as follows. Just report_quantity is changed to "CRI_RI_CQI" and  All other configuration not shown here is assumed to be same as the configuration in Common Configuration of Test 1

NR SA CSI Test 1 SubTest 2 02

this configuration will be reflected in RRC as shown below. Check out reportQuantity of csi-ReportConfigToAddModList IE and confirm that it is set to cri-RI-CQI as set in the configuration file.

NR SA CSI Test 1 SubTest 2 03

 

Perform the test.

Start LTE service (gNB) and run 'cell phy' and 'cell' command, then everything is configured as you intended.

NR SA CSI Test 1 SubTest 1 04

Before powering on UE, run 't' command first. You can run this command anytime, but I would recommend you to run it before powering on UE to collect the trace log from the very beginning of the attach process.

NR SA CSI Test 1 SubTest 2 05

Check PUCCH with CSI Report. First thing to check is that the gNB is getting csi report with the period set in the configuration file.

NOTE : If you add phy.csi = 1 or enable CSI in WebGUI property window, you can get the decoded CSI value in the log as shown here.

NR SA CSI Test 1 SubTest 2 06

 

 

Sub Test 3 : RI-CQI with non-PMI-PortIndication

The purpose of this Sub Test is just to change report quantity to RI-CQI with non-PMI-PortIndication while all other configurations are set same as in the main test.

 

I have used gnb-sa-rq-ri-cqi-non-pmi.cfg which is copied and modified from gnb-sa.cfg

NR SA CSI Test 1 SubTest 4 01

Configuratio is set as follows.  In this case, report_quantity is changed to "CRI_RI_CQI" and non_pmi_port_indication is set. All other configuration not shown here is assumed to be same as the configuration in Common Configuration of Test 1

NR SA CSI Test 1 SubTest 4 02

this configuration will be reflected in RRC as shown below. The main purpose of this test is about RI report. So it would be good to check that nrofPorts is configured to multiple ports so that RI report become meaninful.

NR SA CSI Test 1 SubTest 4 03

Check out reportQuantity of csi-ReportConfigToAddModList IE and confirm that it is set to cri-RI-PMI-CQI and non-PMI-PortIndication as set in the configuration file

NR SA CSI Test 1 SubTest 4 04

 

Perform the test.

Start LTE service (gNB) and run 'cell phy' and 'cell' command, then everything is configured as you intended.

NR SA CSI Test 1 SubTest 4 05

Before powering on UE, run 't' command first. You can run this command anytime, but I would recommend you to run it before powering on UE to collect the trace log from the very beginning of the attach process.

NR SA CSI Test 1 SubTest 4 06

Check PUCCH with CSI Report. First thing to check is that the gNB is getting csi report with the period set in the configuration file.

NOTE : If you add phy.csi = 1 or enable CSI in WebGUI property window, you can get the decoded CSI value in the log as shown here.

NR SA CSI Test 1 SubTest 4 07

 

 

Sub Test 4 : RSRP

The purpose of this Sub Test is just to change report quantity to RSRP while all other configurations are set same as in the main test.

 

I have used gnb-sa-rq-rsrp.cfg which is copied and modified from gnb-sa.cfg

NR SA CSI Test 1 SubTest 3 01

Configuratio is set as follows. Just report_quantity is changed to "CRI_RSRP" and  All other configuration not shown here is assumed to be same as the configuration in Common Configuration of Test 1

NR SA CSI Test 1 SubTest 3 02

this configuration will be reflected in RRC as shown below.

Check out reportQuantity of csi-ReportConfigToAddModList IE and confirm that it is set to cri-RSRP.

NR SA CSI Test 1 SubTest 3 03

 

Perform the test.

Start LTE service (gNB) and run 'cell phy' and 'cell' command, then everything is configured as you intended.

NR SA CSI Test 1 SubTest 1 04

Before powering on UE, run 't' command first. You can run this command anytime, but I would recommend you to run it before powering on UE to collect the trace log from the very beginning of the attach process.

NR SA CSI Test 1 SubTest 3 05

Check PUCCH with CSI Report. First thing to check is that the gNB is getting csi report with the period set in the configuration file.

NOTE : If you add phy.csi = 1 or enable CSI in WebGUI property window, you can get the decoded CSI value in the log as shown here.

NR SA CSI Test 1 SubTest 3 06

 

 

Sub Test 5 : RI-PMI-CQI with ri-restriction

The purpose of this Sub Test is just to change report quantity to RI-PMI-CQI with manually configured ri-restriction bits while all other configurations are set same as in the main test.

I have used gnb-sa-rq-ri-pmi-cqi-ri-restrict.cfg which is copied and modified from gnb-sa.cfg

NR SA CSI Test 1 SubTest 5 01

Configuratio is set as follows. All other configuration not shown here is assumed to be same as the configuration in Common Configuration of Test 1.

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  To apply TDD configuration, you first need to configure the duplex mode (NR_TDD) to 1 (TDD). And then I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration. And I set the channel bandwidth (NR_BANDWIDTH) to 20Mhz and 2x2 MIMO (N_ANTENNA_DL = 2)

NR SA CSI Test 1 SubTest 5 02

In this test, report_quantity is set to CRI_RI_PMI_CQI as in the first example, but ri_restriction is changed to other value.

NR SA CSI Test 1 SubTest 5 03

In this test, I need to change radio link quality up and down to see if I am getting RI values based on the restriction set in the configuration. So I extended inactivity_timer so that I can have enough time to play with radio link quality changes

NR SA CSI Test 1 SubTest 5 04

this configuration will be reflected in RRC as shown below.

SampleLog(gNB)

 

(NOTE : In this test, I used Amarisoft UEsim as a DUT. For your reference, I put the UEsim log here as well : ) SampleLog(UEsim)

Check out reportQuantity of csi-ReportConfigToAddModList IE and confirm that it is set to cri-RI-PMI-CQI and the typeI-SinglePanel-ri-Restriction is set as you assigned in the configuration file.

NR SA CSI Test 1 SubTest 5 05

 

Perform the test.

Start LTE service (gNB) and run 'cell phy' and 'cell' command, then everything is configured as you intended.

NR SA CSI Test 1 SubTest 1 04

Power on UE and let it attached in good channel condition. You may get max ri report as shown below.

NR SA CSI Test 1 SubTest 5 06

Degrade the downlink channel condition. You may degrade the downlink channel quality in different ways, but using tx_gain on callbox would be the simplest way to do it (If you are not familiar with usage of tx_gain, refer to this tutorial).  You would get the result as shown below.

NR SA CSI Test 1 SubTest 1 07

 

 

Sub Test 6 : ssb-RSRP

When you want CSI report for RSRP, you can set a regular CSI RS to be a reference channel for the measurement or you can set SSB to be the reference channel. The Sub Test 4 is the case where the regular CSI RS is used for RSRP reference. This is the case where SSB is used for RSRP reference.

 

I have used gnb-sa-rsset-1ssb.cfg which is copied and modified from gnb-sa.cfg

NR SA CSI Test 1 SubTest 6 01

Configuratio is set as follows. All other configuration not shown here is assumed to be same as the configuration in Common Configuration of Test 1.

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  To apply TDD configuration, you first need to configure the duplex mode (NR_TDD) to 1 (TDD). And then I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration. And I set the channel bandwidth (NR_BANDWIDTH) to 20Mhz and 2x2 MIMO (N_ANTENNA_DL = 2)

NR SA CSI Test 1 SubTest 6 02

Since we want to use SSB as reference signal for RSRP measurement in this test, we need to configure csi_ssb_resource_set. (NOTE : In case of SSB, you do not need to define any separate csi_resource for SSB since SSB is configured by ssb_pos_bitmap)

NR SA CSI Test 1 SubTest 6 03

Then register the csi_ssb_resource_set to csi_resource_config.

NR SA CSI Test 1 SubTest 6 04

As final step, apply these configuration to csi_report_config. In this test, I specified two different report configuration. The first one is for CRI_RI_PMI_CQI based on NZP CSI RS. I just left the default configuration as it is.

NR SA CSI Test 1 SubTest 6 05

As the second configuration for CSI Report, I added another report configuration with the report_quantity : "ssb_Index_RSRP". Here resource_for_channel_measurement is set to 3 which corresponds to SSB configuration in our test.

NR SA CSI Test 1 SubTest 6 06

NOTE : This is the case of configuring multiple CSI report of same type. (i.e, two periodic CSI report). When multiple periodic report is configured, they are never been configured for the same slot because user does not have any control over 'slot offset' part of the perodicity. The slot offset is automatically configured by gNB software so as not to overlap in the same slot.

NOTE : If you use non-Amarisoft gNB (e.g, live network gNB), it may be possible to configure multiple periodic report in the same slot. But if you are using Amarisoft UEsim as DUT, the UEsim does not support the multiple report at the same slot.

 

this configuration will be reflected in RRC as shown below.

SampleLog(gNB)

 

Since this is all about CSI configuration, go to csi-MeasConfig IE in RRC message.

NR SA CSI Test 1 SubTest 6 07

First confirm that SSB is registered to csi-SSB-ResourceSetToAddModList as set in the configuration file.

NR SA CSI Test 1 SubTest 6 08

Next check out if the ssb resource set is properly registerred to csi-ResourceConfigToAddModeList as you set in the configuration. Here you see it is registered here as csi-ResourceConfigId 3.

NR SA CSI Test 1 SubTest 6 09

Now for final check. Look into csi-ReportConfigToAddModList to make it sure all the configuration is set as expected. The first report configuration is same as the default configuration which is with reportQuantity csi-RI-PMI-CQI.

NR SA CSI Test 1 SubTest 6 10

Report configuration for SSB based RSRP is configured as the second item of the report config. As you see here, reportQuantity is set to ssb-Index-RSRP and resourceForChannelMeasurement is set to 3 which is same as csi-ResourceConfigId assigned for SSB resource set.

NR SA CSI Test 1 SubTest 6 11

 

Perform the test.

Start LTE service (gNB) and run 'cell phy' and 'cell' command, then everything is configured as you intended.

NR SA CSI Test 1 SubTest 1 04

Before powering on UE, run 't' command first. You can run this command anytime, but I would recommend you to run it before powering on UE to collect the trace log from the very beginning of the attach process.

NR SA CSI Test 1 SubTest 6 12

Confirm that you are getting both CRI based CSI report and ssb based CSI Report as shown below. First thing to check is that the gNB is getting csi report with the period set in the configuration file and then check the details of CSI to confirm you get all the components specified in the configuration file. What you need to note here is that you get the two different CSI report. One for CRI_RI_PMI_CQI and another one is for RSRP based on SSB.

NR SA CSI Test 1 SubTest 6 13

 

 

 

Test 2 : Aperiodic CSI Report

 

The perpose of this test is to show how to perform Aperiodic CSI report and verify it from the test log. In this test, I configured aperiodic by changing the periodic only in csi_report_config without changing anything csi_resource_config.

 

I have used gnb-sa-rq-ri-pmi-cqi-aperiodic.cfg which is copied and modified from gnb-sa.cfg

NR SA CSI Test 2 01

Configuratio is set as follows. All other configuration not shown here is assumed to be same as the configuration in Common Configuration of Test 1. The only difference is that report_config_type in csi_report_config is set to "aperiodic" in this test.

NR SA CSI Test 2 02

 

This configuration will be reflected in RRC as shown below. Here you see reportConfigType is set to aperiodic. Important thing to notice is reportSlotOffsetList. These values will be used as k2 value for PUSCH scheduling and these are automatically by Amarisoft gNB.

NR SA CSI Test 2 03

 

Perform the test.

Start LTE service (gNB) and run 'cell phy' and 'cell' command, then everything is configured as you intended.

NR SA CSI Test 1 SubTest 1 04

Before powering on UE, run 't' command first. You can run this command anytime, but I would recommend you to run it before powering on UE to collect the trace log from the very beginning of the attach process.

NR SA CSI Test 2 05

 

Check PUSCH with CSI Report. Since Aperiodic CSI Request is reported via PUSCH, you need to confirm on both DCI and corresponding PUSCH.  In DCI shown here, you see k2 is set to 7 and csi_request is set to 1. Then you see a PUSCH with CSI report value is received after k2 slots after the DCI 0_1.

NR SA CSI Test 2 07

 

 

 

Test 3 : TCI

 

This test is to show how to configure TCI(Transmission Configuration Indication) and verify it with the test. There two types of TCI can be configured by 3GPP, one is with pdcch and the other one is with PDSCH ( If you want to get the details of TCI in terms of 3GPP, refer to this note)

 

I have used gnb-sa-tci-1ssb-1sci.cfg which is copied and modified from gnb-sa.cfg

NR SA CSI Test 3 01

Configuratio is set as follows. TCI for PDCCH is configured by the parameter tci_states_pdcch within common_coreset object. The element number in tci_states_pdcch indicates the tci_state_id specifined in pdsch tci_states. All other configuration not shown here is assumed to be same as the configuration in Common Configuration of Test 1.

NR SA CSI Test 3 02

TCI for PDSCH is configured by the parameter tci_states in pdsch configuration. Here I set three tci states. The first tci (tci_state_id 0) is associated with ssb only (ssb 0), the second one is associated with csi_rs only (csi_rs 0) and the third one is associated with both ssb and csi_rs.

NR SA CSI Test 3 03

csi_report_config is same as in default configuration (i.e, the configuration in Test 1)

NR SA CSI Test 3 04

 

This configuration will be reflected in RRC as shown below.

Check out tci-StatesPDCCH-ToAddList in pdcch-ConfigCommon and make it sure that it is configured as you set in the configuration file.

NR SA CSI Test 3 05

Then check out tci-StatesToAddModList in pdsch-Config IE and see if they are configured as you set in the configuration file.

NR SA CSI Test 3 06

 

Perform the test.

Start LTE service (gNB) and run 'cell phy' and 'cell' command, then everything is configured as you intended.

NR SA CSI Test 1 SubTest 1 04

Before powering on UE, run 't' command first. You can run this command anytime, but I would recommend you to run it before powering on UE to collect the trace log from the very beginning of the attach process.

NR SA CSI Test 2 05

 

Check PUCCH with CSI Report. Just checking out the gNB logging you only can confirm that the configuration is not causing any fatal problem on UE side and not possible to confirm that UE is really applying the TCI as configured in RRC. On gNB log, just check if you are getting the csi report with the expected interval. If you are using a commercial UE with the very detailed logging capability, you can confirm on whether the UE is properly applying or not from the UE log.

NR SA CSI Test 3 07

 

 

 

Test 4 : CSI RS p32 - Periodic

 

This is an example showing how to configure 32 port CSI RS, but it is not strongly recommended to use this kind of configuration whereas the number of csi-rs port is greater than the number of physical antenna.  

NOTE : You may see a warning saying that it is not recommeded to use this kind of configuration, but if you want to continue just to check signaling configuration and see if UE can handle this kind of configuration.

 

I have used gnb-sa-csi-p32.cfg which is copied and modified from gnb-sa.cfg

NOTE :  Since this configuration use resource_auto, you need to accept the cdm_type as it is set automatically. you have no control over cdm_type. If you want to control over cdm_type and other parameters that is not supported by resource_auto, you have to configure every parametters manually as in Test 1, Test 2, Test 3.

In the configuration file, you can select any specific tdd pattern with the parameter NR_TDD_CONFIG.  To apply TDD configuration, you first need to configure the duplex mode (NR_TDD) to 1 (TDD). And then I set NR_TDD_CONFIG to 2 which is one of default sample configuration provided by Amarisoft sample configuration. And I set the channel bandwidth (NR_BANDWIDTH) to 20Mhz and 2x2 MIMO (N_ANTENNA_DL = 2)

The point here is to set n_ports value to 32 which is much greater than the number of physical antenna. (NOTE : In live network, most of gNB use antenna with very large number of antenna elements (e.g, 64 elements). In this case, the number of physical antenna is greater than the number of csi antenna. But most of the test equipment does not have such a many physical antenna. In this case, if you set large number of antenna for csi-rs the number of csi rs port gets larger than the number of physical antenna. As a result, the performance would not be as good as expected.)

NR SA CSI Test 4 Config 01

 

This is the log showing that the csi-rs p32 is configured in signaling message.  

Sample(gNB)

Just check if nrofPorts in nzp-CSI-RS-ResourceToAddModList is set as you set in the configuration file and make it sure that it does not cause any problem on UE. This would be just to check if the configuration is accepted by UE without causing any problem. This is not for the performance test.

NR SA CSI Test 4 Log 01

 

 

 

Test 5 : CSI RS and Physical Antenna Mapping - TRS

 

This is an example showing how to map the logical antenna port of each CSI RS to physical antenna of Amarisoft gNB antenna. In this example, I will configure a TRS which is made up of 4 CSI-RS and map each of the CSI-RS to two physical antenna as shown below.

NOTE : This test shows the example where four CSI-RS signal for a TRS maps to two physical antenna, but you can apply the same logic for other cases (e.g, mapping 4 CSI-RS to 4 physical antenna)

NR SA CSI Test 5 Overview 01

 

I have used gnb-sa-trs-rs-ant-map.cfg which is copied and modified from gnb-sa-rq-ri-pmi-cqi.cfg which is based on manual configuration for CSI-RS (not auto configuration). Since we need to configure physical antenna mapping for each separate csi rs configuration, we need to configure everything manually.

NOTE : In this case, the the index of matrix elements with [1] refers to the index of physical antenna.

For csi_rs_id: 1, the precoding_matrix is set to [[1], [0]]. Here, the index of the element [1] is 0 (i.e, the first elements (index 0) is set to 1). So the physicall antenna mapped to this csi rs is antenna 0.

For csi_rs_id: 2, the precoding_matrix is set to [[0], [1]]. Here, the index of the element [1] is 1 (i.e, the first elements (index 1) is set to 1). So the physicall antenna mapped to this csi rs is antenna 1.

NR SA CSI Test 5 Config 01

For csi_rs_id: 3, the precoding_matrix is set to [[1], [0]]. Here, the index of the element [1] is 0 (i.e, the first elements (index 0) is set to 1). So the physicall antenna mapped to this csi rs is antenna 0.

For csi_rs_id: 4, the precoding_matrix is set to [[0], [1]]. Here, the index of the element [1] is 1 (i.e, the first elements (index 1) is set to 1). So the physicall antenna mapped to this csi rs is antenna 1.

NR SA CSI Test 5 Config 02

 

Since the mapping between the logical port of csi-rs and physical antenna of gNB is up to the implementation of the equipment vendor, the mapping information is not shown in the protocol log. I am showing the log here just to explain how the configuration is related to the rrc configuration of TRS csi-rs.

Sample(gNB)

Here you see the first pair of TRS csi-Resource. The physical antenna mapping configured by the precoding_matrix cannot be reflected in RRC message since it is lower layer internal mapping in Amarisoft gNB.

NR SA CSI Test 5 Log 01

Here you see the second pair of TRS csi-Resource. The physical antenna mapping configured by the precoding_matrix cannot be reflected in RRC message since it is lower layer internal mapping in Amarisoft gNB.

NR SA CSI Test 5 Log 02

 

 

 

RRC / NAS Signaling

 

RrcSetup (SA)

: This is the RrcSetup message sent by gNB  to configure NR SA. (NOTE : You would see some IEs that has a specific assigned vale here, but consider it as just an example value. Those values should vary depending on test requirement)

{

  message c1: rrcSetup: {

    rrc-TransactionIdentifier 0,

    criticalExtensions rrcSetup: {

      radioBearerConfig {

        ...

      },

      masterCellGroup {

        cellGroupId 0,

        rlc-BearerToAddModList {

          ...

        },

        mac-CellGroupConfig {

          ...

        },

        physicalCellGroupConfig {

          pdsch-HARQ-ACK-Codebook dynamic

        },

        spCellConfig {

          spCellConfigDedicated {

            initialDownlinkBWP {

              pdcch-Config setup: {

                ...

              },

              pdsch-Config setup: {

                dmrs-DownlinkForPDSCH-MappingTypeA setup: {

                  dmrs-AdditionalPosition pos1

                },

                tci-StatesToAddModList {

                  {

                    tci-StateId 0,

                    qcl-Type1 {

                      referenceSignal ssb: 0,

                      qcl-Type typeD

                    }

                  },

                  {

                    tci-StateId 1,

                    qcl-Type1 {

                      referenceSignal csi-rs: 0,

                      qcl-Type typeD

                    }

                  },

                  {

                    tci-StateId 2,

                    qcl-Type1 {

                      referenceSignal ssb: 0,

                      qcl-Type typeC

                    },

                    qcl-Type2 {

                      referenceSignal csi-rs: 0,

                      qcl-Type typeD

                    }

                  }

                },

                ...

                zp-CSI-RS-ResourceToAddModList {

                  {

                    zp-CSI-RS-ResourceId 0,

                    resourceMapping {

                      frequencyDomainAllocation row4: '100'B,

                      nrofPorts p4,

                      firstOFDMSymbolInTimeDomain 8,

                      cdm-Type fd-CDM2,

                      density one: NULL,

                      freqBand {

                        startingRB 0,

                        nrofRBs 52

                      }

                    },

                    periodicityAndOffset slots80: 1

                  }

                },

                p-ZP-CSI-RS-ResourceSet setup: {

                  zp-CSI-RS-ResourceSetId 0,

                  zp-CSI-RS-ResourceIdList {

                    0

                  }

                }

              }

            },

            firstActiveDownlinkBWP-Id 0,

            uplinkConfig {

              initialUplinkBWP {

                pucch-Config setup: {

                  ...

                },

                pusch-Config setup: {

                  ...

                },

                srs-Config setup: {

                  ...

                }

              },

              firstActiveUplinkBWP-Id 0,

              pusch-ServingCellConfig setup: {

              }

            },

            pdcch-ServingCellConfig setup: {

            },

            pdsch-ServingCellConfig setup: {

              ...

            },

            csi-MeasConfig setup: {

              nzp-CSI-RS-ResourceToAddModList {

                {

                  nzp-CSI-RS-ResourceId 0,

                  resourceMapping {

                    frequencyDomainAllocation other: '100000'B,

                    nrofPorts p2,

                    firstOFDMSymbolInTimeDomain 4,

                    cdm-Type fd-CDM2,

                    density one: NULL,

                    freqBand {

                      startingRB 0,

                      nrofRBs 52

                    }

                  },

                  powerControlOffset 0,

                  powerControlOffsetSS db0,

                  scramblingID 500,

                  periodicityAndOffset slots80: 1,

                  qcl-InfoPeriodicCSI-RS 0

                },

                {

                  nzp-CSI-RS-ResourceId 1,

                  resourceMapping {

                    frequencyDomainAllocation row1: '1'H,

                    nrofPorts p1,

                    firstOFDMSymbolInTimeDomain 4,

                    cdm-Type noCDM,

                    density three: NULL,

                    freqBand {

                      startingRB 0,

                      nrofRBs 52

                    }

                  },

                  powerControlOffset 0,

                  powerControlOffsetSS db0,

                  scramblingID 500,

                  periodicityAndOffset slots40: 11,

                  qcl-InfoPeriodicCSI-RS 0

                },

                {

                  nzp-CSI-RS-ResourceId 2,

                  resourceMapping {

                    frequencyDomainAllocation row1: '1'H,

                    nrofPorts p1,

                    firstOFDMSymbolInTimeDomain 8,

                    cdm-Type noCDM,

                    density three: NULL,

                    freqBand {

                      startingRB 0,

                      nrofRBs 52

                    }

                  },

                  powerControlOffset 0,

                  powerControlOffsetSS db0,

                  scramblingID 500,

                  periodicityAndOffset slots40: 11,

                  qcl-InfoPeriodicCSI-RS 0

                },

                {

                  nzp-CSI-RS-ResourceId 3,

                  resourceMapping {

                    frequencyDomainAllocation row1: '1'H,

                    nrofPorts p1,

                    firstOFDMSymbolInTimeDomain 4,

                    cdm-Type noCDM,

                    density three: NULL,

                    freqBand {

                      startingRB 0,

                      nrofRBs 52

                    }

                  },

                  powerControlOffset 0,

                  powerControlOffsetSS db0,

                  scramblingID 500,

                  periodicityAndOffset slots40: 12,

                  qcl-InfoPeriodicCSI-RS 0

                },

                {

                  nzp-CSI-RS-ResourceId 4,

                  resourceMapping {

                    frequencyDomainAllocation row1: '1'H,

                    nrofPorts p1,

                    firstOFDMSymbolInTimeDomain 8,

                    cdm-Type noCDM,

                    density three: NULL,

                    freqBand {

                      startingRB 0,

                      nrofRBs 52

                    }

                  },

                  powerControlOffset 0,

                  powerControlOffsetSS db0,

                  scramblingID 500,

                  periodicityAndOffset slots40: 12,

                  qcl-InfoPeriodicCSI-RS 0

                }

              },

              nzp-CSI-RS-ResourceSetToAddModList {

                {

                  nzp-CSI-ResourceSetId 0,

                  nzp-CSI-RS-Resources {

                    0

                  }

                },

                {

                  nzp-CSI-ResourceSetId 1,

                  nzp-CSI-RS-Resources {

                    1,

                    2,

                    3,

                    4

                  },

                  trs-Info true

                }

              },

              csi-IM-ResourceToAddModList {

                {

                  csi-IM-ResourceId 0,

                  csi-IM-ResourceElementPattern pattern1: {

                    subcarrierLocation-p1 s8,

                    symbolLocation-p1 8

                  },

                  freqBand {

                    startingRB 0,

                    nrofRBs 52

                  },

                  periodicityAndOffset slots80: 1

                }

              },

              csi-IM-ResourceSetToAddModList {

                {

                  csi-IM-ResourceSetId 0,

                  csi-IM-Resources {

                    0

                  }

                }

              },

              csi-ResourceConfigToAddModList {

                {

                  csi-ResourceConfigId 0,

                  csi-RS-ResourceSetList nzp-CSI-RS-SSB: {

                    nzp-CSI-RS-ResourceSetList {

                      0

                    }

                  },

                  bwp-Id 0,

                  resourceType periodic

                },

                {

                  csi-ResourceConfigId 1,

                  csi-RS-ResourceSetList csi-IM-ResourceSetList: {

                    0

                  },

                  bwp-Id 0,

                  resourceType periodic

                },

                {

                  csi-ResourceConfigId 2,

                  csi-RS-ResourceSetList nzp-CSI-RS-SSB: {

                    nzp-CSI-RS-ResourceSetList {

                      1

                    }

                  },

                  bwp-Id 0,

                  resourceType periodic

                }

              },

              csi-ReportConfigToAddModList {

                {

                  reportConfigId 0,

                  resourcesForChannelMeasurement 0,

                  csi-IM-ResourcesForInterference 1,

                  reportConfigType periodic: {

                    reportSlotConfig slots80: 9,

                    pucch-CSI-ResourceList {

                      {

                        uplinkBandwidthPartId 0,

                        pucch-Resource 13

                      }

                    }

                  },

                  reportQuantity cri-RI-PMI-CQI: NULL,

                  reportFreqConfiguration {

                    cqi-FormatIndicator widebandCQI,

                    pmi-FormatIndicator widebandPMI

                  },

                  timeRestrictionForChannelMeasurements notConfigured,

                  timeRestrictionForInterferenceMeasurements notConfigured,

                  codebookConfig {

                    codebookType type1: {

                      subType typeI-SinglePanel: {

                        nrOfAntennaPorts two: {

                          twoTX-CodebookSubsetRestriction '111111'B

                        },

                        typeI-SinglePanel-ri-Restriction '03'H

                      },

                      codebookMode 1

                    }

                  },

                  groupBasedBeamReporting disabled: {

                  },

                  cqi-Table table2,

                  subbandSize value1

                }

              }

            },

            tag-Id 0

          }

 

 

 

Tips

 

Resource Collision Problem

: One of the most common issues that you would encounter when you are configuring CSI RS manually (not using resource_auto) would be the error caused by collision among resources various other channels. Unfortunately there is no single shot solution to fix this automatically. It there is such a way, we might have implmented in our software. We do support a certain level of automation as described in this section and it will suit your purpose for most of the test, but the auto_configuration cannot be as flexible as manual configuration. Here I just want to provide some general guidelines for the case where you want to configure CSI RS manually and come across with physical resource collision issue,

 

 

Step 1 : Draw a time domain resource allocation map and remove the collision

First step is to draw all the physical channels and signals on time domain symbol map as follows. You should draw not only for CSI-RS that you want to configure but also draw all other resources (like SSB, PDSCH DMRS etc) and make it sure that there is no collision among any of those physical channels and signals.

You may try to tweak following configuration parameters to avoid time-domain collision :

 

First draw a picture showing all the major physical signal resources except CSI-RS and mark which slots/symbols are allowed for CSI-RS and which are not allowed as shown below. (NOTE : This is only an example)

NR SA SSB CSI RS Test 1 Overview 01

Then allocate the various CSI-RS to any of the allowed slots/symbols. There can be many possibilities, but following diagram shows only one of those possibilities and this will configured into the configuration file for this test. (NOTE : This is only an example)

NR SA SSB CSI RS Test 1 Overview 02

 

 

Step 2 : Change transmission slot

There might be some cases where you cannot avoid all the collision for some reasons such as :

In this case, you may distribute the configurations among multiple non-overlapping slot. You may tweak following configuration to distribute the csi-rs resources to different slots.

 

 

Step 3 : Change Frequency Domain Resources

If step 1 and step 2 does not solve the problem, you may try tweaking frequency domain resource allocation of CSI-RS resources using following configuration.

 

 

Setting n1, n2

When you want to set n1, n2 of codebook_config[], you should associate it with nzp_csi_rs_resource->n_ports parameters, NOT with number of physical antenna(n_antenna_dl).

 

 

No codebook configuration in RRC message ?

 

If you don't see codebook setting in RRC message (RRCSetup or RrcReconfiguration) in the log where you expect to see, check the number of port that is configured for the csi configuration. If the number of ports is only 1, the codebook setting will not be configured in the RRC message.

If the RRC message is for the serving cell, check the number of port setting in the serving cell. If the RRC message is for another cell (e.g, RrcReconfiguration for Handover) check out the number of port setting for the target (destination) cell.

 

 

Logging Decoded CSI Report

 

In default phy log, you would see only the csi bitmap on PUCCH or PUSCH which would be hard to understand the meaning of each bits. If you want to get those bitmap decoded and printed into the log file. You have two options.

 

Option 1 :  Add phy.csi=1 to log option

Add phy.csi=1 to log option in the confgiuration as shown below.

log_options: "all.level=debug,all.max_size=1, phy.csi=1",

 

 

Option 2 :  Enable CSI in WebGUI Property Window

 

You can enable CSI in ENB property window in WebGUI (NOTE : If you don't see this option in your WebGUI, it is highly likely to use very old version of software. It is recommended to upgrade your software).

 

NR SA CSI Tips CSI Decode 01

 

Then you can get the decoded CSI report as shown below.

NR SA CSI Tips CSI Decode 02