We’re currently evaluating whether we ditch Orcad for KiCad, and we stumbled on the following issues related to zones.
When disconnecting a via or a track from a pad, the via/track will lose its associated net. This also means that vias will lose their connection with a copper zone.
What makes this especially dangerous is that this effect does not take place immediately: The consequences are visible only after closing Pcbnew and re-opening it, so you might not even notice that something went wrong (for example, a via which previously connected two ground planes on different layers does not connect them anymore).
Steps to reproduce:
Track from R1 GND pad to via in ground plane:
Remove part of this track and press ‘B’:
(via is still connected)
Save your design, close Pcbnew, reopen it, and press ‘B’:
(via lost connection)
Relevant *.kicad_pcb part before closing and re-opening:
(segment (start 132.3 64.75) (end 128.1 64.75) (width 0.25) (layer F.Cu) (net 1))
(segment (start 128.1 64.75) (end 127.35 65.5) (width 0.25) (layer F.Cu) (net 1))
After closing and re-opening:
(segment (start 119.85 64.4) (end 120.7 65.25) (width 0.25) (layer F.Cu) (net 0))
(via (at 120.7 65.25) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
Note that the nets of the track segment and the via changed to 0.
When connecting two zones with a track, the track does not get the net of the zones, and it will have no connection.
Steps to reproduce:
Two zones on the GND net.
Draw a track from the first zone to the second and press ‘B’:
(clearance around the track, zones are not connected)
It is not possible to manually assign a net to a track or to a via, so you can’t use vias to, for example, connect two overlapping ground planes without connecting all vias with tracks to ground pads. This is an old problem, see https://bugs.launchpad.net/kicad/+bug/999057
My question is: Are those behaviors intended the way they are (which would make KiCad unsuited for our purposes), or do the developers consider them to be bugs?
We would be willing to contribute code to fix those issues, but only if there’s a chance that our patches would be accepted (and we don’t want to maintain a company-internal fork).