Commit Graph

295 Commits

Author SHA1 Message Date
Jeff Young 85c6cebd77 Rework silk-to-pad checker to handle all solder mask clipping of silk.
Fixes https://gitlab.com/kicad/code/kicad/issues/5851
2020-10-04 13:21:01 +01:00
Jeff Young 36ceb8075e Fix logic bug in DRC RTree handler.
Return value from visitor is whether or not to keep searching, not
whether or not there was a collision.
2020-10-04 13:21:01 +01:00
Jeff Young 44580acee2 Clean up some compiler warnings. 2020-10-03 22:55:34 +01:00
Mikolaj Wielgus 400c15b8eb Add mils to units, remove useMils variables 2020-10-03 20:06:56 +00:00
jean-pierre charras 3144bab36f final cleanup about removing useless include 2020-10-03 16:40:36 +02:00
jean-pierre charras 0b23cb7dbb more cleanup about removing useless include 2020-10-03 15:26:03 +02:00
Jeff Young bea5914726 Make sure all DRC paths check for via/pad being flashed on layer.
Fixes https://gitlab.com/kicad/code/kicad/issues/5830
2020-10-03 14:20:19 +01:00
jean-pierre charras e76736b7bf Fix a few Coverity warnings 2020-10-03 12:47:41 +02:00
Tomasz Wlostowski 5ef1dc17ad drc: ignore silk2pad/silk2silk violations for hidden text objects 2020-10-02 21:06:52 +02:00
Tomasz Wlostowski ca8aca6faa drc: implement DRC_RTREE::CheckColliding 2020-10-02 21:06:52 +02:00
Tomasz Wlostowski 8eb9d34aad drc: silk to silk clerance test should not report errors for hidden text 2020-10-01 18:55:53 +02:00
Tomasz Wlostowski aee16efe32 drc: LVS test should not throw an error if running in no-project mode 2020-10-01 18:55:53 +02:00
jean-pierre charras f702da95c7 Minor code cleanup, step2: remove more useless include.
fix also a minor compil warning
2020-10-01 15:39:47 +02:00
jean-pierre charras 3f8c9d49f8 Revert "Code cleanup: remove useless wx/wx.h include inside a few files."
due to compil issue on Linux

This reverts commit cffccc3970.
2020-09-30 20:47:20 +02:00
jean-pierre charras cffccc3970 Code cleanup: remove useless wx/wx.h include inside a few files.
in most of files, including wx.h is not necessary, when only 2 or 3 wx files must be included.
Moreover, on windows, including wx.h sometimes create compil warnings about
shadowed vars defined in some specific windows headers.
2020-09-30 20:03:27 +02:00
Seth Hillbrand bf3cb0b1d0 Standardize pad type enums 2020-09-30 08:38:35 -07:00
Jeff Young d3f8f2b81e Remove confusion between pad->IsOnLayer and pad->IsPadOnLayer 2020-09-30 11:50:51 +01:00
Jeff Young ab033327c7 Limit checks need to be done at start, not end.
(We also use the limit checks to ignore violations.)

Fixes https://gitlab.com/kicad/code/kicad/issues/5831
2020-09-29 21:23:26 +01:00
Jeff Young 2cf303bb09 Test against pad hole cylinder when pad is not on layer. 2020-09-29 18:18:19 +01:00
Jeff Young 66454ec895 Don't do hole-to-pad clearance testing on compound pads.
Fixes https://gitlab.com/kicad/code/kicad/issues/5822
2020-09-29 14:11:32 +01:00
Jeff Young bf67648562 Support optional location reporting in SHAPE collisions.
Also fixes a few bugs in the collision routines.
2020-09-28 23:28:33 +01:00
Jeff Young 09ab269770 Support for 'L' in DRC expression language.
Also make layer testing work again against both canonical names and
user names.
2020-09-27 21:33:37 +01:00
Tomasz Wlostowski c5c6b97c8b drc: fixed warnings in length matcher 2020-09-27 17:51:16 +02:00
Tomasz Wlostowski fbb669aa75 drc: diff pair test provider reports gap & max uncoupled length violations. 2020-09-27 17:50:57 +02:00
Tomasz Wlostowski 8e9a39e17c drc: fix incorrect DRCE_LAST 2020-09-27 17:50:24 +02:00
Tomasz Wlostowski 5874373a0c drc: unfinished version of diff pair gap/coupled length test 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 9b4504e73f drc: report from-to paths for length matched signals 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski adf7d3260d drc: parse diff pair constranits 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski cb2dfcde83 drc: error codes for diff-pair related stuff 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski bd0bd5b84b drc: support for skew & via_count constraints. Length test now generates a length report 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski f38147c201 drc: add support for via_count constraint to the parser 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 2258c861c9 drc: initial version of matched trace lengths test provider 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 2bacfe8202 drc: use R-Tree intersection for silk clearance tests 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski b215361b30 drc: default constraints for silk2pad, silk2silk 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 26e7dc6e14 drc: added length/skew constraint types 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski abe354773f drc: initial version of tree intersection (QueryCollidingPairs) 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 8405793e57 drc: add error codes for length/skew/via count violations 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 201a630740 drc: extend drc-rules file format with length and skew tokens 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 6578a76b72 drc: first R-tree based test (silk to pad clearance) 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 43404d4577 drc: be more verbose when skipping LVS due to lack of schematic netlist 2020-09-27 16:45:46 +02:00
Jeff Young f5af17e1ba Fix file somehow left out of last commit. 2020-09-23 17:51:48 +01:00
Jeff Young 6dae769944 Progress reporting for connectivity tests.
Also makes via annulus terminology more consistent.
2020-09-23 16:28:00 +01:00
Jeff Young 6d18f20093 ADDED constraints reporter for diagnosing constraints.
Also fixes an issue with via type property and makes property
comparisons in rule case-insensitive.

Fixes https://gitlab.com/kicad/code/kicad/issues/5754
2020-09-23 01:14:35 +01:00
jean-pierre charras 9efc91c107 fix 2 minor compil warnings and make a sentence more easily translatable 2020-09-22 16:56:55 +02:00
Jon Evans 18e17abd6a Rename "Keepout" to "Rule Area"
These objects can now be used in advanced DRC rules and
not just for keeping things out.  Also remove the restriction
that at least one of the "basic" keepout rules must be set,
so that these areas can be used for more advanced rules.
2020-09-21 23:55:02 -04:00
Seth Hillbrand 408cd20294 drc: Test all zone layers for intersection
Zones can span multiple layers so we need to test each explicitly.

Fixes https://gitlab.com/kicad/code/kicad/issues/5750
2020-09-21 20:40:50 -07:00
Jeff Young 1b77c4c270 Mention rule priority system in Syntax Help and Clearance Report.
Fixes https://gitlab.com/kicad/code/kicad/issues/5647
2020-09-21 11:59:27 +01:00
Ian McInerney 89dcc46898 Coverity cleanup and remove unused variables 2020-09-20 02:20:41 +01:00
Jeff Young db5de738ae Apply rules commutatively. 2020-09-19 18:48:11 +01:00
Jeff Young d402d93487 Implement shape routines for DIMENSION_Ts.
This allows them to participate in DRC and PNS.

Fixes https://gitlab.com/kicad/code/kicad/issues/5712
2020-09-19 14:16:00 +01:00
Jeff Young 67b5d24995 Support ESC & Cancel for DRC.
Fixes https://gitlab.com/kicad/code/kicad/issues/5698
2020-09-18 22:14:00 +01:00
Jeff Young 73fc00ee69 Collapse VIA_TOO_SMALL and MICROVIA_TOO_SMALL into VIA_DIAMETER.
We'll also check too large in future....
2020-09-18 16:50:41 +01:00
Jeff Young 90b147a914 Add DRC_ITEM definition for DRC_VIA_DIAMETER.
Fixes https://gitlab.com/kicad/code/kicad/issues/5695
2020-09-18 13:32:44 +01:00
Ian McInerney a53f3899d4 Initialize variables properly 2020-09-18 11:17:37 +01:00
Jeff Young 7b2a111a1c Implicit rules go first so that other rules will take priority.
Fixes https://gitlab.com/kicad/code/kicad/issues/5687
2020-09-17 20:13:39 +01:00
Jeff Young 0f3d2147aa Performance enhancements for DRC. 2020-09-17 20:13:39 +01:00
Jeff Young 8e530db633 Reporting must be kept inside the REPORT macro.
Reporting is run on a single clearance where performance doesn't
matter much.  Doing the string building during a DRC, however, kills
performance.
2020-09-17 20:13:39 +01:00
Jeff Young a3d65a2b43 Smoother progress reporting for DRC checks.
Also moves Messages tab out to an overlay, and restores the longer
messages now that messages are no longer a textbox in the upper right.
2020-09-17 20:13:39 +01:00
Jeff Young 2b43ffd12d Better error reporting; better nullptr safety.
Also clears the marker lists before running a DRC, and sets
the drcRun flags afterwards so that the notebook tab counts
get updated.

Fixes https://gitlab.com/kicad/code/kicad/issues/5659
2020-09-16 22:14:41 +01:00
Jeff Young ce3819abf8 Remove redundant clearances from DRC dialog. Fold progress bar in. 2020-09-16 16:06:29 +01:00
Jeff Young c0f83b30d3 Minor reformatting and performance improvement. 2020-09-16 16:04:28 +01:00
Tomasz Wlostowski b993a29695 drc: fix heap overflow 2020-09-16 13:45:12 +02:00
jean-pierre charras e137d61b29 Fix typo 2020-09-16 11:46:16 +02:00
jean-pierre charras c4b66e7cd3 drc/drc_test_provider: Fix a crash due to code change, at least on Windows.
The new code has not a lot of change, and is a bit cleaner.
2020-09-16 11:46:16 +02:00
jean-pierre charras 652a59b781 Fix null pointer use 2020-09-16 09:21:39 +02:00
Jon Evans 75ffce1a0b ADDED: Leader dimension object
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5555
2020-09-15 23:37:38 -04:00
Jeff Young b4229d9a3e Fix testcase crash when progressReporter was null.
(And it helps if the DRC tester you're trying to test is actually
in the make file.)
2020-09-15 22:25:12 +01:00
Ian McInerney 6a7266d589 Only update DRC progress reporter if the reporter exists
The DRC engine might not have a reporter when run headless
2020-09-15 21:18:58 +01:00
Jeff Young b6a8e165c3 Don't allow schematic/pcb DRC tests when in standalone mode.
Fixes https://gitlab.com/kicad/code/kicad/issues/5635
2020-09-15 21:14:11 +01:00
Jeff Young e2e229da96 Finish exorcising the old DRC system.
This moves the various BOARD_ITEM calls to the new system, and make
the DRC_ENGINE long-lived so that it can field those queries.
2020-09-15 20:15:46 +01:00
Seth Hillbrand aa7e021bfc Remove translated null strings
Also improves translatability by separating clauses
2020-09-15 08:35:09 -07:00
Jeff Young 665212341d Cleanup (consistent naming, 100-char line width, message precision). 2020-09-15 12:07:31 +01:00
Jeff Young 514da2f886 Move DRC dialog to new DRC engine. 2020-09-14 22:39:36 +01:00
Seth Hillbrand 52d9a47d5b Fix endless loop in drc
Need to allow looping to negative when decrementing
2020-09-14 12:25:25 -07:00
jean-pierre charras ff0a728753 Fix a few I18N issues. 2020-09-14 10:02:07 +02:00
Jeff Young 748bee1bc7 Hook up netclasses and board minimums to new DRC engine.
Improves implicit rule reporting.
Makes some internal names more consistent.
Moves DRC_REPORT to the test framework.
Removes priority (which isn't supported in the grammar)
2020-09-13 17:08:24 +01:00
Jeff Young d47d119d5f Compile layer test into CONSTRAINT_WITH_CONDITIONS.
Also processes constraints in correct order for priority (reversed)
and removes multiple-expression-conditions for a single constraint
(which is not supported in the grammar).
2020-09-13 17:08:24 +01:00
Jeff Young 8420fcc33b Cleanup. 2020-09-13 17:08:24 +01:00
Jeff Young 5d9301d394 Adjust isErrorLimitExceeded so it can be used for severity==IGNORE. 2020-09-13 17:08:24 +01:00
jean-pierre charras 1aa38b8f82 drc_rule.cpp: avoid crash with a incorrect (broken or too old?) drc_rule file.
The crash was due to a null pointer not tested.
2020-09-12 11:26:53 +02:00
Jeff Young 5be887a60f Iron out some wrinkles in the DRC migration. 2020-09-12 01:57:37 +01:00
Jeff Young 8ac7288696 Fix a crash bug loading DRC rules.
Also moves the clearance report to the new DRC engine.
2020-09-12 00:46:55 +01:00
Jeff Young ce2937a399 Move rest of DRC tests to kicad. 2020-09-11 23:14:12 +01:00
Jeff Young 5424d6fa09 Move new clearance tests into kicad. 2020-09-11 21:26:57 +01:00
Seth Hillbrand 965a32077d Fix compile error 2020-09-11 08:40:36 -07:00
Jeff Young cc86630f11 Start pulling new DRC engine into Kicad. 2020-09-11 16:04:11 +01:00
Jeff Young 6b4a6f4d3e Restore min seg limit for rounded-corner pads.
It suffered from a cacophony of errors, starting with an errant
comment that made it later look like a bug.  Sigh.
2020-09-11 14:41:45 +01:00
Jeff Young e2bc7557cc Clean up arc/circle polygonization.
1) For a while now we've been using a calculated seg count from a given
maxError, and a correction factor to push the radius out so that all
the error is outside the arc/circle.  However, the second calculation
(which pre-dates the first) is pretty much just the inverse of the first
(and yields nothing more than maxError back). This is particularly
sub-optimal given the cost of trig functions.

2) There are a lot of old optimizations to reduce segcounts in certain
situations, someting that our error-based calculation compensates for
 anyway.  (Smaller radii need fewer segments to meet the maxError
condition.) But perhaps more importantly we now surface maxError in the
UI and we don't really want to call it "Max deviation except when it's
not".

3) We were also clamping the segCount twice: once in the calculation
routine and once in most of it's callers.  Furthermore, the caller
clamping was inconsistent (both in being done and in the clamping
value). We now clamp only in the calculation routine.

4) There's no reason to use the correction factors in the 3Dviewer;
it's just a visualization and whether the polygonization error is
inside or outside the shape isn't really material.

5) The arc-correction-disabling stuff (used for solder mask layer) was
somewhat fragile in that it depended on the caller to turn it back on
afterwards.  It's now only exposed as a RAII object which  automatically
cleans up when it goes out of scope.

6) There were also bugs in a couple of the polygonization routines where
we'd accumulate round-off error in adding up the segments and end up with
an overly long last segment (which of course would voilate the error
max). This was the cause of the linked bug and also some issues with vias
that we had fudged in the past with extra clearance.

Fixes https://gitlab.com/kicad/code/kicad/issues/5567
2020-09-11 11:23:49 +01:00
Jeff Young fc1665ff28 ADDED Clearance Inspector. 2020-09-10 20:58:38 +01:00
Jeff Young e782794f96 Flesh out object properties and DRC Rule syntax help. 2020-09-05 17:44:59 +01:00
Jeff Young f1f8f746f4 Also resolve worksheet textVar refs in DRC.
Fixes https://gitlab.com/kicad/code/kicad/issues/5506
2020-09-04 21:55:10 +01:00
Jeff Young ec576b5dfa DRC checks need to be done on current layer.
Don't be fooled by the name "segment".  It might be a via which is
on multiple layers....

Fixes https://gitlab.com/kicad/code/kicad/issues/5503
2020-09-04 15:05:03 +01:00
Jeff Young 007580c4b8 ADDED pad:pin checks for DRC "Test footprints against schematic". 2020-09-04 14:07:42 +01:00
Jeff Young d1006138fd ADDED holeWallPlatingThickness to AdvancedCfg.
Used for zone filling and DRC hole collision testing.  Allows us to
calculate the actual hole size from the finish hole size.

Fixes https://gitlab.com/kicad/code/kicad/issues/5468
2020-09-03 16:00:07 +01:00
Jeff Young 38e9217d54 Consolidate all DRC epsilon/threshold values to a single advancedCfg setting.
Fixes https://gitlab.com/kicad/code/kicad/issues/5464
2020-09-03 15:03:09 +01:00
Jeff Young 9a8dd6312b Fix formatting. 2020-09-03 15:03:09 +01:00
Jeff Young 4e885990b8 Don't keepout a keepout's own footprint.
Fixes https://gitlab.com/kicad/code/kicad/issues/5371
2020-08-28 11:05:58 +01:00
Jeff Young aa84bd6283 Use the right sign when dealing with the clearance epsilon.
Fixes https://gitlab.com/kicad/code/kicad/issues/5313
2020-08-22 20:03:46 +01:00
Jeff Young f95651841e Report all extra footprints, even if they're duplicates.
Fixes https://gitlab.com/kicad/code/kicad/issues/5303
2020-08-22 16:20:18 +01:00
Jeff Young 93ef18d775 Fix typo where two footprint warning messages were transposed.
Fixes https://gitlab.com/kicad/code/kicad/issues/5303
2020-08-22 16:20:18 +01:00