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 set s 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.

  • ValueErrorsearchSpaceSetDuration must not exceed monitoringPeriodicity and lie in the range of [1,monitoringPeriodicity] if monitoringPeriodicity >=2 !

The following figure displays the parametes of search space set from the example given below.

ss1

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.

ss2
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’