Skip to content

Application vs Frequency in PCB Stackup Generation

Reference list of application → default frequency (GHz) and typical range used when generating PCB stackups. Keep this in sync with the code sources below. All frequencies in GHz unless noted in notes.

Source of truth

  • Standard-defined bands and power (preferred): frontend/src/data/applicationStandardBands.ts — APPLICATION_STANDARD_BANDS, getDefaultBandForApplication(application), getDefaultPowerForApplication(application). When an application has standard bands, Phase I uses the default band’s defaultFreqGHz, defaultBandwidthMHz, and typicalPowerMax_dBm when the user selects that application.
  • Fallback default frequency: frontend/src/constants/defaults/specs/common.ts — APPLICATION_DEFAULT_FREQUENCY (used when no standard band is defined for the application).
  • Typical frequency range per application: frontend/src/types/rfComponents/application.ts — APPLICATION_METADATA[app].typicalFrequencyRange
  • Usage in stackup: frontend/src/utils/stackup/stackupGenerator.ts uses config.frequency || config.maxFrequency || 1; StackupForm.tsx and CollapsibleStackupForm.tsx pass frequency from Phase I or form; applicationPreselectionService.ts exposes getDefaultFrequencyForApplication(application).

List: Application → Default (GHz) and range (GHz)

Application Default (GHz) Range (GHz) Engineering notes
5g_cellular 3.5 0.6 – 40 n78 sweet spot; FR1 sub-6; FR2 mmWave (24–40 GHz). mmWave ≥24 GHz.
wifi_wlan 2.4 2.4 – 7.1 2.4 / 5 / 6 GHz bands
satcom 12 1.0 – 40 Ku-band downlink typical. Bands: L 1–2, S 2–4, C 4–8, X 8–12, Ku 12–18, Ka 26.5–40 GHz.
civilian_radar 3.0 1.0 – 40 S-band marine/weather/ATC; most civilian ≤35 GHz (77–81 GHz is automotive).
drones 2.4 0.4 – 6.0 ISM. Generic "link not stated" key; the three links below split it.
drones_control_telemetry 0.915 0.902 – 0.928 LoRa, "915MHz ISM" (ADI Game of Drones Pt 2, Fig. 3). 125 kHz default width (LoRaWAN US915); power not stated. European options (same key, region Europe): 0.8681 GHz (EU868) and 0.433175 GHz (EU433), limits from ERC Rec 70-03 rows in regulatory_standards.json (ETSI_EN_300_220).
drones_analog_video 5.8 5.725 – 5.875 FM FPV video. FCC §15.249(a) band; width and typical power not stated.
drones_digital_video 5.8 5.725 – 5.85 OFDM FPV video (high-PAPR). DJI O3 Tx band; width and power not stated.
ism_band 2.4 0.4 – 5.8 2.4 GHz ISM
iot_devices 2.4 0.4 – 5.8 2.4 GHz typical
test_measurement 2.4 0.1 – 67 Conservative; modern RF test gear to 110 GHz
point_to_point 12 5.0 – 40 Licensed microwave backhaul 10–15 GHz typical; mmWave ≥24 GHz
repeaters_das 2.5 0.7 – 5.9 Cellular
broadcast 0.1 0.05 – 1.0 FM 88–108 MHz; FM/AM/TV, cap ~1 GHz (excl. broadcast satellite)
land_mobile_radio 0.45 0.4 – 1.0 UHF LMR
rfid_nfc 0.9 0.013 – 5.8 HF NFC (13.56 MHz), UHF RFID
wireless_audio_video 0.6 0.4 – 6.0 Wireless mics
medical_devices 1.4 0.4 – 2.5 WMTS
automotive 77 0.3 – 81 24 GHz legacy SRR; 77–79 GHz LRR (modern ADAS)
ultra_wideband 6.8 3.1 – 10.6 Channel 5 (6.5 GHz) / 9 (8 GHz) common (for example Apple/Samsung)
short_range_devices 0.433 0.3 – 5.8 433 MHz SRD
amateur_radio 0.144 0.1 – 250 2 m band (144 MHz); most activity below 10 GHz; experimental bands higher
marine_communications 0.156 0.156 – 0.162 VHF marine 156–162 MHz
gnss_navigation 1.575 1.1 – 1.6 L1 = 1.575 GHz, L2 = 1.227 GHz
custom 2.4 0.1 – 100 Fallback; no preset

Drone designs from a required range (flag-gated)

With FF_RANGE_DRIVEN_DESIGN (backend) and VITE_FF_RANGE_DRIVEN_DESIGN (frontend) on — both default off — a transmitter design for any of the four drone keys above can start from how far the link must reach instead of a target output power (change openspec/changes/drone-range-driven-design).

  • Input (rangeRequirement on POST /api/rf-chain/design / design-sync / design-multi, range_requirement on the design_rf_chain agent tool): the OTA link calculator's own fields — distanceM, txGainDbi, optional rxGainDbi / miscLossDb / fadeMarginDb, and the far-end receiver's sensitivityDbm or rxNfDb + bandwidthHz + requiredSnrDb. In Guided it is the "Required range" group in Phase I.
  • Resolution: backend/services/rf_chain/range_target.py asks the OTA link engine for the power needed at the antenna port (ota_link.required_tx_power_dbm) and caps it at the binding legal limit (regulatory.binding_limit_dbm) before it becomes target_output_power.
  • Sensitivity is never assumed. No drone link type has a sourced sensitivity yet, so a range without one is refused with needs_sensitivity.
  • Result: chain.range_link (Guided) / rangeLink (agent card) — the as-built output run back through the same engine: margin, verdict, achieved range, whether the range was capped by regulation, and every defaulted input disclosed.
  • Every non-drone design, and every design without a range, is unchanged.

Frequency-dependent stackup behavior

  • mmWave threshold: Stackup category switches to mmwave at ≥24.25 GHz (5G FR2 start), not 20 GHz, to align with commercial filter and component availability. Standardized at ≥24 GHz across application notes. See frontend/src/services/stackup/applicationStackupRecommender.ts — HIGH_FREQUENCY_GHZ = 24.25.
  • applicationStackupRecommender: For 5g_cellular and point_to_point, if frequency > 24.25 GHz the stackup category becomes mmwave; otherwise sub6ghz_rf.
  • stackupGenerator: Uses config.frequency (or config.maxFrequency or 1) for material selection.
  • Thresholds: MID = 6 GHz, HIGH = 24.25 GHz (FR2), MM_WAVE = 40 GHz; materials (for example Rogers RO4350B/RO4450T) forced or preferred above these.