Web Simulation 

 

 

 

SSB & CORESET#0 Placement on the Resource Grid : 5G 

When a 5G NR UE switches on, the very first thing it finds is the SSB (Synchronization Signal Block) on the synchronization raster. From the SSB alone — plus a handful of numbers carried in MIB and SIB1 — the UE reconstructs the entire frequency-domain anatomy of the carrier: where Point A is, where CORESET#0 sits, and how wide the initial DL BWP and the carrier itself are.

This tutorial visualizes that chain. You set the MIB / SIB1 parameters in the global configuration panel, and the simulator draws the resulting frequency layout (SSB, CORESET#0, BWP, carrier, Point A) and shows the exact 3GPP tables — TS 38.213 Table 13-x, the GSCN raster, and the ARFCN raster — that were used to place every box on the plot.

Mathematical Foundation

1. Channel Raster (ARFCN)

Every absolute frequency in NR signalling (e.g. absoluteFrequencyPointA, absoluteFrequencySSB) is an NR-ARFCN number NREF on a global raster defined in TS 38.104 Table 5.4.2.1-1:

FREF = FREF-Offs + ΔFGlobal · (NREF − NREF-Offs)

For 0–3000 MHz the granularity ΔFGlobal is 5 kHz; for 3000–24250 MHz it is 15 kHz with offsets 3000 MHz / 600000.

2. Synchronization Raster (GSCN)

The UE cannot afford to blind-search every ARFCN, so SSBs may only be placed on a much sparser synchronization raster (TS 38.104 Table 5.4.3.1-1). Each allowed centre frequency SSREF has a Global Synchronization Channel Number:

3000–24250 MHz:   SSREF = 3000 MHz + N × 1.44 MHz,   GSCN = 7499 + N
0–3000 MHz:   SSREF = N × 1200 kHz + M × 50 kHz,   GSCN = 3N + (M − 3)/2

The SSB occupies exactly 20 RB at the SSB subcarrier spacing, centred on SSREF:

SSB_Low = SSREF − 10 × 12 × SCSSSB
3. From SSB down to Point A

Point A is the common reference for every resource grid of the carrier: subcarrier 0 of common resource block 0 for every numerology. The UE walks down from the detected SSB to Point A in two steps signalled in MIB and SIB1 (FR1 units shown):

Point A = SSB_Low − kSSB × 15 kHz − offsetToPointA × 12 × 15 kHz
  • k_SSB (MIB ssb-SubcarrierOffset): subcarrier offset from the common RB grid to the first SSB subcarrier, counted in 15 kHz subcarriers for FR1 regardless of the SSB SCS.
  • offsetToPointA (SIB1 frequencyInfoDL): RB offset from Point A to the lowest common RB (at subCarrierSpacingCommon) that overlaps the first RB of the SSB, counted in 15 kHz RBs for FR1. Note it points at the common-grid RB boundary, not at SSB_Low itself — the two coincide only when kSSB = 0. With 30 kHz common SCS that boundary lies on the 30 kHz grid, so offsetToPointA is always even and the residue (up to 23 subcarriers) is carried entirely by kSSB — which is exactly why kSSB ranges 0–23 instead of 0–11.
Units trap: for FR1, offsetToPointA and k_SSB are always in 15 kHz units even when the SSB and the carrier use 30 kHz SCS. The CORESET#0 table offset, in contrast, is counted in RBs of the PDCCH (common) SCS. Mixing these units up is the single most common mistake when computing Point A by hand.

In practice (and in this simulator) the carrier is planned first: the operator picks the carrier centre frequency (an ARFCN, e.g. from the network configuration) and the carrier width, which fixes Point A from the other direction:

Point A = Fcentre − CBW/2 − offsetToCarrier × 12 × SCScarrier

Both derivations must land on the same Point A. The simulator anchors Point A from the centre ARFCN and treats the signalled offsetToPointA as a consistency cross-check against the SSB position: if the entered value does not match the geometry, a warning reports the value that would.

4. CORESET#0 Placement

MIB carries pdcch-ConfigSIB1, whose 4 MSBs (controlResourceSetZero, index 0–15) select one row of a table in TS 38.213 clause 13. Which table applies is decided by the pair {SSB SCS, PDCCH SCS} and the minimum channel bandwidth of the band — Tables 13-1 to 13-6 for FR1. The chosen row gives the CORESET#0 size (24 / 48 / 96 RB), its duration (1–3 symbols) and a frequency offset:

CORESET#0_Low = CRBSSBLow − offset × 12 × SCSPDCCH

where CRBSSBLow is the lowest common RB (at PDCCH SCS) that overlaps the first RB of the SSB. The simulator shows the entire applicable table below the plot with the selected row highlighted.

5. Initial DL BWP (RIV Encoding)

SIB1 describes the initial DL BWP with a single integer locationAndBandwidth, a Resource Indicator Value evaluated with NsizeBWP = 275:

RIV = 275 (L − 1) + S   if (L − 1) ≤ 137,
else   RIV = 275 (275 − L + 1) + (274 − S)

where S is the starting RB and L the length in RBs of the BWP. In this simulator locationAndBandwidth is not typed in — it is derived, following the usual deployment where the initial DL BWP spans the whole carrier: S = offsetToCarrier and L = carrierBandwidth (both from scs-SpecificCarrierList). The derived RIV is displayed read-only in the SIB1 panel.

6. searchSpaceZero & Type0-PDCCH Monitoring Occasions

pdcch-ConfigSIB1 is one octet carrying two independent 4-bit indices (TS 38.331: PDCCH-ConfigSIB1 ::= SEQUENCE { controlResourceSetZero, searchSpaceZero }): the 4 MSB place CORESET#0 in frequency (Tables 13-1..13-10, section 4 above); the 4 LSB — searchSpaceZero — tell the UE when to monitor it. Which monitoring-occasion table applies is again decided by the multiplexing pattern and SCS pair; TS 38.213 defines five such tables: 13-11 (pattern 1, FR1), 13-12 (pattern 1, FR2), 13-13 (pattern 2, {120, 60}), 13-14 (pattern 2, {240, 120}) and 13-15 (pattern 3, {120, 120}). FR1 always uses pattern 1 → Table 13-11, whose row gives an offset O, the number of search-space sets per slot, a slot-stride factor M and the first PDCCH symbol. For SSB beam index i, the first monitored slot in a frame is:

n0 = ( O · 2μ + ⌊ i · M ⌋ ) mod Nframe,μslot
frame: SFN mod 2 = ⌊ ( O · 2μ + ⌊ i · M ⌋ ) / Nframe,μslot ⌋ mod 2

and the UE monitors two consecutive slots starting at n0. The second tab of the simulator visualizes the octet split, the five-table selection, the full Table 13-11 with the selected row highlighted, and the resulting monitoring slots for every SSB beam (L = 4 beams ≤ 3 GHz, L = 8 beams in 3–6 GHz) over two radio frames.

Two slots = scheduling freedom, not an alternative configuration. The search space exists identically in both slots (same CORESET#0, same first symbol, same candidates) and the UE unconditionally blind-decodes both — nothing in MIB selects one of them. It is the gNB that may transmit the SIB1-scheduling PDCCH in slot n0, in slot n0+1, in both, or skip the occasion entirely: useful to dodge TDD UL/flexible symbols, the SSB itself, paging or RACH occasions in the first slot. This is a pattern-1 behaviour only — FR2 patterns 2/3 (Tables 13-13..13-15) monitor a single slot tied to the SSB position.
Worked Example (default preset)

Step

Computation

Result

SSB centre

GSCN 7838 → 3000 + (7838 − 7499) × 1.44

3488.16 MHz (ARFCN 632544)

SSB_Low

3488.16 − 10 × 12 × 0.030

3484.56 MHz

Carrier

51 RB × 12 × 30 kHz

18.36 MHz (out of the 20 MHz channel)

Point A

Centre ARFCN 632628 = 3489.42 MHz → 3489.42 − 18.36/2 − 0 (offsetToCarrier)

3480.24 MHz (ARFCN 632016)

offsetToPointA check

(3484.56 − 0 (kSSB) − 3480.24) / 0.18

24 ✔ matches SIB1

CORESET#0

Table 13-4 index 13 → 48 RB, 2 sym, offset 12 → 3484.56 − 12 × 0.36

3480.24 MHz = Point A, span 17.28 MHz

locationAndBandwidth

derived: BWP = full carrier → RIV = 275 × (51 − 1) + 0

13750

Try this: change controlResourceSetZero from 13 to 10, 11 or 12 — same 48 RB CORESET#0, but the offset changes to 12 / 14 / 16 RB and the red bar slides relative to the SSB. Then pick a Reserved index and watch the warning.

How the SSB Auto Config Works

With SSB Auto Config on (the default), you only steer the carrier — the simulator solves for a valid SSB placement, exactly the problem a network planning tool solves when you give it a band, a centre frequency and a bandwidth.

You set

Auto derives

freqBandIndicatorNR, Center Freq (ARFCN), carrierBandwidth, carrier SCS, offsetToCarrier

GSCN, SSB SCS, subCarrierSpacingCommon, kSSB, offsetToPointA, min channel BW (Table 13-x family), controlResourceSetZero (only if the current row no longer fits)

Selection algorithm
  1. Snap the centre ARFCN onto the band channel raster (the internal band table holds first <step> last per band, e.g. n1: 422000 <20> 434000, n41 @30 kHz: 499200 <6> 537999).
  2. Fix the SCS family: subCarrierSpacingCommon = carrier SCS; SSB SCS = carrier SCS if the band's sync raster supports it, otherwise the band's only option; minimum channel BW from the band (only n79 selects the 40 MHz tables 13-5/13-6).
  3. Compute the carrier geometry: CBW = NRB × 12 × SCS, carrier low = Fcentre − CBW/2, Point A = carrier low − offsetToCarrier × RB.
  4. Scan every GSCN of the band sync raster (first <step> last). A candidate is valid if both conditions hold:
(1) the whole 20-RB SSB fits inside the carrier:
SSB_Low ≥ carrier_low  and  SSB_High ≤ carrier_high
(2) SSB_Low lands on the 15 kHz grid above Point A:
SSB_Low − PointA = k × 15 kHz,   k integer ≥ 0

Condition (2) is what makes offsetToPointA / kSSB exist at all: if the residue is not a whole number of 15 kHz subcarriers, MIB/SIB1 simply cannot signal that SSB position on this carrier.

  1. Pick one candidate per the policy: close to center minimises |SSREF − Fcentre|; close to low limit takes the smallest SSREF; close to high limit the largest.
  2. Derive offsetToPointA and kSSB from k. Neither is a free choice: picking the GSCN in step 5 already fixed the total offset k via condition (2), and the pair is simply k re-expressed against the common-SCS CRB grid — offsetToPointA is the quotient (whole CRBs), kSSB the remainder (subcarriers). With 30 kHz common SCS one CRB = 24 fifteen-kHz subcarriers: offsetToPointA = 2 × ⌊k/24⌋ (always even), kSSB = k mod 24. With 15 kHz common SCS: offsetToPointA = ⌊k/12⌋, kSSB = k mod 12.
  3. Re-validate CORESET#0: the current controlResourceSetZero row is kept if it is not Reserved and the CORESET#0 stays inside the carrier; otherwise the first fitting index of the applicable Table 13-x is selected.
Example 1 — n78, ARFCN 632640, 51 RB @ 30 kHz, policy = close to center

Step

What happens

1. Snap ARFCN

632640 is already on the n78 raster (620000 <1> 653333) → kept. Fcentre = 3489.60 MHz.

2. Fix SCS family

subCarrierSpacingCommon = 30 kHz (carrier SCS); the n78 sync raster is 30 kHz-only → SSB SCS = 30 kHz; min channel BW 5/10 MHz → Table 13-4 family.

3. Carrier geometry

CBW = 51 × 12 × 30 kHz = 18.36 MHz → carrier 3480.42 – 3498.78 MHz; offsetToCarrier = 0 → Point A = 3480.42 MHz.

4. GSCN scan

SSREF must lie in [3484.02, 3495.18] MHz (carrier edges ± half SSB) → 7 candidates: GSCN 7836–7842, 1.44 MHz apart. All pass condition (2) since 1.44 MHz = 96 × 15 kHz.

5. Policy pick

close to centerGSCN 7839 (SSREF = 3489.60 MHz = the centre exactly, Δ = 0).

6. offsetToPointA / kSSB

SSB_Low = 3486.00 → k = (3486.00 − 3480.42)/0.015 = 372 → ⌊372/24⌋ = 15 CRBs @ 30 kHz → offsetToPointA = 30, kSSB = 372 − 360 = 12.

7. CORESET#0 check

Index #13 (48 RB, offset 12) spans 3481.50 – 3498.78 MHz — ends exactly on the carrier edge, still inside → kept.

Step 5 is the only step where the three policies differ; steps 1–4 produce the same 7 candidates and step 6/7 just process whichever GSCN was picked:

Policy (step 5)

GSCN

SSREF

k

offsetToPointA

kSSB

CORESET#0 (step 7)

close to center

7839

3489.60 MHz (= centre, Δ = 0)

372

30

12

#13 kept (48 RB ends exactly at the carrier edge)

close to low limit

7836

3485.28 MHz

84

6

12

#13 would underflow Point A → falls back to #0 (24 RB)

close to high limit

7842

3493.92 MHz

660

54

12

#0

Example 2 — switching the band to n41 (raster snap + kSSB residue)

Starting from Example 1 and selecting band n41 in the dropdown:

Step

What happens

1. Snap ARFCN

632640 is outside n41 → snapped to the closest point of the 30 kHz raster 499200 <6> 537999 → 537996 = 2689.98 MHz, near the top of the band.

2. Fix SCS family

Common SCS = 30 kHz; n41 supports both 15 and 30 kHz SSB → the carrier SCS is preferred → SSB SCS = 30 kHz (GSCN raster 6252 <3> 6714); min channel BW 5/10 MHz → Table 13-4.

3. Carrier geometry

CBW = 18.36 MHz → carrier 2680.80 – 2699.16 MHz; Point A = 2680.80 MHz.

4. GSCN scan

SSREF window = [2684.40, 2695.56] MHz. Sub-3 GHz raster points are 1.2 MHz apart, but the n41 30 kHz raster ends at GSCN 6714 (band top) → only 2 candidates fall inside: 6711 (2684.55) and 6714 (2685.75).

5. Policy pick

close to center: |2685.75 − 2689.98| = 4.23 < |2684.55 − 2689.98| = 5.43 → GSCN 6714.

6. offsetToPointA / kSSB

SSB_Low = 2682.15 → k = (2682.15 − 2680.80)/0.015 = 90 → ⌊90/24⌋ = 3 CRBs @ 30 kHz → offsetToPointA = 6, kSSB = 90 − 72 = 18 (270 kHz). A kSSB > 11 can only occur with 30 kHz common SCS — this is why the field ranges 0–23.

7. CORESET#0 check

CRBSSBLow = 2681.88 MHz; #13 needs 12 RB below it → 2677.56 MHz < Point A ✘ → first fitting index = #0 (24 RB, offset 0): 2681.88 – 2690.52 MHz ✔.

Example 3 — when Auto cannot find a valid GSCN (n79, ARFCN 693333, 51 RB @ 30 kHz)

Step

What happens

1. Snap ARFCN

693333 is the first n79 raster point → kept. Fcentre = 4399.995 MHz.

2. Fix SCS family

Common SCS = 30 kHz; n79 SSB = 30 kHz (GSCN 8480 <16> 8880); min channel BW 40 MHz → Table 13-6 family.

3. Carrier geometry

CBW = 18.36 MHz → carrier 4390.815 – 4409.175 MHz; Point A = 4390.815 MHz.

4. GSCN scan

SSREF window = [4394.415, 4405.575] MHz (11.16 MHz wide), but n79 raster points are 16 × 1.44 = 23.04 MHz apart; the nearest one (GSCN 8480 = 4412.64 MHz) lies above the window → 0 candidates.

5.–7.

Not reached. Auto raises “no valid GSCN of band n79 places a full SSB inside this carrier” and leaves the SSB fields untouched; the stale values then trip the normal consistency warnings.

The fix is exactly what the message says: widen the carrier (e.g. 106 RB → 38.16 MHz spans at least one raster point) or move the centre ARFCN so that a GSCN falls inside the window.

Try this: reproduce Example 1 (band n78, ARFCN 632640, Auto = close to center), then flip the policy dropdown between center / low / high and watch the SSB slide while offsetToPointA, kSSB and the highlighted Table 13-4 row follow — all three configurations stay warning-free.

Simulation

The interactive simulator is below. Set the MIB / SIB1 parameters in the global configuration panel (or pick a preset); the Frequency View tab redraws the placement plot, the derived-value table, and the applicable 3GPP tables on every change.

Global Configuration
MIB / SSB
0
SIB1 (ServingCellConfigCommonSIB)
-
Derived Values
3GPP TS 38.104 Table 5.4.3.1-1 — GSCN parameters for the global frequency raster
3GPP TS 38.104 Table 5.4.2.1-1 — NR-ARFCN parameters for the global frequency raster

 

Usage

  1. Pick a preset. The default reproduces the worked example above (n78, 20 MHz, SSB 30 kHz, Table 13-4 index 13, CORESET#0 lowest RB landing exactly on Point A). Presets apply a complete, self-consistent configuration as-is.
  2. SSB Auto Config (default On): with Auto on, you only steer the band, centre ARFCN, bandwidth and carrier SCS — the simulator picks a valid GSCN on the band synchronization raster (per the selected policy: SSB close to the centre frequency, the low edge, or the high edge of the carrier), then derives k_SSB, offsetToPointA, the SSB / common SCS, the band minimum channel BW, and fixes controlResourceSetZero if the current row does not fit. The derived fields are greyed out. Select Auto Off (Manual) to edit everything yourself.
  3. Raster-valid stepping: the up/down buttons of the Center Freq ARFCN and GSCN inputs step only through values that are valid for the selected band (channel raster step and per-band GSCN range from the internal band table, e.g. step 20 for 100 kHz-raster bands, step 6 for n41 at 30 kHz, step 16 for n79 GSCN). Changing the band snaps both numbers onto its raster.
  4. Read the plot bottom-up: Point A (yellow) → offsetToPointA → (+ k_SSB) → SSB_Low → SSB (blue). The red CORESET#0 bar hangs below the SSB by the table offset. The width of each bar encodes its duration in OFDM symbols (CORESET#0: 1–3 symbols per the table row; SSB: always 4), with thin separators marking the symbol boundaries — but the horizontal placement carries no timing information (this is a frequency plot). The actual time relation between each SSB beam and its search space #0 occasion is per-beam and shown in the second tab; the classic “CORESET#0 immediately before the SSB in the same slot” picture holds only for specific cases such as SSB#0 with O = 0.
  5. Change controlResourceSetZero and watch both the red bar and the highlighted row of the TS 38.213 table move together.
  6. Switch SSB SCS / common SCS / min channel BW to change which Table 13-x applies; the full table shown below the plot is swapped accordingly.
  7. Edit the Center Freq ARFCN, carrierBandwidth or offsetToCarrier to move the carrier — Point A follows, and the derived locationAndBandwidth in the SIB1 panel updates.
  8. Edit offsetToPointA, k_SSB, GSCN to move the SSB relative to Point A. Inconsistent settings (e.g. an offsetToPointA that does not match the SSB/carrier geometry, or CORESET#0 falling below the carrier edge) produce a warning instead of a silently wrong plot.
  9. Second tab (Type0-PDCCH): change searchSpaceZero in the MIB panel and watch the highlighted Table 13-11 row, the pdcch-ConfigSIB1 octet, and the green monitoring slots move across the two-frame timeline. Rows 1/3/5/7 (M = 1/2) pack two beams into one slot at different symbols; rows 8/9 (M = 2) spread the beams over twice as many slots; rows 10–15 start PDCCH at symbol 1 or 2.

Parameters

Control

3GPP origin

Effect on the plot

SSB SCS

band-dependent (TS 38.101, SSB case A–C)

SSB height (20 RB × SCS) and which Table 13-x applies

SSB GSCN

TS 38.104 Table 5.4.3.1-1

Absolute SSB centre frequency SSREF; everything else is derived downward from it

subCarrierSpacingCommon

MIB

SCS of CORESET#0, the carrier and the initial BWP; RB size of the table offset

ssb-SubcarrierOffset (kSSB)

MIB

Sub-RB shift between the SSB and the common RB grid (15 kHz subcarriers, FR1)

controlResourceSetZero

MIB pdcch-ConfigSIB1 (4 MSB)

Row of TS 38.213 Table 13-x → CORESET#0 size, symbols, offset

searchSpaceZero

MIB pdcch-ConfigSIB1 (4 LSB)

Row of TS 38.213 Table 13-11 → O, M, first symbol; drives the monitoring-occasion timeline in the second tab

Band min channel BW

TS 38.101-1, per band

Selects Tables 13-1..13-4 (5/10 MHz) vs 13-5/13-6 (40 MHz) for 30 kHz SSB

SSB Auto Config

simulator control

On: derives GSCN / kSSB / offsetToPointA / SCS / min-BW / CORESET#0 index from band + ARFCN + bandwidth, placing the SSB near the centre, low edge or high edge per the selected policy

freqBandIndicatorNR

SIB1 frequencyBandList

Selects the band row of the internal All-in-One table: DL ARFCN range/step, GSCN range/step, supported SSB SCS, minimum channel BW

Center Freq (ARFCN)

network planning / carrier config

Anchors the whole plot: Point A = centre − CBW/2 − offsetToCarrier; spinner steps on the band channel raster

offsetToPointA

SIB1 frequencyInfoDL

Cross-checked against the SSB position; a mismatch produces a warning with the consistent value

offsetToCarrier

SIB1 scs-SpecificCarrier

Gap (in carrier-SCS RBs) between Point A and the first usable carrier RB

subcarrierSpacing (carrier)

SIB1 scs-SpecificCarrier

RB size of the carrier / BWP spans and of offsetToCarrier

carrierBandwidth

SIB1 scs-SpecificCarrier

Carrier span (CBW arrow on the right), centred on the centre ARFCN

locationAndBandwidth

SIB1 initialDownlinkBWP

Derived, read-only: RIV(start = offsetToCarrier, length = carrierBandwidth)

Key Insights

  • Everything hangs off the SSB. The UE only ever measures one absolute frequency (the GSCN hit); Point A, CORESET#0, the BWP and the carrier are all reconstructed from relative offsets signalled in MIB / SIB1.
  • Three different RB units coexist: offsetToPointA in 15 kHz RBs, the Table 13-x offset in PDCCH-SCS RBs, and k_SSB in 15 kHz subcarriers. The plot annotates each value with its own SCS to keep them apart.
  • CORESET#0 is always multiplexing pattern 1 in FR1: same-slot, frequency-offset placement — which is why a single offset column in the table fully describes its frequency position.

Limitations

  • FR1 only. FR2 tables (TS 38.213 Tables 13-7..13-10, multiplexing patterns 2/3), 120/240 kHz SSB, and the FR2 60 kHz units for k_SSB / offsetToPointA are not modeled.
  • The initial DL BWP is assumed to span the full carrier (start = offsetToCarrier, length = carrierBandwidth) for the derived locationAndBandwidth; a narrower initial BWP (e.g. CORESET#0-sized) is not configurable. The BWP subcarrierSpacing is assumed equal to the carrier SCS.
  • Time domain is pattern 1 / FR1 only. The second tab evaluates Table 13-11 (O, M, first symbol, two consecutive slots, SFN parity); Tables 13-12..13-15 (FR2 / patterns 2 and 3) are shown in the selection table but not evaluated. SSB burst positions within the slot (case A–C first-symbol patterns) and SIB1 PDSCH scheduling are not drawn.
  • Band subset. The internal band table (from the ShareTechnote All in One Table, based on TS 38.101-1 Tables 5.2-1 / 5.4.2.3-1 and TS 38.104 Table 5.4.3.3-1) covers the common FR1 DL bands listed there; newer Release additions are not included. Only n79 is treated as a 40 MHz-minimum-bandwidth band, and per-band channel-bandwidth limits (which BW values a band actually supports) are not enforced.
  • Typed values bypass the raster. The ARFCN / GSCN spinners step through valid raster values only, but a manually typed off-raster number is accepted and merely flagged through the consistency warnings.