Amarisoft

NR SA Beam Management

 

The purpose of this tutorial is to how to configure basics features for Beam Management and verify it. In terms of configuration, this is almost same as CSI Report (Refer to the tutorial CSI Report for the basic configuration of CSI report). However, as of now, this tutorial is NOT to demonstrate full fledged beam management capability and configuration. It is more of setting the base line for beam management test and open the floor for further suggestion from users/readers.

NOTE 1 : What Amarisoft supports are

NOTE 2 : What Amarisoft does NOT supports are

NOTE 3 : We are OPEN for SUGGESTION !!!

Supporting all the features for Beam Management is technically challenging and costly and its verification is even more challenging. Therefore, we need to prioritize on what to support first on various factors like the demand for a feature, level of technical difficulties etc. To assess these factors, we are widely open for suggestion from Amarisoft users regarding what should be supported.

NOTE 4 : This tutorial is mainly for beam management in connected mode, if you are interested in testing beam management for initial attach (i.e, Initial Beam Selection) refer to this tutorial.

 

Table of Contents

 

 

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.

 

 

Test 1 : Periodic CSI Report with multiple CSI

In this test, I will show you how to configure manually the periodic CSI report for the 4 different CSI-RS (2 ports each) designed for associating with each individual beam. As you may know if you have tried to configure this kind of measurement before, you would know it is extremly complicated and confusing to configure those multiple CSI RS report manually. My personal tips to create a test plan for this kind of case is to draw a few diagram clearly showing what is intended to do. In my case, I usually draw two diagrams as shown below.

The first diagram that I often draw is to show the physical resource allocation for all the CSI-RS / CSI-IM in time domain as shown below. It would be even better if you draw physical resource map for both time domain and frequency domain, but it may be too much to do. So I usually draw time-domain resource map only.

From the time domain resource map, you need to design the entire hierarchy of CSI report from the physical layer csi resource map all the way to csi-report-config. It is important to assign id (the numbers shown on the diagram) in systematically and maintain the consitency, otherwise you may get easily confused when you configure the architecture in RRC message. (NOTE : Remember this structure and the ids (numbers) clearly and try to match each of the component to the settings in the configuration file and in the log analysis, otherwise it would be hard to get the big picture (real meaning) of the configuration file settings or RRC message in the log)

 

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-4beam.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-4beam.cfg  it is configured as follows.

In this test, TDD mode is used (NR_TDD 1) and set the downlink number of antenna to 2 (N_ANTENAA_DL 2).

You can use any band you like, but I used the n78 as specified in the default example (NOTE : For the sake of beam management, it would be more meaningful to use FR2, but I used FR1 for the convinience).

You can use any TDD Pattern, but I used the NR_TDD_CONFIG 2 as in the default example. The only thing to pay attention to is to make it sure that you configure all the CSI RS to be fall into DL symbols defined in the pattern.

This is CSI-RS that is indeded to be mapped to the first beam. n_ports (number of csi antenna port) is 2 and the symbol location is 4(5th OFDM symbol) and relative power(power_confrol_offset) is set to -8 dB. Period is 80 slots and slot offset is set to 1 (NOTE : In this test, no specific beamforming is applied. Instead, I tried to simulate the angle of the beam by changing the relative power of the CSI RS).

This is CSI-RS that is indeded to be mapped to the second beam. n_ports (number of csi antenna port) is 2 and the symbol location is 4(5th OFDM symbol) and relative power(power_confrol_offset) is set to -4 dB. Period is 80 slots and slot offset is set to 2 (NOTE : In this test, no specific beamforming is applied. Instead, I tried to simulate the angle of the beam by changing the relative power of the CSI RS).

This is CSI-RS that is indeded to be mapped to the second beam. n_ports (number of csi antenna port) is 2 and the symbol location is 4(5th OFDM symbol) and relative power(power_confrol_offset) is set to 0 dB. Period is 80 slots and slot offset is set to 3 (NOTE : In this test, no specific beamforming is applied. Instead, I tried to simulate the angle of the beam by changing the relative power of the CSI RS).

This is CSI-RS that is indeded to be mapped to the second beam. n_ports (number of csi antenna port) is 2 and the symbol location is 4(5th OFDM symbol) and relative power(power_confrol_offset) is set to 4 dB. Period is 80 slots and slot offset is set to 4 (NOTE : In this test, no specific beamforming is applied. Instead, I tried to simulate the angle of the beam by changing the relative power of the CSI RS).

This is for TRS. In this test, a TRS made up of 4 CSI-RS will be used. (NOTE : I put some gaps (4) in csi_rs_id of the last Beam CSI RS and the first TRS. This is just to leave some rooms in csi_rs_id for the possible extension of beam csi-rs in the future. But you can assign csi_rs_id in any way you like as long as all of the ids properly reflected in csi resource set definition)

This is the first two TRS CSI-RS configured in slot offset 11 with 40 slot periodicity. The OFDM symbol position of the two TRS is 4 and 8 respectively.

This is the second two TRS CSI-RS configured in slot offset 12 with 40 slot periodicity. The OFDM symbol position of the two TRS is 4 and 8 respectively.

Now group the all the CSI RS into corresponding CSI RS resource sets. I assigned each of the beam CSI (i.e, csi_rs_id 0,1,2,3) into each separate resource set(csi_rs_set_id 0,1,2,3) and put the four TRS CSI RS(csi_rs_id 8,9,10,11) to the same csi rs resource set(csi_rs_set_id 8). (NOTE : Again, I put some gaps (4) in csi_rs_set_id of the last Beam CSI RS resource set and the TRS resource set. This is just to leave some rooms in csi_rs_set_id for the possible extension of beam csi-rs in the future. But you can assign csi_rs_set_id in any way you like as long as all of the ids properly reflected in csi resource config definition)

Now let's define csi_im_resources. I will configure the same number of csi_im_resources as the number of beam csi rs. Each of the csi im will be configured in the same slot as beam csi rs but at different OFDM symbols(non overlapping with beam CSI-RS).

This is the two CSI IM configuration corresponding to the first and second beam CSI-RS.

This is the two CSI IM configuration corresponding to the third and fourth beam CSI-RS.

Now let's allocate each of the csi-im resources into corresponding csi im resource sets. I allocate each of the csi im resources (csi_im_id 0,1,2,3) to each individual csi im resource sets (csi_im_set_id 0,1,2,3).

In this test, I have 4 resources for zp csi rs. I set this to overlap with the four csi im REs to set the REs to be zero.

This is configurations for the first and second zp csi rs (csi_rs_id 0 and 1).

This is configurations for the third and fourth zp csi rs (csi_rs_id 2 and 3).

Then I allocated the four zp csi rs into one csi rs resource set.

Now let's construct csi resource config from all the csi rs resource sets that we created above.

First, I created 4 csi resource configs (csi_rsc_config_id 0,1,2,3) from the four nzp_csi_rs_resource_set 0,1,2,3 and set the resource_type to "periodic".

Then, I created another 4 csi resource configs (csi_rsc_config_id 8,9,10,11) from the four csi_im_resource_set 0,1,2,3 and set the resource_type to "periodic". (NOTE : Here again, you see some gaps in csi_rs_config_id between the first 4 and the next 4 csi_rsc_config_id and this is for the case of adding more csi_rs_config for nzp_csi_rs_resource_set)

And then I created the last csi rsc config(csi_rsc_config_id 16) for TRS CSI.

As the last step, I will create the four csi report configurations (csi_report_config) for each of the CSI RS beams. Each of the report config has resources_for_channel_measuremet which points to the csi_rsc_config_id for the measurement and csi_im_resources_for_interference which points to csi_rsc_config_id for the corresponding CSI IM.

This is the csi_report_config for the first CSI RS. resources_for_channel_measuremet  is mapped to csi_rsc_config_id 0 and csi_im_resources_for_interference is mapped to csi_rsc_config_id 8. In this test, period is set to 80 slots (NOTE : Report offset is not configurable by user in case of periodic report. It is configured automatically by gNB)

This is the csi_report_config for the second CSI RS. resources_for_channel_measuremet  is mapped to csi_rsc_config_id 1 and csi_im_resources_for_interference is mapped to csi_rsc_config_id 9. In this test, period is set to 80 slots (NOTE : Report offset is not configurable by user in case of periodic report. It is configured automatically by gNB)

This is the csi_report_config for the third CSI RS. resources_for_channel_measuremet  is mapped to csi_rsc_config_id 2 and csi_im_resources_for_interference is mapped to csi_rsc_config_id 10. In this test, period is set to 80 slots (NOTE : Report offset is not configurable by user in case of periodic report. It is configured automatically by gNB)

This is the csi_report_config for the first CSI RS. resources_for_channel_measuremet  is mapped to csi_rsc_config_id 3 and csi_im_resources_for_interference is mapped to csi_rsc_config_id 11. In this test, period is set to 80 slots (NOTE : Report offset is not configurable by user in case of periodic report. It is configured automatically by gNB)

 

Perform the Test

Operation for this test is very simple. The difficult part is verfication with the log and other methods.

First check with basic configuration of the cell with 'cell phy' command and see if the cell is configured as you intended (NOTE : Nothing about the CSI configuration can be confirmed in command line, you need to verify the configuration with the collected log).

Then run 't' command, power on UE and wait until the call is established.

 

Log Analysis

Sample Log

This is just for showing the association between the configuration shown above and IE (Information Elements) in RRC and see if UE report CSI RS as you intended.

Before you start logging, I would suggest you to set every items in 'debug' mode for ENB to collect full stack trace of the enb and check 'CSI' to display the decoded CSI report(bitmap) in more human readable format.

First check on the default PDCCH TCI states for PDCCH. You see only one tci-state with reference signal mapped to ssb 0. This is not what is set in the configuration file. It is the configuration automatically set by gNB (NOTE : You can manually configure this if you like with tci_states_pdcch_config )

Followings are the three zp-CSI-RS out of 4 zp-CSI-RS set in the configuration file (csi_rs_id 0,1,2,3) and configured in zp-CSI-RS-ResourceToAddModList in RRC message.

Following is the fourth zp-CSI-RS set in the configuration file (csi_rs_id 0,1,2,3) and configured in zp-CSI-RS-ResourceToAddModList in RRC message..

Following is the first CSI-RS resources for the first beam set in the configuration file which is mapped to nzp-CSI-RS-ResourceId 0 of nzp-CSI-RS-ResourceToAddModList in RRC.

Following is the first CSI-RS resources for the second beam set in the configuration file which is mapped to nzp-CSI-RS-ResourceId 1 of nzp-CSI-RS-ResourceToAddModList in RRC.

Following is the first CSI-RS resources for the third beam set in the configuration file which is  mapped to nzp-CSI-RS-ResourceId 2 of nzp-CSI-RS-ResourceToAddModList in RRC.

Following is the first CSI-RS resources for the fourth beam set in the configuration file which is mapped to nzp-CSI-RS-ResourceId 3 of nzp-CSI-RS-ResourceToAddModList in RRC.

Followings are the first two CSI-RS resources for TRS set in the configuration file which is mapped to nzp-CSI-RS-ResourceId 8,9 of nzp-CSI-RS-ResourceToAddModList in RRC.

Followings are the second two CSI-RS resources for TRS set in the configuration file which is mapped to nzp-CSI-RS-ResourceId 10,11 of nzp-CSI-RS-ResourceToAddModList in RRC.

Followings are CSI-RS-ResourceSets constructed out of nzp CSI RS resources configured above. As you see,  each of the beam CSI (i.e, csi_rs_id 0,1,2,3) is grouped into each separate resource set(csi_rs_set_id 0,1,2,3) and the four TRS CSI RS(csi_rs_id 8,9,10,11) are groupled to the same csi rs resource set(csi_rs_set_id 8).

Followings are the three (out of 4) CSI-IM resources set in the configuration file which is mapped to CSI-IM-ResourceId 0,1,2 of CSI-IM-ResourceToAddModList in RRC.

Followings are the fourth (out of 4) CSI-IM resources set in the configuration file which is mapped to CSI-IM-ResourceId 3 of CSI-IM-ResourceToAddModList and csi-IM-ResourceSets constructed out of the 4 csi-IM-Resources in RRC.

Following is the 4 csi-ResourceConfig constructed from the CSI-RS Resource sets configured above. (csi-ResourceConfigId 0,1,2,3) in csi-ResourceConfigToAddModList)

Following is the 4 csi-ResourceConfig constructed from the CSI-IM Resource sets configured above. (csi-ResourceConfigId 8,9,10,11) and one csi-ResourceConfig(csi-ResourceConfigId 16) constructed from TRS resource set in csi-ResourceConfigToAddModList.

Now comes the last stage of the configuration which is CSI Report Configuration.

This is the report configuration for the first CSI beam which is associated with CSI RS config 0 for signal measurement and 8 for interference measurement. The codebook is set to type1 and typeI-SinglePanel. Period is 80 slots and slot offset is set to 9 (NOTE : The slot offset in reportSlotConfig is the one set by gNB automaically)

This is the report configuration for the second CSI beam which is associated with CSI RS config 1 for signal measurement and 9 for interference measurement. The codebook is set to type1 and typeI-SinglePanel. Period is 80 slots and slot offset is set to 18 (NOTE : The slot offset in reportSlotConfig is the one set by gNB automaically)

This is the report configuration for the third CSI beam which is associated with CSI RS config 2 for signal measurement and 10 for interference measurement. The codebook is set to type1 and typeI-SinglePanel. Period is 80 slots and slot offset is set to 19 (NOTE : The slot offset in reportSlotConfig is the one set by gNB automaically)

This is the report configuration for the first CSI beam which is associated with CSI RS config 3 for signal measurement and 11 for interference measurement. The codebook is set to type1 and typeI-SinglePanel. Period is 80 slots and slot offset is set to 20 (NOTE : The slot offset in reportSlotConfig is the one set by gNB automaically)

Once everything configured properly and the call is setup, you should get CSI report as follows. You would notice that cqi value varies for each measurement CSI-RS which is transmitted at different power.

 

Visualization of CSI RS

Here I will show you on how to visualize CSI-RS physical resources in various different format. It is not possible to visualize the beam itself, but you can visualize exact physical resources for each CSI RS in this way. To do this, I am using the tool trx-iq-dump.js which is explained in detail in this tutorial. (NOTE : You can do similar visualization with sdr_spectrum, there is Pros and Cons of sdr_spectrum in terms of CSI-RS visualization. The advantage of sdr_spectrum would be that it can visualize the signal on the fly. The drawback of sdr_spectrum would be that it is difficult to capture a specific subframe/slot deterministic way).

This slot shows the SSB at the SFN 0618, subframe 0, slot 0. In this tutorial, SSB is not used for the beam management, but always good to identify the SSB as a reference.

This shows the first two TRS CSI-RS at SFN 0618, subframe 5, slot 1.

This shows the last two TRS CSI-RS at SFN 0618, subframe 6, slot 0.

This shows the first CSI-RS for beam management at SFN 0620, subframe 0, slot 1. This is the first CSI-RS out of the 4 CSI-RS that will be used for beam report.

This shows the second CSI-RS for beam management at SFN 0620, subframe 1, slot 0. This is the second CSI-RS out of the 4 CSI-RS that will be used for beam report.

This shows the third CSI-RS for beam management at SFN 0620, subframe 1, slot 1. This is the third CSI-RS out of the 4 CSI-RS that will be used for beam report.

This shows the fourth CSI-RS for beam management at SFN 0620, subframe 2, slot 0. This is the fourth CSI-RS out of the 4 CSI-RS that will be used for beam report.

 

 

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