73 Commits

Author SHA1 Message Date
Jeff Young
82ebc247b8 More performance enhancements for DRC. 2022-06-18 19:47:11 +01:00
Seth Hillbrand
442aae19d9 Separate flashing check for connectivity
When building the connectivity database, we should not be using the
connectivity to check for shapes.

To make this deterministic, we introduce two flags (ALWAYS_FLASH and
NEVER_FLASH) that are used with connectivity building to determine
whether a pad is flashed for connectivity or not.  ZONE <-> PAD/VIA
connectivity will be checked with ALWAYS_FLASHED and all other
connectivity will be checked with NEVER_FLASHED if they are marked for
potential annular ring removal.  If they are not marked for removal,
they will be checked ALWAYS_FLASHED.

Fixes https://gitlab.com/kicad/code/kicad/issues/11114
2022-03-16 17:30:01 -07:00
Seth Hillbrand
b5c2f0d39a Remove the open array in favor of std containers
The containers allow iteration, size knowledge and lower bug surface
2022-03-03 16:03:26 -08:00
Jeff Young
ca095896cb Performance: multi-thread CN_ZONE_LAYER RTree generation. 2022-02-16 14:11:09 +00:00
Jeff Young
3b292a4941 Cleanup and code clarity. 2022-02-16 12:00:18 +00:00
Jeff Young
72a389e612 Performance: check line ends first before doing collision. 2022-02-15 19:19:03 +00:00
Jeff Young
2172810600 Performance: better sharing of zone fills. 2022-02-15 19:19:03 +00:00
Jeff Young
d8c4f2cb09 Performance improvements for zone filler. 2022-02-15 19:19:02 +00:00
Jeff Young
5c9e718407 Performance enhancements for connectivity.
1) Generate SHAPE_POLY_SET triangulation by outline so they can be
shared between connectivity system and other clients.
2) Don't add items to connectivity when reading board; we're going
to do a total rebuild anyway.
3) Use multithreading when caching triangulation.
2022-02-15 12:20:34 +00:00
Jeff Young
98b9c6e2a1 Better progress reporting and a slight performance boost on commit. 2022-02-15 12:20:34 +00:00
Jeff Young
d2de114d21 More performance optimizations. 2022-02-15 12:20:34 +00:00
Jeff Young
d07910de06 Improve performance of checkZoneZoneConnection. 2022-02-14 01:15:06 +00:00
Jeff Young
c4e133fdf7 Auto reduction and std::shared_ptr cover types reduction.
And a performance optimization or two resulting from above.  (Using
const& intead of copying std::shared_ptrs.)
2022-02-13 12:04:03 +00:00
Jeff Young
90f6edad61 Move connectivity algo to collision-based routines.
Fixes https://gitlab.com/kicad/code/kicad/issues/1800

Fixes https://gitlab.com/kicad/code/kicad/issues/1769
2022-02-13 00:35:11 +00:00
Jeff Young
3deaf902bb Retire the V5 zone fill algorithm.
Fixes https://gitlab.com/kicad/code/kicad/issues/10578
2022-02-11 13:10:52 +00:00
Jeff Young
6e063247e5 Move CN_VISITOR from HitTest() to Collide().
The former isn't sufficiently aware of layer differences (such as for
pads with some layers unflashed).
2022-02-11 13:10:52 +00:00
Jeff Young
e59aaf05c6 Make sure that GetConnectedItems searches from the root item.
Fixes https://gitlab.com/kicad/code/kicad/issues/10583
2022-02-06 19:43:25 +00:00
Jeff Young
7ccac79192 More wxString wide literals. 2022-02-05 21:29:34 +00:00
Marek Roszko
ac715d2e51 Scoop up some more wxPoint instances 2022-01-03 20:00:53 -05:00
Jon Evans
992952e3d5 Tune connectivity progress reporter
We don't need quite as many updates, this helps speed a little

See https://gitlab.com/kicad/code/kicad/-/issues/10154

(cherry picked from commit 0ec440805deffd1fb12fe8fe326df3ba460b385c)
2021-12-30 09:20:41 -05:00
Jon Evans
44e01dcd0a Skip newly-added footprints in connectivity
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9892
2021-12-08 20:39:12 -05:00
Jon Evans
8026863d4c Use progress reporting in more places when loading a board
Prevents application-not-responding events while opening large designs
2021-11-25 11:19:03 -05:00
Jeff Young
41619ebbe2 Decouple PROGRESS_REPORTER interface from implementations. 2021-08-14 21:05:49 +01:00
Jeff Young
096e342386 Prefix TRACK, ARC and VIA. 2021-06-11 22:07:02 +01:00
Marek Roszko
cf2bb5692a Remove the wxLog calls from math/util.h for now
This was leaking windows headers and partial wx headers to 1084 compilation units......
This also means math/util.h is leaking to 1084 compilation units which seems a bit high too.
2021-06-01 18:44:22 -04:00
Jon Evans
f57dcf2a34 Fix connectivity to only resolve conflicts on netlist load
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8007
2021-03-23 17:43:24 -04:00
Jon Evans
37242f67e0 Connectivity: just pick the most popular net to update conflicting clusters
CHANGED: when pad net assignments are changed in a conflicting way (i.e.,
         tracks exist that short out more than one net after the change,
         track nets will be updated to the net with the most pads).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/7929
2021-03-21 15:31:37 -04:00
Ian McInerney
51d445007f Switch to using make_shared in another place 2021-03-03 02:19:46 +00:00
Jeff Young
b1f0bf7334 More consistent naming. 2020-12-08 13:05:39 +00:00
Jeff Young
bdbb68f813 MODULE -> FOOTPRINT. 2020-11-13 16:04:03 +00:00
Jeff Young
3451ac3088 PCB_MODULE_T -> PCB_FOOTPRINT_T 2020-11-13 15:16:24 +00:00
Jeff Young
52a46341db More module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young
f5443de7f9 D_PAD -> PAD. 2020-11-13 15:16:24 +00:00
Jeff Young
f7333ad64a Update some classnames including archaic zone names. 2020-11-12 10:31:25 +00:00
Jeff Young
397f3d07db Be more responsive to cancel when filling zones.
Fixes https://gitlab.com/kicad/code/kicad/issues/6077
2020-10-26 15:36:07 +00:00
Jeff Young
5fba0973ab Update formatting. 2020-10-26 15:36:07 +00:00
Seth Hillbrand
856cf51fc8 Fix typo 2020-09-23 14:00:39 -07:00
Seth Hillbrand
b31eafdfa8 Restore missing layer check 2020-09-23 13:33:42 -07:00
Jeff Young
4a0d469cec Back out zone layer misunderstanding and make types clearer. 2020-09-23 20:02:21 +01:00
Jeff Young
1f284111b0 Faster algorithm for zone-to-zone connectivity test. 2020-09-23 18:51:52 +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
4d8537fcfa Handle multi-layer zones in connectivity. 2020-09-23 01:14:35 +01:00
Jeff Young
9e12ea9bb6 Cleanup some dead code and make better use of iterators.
Also applies coding style around auto and lambdas.
2020-08-28 11:05:58 +01:00
Wayne Stambaugh
ede39780e2 Remove all debugging output that cannot be disabled.
The use of printf, wxLogDebug, and std::err/std::out causes excessive
debugging output which makes finding specific debugging messages more
difficult than it needs to be.

There is still some debugging output in test code that really needs to
be moved into a unit test.

Add debugging output section to the coding policy regarding debugging
output.
2020-08-18 10:17:36 -04:00
Seth Hillbrand
027b6c8cf9 Account for via width in connectivity
Fixes https://gitlab.com/kicad/code/kicad/issues/5176
2020-08-13 20:31:17 -07:00
Seth Hillbrand
f36c158696 Remove via contact minimum from connectivity check
Connectivity takes an absolute approach to whether elements are
connected.  DRC will be adjusted to check to illegal necks that are less
than the board minimum width
2020-08-10 14:47:49 -07:00
Seth Hillbrand
f615b026d9 pcbnew: Account for zone expansion in conn
Connecting zone-to-zone, we need to allow for the stroke-width in
old-style polygons.

Also, speed up the calculation by skipping zone points that do not fall
inside the matching BBox

Fixes https://gitlab.com/kicad/code/kicad/issues/5043
2020-08-07 15:59:39 -07:00
Seth Hillbrand
406de56964 pcbnew: Prevent use of non-connected item in ratsnest
We need to be careful in the connectivity system to always use
dyn_cast/dynamic_cast and check the return when dealing with board
items.  Getting non-connected items will result in null nets when
propagated.

Fixes https://gitlab.com/kicad/code/kicad/issues/5082
2020-08-07 13:38:51 -07:00
Jeff Young
6a4f611e61 Special handling for connecting vias in hatched zones.
Fixes https://gitlab.com/kicad/code/kicad/issues/2568
2020-08-06 00:03:00 +01:00
Seth Hillbrand
a5a56c46c3 Remove INTRUSIVE_LIST from CN_ITEM
Intrusive lists made the connectivity search not thread-safe.  Using
iterators for item deletion provides the same order performance while
keeping the container thread-localized
2020-07-28 09:29:32 -07:00