Search Space Set
The modules provides the classes and functions that implement Search Space Set. [3GPPTS38213_SearchSpaceSet]
Search Space is defined as the predefined region in which UE perform the blind decoding.
In the PDCCH region in DL radio frame, there can be many places where a specific PDCCH is located and UE searches all the possible locations.
The possible location for a PDCCH differs depending on whether the PDCCH is Common or UE-specific, and also depend on what aggregation level is used.
Set of all the possible location for PDCCH is called Search Space Set and each of the possible location is called a PDCCH Candidate.
The search space indicates the set of CCE locations where the UE may find its PDCCHs.
There are two types of search space : the common search space (CSS) and the UE-specific search space (USS).
A UE is required to monitor both common and UE-specific search space.
The common search space (CSS) would carry the DCIs that are common for all UEs. For example, system information (using the SI-RNTI), paging (P-RNTI), PRACH responses (RA-RNTI), or UL TPC commands (TPC-PUCCH/PUSCH-RNTI). The UE monitors the common search space using aggregation level 4 and 8.
Maximum number of CCEs present in common search space is 16.
The UE-specific search space (USS) can carry DCIs for UE-specific allocations using the UE’s assigned C-RNTI.
The UE monitors the UE-specific search space at all aggregation levels {1, 2, 4, 8 and 16}.
- class toolkit5G.ResourceMapping.SearchSpaceSet(numerology, searchSpaceType, numCandidates, coresetDuration, monitoringPeriodicity=1, monitoringOffset=0, searchSpaceSetDuration=1)[source]
A class for generating Search Space Set (SearchSpaceSet).
Within the search space, a UE performs blind decoding because it does not know the aggregation level, the position of the PDCCH within the set of CCEs, or the format, size of the DCI.
A Search Space Set uses a Control Resource Set (CORESET) to define the specific Resource Blocks (RBs) and symbols where the UE attempts to decode the PDCCH.
Number of CCE indices serached by a UE in a radio frame for a particular search space are defined as
PDCCH candidates
.Each PDCCH can have a different aggregation level, and each aggregation level can have a different PDCCH candidate assigned to it with in a search space.
A UE determines a PDCCH monitoring occasion on an active Down Link (DL) BandWidth Part (BWP) from the PDCCH monitoring periodicity, the PDCCH monitoring offset, and the PDCCH monitoring pattern within a slot.
Base station transmits PDCCH to UE using Resource Elements (REs) within a Control Resource Set (CORESET).
- Parameters:
numerology (int) –
Specifies the numerology (mu) or sub-carrier spacing (SCS) in 5G-NR.
Must be a positive int and defaults to 0. i.e., with a SCS of 15 KHz.
Supported numerology are {0,1,2,3}, which correspond to a SCS of {15,30,60,120} KHz respectively.
searchSpaceType (str) –
Specifies the type of search space set from section 10.1 of TS 38.213 about UE procedure for determining physical downlink control channel assignment.
Must be either a Common Search Space (“CSS”) set or a UE Specific SearchSpace (“USS”) set.
numCandidates (np.ndarray of positive int) –
Number of PDCCH candidates per aggregation level. A contiguous set of L CCEs correspond to a PDCCH candiate of aggregation level L.
For Common Search Space Set (“CSS”) aggregation level belongs to any one from the set {4,8,16} and correspondingly
numCandidates
can be restricted to take any value from the set {4,2,1} respectively.For UE Specific Search Space Set (“USS”) aggregation level belongs to any one from the set {1,2,4,8,16} and
numCandidates
can take any value from the set {0,1,2,3,4,5,6,8}.For more information refer table 10.1-1 from 3GPP TS 38.213.
For instance [6,6,4,2,1] correspond to 6 AL 1 candidates, 6 AL 2 candidates, 4 AL 4 candidates, 2 AL 8 candidates and 1 AL 16 candidate respectively.
coresetDuration (int) –
Number of symbols configured for CORESET. Contiguous time duration of the CORESET in number of symbols.
Must be a positive int and takes value from the set {1,2,3}.
monitoringPeriodicity (int) –
A PDCCH monitoring periodicity of
ks
slots by monitoringSlotPeriodicityAndOffset of section 10.1 of 3GPP TS 38.213.Specifies the periodicity in slot indices with an offset of
os
slots, where the UE monitors for search space set in every radio frame.Must be a positive int and take any value from the set {1,2,4,5,8,10,16,20,40,80,160,320,640,1280,2560} slots.
Defaults to 1 correspond to PDCCH occasion repeats in every slot of a radio frame.
monitoringOffset (int) –
A PDCCH monitoring offset of
os
slots by monitoringSlotPeriodicityAndOffset of section 10.1 of 3GPP TS 38.213.Specifies the offset in number of slots from the starting slot index of first radio frame, where a UE monitors for search space set or a set of PDCCH candidates.
Must be a positive int and take any value in the range of 0 to
monitoringPeriodicty
-1.Defaults to 0 correspond to CORESET region starting from the slot 0 of a radio frame.
searchSpaceSetDuration (int) –
Duration of search space set or
Ts
< ks slots indicating a number of slots that the search space sets
exists from section 10.1 of 3GPP TS 38.213.Must be a positive int and should not exceed
monitoringPeriodicity
and lie in the range of [2,monitoringPeriodicity] if monitoringPeriodicity>2.Defaults to 1 correspond to the PDCCH occasion occur only in 1 slot of a radio frame.
- Input:
aggregationLevel (int) –
Specifies the aggregation level. The aggregation level (AL) corresponds to number of Control Channel Elements (CCEs) per PDCCH.
Must be a positive int. Supported PDCCH aggregation levels are {1,2,4,8,16}. Aggregation level from 3GPP TS 38.211 Section 7.3.2.
Note that when searchSpaceType is “CSS”, supported aggregation levels are further restriced to {4,8,16} and for “USS” all are supported.
rnti (int) – It defines the radio network temporary identifier (RNTI) \(\in \{1,2,..,65519\}\). If the search space set is USS, then the allocated cce indices for a chosen aggregation level depends on the RNTI value, whereas for CSS they are independent.
coresetSize (int) – Defines the CORESET size. Typically expressed in terms of number of Control Channel Elements (CCEs) available for scheduling the UEs in CORESET. Must be a positive int. Scheduler has to choose this value depending on the number of UEs to be scheduled and the aggregation levels that it has to support for each UE.
slotNumber (int) – Defines the slot number within a frame where PDCCH is loadedS \(n_{s,f}^{\mu} \in \{0,1,2,\) \(\dots,10*2^{\mu}-1\}\) where \({\mu = \frac{\Delta f}{15000}}\).
coresetID (int) – Specifies the ID of CORESET configured in a BWP. Can be either 1 or 2 or 3. For more information refer variable p from section 10.1 of 3GPP TS 138.213.
- Output:
[number of candidates per AL, AL ], where AL = Aggregation Level. – It returns possible candidate CCE indices for the chosen aggregation level, chosen RNTI, slotNumber and number of CCEs in CORESET (i.e., CORESET size).
- Attributes:
pdcchMonitoringSlotIndices (numpy.ndarray) – Specifies an integer array of slot indices, where UE monitors for Search Space Sets or PDCCH candidates in allocated radio frames.
pdcchMonitoringSymbolsWithinSlot (numpy.ndarray) –
Specifies a PDCCH monitoring pattern within a slot, indicating first symbol(s) of the CORESET within every slot given by
pdcchMonitoringSlotIndices
.It a bit string of size 14, where each bit represents one symbol with in a slot.
The bit(s) set to one identify the first OFDM symbol(s) of the CORESET within a slot.
Depending on the
coresetDuration
it will take a valid bit string of size 14.
- Raises:
ValueError – If
searchSpaceType
is neither a common search space ‘CSS’ set or a UE specific search space ‘USS’ set!ValueError – If Invalid choice of
aggregationLevel
passed for common search space set. Supported aggregation level for CSS are 4,8,16..!ValueError – If Invalid choice of
aggregationLevel
passed for UE search space set. Supported aggregation level for USS are 1,2,4,8,16..!ValueError – If
coresetDuration
is not 1, 2 or 3 ofdm symbols!ValueError – If
monitoringPeriodicity
is neither a positive integer nor from the valid set of slot numbers in a radio frame. Valid slot numbers in a radio frame are { 1, 2, 4, 5, 8, 10, 16, 20, 40, 80, 160, 320, 640, 1280, 2560}.ValueError – If
monitoringOffset
is not in the range of 0 to monitoringPeriodicty-1.ValueError –
searchSpaceSetDuration
must not exceedmonitoringPeriodicity
and lie in the range of [1,monitoringPeriodicity] ifmonitoringPeriodicity
>=2 !
The following figure displays the parametes of search space set from the example given below.
Example:
#######################################
# importing necessary python libraries
#######################################
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
%matplotlib widget
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import matplotlib as mpl
import numpy as np
#########################################
# importing necessary toolkit5G libraries
#########################################
import sys
sys.path.append(".")
from toolkit5G.ResourceMapping import SearchSpaceSet
########################
# Simulation Parameters
########################
############
# numerology
############
mu = 0
##################
# Number of Frames
##################
numOfFrames = 2
###########################################################
# Number of Slots Per Radio Frame for a choosen numerology.
###########################################################
numOfSlotsPerFramePerNumerology = (2**mu)*10
##############
# slot number
##############
slotNum = 0
#############################################
# Type of search space set.
# Either Common or UE-Specific
# Here we choose UE-Specific Search Space or "USS"
#############################################
ssType = "USS"
###################
# Aggregation Level
###################
AL = 2
############################
# number of PDCCH candidates
############################
numCandidates = np.array([6,4,2,1,1], dtype=int)
#########################################
# duration of CORSET in number of symbols
#########################################
coresetDuration = 3
################################
# coreset size in number of CCEs
################################
coresetSize = 54
###########################################################################
# coreset ID.
# The parameter p in the hash equation from section 10.1 of 3GPP TS 38.214.
# Must be from the set {1,2,3}
###########################################################################
coresetID = 1
#########################################
# PDCCH monitoring periodicity : ks slots
#########################################
ks = 10
####################################
# PDCCH monitoring offset : os slots
####################################
os = 2
############################################################################################
# duration of search space set in terms of number of slots : Ts slots and Ts<=ks for ks>=2
############################################################################################
Ts = 4
#######
# RNTI
######
rnti = np.random.randint(1,65519+1)
print("#############################################################")
print()
print("Numerology:", mu)
print()
print("Number of slots per Frame:", numOfSlotsPerFramePerNumerology)
print()
print("Slot Number:", slotNum )
print()
print("RNTI value chosen:", rnti)
print("Search Space Set Type:", ssType)
print()
print("Aggregation Level:", AL)
print()
print("Number of Candidates under each Aggregation Level:", numCandidates)
print()
print("Coreset Size in number of CCEs:", coresetSize)
print()
print("Coreset duration in number of OFDM symbol:", coresetDuration)
print()
print("#############################################################")
print()
print("PDCCH Monitoring Periodicty in number of Slots:", ks)
print()
print("PDCCH Monitoring Offset in number of Slots:", os)
print()
print("Search Space Set duration in number of ofdm symbol:",Ts)
print("#############################################################")
#############################################################
Numerology: 0
Number of slots per Frame: 10
Slot Number: 0
RNTI value chosen: 22051
Search Space Set Type: CSS
Aggregation Level: 4
Number of Candidates under each Aggregation Level: [2 2 4 1 1]
Coreset Size in number of CCEs: 54
Coreset duration in number of OFDM symbol: 2
#############################################################
PDCCH Monitoring Periodicty in number of Slots: 20
PDCCH Monitoring Offset in number of Slots: 0
Search Space Set duration in number of ofdm symbol: 3
#############################################################
###############################
# Instanstiating SearchSpaceSet
###############################
sssObj = SearchSpaceSet(mu,ssType,numCandidates,coresetDuration,ks,os,Ts)
candidateCCEs = sssObj(AL,rnti,coresetSize,slotNum,coresetID)
print()
print("PDCCH Candidates available in CORESET:\n", candidateCCEs)
print()
print("Slot indices where the PDCCH can be monitored in first 2 frames:", sssObj.pdcchMonitoringSlotIndices[0:numOfFrames*Ts])
print()
print("Symbol indices with in a slot where the PDCCH can be monitored:", sssObj.pdcchMonitoringSymbolsWithinSlot)
PDCCH Candidates available in CORESET:
[[36 37]
[48 49]
[ 8 9]
[22 23]]
Slot indices where the PDCCH can be monitored in first 2 frames: [2 3 4 5 2 3 4 5]
Symbol indices with in a slot where the PDCCH can be monitored: [0 0 1 0 0 0 0 0 0 0 0 0 0 0]
The zoomed version of the figure is shown below.
- References:
- [3GPPTS38213_SearchSpaceSet]
(3GPP TS 38.213 version 17.5.0 Release 17) 5G;NR;Physical layer procedures for control ‘10.1 UE procedure for determining physical downlink control channel assignment’