Skip to content

D144 — --si-rules stitches the critical nets' unstitched layer changes and says where the rest are

Context

Doc 18 B3 (M21): "Run the return-path stitching pass (--stitch-vias return) inside --si-rules, re-audit, and report unstitched layer changes and remaining detours as warnings with the net and the place". The reference-return audit (doc 05 §42) and the stitching pass (§39.3) existed. The stitching pass took its signal nets only from component rules of kind reference_plane or from --stitch-return, not from the critical nets that --si-rules routes. The critical-net report counted void crossings without saying where they were or whether a layer change was left without a return via. The records are in bench/records/m21-b3/.

Decision

  • With --si-rules, after routing, the audit runs on the critical nets. A layer change it finds without a closure, with the same reference net on both sides, makes that net a return-path stitching target of that reference net, at 5 mm. That is the audit's own radius, so a change the pass stitches is closed in the audit too; the catalogue's 5.08 mm is larger. The stitching pass then runs as --stitch-vias return does, kept only if no net has more unconnected items with its vias (rule 4). --no-si-stitch turns it off; the other values of --stitch-vias combine with it.
  • The audit runs again on the stitched board. The critical-net report gains missing_stitches per net and in the totals, with missing_stitches_before_stitching. Its warnings name each unstitched layer change: the layers, the place in millimetres, and the reason. The reason is one of: no via of the plane net within 5 mm; two different reference nets with no capacitor between them; no reference copper on one side. They also name each void whose detour is over the audit's 2 mm threshold. At most eight places are listed per net, then a count of the rest.
  • The audit at a layer change: a signal layer whose trace is only a stub from a pad to the via can lie wholly over the via's own antipad, and so had no reference layer by coverage. At the via, such a layer now takes the adjacent layer (N+1, then N-1) with copper within 2 mm.

Alternatives

  • Stitch every critical via whatever the audit says. The pass already skips a via with a plane via or plated pad within the distance. Driving it from the audit's own findings means the warnings after it and the vias it placed are about the same changes.
  • A capacitor between two different reference nets. That is a placement change, not a via; it stays a warning that says so.
  • Stitching during routing (a via that brings its return via). It would cost every critical search a second via site. The after-route pass is a transaction that can be dropped, and the measured need is small (below).

Consequences

  • Plane tier, --si-rules --soft-zones, 3 M work, no knowledge base: the critical nets' layer changes are almost all closed already, by plated GND pads and by stitching the boards carry. One change on StickHub is left; it has no plane copper on one side, which no via can fix, and the warning says so. Over five seeds with KiCad judging (bench/records/m21-a5, arms si and sistitch) it is the same: one change before and after, no via placed, no added KiCad error. Option sets other than --si-rules leave 2 to 7, so the pass matters on boards whose critical nets change layer far from a plane via, which the plane tier does not have. The mechanism is shown on a constructed board (doc 05 §57).
  • With the options off, and with --si-rules --no-si-stitch, routing is as before; with the pass, only the vias it adds differ.
  • Docs: 05 §57, 18 §14.