5G NR: PUSCH Resource Allocation in Time-Domain


 1.            Introduction
As discussed in the post: Time Domain – Slots and Slot Formats, number of slots/symbols available for transmission/reception varies depending upon the network configuration. Therefore, it is important for the network to signal the UE about the timing of data transmission/reception.
Signalling of time-domain resources means, informing the UE about which slots/symbols the data can be transmitted/received. Similar to LTE, NR resource allocation is done either dynamically or in semi-persistent manner.
Dynamic scheduling in the uplink is done using PDCCH DCI. For semi-persistent scheduling, NR defines two mechanisms; one using PDCCH DCI (similar to LTE) and the other one purely via RRC signalling (new in NR).
PDCCH DCI is used for both dynamic and Semi-Persistent Scheduling (SPS) in the downlink (similar to LTE).
Time-domain PDSCH resource allocation is discussed in the post: PDSCH Resource Allocation in Time-Domain. In this post, uplink (PUSCH) resource allocation in time-domain is discussed in detail.
2                       PUSCH Resource Allocation in Time-Domain
2.1             Dynamic Scheduling
Refer to section 6.1.2.1 of 38.214 for more details.
In NR, DCI formats 0_0 and 0_1 are used to dynamically allocate time-domain resources for PUSCH. These DCI formats are thoroughly discussed in the post: DCI Formats in 5G NR.
In the case of dynamic scheduling, PDCCH carrying DCI 0_0 and 0_1 are in general addressed to either C-RNTI or MCS-C-RNTI. Temporary C-RNTI is also used during random access procedure.
DCI formats 0_0 and 0_1 carries 4-bit field named ‘time domain resource assignment’ which points to one of the rows of a look-up table. How the UE determines which look-up table to be used is discussed in section 2.1.2.
There can be up to 16 rows in the look-up table and hence only 4-bits are used for the field ‘time domain resource assignment’ and value ‘m’ for this field points to row number ‘m+1’ within the look-up table.
Each row in the look-up table provides the following parameters;
-      slots offset K2. This parameter is used to derive the slot in which PUSCH transmission occurs.
-      SLIV (jointly coded Start and Length Indicator Values), or individual values for the start symbol ‘S’ and the allocation length ‘L’.
-      PUSCH mapping type’ to be applied on the PUSCH transmission.
The contents of the look-up table are summarised below;
Parameter
Explanation
K2
Used to derive the slot offset from the slot where DCI is received
S
’S’ is the ‘start symbol’ -> First symbol in the slot in which PUSCH will be transmitted
L
Allocation length in number of OFDM symbols.
SLIV
Start and Length values are jointly encoded to produce Start and Length Indicator Value (SLIV)
PUSCH mapping type
PUSCH mapping type (Type A or Type B) to be applied in the PUSCH transmission. This helps determining the first DM-RS symbol position.

The following figure illustrates an example with time domain resource assignment field in DCI 0_0/0_1 indicating (based on look-up table) K2 = 1, S = 4 and L = 6.

In the above illustration, it is assumed that SCS for PUSCH and PDCCH are same.
It is possible that network configures different SCS for PDCCH and PUSCH. Determining slot offset based on just K2 is not sufficient if SCS for PDCCH and PUSCH are different. In such cases, the slot where the UE shall transmit the PUSCH is calculated according to the below equation;
\[The\:slot\:number\:allocated\:for\:PUSCH\:=\:\Big \lfloor n.\dfrac{2^{\mu_{PUSCH}}}{2^{\mu_{PDCCH}}} \Big\rfloor + K_2\]
where n is the slot with the scheduling DCI, K2 is based on the numerology of PUSCH, and µPUSCH and µPDCCH are the subcarrier spacing configurations for PUSCH and PDCCH, respectively.
Considering same example from the above illustration, K2 = 1, S = 4, L = 6, µPUSCH = 2, and µPDCCH = 0 => if the DCI is received in slot number 1 (using PDCCH SCS), the PUSCH will be transmitted in the slot number 5 (= 4+1 based on the above equation) using PUSCH SCS. Note that in this example, there are 4 times more number of slots with PUSCH SCS as compared to PDCCH SCS.
2.1.1           Valid ‘S’ and ‘L’ combinations:
Not all start and length values are valid due to the fact that a single time-domain resource allocation must be contained within a slot i.e., the allocation should not cross the slot boundary.
Moreover, the number of symbols in a slot varies with cyclic prefix which will also limit number of allowed start and length combinations => for normal CP, a slot contains 14 OFDM symbols and with extended CP, 12 OFDM symbols form a slot.
The UE shall consider the S and L combinations defined in table below as a valid PUSCH allocations. Note from column ‘S+L’ that the sum of start symbol number and allocation length should not exceed 14 for normal CP and 12 for extended CP.
PUSCH Mapping Type
Normal cyclic prefix
Extended cyclic prefix
S
L
S+L
S
L
S+L
Type A
0
{4,...,14}
{4,...,14}
0
{4,…,12}
{4,…,12}
Type B
{0,...,13}
{1,…,14}
{1,…,14}
{0,…,11}
{1,…,12}
{1,…,12}


2.1.2           Which resource allocation table to be used for PUSCH?

There are two types of PUSCH resource allocation tables (look-up tables);
1.    default PUSCH time domain allocation table A”: A predefined table in 38.214, Table 6.1.2.1.1-2 for normal CP and Table 6.1.2.1.1-3 for extended CP.
2.    RRC configured table pusch-TimeDomainAllocationList sent in either pusch-ConfigCommon (sent via SIB1 or dedicated RRC signalling) or pusch-Config (sent via dedicated RRC signalling)
The UE will choose appropriate table based on several factors like which of the above tables is configured in the UE, RNTI, search space type etc… Table 6.1.2.1.1-1 in 38.214 specifies the table selection criteria and is presented below for a quick reference.
RNTI
PDCCH search space
pusch-ConfigCommon includes TimeDomain AllocationList
pusch-Config includes TimeDomain AllocationList
PUSCH time domain resource allocation to apply
PUSCH scheduled by MAC RAR (uplink grant received within RAR)
No
N/A
Default A
Yes
N/A
pusch-TimeDomainAllocationList from pusch-ConfigCommon
C-RNTI,
MCS-C-RNTI,
TC-RNTI,
CS-RNTI
Any common search space associated with CORESET0
No
N/A
Default A
Yes
N/A
pusch-TimeDomainAllocationList from pusch-ConfigCommon
C-RNTI,
MCS-C-RNTI,
TC-RNTI,
CS-RNTI,
SP-CSI-RNTI
Any common search space NOT associated with CORESET0,
(or)
UE-specific search space
No
No
Default A
Yes
No
pusch-TimeDomainAllocationList from pusch-ConfigCommon
No/Yes
Yes
pusch-TimeDomainAllocationList from pusch-Config

Notes from the above table;
-    default PUSCH time domain allocation table A is chosen in cases where TimeDomainAllocationList is not configured by either pusch-ConfigCommon or pusch-Config (for applicable cases).
-    If available, TimeDomainAllocationList provided by pusch-ConfigCommon is always used except for a case where the same list is also provided by pusch-Config and the concerned search space is either UE-specific or common search space not associated with CORESET0.
-    If TimeDomainAllocationList is provided by pusch-Config and the concerned search space is either UE-specific or common search space not associated with CORESET0, then TimeDomainAllocationList is used.
There is an additional slot delay value defined for the first transmission of PUSCH scheduled by the RAR grant. This slot delay increases with SCS. When the UE transmits a PUSCH scheduled by RAR, the value specific to the PUSCH subcarrier spacing is applied in addition to the K2 value i.e., total slot offset applied is equal to K2 + ∆. The additional slot delay () values are as shown below;
SCS
Additional slot delay value ( ∆ )
15 kHz
2
30 kHz
3
60 kHz
4
120 kHz
6


2.1.2.1        Default PUSCH time-domain allocation table A
Default PUSCH time domain resource allocation table A” is shown below for both normal CP and extended CP. As the number of symbols per slot varies depending upon CP, only length (in symbols) is different in the case of extended CP.
Row index
PUSCH mapping type
K2
S
L
Normal CP
Extended  CP
1
Type A
j
0
14
8
2
Type A
j
0
12
12
3
Type A
j
0
10
10
4
Type B
j
2
10
10
5
Type B
j
4
10
4
6
Type B
j
4
8
8
7
Type B
j
4
6
6
8
Type A
j + 1
0
14
8
9
Type A
j + 1
0
12
12
10
Type A
j + 1
0
10
10
11
Type A
j + 2
0
14
6
12
Type A
j + 2
0
12
12
13
Type A
j + 2
0
10
10
14
Type B
j
8
6
4
15
Type A
j + 3
0
14
8
16
Type A
j + 3
0
10
10
     j = {1, 1, 2, 3} for SCS = {15 kHz, 30 kHz, 60 kHz, 120 kHz} respectively


Note from the above table, slot offset ‘K2values are always non-zero, meaning that PUSCH transmission never starts in the same slot where allocation is received.
2.1.2.2        TimeDomainAllocationList
TimeDomainAllocationList is configured by either pusch-ConfigCommon or pusch-Config.
The IE PUSCH-TimeDomainResourceAllocation is used to configure a time-domain relation between PDCCH and PUSCH. PUSCH-TimeDomainResourceAllocationList contains one or more (up to 16) of such PUSCH-TimeDomainResourceAllocations.
The UE determines the bit width of the DCI field based on the number of entries in the PUSCH-TimeDomainResourceAllocationList.
The network indicates in the UL grant (DCI) which of the configured time domain allocations the UE shall apply for that UL grant. Value 0 in the DCI field refers to the first element in this list, value 1 in the DCI field refers to the second element in this list, and so on.
PUSCH-TimeDomainResourceAllocationList IE structure is shown below. It contains K2, PUSCH mapping type, and startSymbolAndLength (SLIV).
PUSCH-TimeDomainResourceAllocationList
PUSCH-TimeDomainResourceAllocationList List from 1 up to 16 PUSCH-TimeDomainResourceAllocation
PUSCH-TimeDomainResourceAllocation
   k2 INTEGER  (0..32)
   mappingType ENUMERATED  {type A, type B}
   startSymbolAndLength INTEGER  (0..127)

-    The value of K2 ranges from 0 to 32 => unlike default table A, this method of allocation allows for PUSCH transmission within the same slot (K2 = 0) where the allocation is received. When allocation and PUSCH transmission are contained in the same slot, it is referred to as ‘self-contained’ slot.
-    When K2 field is absent, the UE applies the value 1 when PUSCH SCS is 15/30 kHz; the value 2 when PUSCH SCS is 60 kHz, and the value 3 when PUSCH SCS is 120KHz.
-    startSymbolAndLength provides an index giving valid combinations of start symbol and length (jointly encoded) as start and length indicator (SLIV). The network configures the field so that the allocation does not cross the slot boundary.
As can be noted, in this option, the network doesn’t give individual values of starting symbol ‘S’ and length value ‘L’, instead, a jointly encoded value (SLIV) is provided.
The ‘S’ and ‘L’ values allocated for the PUSCH are determined from the SLIV as shown below:
                                    if (L − 1) ≤ 7:
                                              SLIV = 14.(L − 1) + S
else:
SLIV = 14(14 − L + 1) + (14 − 1 − S)
                                    where 0 < L ≤ 14 − S
2.1.3           PUSCH mapping type:
Refer to section 6.4.1.1.3 from 38.211 for more details.
PUSCH mapping type defines the DM-RS configuration of PUSCH transmissions. Depending upon the location of first DM-RS symbol, there are two mapping types defined; type A and type B.
As discussed already, time domain resource assignment field within the DCI points to a row number within the look-up table and each row defines PUSCH mapping type (either type A or type B) to be followed.
PUSCH mapping type A:
In type A, DM-RS is mapped relative to the start of the slot irrespective of which symbol in the slot the PUSCH transmission starts.
When frequency hopping is disabled, the DM-RS position is defined to start relative to the start of the slot boundary and relative to start of each hop in case if frequency hopping is enabled.
The position of the first DM-RS symbol for type A is configured by RRC via either MIB or via ServingCellConfigCommon (SIB1 or dedicated signalling). The field dmrs-TypeA-Position is used for this purpose. This field takes two values pos2 or pos3. First symbol of DM-RS is located at either symbol 2 (pos2) or at symbol 3 (pos3) within the slot.
dmrs-TypeA-Position ENUMERATED  { pos2, pos3 }

PUSCH mapping type B
:
In type B, DM-RS is mapped relative to the start of the PUSCH allocation rather than start of the slot boundary.
To be precise, the DM-RS location is the first OFDM symbol where PUSCH transmission starts if frequency hopping is disabled and relative to the start of each hop in case frequency hopping is enabled.
In this case, as the DM-RS start symbol is fixed, the network need not explicitly provide configuration for type B.
Valid S and L combinations:
‘S’ and ‘L’ values are defined separately for each PUSCH mapping type because, not all combinations are valid for a given mapping type.
PUSCH Mapping Type
Normal cyclic prefix
Extended cyclic prefix
S
L
S+L
S
L
S+L
Type A
0
{4,...,14}
{4,...,14}
0
{4,…,12}
{4,…,12}
Type B
{0,...,13}
{1,…,14}
{1,…,14}
{0,…,11}
{1,…,12}
{1,…,12}

From the above table, it can be seen that, for PUSCH mapping type A, start symbol ‘S’ is always symbol ‘0’ because it makes sense to start before symbol 2 which can be the first DM-RS location for type A (pos2).
2.2             Semi-Persistent Scheduling
For uplink SPS, PDCCH carrying DCI 0_0 and 0_1 is addressed to Configured Scheduling-RNTI (CS-RNTI). In LTE, SPS-C-RNTI is used for this purpose. The grant received using CS-RNTI is referred to as configured grant.
Similar to uplink SPS in LTE, configured grant is given by the network to the UE who stores the received grant and uses it according to the pre-configured timing given by the network.
Configured grant will be discussed thoroughly in a separate post.
Unlink LTE, NR has two types of configured grants defined. Type 1 and Type 2.
Note that the discussions in section 2.1 above are valid for configured grants as well except for the way the network informs the UE about the time-domain resource allocation.
2.2.1           Time-domain resource allocation in configured grant type 1
In configured grant Type 1, the resource allocation is done using RRC. Only for re-transmissions, PDCCH DCI 0_0 or 0_1 addressed to CS-RNTI is used.
The following table provides part of the RRC configuration for configured grant Type 1. The intention is to highlight how the time-domain resource allocation is done.
rrc-ConfiguredUplinkGrant
timeDomainOffset INTEGER  (0..5119)
timeDomainAllocation INTEGER  (0..15)
frequencyDomainAllocation BIT STRING  ( SIZE (15) )
              . . .

timeDomainOffset provides an offset relative to SFN = 0. The UE activates the configured grant after the offset configured by this parameter. 
Similar to dynamic scheduling, timeDomainAllocation field from above table indicates a combination of start symbol ‘S’ and length ‘L’ and PUSCH mapping type.
A value ‘m’ for the field timeDomainAllocation points to row number ‘m+1’ within the look-up table. The rules to determine which look-up table to be used is exactly same as those discussed in sections 2.1.2 above.
In this type of resource allocation, once the network configures time-domain resource using RRC, the only way to change the allocation is by re-configuring the parameters by sending another RRCReconfiguration message to the UE.
2.2.2           Time-domain resource allocation in configured grant type 2
Configured grant type 2 in NR is similar to that of uplink SPS in LTE.
In configured grant Type 2, the time-domain resource allocation is done using PDCCH DCI (format 0_0 or 0_1) addressed to CS-RNTI. Even for re-transmissions, PDCCH DCI 0_0 or 0_1 addressed to CS-RNTI is used.
Once configured using DCI 0_0 or 0_1, the UE periodically uses same time-domain resources until the configured grant is re-activated (kind of reconfiguration at MAC level).
As the time-domain resource allocation is done using DCI 0_0 or 0_1 (similar to dynamic allocation), all the discussions in section 2.1 are valid for configured grant type 2 as well.
3                       Slot Aggregation:
Slot aggregation improves the uplink (cell edge) coverage. In a cell edge scenario, the probability of incorrectly decoding PUSCH is more, so instead of waiting confirmation from the gNB, it would be beneficial to (re-)transmit PUSCH in consecutive slots.
With slot aggregation data transmission can span over multiple slots i.e the UE would transmit same TB across a pre-configured number of consecutive slots.
Same HARQ process is used for each transmission that is part of the same bundle. Within a bundle, HARQ retransmissions are triggered without waiting for feedback from previous transmission.
In the first step, the network configures slot aggregation via RRC signalling;
-    pusch-AggregationFactor within PUSCH-Config IE is used for the case of dynamic scheduling. This field can take values of 2, 4 or 8 repetitions as shown below;
pusch-AggregationFactor ENUMERATED  { n2, n4, n8 }

-    repK within ConfiguredGrantConfig IE for the case of configured grant. This field is mandatorily present and takes values of 1, 2, 4, and 8. Slot aggregation is activated when repK > 1.
repK ENUMERATED  { n1, n2, n4, n8 }

In the second step, network sends DCI format 0_1 on PDCCH with CRC scrambled with C-RNTI or MCS-C-RNTI for dynamic grant and CS-RNTI with NDI=1 for configured grant.
The UE follows the below procedure considering pusch-AggregationFactor is applicable for dynamic scheduling and repK is applicable for configured uplink grant;
-    When the MAC entity is configured with pusch-AggregationFactor > 1 or repK > 1, the parameter pusch-AggregationFactor/repK provides the number of transmissions of the same TB within a bundle.
-    After the initial transmission, pusch-AggregationFactor – 1 or repK – 1 HARQ retransmissions follow within a bundle.
-    Same HARQ process is used for each transmission that is part of the same bundle.
-    The UE shall repeat the TB across the pusch-AggregationFactor/repK consecutive slots applying the same symbol allocation in each slot.
-    For dynamic scheduling, the redundancy version to be applied on the nth transmission occasion of the TB, where n = 0, 1, ... (pusch-AggregationFactor - 1), is determined according to table below.
rvid indicated by the DCI scheduling the PUSCH
rvid to be applied to nth transmission occasion
n mod 4 = 0
n mod 4 = 1
n mod 4 = 2
n mod 4 = 3
0
0
2
3
1
2
2
3
1
0
3
3
1
0
2
1
1
0
2
3

-    For configured grant, the parameter repK-RV (if configured within configuredGrantConfig IE) is used to derive the redundancy version pattern to be applied to the repetitions. If this parameter repK-RV is not configured, the redundancy version for uplink transmissions shall be set to 0. Refer to section 6.1.2.3 of 38.214 for more details.
repK-RV ENUMERATED  { s1-0231, s2-0303, s3-0000 }

Note that when slot aggregation is active, the PUSCH is limited to a single transmission layer.
The following example illustrates PUSCH slot aggregation;








Reference: 3GPP TS 38.211, 38.212, 38.213, 38.214, and 38.331