Repository navigation
v0.23.7
Placement. The grouped placement flow replaces the old seeder, polish, loop and portfolio tools:
place_simple.pyanneals one objective over 12 seeds (6 started scattered, 6 with each functional group gathered).- A quick judging route of the 6 seeds the objective rates best keeps the best one.
- The agent sorts the parts into functional groups and names each switching stage and RF front end. A datasheet layout becomes a template that holds the stage's support parts where its datasheet draws them.
- The hot loops run in Rust (crate 0.23.2 to 0.23.7, the placement kernels).
- The GUI's Place and Place + Route run the same flow through the
/plan-pcb-placementskill. - A part that draws no courtyard is seated on its body and pads, so placed bodies no longer overlap.
- Parts are kept off a castellated pin frame's pad copper, not only its holes.
- Overlaps between parts that are both locked, such as two alternative footprints for one site, are waived in the intent instead of failing every seed.
Routing. Measured against v0.23.1 on the same 165 corpus boards, each replaying its recorded chain:
| v0.23.1 | v0.23.7 | |
|---|---|---|
| Incomplete nets | 146 | 96 |
| Real DRC violations | 57 | 8 |
| KiCad DRC findings | 42 | 19 |
23 boards are better and 15 worse. Of the worse ones, 13 differ by one net or two. One board went from 8 incomplete nets to 20, and that is being looked into. The main changes:
- Plane links are counted as made only when KiCad's exact fill joins them.
- A pour the finalize verified is no longer cut by the final reconciliation.
- Nets that cannot be routed as designed are named.
- Drills are graded at the board's hole-to-hole rule.
- An unblock via is drilled at the site it was checked at.
- A tap's end connector is judged on the target pad's own layer.
- A track a KiCad-dangling joint lands on is split at the joint.
- Diff pairs keep their protection and their width.
3D movies. movie3d/make_movie.py, with the /make-3d-movie skill, films a placement and its route in 3D:
- the board is see-through, and the movie turns it over to show the bottom;
- part models are found on the web where KiCad's library lacks them;
- on macOS with Chrome, frames are drawn on the GPU through Metal.
The older 2D film, movie and GIF tools, and the plugin's movie recorder, are removed.
GUI. CLI/GUI parity was audited through this release. In the fanout tab, a QFN pad left with no copper is now reported as a failure rather than a spacing note.
What's Changed
- test_798: read
-o METAVAR, --output METAVARas--outputon Python < 3.13 by @pentolope in #1263 - Blind and micro vias block, and grade, only the copper layers they span by @bergmorten in #1268
- Relocation, stub switches and layer swaps never target a FORBIDDEN layer by @bergmorten in #1269
- route.py --no-stub-layer-swap now also stops the stub-swap rescue by @bergmorten in #1270
- Stub-swap rescue paths: run the via-fit funnel (hole-to-hole) on the pad via they drill by @bergmorten in #1271
- route_planes.py accepts --net-clearances , and the Planes tab reads the Net Clearances File by @bergmorten in #1272
- fix(multipoint): a grazing main-edge terminal defers the edge instead of failing the net by @bergmorten in #1273
- fix(multipoint): a pair whose coupled legs failed is not reported electrically short by @bergmorten in #1274
- fix(diff): pair pitch follows the layer's width under per-layer widths by @bergmorten in #1275
- fix(diff): honour layer-scoped .kicad_dru track_width opts in route_diff by @bergmorten in #1276
- fix(placement): price plans by declared face and refuse same-face fixed poses by @bergmorten in #1280
- fix(placement): exempt mechanical datums at their pose from the outline budget by @bergmorten in #1281
- fix(route,planes): under --escalation off, a wide net necks only at pad entry by @bergmorten in #1282
- fix(rescue): log the widths the gap route emitted, not the board default by @bergmorten in #1283
- Honour the board's net-filtered keep-outs (.kicad_dru disallow rules on named rule areas) while routing by @bergmorten in #1278
- Keep new copper off protected Kelvin sense branches (
sense:<REF>.<PAD>KiCad groups) by @bergmorten in #1279
Full Changelog: v0.23.1...v0.23.7