Barrel contacts for vias/THT pads; configurable cap-drill threshold
Build PCM package / build (push) Successful in 13s
Build PCM package / build (push) Successful in 13s
- Selected vias and through-hole pads inject at the drill-wall ring on every spanned layer (both contact models), not the whole pad face, so the pad/pour spreading resistance is part of the result. Vias are now selectable as contacts. - Soldered THT joints: the hole is modeled solder-filled (core in parallel with the plating, also for stitching THT barrels) and the pad face carries an average-thickness solder coat over the modeled copper (SOLDER_THICKNESS_UM). - Vias with drills above a configurable threshold (dialog field, default CAP_MAX_DRILL_MM = 0.5) keep open mouths even with capping selected - the fab caps only small vias. - Geometry dump schema v6: electrode barrel fields, cap_max_drill_nm. - Verified against R = rho/(pi t)*acosh(d/2a) for two circular contacts on a sheet (+2.6% at h = 0.15 mm, a = 1 mm; uniform model above the equipotential one as required by the contact bracket). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -42,6 +42,10 @@ def main(argv=None) -> int:
|
||||
ap.add_argument("--uncapped", action="store_true",
|
||||
help="treat vias as uncapped (open drill mouths on "
|
||||
"all layers)")
|
||||
ap.add_argument("--cap-max-drill", type=float, default=None,
|
||||
metavar="MM",
|
||||
help="cap only vias with drill <= this [mm]; larger "
|
||||
"drills stay open (default: from the dump)")
|
||||
ap.add_argument("--extra-cu-um", type=float, default=None,
|
||||
help="override the added copper in mask openings [um]")
|
||||
ap.add_argument("--force-iterative", action="store_true",
|
||||
@@ -68,6 +72,8 @@ def main(argv=None) -> int:
|
||||
problem.buildups = []
|
||||
if args.uncapped:
|
||||
problem.vias_capped = False
|
||||
if args.cap_max_drill is not None:
|
||||
problem.cap_max_drill_nm = int(args.cap_max_drill * 1e6)
|
||||
if args.extra_cu_um is not None:
|
||||
problem.extra_cu_nm = int(args.extra_cu_um * 1000)
|
||||
if args.layers:
|
||||
|
||||
Reference in New Issue
Block a user