PDSCH/PUSCH Aggregation Factor / Repetition

The term Aggregation Factor in this context refers to the aggregation in time domain, more specifically the PDSCH and PUSCH over multiple consecutive slots. Those multiple PDSCH and PUSCH in this mechanism carries the same user data but with different redundancy version. It means those multiple PDSCH or PUSCH is basically the repetative transmission of a same data like the repetition mechanism you saw in TTI bundling and repetion in LTE and LTE CatM.

PDSCH Aggregation Factor/RepetitionSchemeConfig

PDSCH Aggregation is a kind of PDSCH repetition mechanism for reliable transmission (of course at the sacrifice of throughput). Overall concept would be similar to TTI Bundling in LTE (in LTE TTI bundling is for Uplink. You may take PDSCH Aggregation is downlink version of TTI bundling) or it can be comparable to PDSCH repetition in Cat M or NBIot in LTE.  Overall mechanism of PDSCH Aggregation can be illustrated as below.

In Release 15, 3GPP allows three types of repeition (n2, n4, n8) and you may apply the specific number of repetition depending on use case as listed below. This is just examples and the decision is supposed to be made by network operators (carriers)

  • eMBB data with high data throughput requirement : a single PDSCH transmission, meaning No Aggregation.
  • Critical IoT data with medium reliability requirement : a few PDSCH repetitions
  • Critical IoT data with high reliability requirement : using many PDSCH repetitions
  • Critical IoT data with low latency requirement : using only one or two PDSCH repetitions

PDSCH AggregationFactor is a mechanism that one DCI can schedule multiple consecutive downlink slots for PDSCH. The number of the consecutive slots can be 2 or 4 or 8. The number of slots can be determined by the RRC parameter pdsch-AggregationFactor.

When this IE is configured, the number of allocated symbol (SLIV) for all the consecutive slots are same as the first slot.

The RV_id (Redundancy Version) for each slot varies depending on following table.

< 38.214 - Table Applied redundancy version when aggregationFactor is present >


< 38.214 - Table Applied redundancy version for the second TCI state when sequenceOffsetforRV ispresent >

rvs : sequenceOffsetforRV

PUSCH AggregationFactor/RepetitionSchemeConfig


< 38.214 - Table Number of repetition K as a function of 2 MSBs of MCS information field >


< 38.214 - Table Redundancy version for PUSCH transmission >

N : numberOfSlots-TBoMS-r17 = number of slots N used for TBS determination

UE Capability Information

This is an optional configuration and it is not guaranteed that all the UE support this capability. If a UE support this capability, it should inform it to Network via the IE : pdsch-RepetitionMultiSlots in Phy-ParametersCommon of UE CapabilityInformation.  

RRC Parameters

< PDSCH-Config relase 17 >




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


   pdsch-TimeDomainAllocationList-r16    SetupRelease { PDSCH-TimeDomainResourceAllocationList-r16}

                                              OPTIONAL, -- Need M

   repetitionSchemeConfig-r16         SetupRelease { RepetitionSchemeConfig-r16} OPTIONAL--Need M



   repetitionSchemeConfig-v1630     SetupRelease { RepetitionSchemeConfig-v1630} OPTIONAL--Need M





PDSCH-TimeDomainResourceAllocation-r16 ::= SEQUENCE {

   k0-r16                            INTEGER(0..32) OPTIONAL, -- Need S

   mappingType-r16                   ENUMERATED {typeA, typeB},

   startSymbolAndLength-r16          INTEGER (0..127),

   repetitionNumber-r16              ENUMERATED {n2, n3, n4, n5, n6, n7, n8, n16}

                                                              OPTIONAL,--Cond Formats1-0and1-1



   k0-v1710 INTEGER(33..128)         OPTIONAL -- Need S




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

   cellLevel                   RateMatchPatternId,

   bwpLevel                    RateMatchPatternId



MinSchedulingOffsetK0-Values-r16 ::= SEQUENCE (SIZE (1..maxNrOfMinSchedulingOffsetValues-r16))

                                         OF INTEGER (0..maxK0-SchedulingOffset-r16)

MinSchedulingOffsetK0-Values-r17 ::= SEQUENCE (SIZE (1..maxNrOfMinSchedulingOffsetValues-r16))

                                         OF INTEGER (0..maxK0-SchedulingOffset-r17)

MaxMIMO-LayersDL-r16 ::= INTEGER (1..8)



RepetitionSchemeConfig-r16 ::= CHOICE {

   fdm-TDM-r16                 SetupRelease { FDM-TDM-r16 },

   slotBased-r16               SetupRelease { SlotBased-r16 }



RepetitionSchemeConfig-v1630 ::= SEQUENCE {

   slotBased-v1630             SetupRelease { SlotBased-v1630 }




   repetitionScheme-r16        ENUMERATED {fdmSchemeA, fdmSchemeB,tdmSchemeA },

   startingSymbolOffsetK-r16   INTEGER (0..7) OPTIONAL -- Need R



SlotBased-r16 ::= SEQUENCE {

   tciMapping-r16              ENUMERATED {cyclicMapping, sequentialMapping},

   sequenceOffsetForRV-r16     INTEGER (1..3)



SlotBased-v1630 ::= SEQUENCE {

   tciMapping-r16              ENUMERATED {cyclicMapping, sequentialMapping},

   sequenceOffsetForRV-r16     INTEGER (0)



< PUSCH-Config relase 17 >




   pusch-AggregationFactor                    ENUMERATED { n2, n4, n8 } OPTIONAL, -- Need S


   pusch-RepTypeIndicatorDCI-0-1-r16          ENUMERATED { pusch-RepTypeA, pusch-RepTypeB}

                                                      OPTIONAL, -- Need R


   availableSlotCounting-r17                  ENUMERATED { enabled }




PUSCH-TimeDomainResourceAllocationList-r16 ::= SEQUENCE (SIZE(1..maxNrofUL-Allocations-r16))

                                                    OF PUSCH-TimeDomainResourceAllocation-r16


PUSCH-TimeDomainResourceAllocation-r16 ::= SEQUENCE {

   k2-r16                           INTEGER(0..32) OPTIONAL, -- Need S

   puschAllocationList-r16          SEQUENCE (SIZE(1..maxNrofMultiplePUSCHs-r16))

                                                    OF PUSCH-Allocation-r16,




PUSCH-Allocation-r16 ::= SEQUENCE {

   mappingType-r16             ENUMERATED {typeA, typeB} OPTIONAL, -- Cond NotFormat01-02-Or-TypeA

   startSymbolAndLength-r16    INTEGER (0..127) OPTIONAL, -- Cond NotFormat01-02-Or-TypeA

   startSymbol-r16             INTEGER (0..13) OPTIONAL, -- Cond RepTypeB

   length-r16                  INTEGER (1..14) OPTIONAL, -- Cond RepTypeB

   numberOfRepetitions-r16     ENUMERATED {n1, n2, n3, n4, n7, n8, n12, n16}

                                                     OPTIONAL, -- Cond Format01-02



   numberOfRepetitionsExt-r17  ENUMERATED {n1, n2, n3, n4, n7, n8, n12, n16, n20, n24, n28,

                                          n32, spare4, spare3, spare2, spare1} OPTIONAL,

                                          -- Cond Format01-02-For-TypeA

   numberOfSlots-TBoMS-r17     ENUMERATED {n1, n2, n4, n8, spare4, spare3, spare2, spare1}

                                          OPTIONAL, -- Need R

   extendedK2-r17              INTEGER (0..128) OPTIONAL -- Cond MultiPUSCH