5G/NR - Rate Match Pattern  




RateMatch Pattern

When we talk about 'Rate Match' in 5G, you need to pay attention to the context in which the term is used. In one context, the term RateMatch would refer to a step in physical channel coding (for example, like this). But this is not the type of RateMatch that I want to talk about in this note.

The RateMatch that I am going to talk about in this note refers to a mechanism that arbitrarily define a certain area (a bunch of resource elements) in a slot that disallow PDSCH data allocation.

Why we need this kind of mechanism ? It is to schedule PDSCH at a certain slot without interfering others when the PDSCH is partially overlapped with other channels for other Radio (NOTE : I said 'partially' here. When your PDSCH overlaps completely with other Radio, you better not to schedule PDSCH in that slot rather than trying to avoid interference).

Some background of adopting this kind of configuration is briefly described in IV-A of this paper as follows :

    When receiving unicast PDSCH, UE can be informed that certain resources are not available for PDSCH. These unavailable resources may include configurable rate matching patterns with RB and symbol level granularity or RE level granularity. The latter is used to map around LTE CRS in case NR and LTE share the same carrier. This facilitates both forward and backward capability, since the network can blank radio resources to serve future unknown services while not causing backward compatibility issues.

How to Configure RateMatched Area ?

There are roughly two different ways to configure the RateMatched Area (the area to be unavailable for PDSCH) depending on the use case.

One method is to use RateMatchPatternLTE-CRS in Rrc and this is mainly used when NR radio frequency is overlapping with LTE spectrum as you see in DSS. Main purpose of this configuration is to avoid scheduling PDSCH in LTE CRS RE (Cell specific Reference Signal Resource Element). Refer to this note for the details.

There is another method for the RateMatch and it is to use the Rrc IE RateMatchPattern. This is the main topic in this note. You can use this for DSS as well (for example, to avoid scheduling PDSCH in LTE PSS,SSS,PBCH region as explained in this note), but you can specify almost any region in a slot that you want to avoid PDSCH scheduling and use it for various other use cases as well.

The way you configure the RateMatchPattern in Rrc to define a specific area can be illustrated as follows and I hope just this illustration would be good enough as explanation.

RRC Parameters

PDSCH-Config ::=                        SEQUENCE {

    dataScramblingIdentityPDSCH         INTEGER (0..1007)    OPTIONAL,

    dmrs-DownlinkForPDSCH-MappingTypeA      SetupRelease { DMRS-DownlinkConfig }  OPTIONAL,   

    dmrs-DownlinkForPDSCH-MappingTypeB      SetupRelease { DMRS-DownlinkConfig }  OPTIONAL,  

    tci-StatesToAddModList                  SEQUENCE (SIZE(1..maxNrofTCI-States))

                                                OF TCI-State    OPTIONAL,   -- Need N

    tci-StatesToReleaseList                 SEQUENCE (SIZE(1..maxNrofTCI-States))

                                                OF TCI-StateId  OPTIONAL,   -- Need N

    vrb-ToPRB-Interleaver                   ENUMERATED {n2, n4},

    resourceAllocation                      ENUMERATED { resourceAllocationType0,



    pdsch-AllocationList           SEQUENCE (SIZE(1..maxNrofDL-Allocations))

                                     OF PDSCH-TimeDomainResourceAllocation     OPTIONAL,

    pdsch-AggregationFactor                 ENUMERATED { n2, n4, n8 } OPTIONAL, 

    rateMatchPatternToAddModList            SEQUENCE (SIZE (1..maxNrofRateMatchPatterns))

                                                 OF RateMatchPattern    OPTIONAL, -- Need N

    rateMatchPatternToReleaseList           SEQUENCE (SIZE (1..maxNrofRateMatchPatterns))

                                                 OF RateMatchPatternId     OPTIONAL, -- Need N

    rateMatchPatternGroup1                  SEQUENCE (SIZE (1..maxNrofRateMatchPatterns))

                                                 OF RateMatchPatternId     OPTIONAL, -- Need R

    rateMatchPatternGroup2                  SEQUENCE (SIZE (1..maxNrofRateMatchPatterns))

                                                 OF RateMatchPatternId     OPTIONAL, -- Need R

    rbg-Size                                ENUMERATED {config1, config2},

    mcs-Table                               ENUMERATED {qam64, qam256},

    maxNrofCodeWordsScheduledByDCI          ENUMERATED {n1, n2} OPTIONAL,   -- Need R

    prb-BundlingType                    CHOICE {

        static                                  SEQUENCE {

            bundleSize                              ENUMERATED { n4, wideband }  OPTIONAL  


        dynamic                                 SEQUENCE {

            bundleSizeSet1                          ENUMERATED { n4,




                                                                }  OPTIONAL,   -- Need S

            bundleSizeSet2                          ENUMERATED { n4,


                                                                } OPTIONAL    -- Need S




        rateMatchPatternGroup1DCI-1-2-r16              RateMatchPatternGroup OPTIONAL, -- Need R

        rateMatchPatternGroup2DCI-1-2-r16              RateMatchPatternGroup OPTIONAL, -- Need R




RateMatchPatternGroup ::= SEQUENCE (SIZE (1..maxNrofRateMatchPatternsPerGroup)) OF CHOICE {

        cellLevel                     RateMatchPatternId,

        bwpLevel                    RateMatchPatternId



RateMatchPattern ::= SEQUENCE {

    rateMatchPatternId RateMatchPatternId,

    patternType CHOICE {

        bitmaps SEQUENCE {

            resourceBlocks                   BIT STRING (SIZE (275)),

            symbolsInResourceBlock CHOICE {

                oneSlot                        BIT STRING (SIZE (14)),

                twoSlots                       BIT STRING (SIZE (28))


            periodicityAndPattern CHOICE {

                n2                               BIT STRING (SIZE (2)),

                n4                               BIT STRING (SIZE (4)),

                n5                               BIT STRING (SIZE (5)),

                n8                               BIT STRING (SIZE (8)),

                n10                              BIT STRING (SIZE (10)),

                n20                              BIT STRING (SIZE (20)),

                n40                              BIT STRING (SIZE (40))

            } OPTIONAL, -- Need S



    controlResourceSet ControlResourceSetId


    subcarrierSpacing SubcarrierSpacing OPTIONAL, -- Cond CellLevel

    dummy ENUMERATED { dynamic, semiStatic },



        controlResourceSet-r16 ControlResourceSetId-r16 OPTIONAL -- Need R




RateMatchPatternLTE-CRS ::= SEQUENCE {

   carrierFreqDL                       INTEGER (0..16383),

   carrierBandwidthDL               ENUMERATED {n6, n15, n25, n50, n75, n100, spare2, spare1},

   mbsfn-SubframeConfigList      EUTRA-MBSFN-SubframeConfigList OPTIONAL,

   nrofCRS-Ports                      ENUMERATED {n1, n2, n4},

   v-Shift                                ENUMERATED {n0, n1, n2, n3, n4, n5}