tests / archlinux:latest (push) Successful in 39s
tests / debian:12 (push) Successful in 1m17s
tests / fedora:latest (push) Successful in 1m8s
tests / ubuntu:24.04 (push) Successful in 1m23s
tests / ubuntu-latest · py3.11 (push) Successful in 1m25s
tests / ubuntu-latest · py3.13 (push) Successful in 1m5s
tests / NixOS (FHS wrapper from docs/NIXOS.md) (push) Skipped
Build PCM package / build (push) Successful in 11s
Multiple Thevenin supplies and prescribed-current loads on one net, solved in absolute volts with the Tellegen power balance verified per run; a source-sink pair table (effective copper resistance per supply x load pair plus an exactly-summing proportional-sharing loss attribution), in summary.txt and as its own figure. Bonded terminals short a package's contacts into one lug so the per-pin split becomes a solve outcome. Geometry dumps carry the terminal set (schema v8). The dialog gained a Classic/PDN mode selector and a full PDN editor: per-role supply/load tables built from the marker rectangles (or a config's terminal set, which never pins mode or net), with Component hints, per-terminal Layer scopes, Active checkboxes, comments, a per-net row filter, resizable tables and a scrolling, screen-sized dialog. Numbers accept SI suffixes (50m, 4.7k) everywhere. fill_res_config.json fully specifies a run (classic or PDN) with validation, comments, named side-by-side configs (the one called default auto-loads), Load/Save buttons with an editable file name, and saves that never drop anything drawn on the board. 347 tests, green on Python 3.13 and on the 3.9 macOS wheel stack. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
42 lines
1.6 KiB
JSON
42 lines
1.6 KiB
JSON
// PDN study of the 3.3 V rail: one buck output + a backup LDO feeding
|
|
// three loads. Loads sink fixed currents; supplies are Thevenin
|
|
// sources (v_oc behind r_out_ohm; v_oc defaults to run.v_nominal).
|
|
// "rect:CAM_ZONE" names a rectangle drawn on User.3 with a text item
|
|
// "CAM_ZONE" placed inside it. Part references: "U7" = all pads of U7
|
|
// on the run net, "U1.SW2" = one pad, {"rect_mm": ...} = explicit
|
|
// area, {"via_mm": ...} = nearest via.
|
|
{
|
|
"version": 1,
|
|
"mode": "pdn",
|
|
"run": {
|
|
"net": "VCC_3V3",
|
|
"v_nominal": 3.30,
|
|
"freq_hz": 0,
|
|
"adaptive": true
|
|
},
|
|
"terminals": [
|
|
{"name": "buck", "role": "supply",
|
|
"parts": ["U1.SW2", "U1.SW3"],
|
|
"r_out_ohm": 0.004},
|
|
{"name": "ldo_backup", "role": "supply",
|
|
"parts": ["U2.OUT"],
|
|
"r_out_ohm": 0.050, "v_oc": 3.28},
|
|
// bonded: all of U7's pins are one internally-joined lug -
|
|
// the 1.8 A total is prescribed, the per-pin split is a solve
|
|
// outcome (default false = per-cell area share instead)
|
|
{"name": "mcu_core", "role": "load",
|
|
"parts": ["U7"],
|
|
"i_draw_a": 1.8, "bonded": true,
|
|
"comment": "worst-case core draw, DS table 5-2"},
|
|
{"name": "camera_module", "role": "load",
|
|
"parts": ["rect:CAM_ZONE"],
|
|
"i_draw_a": 0.35, "contact": "F.Cu"},
|
|
{"name": "heater", "role": "load",
|
|
"parts": [{"rect_mm": [112.0, 40.5, 118.0, 44.0],
|
|
"contact": "B.Cu"},
|
|
{"via_mm": [115.2, 42.1]}],
|
|
"i_draw_a": 2.5}
|
|
],
|
|
"markers": {"pdn_layer": "User.3"}
|
|
}
|