Amarisoft

NR CG (Configured Grant)

 

This tutorial is to show you how to configure Configured Grant. Configured Grant is a mechanism that enable UL scheduling via RRC message and schedule PUSCH without DCI.  Major user case and concept is very similar to SPS (Semi Persistent Scheduling) in LTE.  In LTE, we used the same concept both in downlink and uplink, and name it as SPS for both downlink and uplink. But in NR, we call this mechanism as Configured Grant for Uplink and SPS for Downlink.

There are two types of CG defined in 3GPP called Type 1 and Type 2 which can be summarized as follows.

NOTE : This feature is supported from Release 2022-10-27 (for type 1) and from 2023-03-17 (for type 2)

 

 

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.

If you have a commercial UE that support UE assistance information with Release Preference, you can use the Setup A. If you don't have any commercial UE supporting this feature but have Amarisoft UEsim you can use Setup B. In this Test, Setup B is used.

 

Setup A

This is the setup where you use a commercial UE as DUT.

TestSetup Callbox UE 1sdr 01

 

Setup B

This is the setup where you use a commercial Amarisoft UEsim as DUT.

TestSetup Callbox UEsim 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 :  Configured Grant - Type 1 with Single BWP

This test is to show how to configure and verify the CG(Configured Grant) type 1. In CG Type 1, UE is expected to send PUSCH after RRCReconfiguration for CG without DCI Triggering.

 

Configuration

The configuration shown here is common configuration for all the subtests belonging to Test 1

I have used gnb-sa-cg.cfg which is copied and modified from gnb-sa.cfg on Callbox (gNB) and drb_nr_cg.cfg which is copied and modified from drb_nr.cfg

NR SA CG Test 1 Config 01

I am using the default mme-ims.cfg without any modification.

NR SA CG Test 1 Config 02

On UEsim, I used ue-nr-sa-cg.cfg which has been copied and modified from ue-nr-sa.cfg (NOTE : If you are using the commercial UE as a DUT, you don't need this step. Just make it sure that your UE support UE-assistance-information for release-preference).

NR SA CG Test 1 Config 03

gnb-sa-cg.cfg  is configured as follows.

In gNB configuration, you need to configure the parameter configured_grant. Within the configured_grant object, you need to specify CG type by the parameter configuration_type , assign physical resources by the parameters l_crb,l_crb_max,mcs and specify the PUSCH transmission interval by setting the parameter periodicity.

NR SA CG Test 1 Config 04

 

drb_nr_cg.cfg is configured as follows.

In drb configuration, you need to set need_sps to "ul" for the specific QCI you want to apply CG(configured grant).  You can pick any QCI in this configuration to apply configured grant.

NR SA CG Test 1 Config 05

 

ue-nr-sa-cg.cfg  is configured as shown below. (NOTE : If you are using the commercial UE as a DUT, you don't need this step. Just make it sure that your UE support UE-assistance-information for release-preference).

The only configuration that you need to set in UEsim is to set as_release to 16 or higher.

NR SA CG Test 1 Config 06

 

Perform the Test

Run lte service on callbox and check 'cell' and 'cell phy' command to see if the cell is configured as you intended.

NR SA CG Test 1 Run 01

Power on UE.

NR SA CG Test 1 Run 02

Wait until the DUT complete the initial attach.  You can confirm UL traffic scheduled by CG (Configured Grant) here as well. In case of PUSCH by configured grant, traffic is printed but mcs is not printed.

NR SA CG Test 1 Run 03

 

Log Analysis

Following is the log snapshot that are involved in Configured Grant

Sample Log

Sample Log (UEsim Log)

Make it sure that UE support configured grant as shown in the UE capability Information.  UE should notify "configuredUL-GrantType1 supported" for gNB to apply the CG (configured grant).

NR SA CG Test 1 Log 01

Once UE notify it support Configured Grant, then gNB configures Configured Grant. You see all the necessary scheduling information (i.e, rrc-ConfiguredUplinkGrant) and DMRS(cg-DMRS-Configuration) and UCI(uci-OnPUSCH Setup) in this setup.

NR SA CG Test 1 Log 02

After the RRC Reconfiguration with CG, you would see that PUSCH is transmitted at every 10ms without any DCI grant. This is because the periodicity in rrc is set to sym20x14 which corresponds to 20 slots.

NR SA CG Test 1 Log 03

 

 

Test 2 :  Configured Grant - Type 2 Immediate with Single BWP

This test is to show how to configure and verify the CG(Configured Grant) type 2 Immediate. In CG Type 2 Immediate, UE is expected to send PUSCH after RRCReconfiguration for CG and DCI Triggering.

 

Configuration

The configuration shown here is common configuration for all the subtests belonging to Test 2

I have used gnb-sa-cg-type2-immediate.cfg which is copied and modified from gnb-sa.cfg on Callbox (gNB) and drb_nr_cg.cfg which is copied and modified from drb_nr.cfg

NR SA CG Test 2 Config 01

I am using the default mme-ims.cfg without any modification.

NR SA CG Test 2 Config 02

On UEsim, I used ue-nr-sa-cg.cfg which has been copied and modified from ue-nr-sa.cfg (NOTE : If you are using the commercial UE as a DUT, you don't need this step. Just make it sure that your UE support UE-assistance-information for release-preference).

NR SA CG Test 2 Config 03

gnb-sa-cg-type2-immediate.cfg  is configured as follows.

In gNB configuration, you need to configure the parameter configured_grant. Within the configured_grant object, you need to specify CG type by the parameter configuration_type , assign physical resources by the parameters l_crb,l_crb_max,mcs and specify the PUSCH transmission interval by setting the parameter periodicity.

NR SA CG Test 2 Config 04

 

drb_nr_cg.cfg is configured as follows.

In drb configuration, you need to set need_sps to "ul" for the specific QCI you want to apply CG(configured grant).  You can pick any QCI in this configuration to apply configured grant.

NR SA CG Test 2 Config 05

 

ue-nr-sa-cg.cfg  is configured as shown below. (NOTE : If you are using the commercial UE as a DUT, you don't need this step. Just make it sure that your UE support UE-assistance-information for release-preference).

NR SA CG Test 1 Config 06

 

Perform the Test

Run lte service on callbox and check 'cell' and 'cell phy' command to see if the cell is configured as you intended.

NR SA CG Test 1 Run 01

Power on UE.

NR SA CG Test 1 Run 02

Wait until the DUT complete the initial attach.  You can confirm UL traffic scheduled by CG (Configured Grant) here as well. In case of PUSCH by configured grant, traffic is printed but mcs is not printed.

NR SA CG Test 1 Run 03

 

Log Analysis

Following is the log snapshot that are involved in Configured Grant

Sample Log

Sample Log (UEsim Log)

Make it sure that UE support configured grant as shown in the UE capability Information.  UE should notify "configuredUL-GrantType2 supported" for gNB to apply the CG (configured grant) with type 2.

NR SA CG Test 2 Log 01

Once UE notify it support Configured Grant, then gNB configures Configured Grant. You see all the necessary information DMRS(cg-DMRS-Configuration) and UCI(uci-OnPUSCH Setup) in this setup. In this case, Grant Information (i.e, PUSCH Scheduling) is not configured because the information will be sent via the CG trigger (i.e, DCI).

NR SA CG Test 2 Log 02

After the RRC Reconfiguration with CG, first you see a DCI 0_1 (UL Grant) first and then you would see that PUSCH is transmitted at every 10ms without any DCI grant. This is because the periodicity in rrc is set to sym20x14 which corresponds to 20 slots.

NR SA CG Test 2 Log 03

 

 

 

RRC / NAS Signaling

 

RrcReconfiguration (SA)

: This is RrcReconfiguration containing CG configurations

{

  message c1: rrcReconfiguration: {

    rrc-TransactionIdentifier 0,

    criticalExtensions rrcReconfiguration: {

      radioBearerConfig {

        srb-ToAddModList {

          {

            srb-Identity 2

          }

        },

        drb-ToAddModList {

          {

            ...

          }

        }

      },

      nonCriticalExtension {

        masterCellGroup {

          ...

          },

          physicalCellGroupConfig {

            ...

          },

          spCellConfig {

            spCellConfigDedicated {

              uplinkConfig {

                initialUplinkBWP {

                  configuredGrantConfig setup: {

                    cg-DMRS-Configuration {

                      dmrs-AdditionalPosition pos1,

                      transformPrecodingDisabled {

                      }

                    },

                    uci-OnPUSCH setup: semiStatic: {

                      betaOffsetACK-Index1 9,

                      betaOffsetACK-Index2 9,

                      betaOffsetACK-Index3 9,

                      betaOffsetCSI-Part1-Index1 7,

                      betaOffsetCSI-Part1-Index2 7,

                      betaOffsetCSI-Part2-Index1 7,

                      betaOffsetCSI-Part2-Index2 7

                    },

                    resourceAllocation resourceAllocationType1,

                    powerControlLoopToUse n0,

                    p0-PUSCH-Alpha 0,

                    nrofHARQ-Processes 2,

                    repK n1,

                    periodicity sym20x14,

                    rrc-ConfiguredUplinkGrant {

                      timeDomainOffset 8,

                      timeDomainAllocation 0,

                      frequencyDomainAllocation '000000000001011101'B,

                      antennaPort 0,

                      dmrs-SeqInitialization 0,

                      precodingAndNumberOfLayers 0,

                      srs-ResourceIndicator 0,

                      mcsAndTBS 10,

                      pathlossReferenceIndex 0

                    }

                  }

                }

              },

              tag-Id 0

            }

          }

        },

        dedicatedNAS-MessageList {

          ...

        }

      }

    }

  }