Case Study: 5G n78 PA Stackup — Three Small Proofs¶
Goal: prove MagicON's stackup numbers are trustworthy without a multi-day verification project. The full case study is split into three tiny experiments. Each one targets a single number, takes about an hour in a solver, and stands alone — you can stop after Experiment 1 if that's all the confidence you need.
Scenario: a 5G n78 small-cell PA at 3.5 GHz, 4 W dissipation, 4-layer FR408HR-class stackup, 50 × 50 mm board.
Setup (do this once, ~5 minutes)¶
In the MagicON GUI:
- Open
/tools/stackup. - Configure the form:
- Build Type:
Single Lamination - Frequency (GHz):
3.5 - DC Current (A):
1 - Layer Count:
4 - Target Finished Thickness:
62 mils (1.57 mm) - Click Regenerate Stackup.
- Banner should read:
Tg 180 °C (FR408HR) · lead-free safeandCompliance: 17/17 passed.
That's the baseline build for all three experiments.
Experiment 1 — Microstrip Z₀¶
Claim: MagicON's 50 Ω microstrip width is within ±2 % of HFSS.
MagicON side
Open the Impedance & Signal → Impedance Calculator panel. Microstrip tab. Target = 50 Ω. Read off:
- Trace width W
- Dielectric thickness h
- Dk at 3.5 GHz
- Cu thickness t
Write those four numbers down.
HFSS side
Build a 20 mm microstrip with the exact W / h / t / Dk above. Wave ports at both ends, de-embed to the trace edge. Solve at 3.5 GHz.
Compare
| Quantity | MagicON | HFSS pass criterion |
|---|---|---|
| Z₀ at 3.5 GHz | 50.0 Ω | 49.0–51.0 Ω (±2 %) |
If HFSS lands inside the band, MagicON's impedance model is validated for this build — stop here if that's all you needed.
Time budget: 30–45 min in HFSS.
Experiment 2 — Insertion loss vs. frequency¶
Claim: MagicON's loss/mm tracks HFSS within ±15 % up to ~10 GHz.
Pre-requisite: Experiment 1 (re-uses the same trace).
MagicON side
Open the Loss Analysis panel. Set:
- Foil Profile:
Standard ED - Roughness Model:
Hammerstad
Read off the loss table (1 → 20 GHz). Note the totals at 3.5 GHz and 10 GHz.
HFSS side
Re-use the Experiment 1 model. Enable Huray roughness (snowball radius 0.5 µm, area-ratio 14). Sweep 1 → 10 GHz. Extract dB/mm at 3.5 GHz and 10 GHz.
Compare
| Quantity | MagicON (Hammerstad) | HFSS (Huray) pass criterion |
|---|---|---|
| dB/mm @ 3.5 GHz | ~0.045 | within ±15 % |
| dB/mm @ 10 GHz | ~0.11–0.12 | within ±15 % |
Above ~15 GHz, expect MagicON to read 10–20 % low — switch the dropdown to a Huray-class model in MagicON if you care about mmWave.
Time budget: 20 min, since the model already exists.
Experiment 3 — Junction temperature¶
Claim: MagicON's T_j prediction is within ~10 °C of Icepak (and conservative-leaning low, so budget the gap).
MagicON side
Open the Thermal Analysis panel. Click Edit assumptions:
- Power dissipation:
4.0 W - Board area:
25 cm²(override the 10 cm² default) - Ambient:
60 °C
Configure the via array (Via Design panel): 4 × 4 array, 0.30 mm drill, 25 µm Cu plating, copper-filled, 0.6 mm pitch.
Read off:
- Via array R_th
- Spreading R_th
- Junction temp T_j
Click Re-run server analysis — confirm Python parity solver agrees with the TS pipeline within 0.5 °C. (If it doesn't, that's a MagicON bug, not a verification failure.)
Icepak side
Build a 50 × 50 × 1.57 mm board with the 4-layer stackup (FR408HR k = 0.65 W/m·K, 1 oz inner Cu, 0.5 oz outer Cu). Place a 4 × 4 mm thermal pad on top with the 4 × 4 via array beneath. Set:
- PA dissipation: 4.0 W
- T_ambient: 60 °C
- Top + bottom: natural convection, h = 5 W/m²·K
- Sides: adiabatic
Solve steady-state.
Compare
| Quantity | MagicON | Icepak pass criterion |
|---|---|---|
| Via array R_th | ~17.9 K/W | 18–22 K/W (within 5–15 %) |
| T_j | ~109 °C | 115–119 °C (MagicON 5–10 °C low) |
The bottleneck (Core1 dielectric) should be the same answer in both tools — that's the structural-agreement check, more important than the absolute number.
Time budget: ~1 hour for Icepak setup, ~10 min to solve.
What this proves (and what it doesn't)¶
After all three experiments:
- Validated: Z₀ to ±2 %, loss to ±15 % below 10 GHz, T_j to ±10 °C, R_th to ±15 %.
- Not validated (intentionally out of scope): mmWave loss above 15 GHz, crosstalk, cyclic warpage, via-barrel fatigue. Those need separate experiments — or, more realistically, full-wave / mechanical sign-off as a separate workflow.
That's enough to use MagicON as the architecture-decision tool for Sub-6 GHz builds. Sign-off still goes through HFSS + Icepak (and Mechanical for fatigue), but you reach those tools with the right architecture in hand.
Reproducibility checklist¶
- Setup: 4-layer / 1.57 mm / 3.5 GHz stackup regenerated, banner shows Tg 180 °C + 17/17 compliance.
- Exp 1: Z₀ comparison (1 number) — pass/fail.
- Exp 2: loss at 3.5 + 10 GHz (2 numbers) — pass/fail.
- Exp 3: T_j and via R_th (2 numbers) — pass/fail.
- Record deltas. Anything outside the pass band is either a MagicON regression or a solver-setup error worth investigating.
File references (for code-side audits)¶
| Layer | Path |
|---|---|
| Stackup GUI page | frontend/src/pages/tools/StackupTool.tsx |
| Thermal panel | frontend/src/components/Stackup/UnifiedThermalAnalysis.tsx |
| Edit-assumptions popover | frontend/src/components/Stackup/EditAssumptionsPopover.tsx |
| Server-side parity solver | backend/services/solver/thermal_solver.py |
| Impedance cross-check | frontend/src/utils/impedance/impedanceCrossCheck.ts |
Document version 2.0 — simplified. Each experiment is independent; do as many as you need.