← Commit history

regenerate after kicad-lane (reference/kicad-1.0.67.json, insiders: its own checks-tier verbs in the standard's shapes, fab_check from the engine): KiCad 179 of 236

Colby Knox ·a894eb542e ·14d ago ·parent e22ac8f
4 files changed +72−33
README.md+2−2
@@ -59,10 +59,10 @@ verb by verb: [docs/coverage.md](docs/coverage.md). |---|---|---|---|---| | **core** | 93 | 86 | 89 | 54 | | **native** | 46 | 38 | 41 | 24 |-| **checks** | 37 | 33 | 11 | 9 |+| **checks** | 37 | 33 | 24 | 9 | | **app** | 60 | 56 | 25 | 36 | | **platform** | 19 | 19 | 0 | 0 |-| standard (all but platform) | 236 | 213 | 166 | 123 |+| standard (all but platform) | 236 | 213 | 179 | 123 | <!-- coverage:end -->  The **checks** tier is where the other bridges are furthest behind, and it is the cheapest to close: those verbs are
docs/coverage.md+16−16
@@ -1,6 +1,6 @@ # Coverage: every standard verb on each bridge -Altium bridge 0.2.76 (the reference), KiCad bridge 1.0.66, Fusion 360 bridge 1.12.7. 54 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*.+Altium bridge 0.2.76 (the reference), KiCad bridge 1.0.67, Fusion 360 bridge 1.12.7. 54 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*. `exact` is the same job under the same or an equivalent name; `partial` does part of it or does it differently (`verbs/coverage.json` names what in `note`); `unsupported` answers `not_supported` for the whole job and is not counted; blank is missing. Generated by `tools/generate.py` from `verbs/coverage.json`; do not edit by hand. @@ -8,10 +8,10 @@ Generated by `tools/generate.py` from `verbs/coverage.json`; do not edit by hand |---|---|---|---|---| | **core** | 93 | 86 | 89 | 54 | | **native** | 46 | 38 | 41 | 24 |-| **checks** | 37 | 33 | 11 | 9 |+| **checks** | 37 | 33 | 24 | 9 | | **app** | 60 | 56 | 25 | 36 | | **platform** | 19 | 19 | 0 | 0 |-| standard (all but platform) | 236 | 213 | 166 | 123 |+| standard (all but platform) | 236 | 213 | 179 | 123 |  ## core @@ -173,42 +173,42 @@ Engineering computed from the board model, not by the tool: one shared engine, s | Verb | What it does | Altium | KiCad | Fusion 360 | |---|---|---|---|---| | `assembly_check` | Ready for JLCPCB assembly? The board against both JLCPCB PCBA tiers as published (Economic and Standard): board or panel size, thickness and layers, parts... | `altium_assembly_check` |  |  |-| `auto_classes` | Net classes from the nets' own names: GND, Power (VCC, VDD, 3V3, VBAT...), Clock, HighSpeed (USB, Ethernet, HDMI, PCIe, DDR, MIPI, LVDS, SATA...) and the... | `altium_auto_classes` |  |  |+| `auto_classes` | Net classes from the nets' own names: GND, Power (VCC, VDD, 3V3, VBAT...), Clock, HighSpeed (USB, Ethernet, HDMI, PCIe, DDR, MIPI, LVDS, SATA...) and the... | `altium_auto_classes` | `kicad_auto_classes` |  | | `board_features` | Add the furniture every real board needs in one undo step: mounting holes (at points or the four corners), fiducials, keepout areas, and a stitching-via... | `altium_board_features` | `kicad_add_mounting_hole` (partial) |  |-| `board_report` | One shareable page per board: every check run against the live board and its project (Altium's DRC, JLCPCB fab limits and assembly tiers, the schematic... | `altium_board_report` |  |  |+| `board_report` | One shareable page per board: every check run against the live board and its project (Altium's DRC, JLCPCB fab limits and assembly tiers, the schematic... | `altium_board_report` | `kicad_board_report` |  | | `bom` | The project's bill of materials read straight from Altium: every schematic sheet the .PrjPcb lists (placed parts and their parameters) merged with the board... | `altium_bom` |  | `fusion_board_bom` (partial) | | `build_board` | Build a NEW board from a parts list and a netlist: outline (rounded corners allowed), every footprint from one PcbLib placed by its own origin, pad nets... | `altium_build_board` |  |  | | `build_footprint` | Build a complete footprint (pads, silkscreen, courtyard, arcs) in a PcbLib from a kicad2altium spec file on this machine, and return a proof frame. | `altium_build_footprint` |  |  | | `build_schematic` | Draw a design's schematic from its netlist with the project library's symbols, inside a new project (.PrjPcb with the board and libraries), compile it, and... | `altium_build_schematic` |  | `fusion_schematic_plan / fusion_schematic_run` (partial) | | `check_clearance` *proposed* | Measure the gaps between parts, courtyard to courtyard or pad copper to pad copper, for the listed parts or the whole board, and report every pair under a... | `altium_check_clearance` | `kicad_check_clearance` |  |-| `check_orientation` | Advisory: 2-pad parts whose rotation could be better. Each orthogonal rotation is scored in place by airline length (a routable net's MST with the pad... | `altium_check_orientation` |  |  |-| `copper_balance` | How much of each copper layer is copper (tracks, pads, vias and what Altium actually poured, inside the outline; a plane counts full), and how far apart... | `altium_copper_balance` |  | `fusion_copper_balance` |+| `check_orientation` | Advisory: 2-pad parts whose rotation could be better. Each orthogonal rotation is scored in place by airline length (a routable net's MST with the pad... | `altium_check_orientation` | `kicad_check_orientation` |  |+| `copper_balance` | How much of each copper layer is copper (tracks, pads, vias and what Altium actually poured, inside the outline; a plane counts full), and how far apart... | `altium_copper_balance` | `kicad_copper_balance` | `fusion_copper_balance` | | `cross_check` | Compare one schematic sheet's designators with a board's. Altium holds ONE current document, so the verb activates the board, reads it, then activates the... | `altium_cross_check` | `kicad_analyze_connections` (partial) |  |-| `current_capacity` | Will this trace carry the current? For each power net and its current: the narrowest track on every layer it is routed on against the width IPC-2221 needs... | `altium_current_capacity` |  | `fusion_current_capacity` |+| `current_capacity` | Will this trace carry the current? For each power net and its current: the narrowest track on every layer it is routed on against the width IPC-2221 needs... | `altium_current_capacity` | `kicad_current_capacity` | `fusion_current_capacity` | | `estimate_cost` *proposed* | The board's numbers a fab quote needs (size, layers, thickness, smallest track, gap and drill, holes, SMD and through-hole parts and joints, unique parts)... |  | `kicad_estimate_cost` |  | | `fab_check` | Before ordering: the board's fab-relevant minimums measured from the live board (narrowest track, smallest via drill, diameter and annular ring, smallest... | `altium_fab_check` | `kicad_fab_check` | `fusion_fab_check` |-| `find_space` | Free spots on the board for a part near another (clear of every other part on that side, of that side's tracks and vias, and inside the outline), nearest... | `altium_find_space` |  |  |+| `find_space` | Free spots on the board for a part near another (clear of every other part on that side, of that side's tracks and vias, and inside the outline), nearest... | `altium_find_space` | `kicad_find_space` |  | | `footprint_from_land_pattern` | Build a complete footprint from the land pattern a datasheet prints: pads numbered the standard way (chip, dual SOIC/TSSOP/DFN, SOT, quad QFP/QFN, BGA), an... | `altium_footprint_from_land_pattern` |  |  |-| `height_check` | Will it fit the enclosure? Each part's height from its 3D bodies (top and bottom side), the parts over a height limit board-wide or under a lid feature in a... | `altium_height_check` |  |  |-| `impedance` | Controlled impedance from the board's own stack-up: the track width each copper layer needs for a single-ended target (50 ohm default) and the width and gap... | `altium_impedance` |  | `fusion_impedance` |+| `height_check` | Will it fit the enclosure? Each part's height from its 3D bodies (top and bottom side), the parts over a height limit board-wide or under a lid feature in a... | `altium_height_check` | `kicad_height_check` |  |+| `impedance` | Controlled impedance from the board's own stack-up: the track width each copper layer needs for a single-ended target (50 ohm default) and the width and gap... | `altium_impedance` | `kicad_impedance` | `fusion_impedance` | | `import_part` | One call imports a whole part: footprint spec + STEP + symbol modes + models + params + save. | `altium_import_part` |  |  | | `jlcpcb_order` | A JLCPCB order in one call: the board checked against JLCPCB's fab limits, the Gerbers and drill zipped the way JLCPCB's order page takes them, the JLCPCB... | `altium_jlcpcb_order` |  |  | | `length_tune` | Lengthen a routed net to a target length, or to match another net (a pair's skew, a DDR byte lane): a serpentine in its longest straight track that has room... | `altium_length_tune` |  |  |-| `net_lengths` | Routed length of every net (or the ones named) on the live board, by layer with its vias; the skew inside each differential pair; and the spread of... | `altium_net_lengths` |  |  |-| `pin_pad_check` | Do the footprints fit their symbols? Part by part, the symbol's pin numbers (from the sheet files) against the footprint's pad names (from the board): pins... | `altium_pin_pad_check` |  |  |+| `net_lengths` | Routed length of every net (or the ones named) on the live board, by layer with its vias; the skew inside each differential pair; and the spread of... | `altium_net_lengths` | `kicad_net_lengths` |  |+| `pin_pad_check` | Do the footprints fit their symbols? Part by part, the symbol's pin numbers (from the sheet files) against the footprint's pad names (from the board): pins... | `altium_pin_pad_check` | `kicad_pin_pad_check` |  | | `place_decoupling` *proposed* | Plan positions for decoupling capacitors beside an IC's power pins (each cap just outside the courtyard, its power pad facing the pin), answered as... |  | `kicad_place_decoupling` |  | | `placement_check` | Review the placement before routing: parts whose courtyards (pads and body, grown by a margin) overlap on the same side, parts off the board or over its... | `altium_placement_check` | `kicad_placement_validate / kicad_score_placement` (partial) |  | | `plan_fanout` *proposed* | Plan the fanout of a BGA or QFN/QFP: the pad pitch, dogbone or via-in-pad per pad, the escape layer, surface stubs for the outer ring and a via grid for an... |  | `kicad_plan_fanout` |  | | `plan_route` *proposed* | Plan a path for one net between two pads without changing the board: a grid search around the existing copper that keeps the clearance rules, on the allowed... |  |  | `fusion_plan_route` (partial) | | `read_sheet_file` | Read a schematic sheet straight from its .SchDoc file, without Altium (it need not be installed or running): every part with its designator, library... | `altium_read_sheet_file` |  | `fusion_read_sheet_file` |-| `return_path` | Where signal tracks lose their reference: for every signal net, the length of track on each layer that runs over no pour or plane copper on either... | `altium_return_path` |  | `fusion_return_path` |+| `return_path` | Where signal tracks lose their reference: for every signal net, the length of track on each layer that runs over no pour or plane copper on either... | `altium_return_path` | `kicad_return_path` | `fusion_return_path` | | `review_board` | Design-review checks (14) over one board read; schematic checks with includeSchematic. | `altium_review_board` | `kicad_lint_board` (partial) |  | | `route_pair` | Route a differential pair as a pair: one centreline from the source pads' midpoint through waypoints to the destination pads' midpoint, each net offset to... | `altium_route_pair` | `kicad_route_pair` |  | | `schematic_review` | Review the schematic before Update PCB: every placed pin (read from the sheet files, with its electrical type) against Altium's compiled netlist. Errors:... | `altium_schematic_review` | `kicad_sch_check / kicad_design_review / kicad_lint_schematic` (partial) |  | | `silk_designators` | Place every reference designator the way assembly houses want: one size, upright, beside its own part, clear of every pad (JLCPCB: 0.15 mm), every other... | `altium_silk_designators` |  |  | | `test_board` | Place one footprint, or a ';' list, from the open PcbLib on ONE board: a NEW board (wMm x hMm outline) when pcbPath is new or omitted, APPENDED to the... | `altium_test_board` |  |  |-| `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, sized by... | `altium_thermal_vias` |  |  |-| `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)... | `altium_via_fence` |  |  |+| `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, sized by... | `altium_thermal_vias` | `kicad_thermal_vias` |  |+| `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)... | `altium_via_fence` | `kicad_via_fence` |  |  ## app 
verbs/coverage.json+53−14
@@ -6,7 +6,7 @@  },  "proposed": 54,  "compared": {-  "kicad": "1.0.66",+  "kicad": "1.0.67",   "fusion360": "1.12.7"  },  "tiers": {@@ -2160,7 +2160,10 @@     "verb": "altium_auto_classes",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_auto_classes",+    "match": "exact"+   },    "fusion360": null   },   {@@ -2185,7 +2188,10 @@     "verb": "altium_board_report",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_board_report",+    "match": "exact"+   },    "fusion360": null   },   {@@ -2260,7 +2266,10 @@     "verb": "altium_check_orientation",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_check_orientation",+    "match": "exact"+   },    "fusion360": null   },   {@@ -2271,7 +2280,10 @@     "verb": "altium_copper_balance",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_copper_balance",+    "match": "exact"+   },    "fusion360": {     "verb": "fusion_copper_balance",     "match": "exact"@@ -2299,7 +2311,10 @@     "verb": "altium_current_capacity",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_current_capacity",+    "match": "exact"+   },    "fusion360": {     "verb": "fusion_current_capacity",     "match": "exact"@@ -2341,7 +2356,10 @@     "verb": "altium_find_space",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_find_space",+    "match": "exact"+   },    "fusion360": null   },   {@@ -2363,7 +2381,10 @@     "verb": "altium_height_check",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_height_check",+    "match": "exact"+   },    "fusion360": null   },   {@@ -2374,7 +2395,10 @@     "verb": "altium_impedance",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_impedance",+    "match": "exact"+   },    "fusion360": {     "verb": "fusion_impedance",     "match": "exact"@@ -2421,7 +2445,10 @@     "verb": "altium_net_lengths",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_net_lengths",+    "match": "exact"+   },    "fusion360": null   },   {@@ -2432,7 +2459,10 @@     "verb": "altium_pin_pad_check",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_pin_pad_check",+    "match": "exact"+   },    "fusion360": null   },   {@@ -2505,7 +2535,10 @@     "verb": "altium_return_path",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_return_path",+    "match": "exact"+   },    "fusion360": {     "verb": "fusion_return_path",     "match": "exact"@@ -2583,7 +2616,10 @@     "verb": "altium_thermal_vias",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_thermal_vias",+    "match": "exact"+   },    "fusion360": null   },   {@@ -2594,7 +2630,10 @@     "verb": "altium_via_fence",     "match": "exact"    },-   "kicad": null,+   "kicad": {+    "verb": "kicad_via_fence",+    "match": "exact"+   },    "fusion360": null   },   {
verbs/standard.json+1−1
@@ -6,7 +6,7 @@  },  "proposed": 54,  "compared": {-  "kicad": "1.0.66",+  "kicad": "1.0.67",   "fusion360": "1.12.7"  },  "tiers": {