TDD synchronization gets treated as a one-time deployment checkbox — set the frame structure, move on. But the special slot configuration inside that frame structure is one of the most under-audited parameters in live NR networks, and when it drifts between neighbors, the symptom looks like classic interference when it isn’t.
Here’s the mechanism:
→ NR TDD uses a special slot (format like DDDSU) containing a Downlink pilot (DwPTS), a Guard Period (GP), and an Uplink pilot (UpPTS) — this guard period exists specifically to absorb propagation delay so one cell’s downlink transmission doesn’t collide with a neighbor’s uplink reception window.
→ The GP length has to account for the distance between interfering sites — a guard period sized for tight urban ISD becomes insufficient once you have a macro site with wider coverage nearby, because the propagation delay from that far-off DL transmission bleeds into the neighbor’s UL receive window.
→ If two neighboring sites run different special slot configurations, or even the same config but aren’t frame-aligned at the network level, you get cross-slot interference: one cell’s DL symbols land inside another cell’s expected UL symbols.
This isn’t classic co-channel interference from overlapping coverage — it’s a timing/config mismatch, and it shows up as UL SINR degradation and RACH failures that spike specifically near cell borders with mismatched neighbors.
Field pattern I’ve seen repeatedly: multi-vendor boundary sites (Huawei-Nokia, Huawei-ZTE) where each vendor’s default TDD config differs slightly, or where GPS sync drift on one site isn’t caught until UL KPIs degrade. Standard interference troubleshooting — PCI planning, power tuning — does nothing here because the problem isn’t RF geometry, it’s timing alignment.
Before writing off a UL degradation cluster as interference, pull TDD frame config and GPS sync status across the cluster first, especially at multi-vendor boundaries.
Has anyone chased a “ghost interference” ticket that turned out to be a TDD config or sync mismatch instead?
LinkedIn: ![]()



