D51 — DRC follows KiCad 10 connectivity on broken boards¶
Decision¶
The DRC follows KiCad 10's connectivity on broken boards: net propagation before the checks (pads' net to the tracks/vias/board graphics of single-net clusters; zone-only vias take a zone's net), dangling tracks/vias judged on the any-net item graph, same-net items joined by copper overlap, KiCad's short/clearance split (zone overlaps are clearance; track/via overlaps short even net-less; pads short only with two nets), per-layer via reports, zero-clearance track/via-to-hole and edge tests, via/pad holes against fills, free vias, net-tie exclusions, KiCad's circle-in-rectangle gap (a via inside another net's rectangular pad is clearance), net-class drills for vias written without one, slots left out of hole-to-hole, and a zone's own clearance as a local clearance on its fill. The board reader no longer treats KiCad 9+ user layers typed signal (odd ordinals) as copper (multichannel_mixer-unrouted had 11 phantom copper layers; this also changes routing on such boards). Measured with scripts/drc_broken_parity.py (defects injected deterministically by tracemaker selftest-defects). The router keeps end-point connectivity and net-class clearance to fills for now
Alternatives¶
Keep file nets and anchor connectivity (TraceMaker's own, stricter notion of a short); emulate only the counts
Reason¶
KiCad's DRC is the judge and reads the board after propagation (verified in its 10.0.6 sources and on injected defects: a stray via on another net's track is no short there). The router changes (zone clearance, overlap links) alter routing and need a quick-tier run, so they are left for a follow-up