How the UE resolves time-domain resources
A single DCI field — Time domain resource assignment, up to 4 bits — kicks off this exact chain. Follow each arrow; every box is a real spec step.
DCI field m
0…15 (≤4 bit)
Row m+1
of allocation list
{K2, type, SLIV}
row contents
Decode SLIV
→ S and L
slot = f(n,K2,μ)
which slot
symbols S…S+L−1
which symbols
pusch-TimeDomainAllocationList is provided (in pusch-Config or pusch-ConfigCommon) → use it. Otherwise → use the default table (Default A, below), selected by CP type.Type A and Type B — exact rules
Mapping type fixes where the front-loaded DM-RS sits and which (S, L) are even legal. Note the technical catch most people miss: for PUSCH mapping Type A, the start symbol is fixed at S = 0 (unlike PDSCH, where S can be 0–3).
| Parameter | Type A (slot-based) | Type B (mini-slot) |
|---|---|---|
| First DM-RS symbol l₀ | dmrs-TypeA-Position (2 or 3) | first allocated symbol (relative 0) |
| Start S (normal CP) | 0 only | 0 … 13 |
| Length L (normal CP) | 4 … 14 | 1 … 14 |
| S + L (normal CP) | 4 … 14 | 1 … 14 |
| Length L (extended CP) | 4 … 12 | 1 … 12 |
| Latency grade | slot | sub-slot (URLLC) |
| Typical use | eMBB, default grants | URLLC, fast HARQ, gap-fill |
Validity checker
SLIV — encode & decode, both directions
The gNB encodes (S, L) → SLIV; the UE decodes SLIV → (S, L). Most references only show the encode. Here is the full reverse algorithm too, run live.
Encode (gNB)
else : SLIV = 14·(14−L+1) + (14−1−S)
Decode (UE)
if S′+L′ ≤ 14 : S=S′, L=L′
else : L = 16 − L′ , S = 13 − S′
Default PUSCH allocation table (Default A)
When no list is configured, this is the table the DCI field indexes — TS 38.214 Table 6.1.2.1.1-2 (normal CP). The slot offset uses j, which depends on the PUSCH numerology μ. Pick a row and μ; the resolved K2, type, S, L drop straight onto the slot.
| m (DCI) | Row | Type | K2 | S | L | SLIV |
|---|
K2 — the slot offset (cross-numerology)
K2 says how many PUSCH slots after the scheduling PDCCH the grant lands. When the PDCCH and PUSCH use different sub-carrier spacings, the PDCCH slot number is first scaled into PUSCH slots. Set both numerologies and watch the target slot.
dmrs-TypeA-Position
For Type A, the cell-wide RRC parameter dmrs-TypeA-Position fixes the first DM-RS symbol l₀ at pos2 or pos3. It must lie inside the allocation, which is partly why Type A needs L ≥ 4. Type B always front-loads on the first allocated symbol.
One DCI, fully resolved
A grant arrives. Let's resolve it the way the UE does — field to symbols.