ID: | 2489 |
From: | ge...@igor2.repo.hu |
Date: | Fri, 30 Nov 2018 13:38:51 +0100 (CET) |
Subject: | [pcb-rnd] FYI: old drc design flaw |
Hi all, while working on the new DRC infra and dialog boxes, still running the old DRC logics, I figured the old logics has a design flaw that won't be fixed. This is just an FYI mail for those interested in the tech behind pcb-rnd (and geda/pcb in this case). The problem will be gone once we switch to the programmable drc later on. So about the bug. Let's assume we have two nets, A and B with a lot of copper objects, and there is the minimum copper distance between different nets requirement set. If there are more than two places where the two nets are too close, the DRC code will always find only the first or the first two. Furthermore if it finds two, they may even be the same, duplicate. The reason this happens is how the DRC finds the gaps. It simply lists all objects in net A, then bloats them up by the minimum gap value and starts listing again; the first moment a new item would enter the list, we know we got too close to something that was not part of the net without the bloat -> gap too small. Well, in reality it's not really a clean listing. It's both listing and marking. But not a clean marking either: it uses the same flags (typically FOUND and SELECTED) the user also uses... The whole code doing this (find.c) is a big mess on all levels, so this bug won't get fixed, but new code will be written from scratch later on. Regards, Igor2
Reply subtree:
2489 [pcb-rnd] FYI: old drc design flaw from ge...@igor2.repo.hu