Browse Source
Apply a more sophisticated test for ignoring isInCoupledDiffPair.
Apply a more sophisticated test for ignoring isInCoupledDiffPair.
The basic problem is that the DRC engine does length testing and skew testing by collecting all the diff pair constituent parts and pairing them itself. Since each part is collected on its own, we need to ignore the 'B' unit when evaluating any conditional expressions. However, doing this in general means that when evaluating "OwnClearance()" we also ignore the 'B' unit and return the diff pair CLEARANCE_CONSTRAINT when we shouldn't. This implements a more discerning test which know what the current requested constraint is when evaluating expressions. See also https://forum.kicad.info/t/solved-custom-differencing-rule-not-working-drc/34034/6 Fixes https://gitlab.com/kicad/code/kicad/issues/113147.0
7 changed files with 46 additions and 35 deletions
-
17pcbnew/drc/drc_engine.cpp
-
8pcbnew/drc/drc_rule_condition.cpp
-
6pcbnew/drc/drc_rule_condition.h
-
2pcbnew/drc/drc_test_provider_matched_length.cpp
-
25pcbnew/pcb_expr_evaluator.cpp
-
18pcbnew/pcb_expr_evaluator.h
-
5qa/unittests/pcbnew/test_libeval_compiler.cpp
Write
Preview
Loading…
Cancel
Save
Reference in new issue