← Commit history

1.0.67: 1.0.67: board checks, the EDA Bridge Standard's checks tier: 14 verbs that check a board and place the vias a check asks for.

Colby Knox ·4d56dd6ecd ·14d ago ·parent 9aeac06
- **The standard's shared engine** (adom-eda-checks, vendored unchanged): kicad_return_path (with a ready kicad_apply_zone_plan that closes each gap), kicad_copper_balance, kicad_impedance (with ready kicad_custom_rules width and pair rules), kicad_current_capacity, and kicad_fab_check: the board against a fab's record from adom/pcb-design-rules (fab:"jlcpcb"), naming the page and the date it was read. kicad_validate_for_fab stays as KiCad's own DRC check. kicad_silk_state also answers the standard's shape (components, lines, texts with x, y and size). - **Computed by the bridge:** kicad_net_lengths (pair skew, matched-length groups), kicad_check_orientation, kicad_find_space, kicad_height_check (3D heights, regions, collisions), kicad_pin_pad_check (symbol pins against footprint pads), kicad_auto_classes (net classes from names, written with apply). - **Vias:** kicad_thermal_vias fills an exposed pad and kicad_via_fence lines fast tracks and/or the board edge with ground vias. Both run live as one Undo step, or into the closed file, and only after KiCad's DRC (pours refilled) shows they add no error. - **kicad_board_report:** every check, plus DRC, ERC, the board against the schematic and the fab's limits, with a rendered picture, in one HTML file. - **Fix:** kicad_update_pcb_from_schematic no longer reports nets with a slash in their name as changed: the board writes /VPP{slash}MCLR and the netlist /VPP/MCLR. On KiCad's pic_programmer demo it reported 11 false changes, and apply would have renamed those nets.
1 file changed +16−3
README.md+16−3
@@ -257,7 +257,7 @@ viewer. This is how every 3D shot above exists.  <!-- verbs:start (tools/readme_verbs.py writes this) --> -Every verb of this build (258, `kicad_describe` is the live catalog with inputs, hints and pitfalls). A name marked *standard* is the EDA Bridge Standard's name for the verb after the arrow.+Every verb of this build (271, `kicad_describe` is the live catalog with inputs, hints and pitfalls). A name marked *standard* is the EDA Bridge Standard's name for the verb after the arrow.  **Board model and reads (EDA Bridge Standard)** (12) @@ -448,7 +448,7 @@ Every verb of this build (258, `kicad_describe` is the live catalog with inputs, | `kicad_export_pos` | Export the pick-and-place (component position / CPL) file from a board via kicad-cli, optionally reformatted for a fab's assembly service. | | `kicad_export_step` | Export a STEP model of the board via kicad-cli. | | `kicad_export_svg` | Plot a board or schematic to SVG via kicad-cli. |-| `kicad_fab_check` | *standard* → `kicad_validate_for_fab` |+| `kicad_fab_check` | Will a fab make this board? Its smallest features (track, clearance rule, via and pad holes and rings, SMD pads, edge clearance, hole spacing, silkscreen text and lines, layers, size) measured and compared with a fab's limits from adom/pcb-design-rules, each finding naming the fab's page and the date it was read; or with limits you give. | | `kicad_format_upgrade` | Upgrade a file to the current KiCad file format. | | `kicad_lint_board` | Lint a .kicad_pcb (DRC pre-check) via kicad-cli. | | `kicad_lint_schematic` | Lint a .kicad_sch (ERC pre-check) via kicad-cli. |@@ -466,7 +466,7 @@ Every verb of this build (258, `kicad_describe` is the live catalog with inputs, | `kicad_project_rename` | Rename a project: the .kicad_pro, root .kicad_sch, .kicad_pcb, .kicad_prl (and .kicad_dru, backups folder), with the references inside updated (project file entries, every schematic's instance headers, the board's sheet references and title). Refused while KiCad has the project open. | | `kicad_project_snapshot` | Timestamped copy of the project's files into <project>/snapshots/<stamp>[-label]/, plus schematic and board PDFs made with kicad-cli. | -**Windows, editors, install and the bridge** (86)+**Windows, editors, install and the bridge** (99)  | Verb | What it does | |---|---|@@ -475,9 +475,12 @@ Every verb of this build (258, `kicad_describe` is the live catalog with inputs, | `kicad_add_body` | Put a 3D body (a STEP or VRML model) on a library footprint. It REPLACES the footprint's models unless keepExisting:true, so a re-import never stacks a second body. | | `kicad_align_parts` | *standard* → `kicad_align_footprints` | | `kicad_analyze_connections` | Connectivity overview: suspected-unconnected pins, power nets, highest-fanout nets/components (read-only). |+| `kicad_auto_classes` | Net classes from the nets' own names: GND, Power (VCC, VDD, 3V3, VBAT...), Clock and HighSpeed (USB, Ethernet, HDMI, PCIe, DDR, MIPI, LVDS, SATA), and the differential pairs their names spell; a proposal first, written into the project's net classes with apply. |+| `kicad_board_report` | One shareable page per board: every check run against the board and its project (KiCad's DRC and ERC, a fab's limits, the board against the schematic, symbols against footprints, return paths, copper balance, impedance widths, 3D heights, pair skew and part orientation) with a picture of the board, written as a single HTML file. | | `kicad_bridge_call` | Retired: there is no in-KiCad plugin to call. Use the verb that does the job directly. | | `kicad_bridge_status` | Retired: the in-KiCad Python plugin (reverse bridge) is not part of the native bridge. Reports that, plus what replaced each of its jobs. | | `kicad_check_for_updates` | Read-only: installed KiCad vs latest stable. |+| `kicad_check_orientation` | Advisory: two-pad parts whose rotation could be better. Each part is scored at 0, 90, 180 and 270 degrees by airline length (a net's spanning tree, or for a plane-like net the distance to its nearest pad); parts whose best turn saves minImprovementMm are listed. Nothing is moved. | | `kicad_click` | Click at coordinates inside a KiCad window. | | `kicad_clone_symbol` | Copy a symbol inside a .kicad_sym under a new name, every unit and body style included. | | `kicad_close` | Close KiCad (editors first, then the project manager). |@@ -485,8 +488,10 @@ Every verb of this build (258, `kicad_describe` is the live catalog with inputs, | `kicad_close_footprint_editor` | Close the Footprint Editor window. | | `kicad_close_symbol_editor` | Close the Symbol Editor window. | | `kicad_compile` | Check a project's schematic the way a compile does: KiCad's ERC on the root sheet (hierarchy followed) and the netlist, with the messages counted by class and the net and part counts. |+| `kicad_copper_balance` | Copper per layer as a share of the board, poured copper included, and how evenly mirrored layers match (F.Cu against B.Cu, In1 against the last inner layer): a pair that differs by more than 20 points can bow or twist through reflow. | | `kicad_copy_footprint` | Duplicate a footprint inside a .pretty library under a new name (every pad, graphic, text and 3D model copied). | | `kicad_create_part_project` | *standard* → `kicad_make_part_project` |+| `kicad_current_capacity` | Whether each named net's copper carries its current: per layer, the narrowest track against the width IPC-2221 needs for the temperature rise, and how many vias a layer change needs. | | `kicad_demo` | Six-beat KiCad showcase tour: staged, or a background job with structured progress (percent/ETA), an ab demo-panel remote, captions, narration, per-beat verification and a kicad_state final payload. | | `kicad_describe` | List every verb with input, example, hint, related verbs and pitfalls. | | `kicad_diagnostics` | Environment the bridge runs in: user, paths, env vars that matter, KiCad config dir. |@@ -497,8 +502,11 @@ Every verb of this build (258, `kicad_describe` is the live catalog with inputs, | `kicad_enable_software_opengl` | LAST-RESORT fallback: deploy Mesa llvmpipe software OpenGL into KiCad's bin so it renders on a GPU-less host (Hyper-V/RDP/headless). SLOW (CPU). Never suggest proactively. | | `kicad_extract_netlist` | Extract the full netlist from a schematic: every component and every net with its nodes (read-only, via kicad-cli). | | `kicad_find_connections` | Everything one component connects to, pin by pin, with peer pins per net (read-only). |+| `kicad_find_space` | Free spots on the board for a part near another: clear of every other part's courtyard on that side, of that side's tracks and vias, and inside the outline, nearest first. check:true lists parts that already overlap or leave the outline. | | `kicad_fix_keyboard` | Reset stuck modifier keys on a KiCad window. | | `kicad_get_settings` | Read the bridge's user-visible settings (overlay badges, ...). |+| `kicad_height_check` | Will it fit the enclosure? Each part's height from its 3D model (top and bottom), the parts over a height limit board-wide or under a lid feature in a region, and bodies that collide or come closer than a gap. |+| `kicad_impedance` | The track width for a target impedance (and the pair width and gap for a differential target) on each copper layer, from the board's own stack-up; optionally the width or pair rules for kicad_custom_rules. | | `kicad_ipc_api` | Read or flip KiCad's IPC API server switch (Preferences > Plugins) that live routing needs. | | `kicad_launch` | Cold-start KiCad (project manager) when nothing is running. | | `kicad_layers` | The board's whole layer set: KiCad's id, name, kind (signal, power, mixed, user) and the user's name for each, and whether the open PCB editor shows it. |@@ -506,6 +514,7 @@ Every verb of this build (258, `kicad_describe` is the live catalog with inputs, | `kicad_list_versions` | Every KiCad install found (registry and standard folders) with bin dir, kicad-cli path and version. | | `kicad_log_tail` | New KiCad log output since a byte offset: what KiCad said about ITSELF (read-only). | | `kicad_menu_items` | List a KiCad window's menu bar items (path, id, accelerator), optionally filtered by a substring: what kicad_send_key {menu} and kicad_3d_view can fire. |+| `kicad_net_lengths` | Routed length of every net (or the ones named) by layer, with its vias; the skew inside each differential pair; and the spread of matched-length groups against a tolerance. | | `kicad_open_3d_viewer` | Open the 3D board viewer for a .kicad_pcb. | | `kicad_open_board` | Open a .kicad_pcb in the PCB editor (pcbnew). | | `kicad_open_editors` | List currently open KiCad editor windows. |@@ -514,6 +523,7 @@ Every verb of this build (258, `kicad_describe` is the live catalog with inputs, | `kicad_open_symbol_editor` | Open the Symbol Editor (optionally at a symbol). | | `kicad_panelize` | Step a rectangular board into a manufacturing panel on V-score: rows x cols copies abutting, each copy's nets renamed B<n>-<net>, one panel outline with rails above and below, V-cut lines on Cmts.User along every seam, three tooling holes and three fiducials on the rails; written as a new board and checked with KiCad's DRC. | | `kicad_part_parameters` | The parameter (field) names a project's placed parts carry, with how many parts carry each; or, with name, that parameter's value on every part. Read only. |+| `kicad_pin_pad_check` | Do the footprints fit their symbols? Part by part, the symbol's pin numbers (every pin, from the schematic's netlist) against the footprint's pad numbers on the board: pins with no pad, pads with no pin, and parts only on the sheets or only on the board. | | `kicad_place_footprint` | Deterministically place a footprint into a board preview. | | `kicad_place_on_sch` | Place one symbol or a ';' list of symbols from a .kicad_sym on ONE new sheet, sized from the measured parts (12.7 mm gaps, 15.24 mm margins, A4 at least), each with the next free designator and its name as the value; fills the title block. | | `kicad_plugin_diagnose` | Retired: reports that no plugin is expected and whether a leftover Python plugin payload is still on disk. |@@ -529,6 +539,7 @@ Every verb of this build (258, `kicad_describe` is the live catalog with inputs, | `kicad_rename_symbol` | Rename a symbol in a .kicad_sym (its units too); symbols that extend it follow the new name. | | `kicad_render_board_3d` | *standard* → `kicad_render_board` | | `kicad_replicate_layout` | Copy one channel's placement to matching channels: each target keeps its anchor part where it is, and every other part takes the source's offset and rotation from the anchor (turned by the anchors' rotation difference). One Undo step, with kicad_move_footprint's checks. |+| `kicad_return_path` | Signal tracks that run over a gap in the reference copper (pours and planes) on their neighbouring layers, with how far and where the gap starts, and a ready kicad_apply_zone_plan call that pours the reference net under each gap. | | `kicad_ripup_nets` | Delete every unlocked track, arc and via of the named nets live, as one Undo step (pads, pours and locked copper stay). | | `kicad_screenshot_all` | Screenshot every open KiCad window. | | `kicad_send_key` | Send a key to KiCad, or fire a menu item by label; chords and menu labels resolve to menu commands (background) |@@ -550,10 +561,12 @@ Every verb of this build (258, `kicad_describe` is the live catalog with inputs, | `kicad_symbol_prims` | A library symbol's drawing: primitives counted by kind, the body rectangle, the polylines' bounding box, units and body styles, the footprint link and filters. Read only. | | `kicad_taskbar_repair` | Fix the white taskbar icon on standalone KiCad editors by writing KiCad's own AUMID onto its Start Menu shortcuts. | | `kicad_teardrops` | Add (or remove) teardrops with KiCad's own Edit > Edit Teardrops on the board open in the PCB editor: on vias, PTH pads and SMD pads, optionally track to track, for the whole board or the selection; teardrops counted before and after. |+| `kicad_thermal_vias` | A thermal via grid in a part's exposed pad (the ground or thermal pad under a QFN, DFN, PowerPAD or regulator): centred, inset from the pad's edge, on the pad's net, sized by the project's Default net class. Live as one Undo step after a DRC preflight, else written into the closed file. | | `kicad_trace_net` | Every pin on one named net (read-only). | | `kicad_uninstall` | Remove everything this bridge created: plugin payload, Adom symbol/footprint/3D libraries and their lib-table rows, Mesa fallback DLLs, discovery files, demo and staging projects. Never KiCad itself, never user projects. | | `kicad_upgrade` | Install/upgrade KiCad via the official installer (agent installs for the user). | | `kicad_verb_times` | Measured per-verb run times ON THIS MACHINE: count, p50, p90, max, last, failures from the append-only run log, sorted by p90 descending. |+| `kicad_via_fence` | A via fence for EMC: a row of ground vias on both sides of RF or fast nets' tracks, and/or round the board edge, at a pitch from the frequency (lambda/20 in FR-4) or given; each via clear of other copper and pads, other vias, via keepouts and the edge. Live as one Undo step after a DRC preflight, else written into the closed file. | | `kicad_window_info` | Report geometry/state for open KiCad windows (auto-expires benign OpenGL dialogs). | | `kicad_xcopy_footprint` | Copy a footprint ACROSS libraries: from fromLib into toLib (created when missing), optionally under a new name. |