Geometry reference
Every supported transmission line geometry, with its required dimensional fields and which closed-form formula it dispatches to.
Single-line
Microstrip
lineforge.geometry.types.Microstrip
Bases: _BaseGeometry
Microstrip: a strip on top of a dielectric over a ground plane.
::
┌───────┐ ← strip (W wide, T thick)
│ │
─┴───────┴─ ─ ─ ─ ─
dielectric (H thick, εr)
────────────────── ← ground plane
Source code in src/lineforge/geometry/types.py
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | |
Solver: Hammerstad-Jensen with Wheeler thickness correction.
Validity: 0.05 ≤ W/H ≤ 20, εr ≤ 128.
Embedded (coated) microstrip
lineforge.geometry.types.EmbeddedMicrostrip
Bases: _BaseGeometry
Embedded (coated) microstrip: microstrip plus a coating dielectric on top.
::
╳╳╳╳╳╳╳╳╳╳╳╳╳╳ ← coating (H2 thick, er2)
╳╳┌──────┐╳╳╳
╳╳│ │╳╳╳
─┴─┴──────┴─┴─
dielectric (H, er)
────────────── ← ground plane
Source code in src/lineforge/geometry/types.py
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | |
Solver: IPC-2141A coated-microstrip blend (η-factor based on coating thickness).
Symmetric stripline
lineforge.geometry.types.StriplineSymmetric
Bases: _BaseGeometry
Symmetric stripline: a strip centered between two ground planes.
::
────────────── ← top ground
┌───┐ ← strip (W, T)
│ │
────────────── ← bottom ground
B = total plate separation, dielectric fills it (er)
Source code in src/lineforge/geometry/types.py
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | |
Solver: Cohn wide-strip formula with Wadell finite-thickness correction.
Validity: W/(B−T) > 0.35, T < 0.25·B.
Asymmetric stripline
lineforge.geometry.types.StriplineAsymmetric
Bases: _BaseGeometry
Asymmetric stripline: strip is offset from the midline between ground planes.
H1 is the dielectric thickness above the strip, H2 below. The strip itself is at the boundary between H1 and H2; total cavity = H1 + T + H2.
For real PCB stackups where the dielectric above and below the strip differ
(e.g. Core above, Prepreg below: common when routing on an inner signal
layer between a plane and a power layer), pass er_above / er_below
(and optionally tan_delta_above / tan_delta_below). When supplied,
these override the single er / tan_delta values: the closed-form
solver uses a capacitance-weighted εr_eff, and the bitmap rasterizer
paints the two halves with different materials.
For multi-layer stacks on either side (e.g. Prepreg + voided plane + Core
when an intermediate plane is voided to push the reference down), pass
stack_above / stack_below as a list of :class:DielectricLayer.
The stack is series-reduced via the parallel-plate (C-series) formula
εr_eq = h_total / Σ(hᵢ/εᵢ) to derive H1/H2/εr_above/εr_below
automatically: the explicit per-side fields are then unused.
Source code in src/lineforge/geometry/types.py
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 | |
Solver: Wadell two-parallel-stripline approximation.
CPWG (coplanar waveguide with ground)
lineforge.geometry.types.CPWG
Bases: _BaseGeometry
Coplanar waveguide with ground plane (grounded coplanar waveguide).
Center signal trace flanked by two coplanar ground rails (gap S each side), with a continuous ground plane H below. ::
████ ┌────┐ ████ ← top: coplanar grounds + signal (W)
S│ │S ← S is the gap to each side ground
─────┴────┴───────
dielectric (H, er)
────────────────── ← bottom ground plane
Source code in src/lineforge/geometry/types.py
249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 | |
Solver: Wen elliptic-integral formula via scipy.special.ellipk.
Differential
Edge-coupled diff microstrip
lineforge.geometry.types.EdgeCoupledDiffMicrostrip
Bases: _BaseGeometry
Edge-coupled differential pair (microstrip).
Two parallel strips on top of a dielectric, separated by a gap S.
Source code in src/lineforge/geometry/types.py
276 277 278 279 280 281 282 283 284 285 286 287 288 289 | |
Solver: IPC-2141A coupling correction on the Hammerstad-Jensen single-trace Z₀.
Edge-coupled diff stripline
lineforge.geometry.types.EdgeCoupledDiffStripline
Bases: _BaseGeometry
Edge-coupled differential pair (stripline).
Two parallel strips centered between two ground planes (separation B), with edge-to-edge gap S in the dielectric (er).
Source code in src/lineforge/geometry/types.py
292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 | |
Solver: IPC-2141A coupling correction on the symmetric-stripline Z₀.
Broadside-coupled diff stripline
lineforge.geometry.types.BroadsideCoupledDiffStripline
Bases: _BaseGeometry
Broadside-coupled differential pair (stripline).
Two strips stacked vertically, separated by H_between of dielectric, centered between two ground planes.
Source code in src/lineforge/geometry/types.py
309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 | |
Solver: Wadell §6.5 broadside formula with finite-thickness correction.
Result types
lineforge.results.TLineResult
Bases: BaseModel
Result of a single-mode transmission-line solve.
Phase 1 (analytical) populates the impedance and dielectric fields. Phase 2
(C and Gp) adds C, Gp, and a refined vp. Phase 3 (L and Rs) populates the
full RLGC fields, at which point :class:RLGCResult is the preferred
return type.
Source code in src/lineforge/results.py
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | |
lineforge.results.DiffResult
Bases: BaseModel
Result of a differential-pair solve.
Source code in src/lineforge/results.py
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | |
lineforge.results.SolverWarning
Bases: BaseModel
A non-fatal warning attached to a result.
Examples: Rs_low_confidence when conductors are too close (atlc2's
red-text condition), out_of_range when an analytical formula's
validity bounds are exceeded.
Source code in src/lineforge/results.py
19 20 21 22 23 24 25 26 27 28 29 30 31 | |