D92 — After-route passes: widen power, stitch vias, style metric¶
Decision¶
Three after-route passes in their own module (src/passes/), off by default: --widen-power widens new tracks towards a stated width only (net class width for neck-downs, --widen-net, a width_for_current rule's width), per track through the router's segment_state, capped at the via or pad a track ends on; --stitch-vias places free through vias of a plane's net against the in-engine refill, on a grid where its fills overlap on two layers and beside the vias of signals that need a reference plane, allowed through the middle of another net's plane but never near its edge, and verified by a second refill; a style metric (bends, acute angles, stair-steps, short and off-angle segments, detour ratio) is measured on every route result and by tracemaker style, informational in the benchmark. Each copper-changing pass is a transaction judged by unconnected items per net (doc 05 §39)
Alternatives¶
Widening inside the router's clean-up (grows router.cpp, and the clean-up has no notion of targets); widening by moving neighbours (shove) or splitting tracks at tight spots (later, with a benchmark); inventing widths from net names (never: only stated targets); stitching against the stored fills (stale after routing) or with fills as plain obstacles (no via could pass a power plane on a multilayer board); thermal or teardrop handling for vias (KiCad joins vias solidly); making the style metric a clean-up objective now (first measure, then decide)