Seth Hillbrand
e1b428609d
Rewrite followTrivialPath as iterative
...
Remove the recursion that causes stack crash and add an
additional check for if we have already seen either the
current link or the last link before adding them to the line
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16185
2023-11-28 06:57:50 -08:00
jean-pierre charras
15c7f224b3
Protect against null pointer
...
Fixes #16172
https://gitlab.com/kicad/code/kicad/-/issues/16172
2023-11-27 09:52:18 +01:00
Jeff Young
b6501ce632
Report current length on roll-over.
2023-11-23 23:25:49 +00:00
Jeff Young
d437d872ab
Re-enable corner radius of DP meanders.
...
It appears whatever bugs it had have been addressed.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15257
2023-11-22 19:45:56 +00:00
Alex Shvartzkop
05e954ad5d
Fixes for length tuning patterns.
2023-11-12 12:17:08 +03:00
Alex Shvartzkop
7abe2e3ea0
Restore clearance cache usage in PNS::NODE::NearestObstacle.
...
This (and the other commit) restores router performance to pre-7.0.3 levels.
(cherry-picked from commit 5e93814283
)
2023-11-07 23:25:53 +03:00
Seneral
55c44966d9
Added a temporary item cache to improve router performance
...
Some items only used within algorithms were never cached
Because they are hard to manually clean up
But caching them does help the algorithms a lot
So this solution is the best I can think of
(cherry picked from commit d29c07a663
)
2023-11-07 23:23:52 +03:00
Jeff Young
abda3c0d33
Handle various keepout flags independently.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16037
2023-11-07 11:57:23 +00:00
Jeff Young
7f8e397dfb
Behave (or assert) when source or target are null or dirty.
2023-11-01 17:11:42 +00:00
Jeff Young
2ce4adc739
Check physical_clearance rules in the router.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16007
2023-11-01 14:13:16 +00:00
Jeff Young
d93bb464bf
When garbage collecting locally we also need to clear global references.
2023-11-01 12:47:54 +00:00
Wayne Stambaugh
6183a1e4de
Coverity warning fixes.
2023-10-30 09:16:24 -04:00
Jeff Young
0747d35228
Minor formatting fixes.
2023-10-28 17:58:33 +01:00
Jeff Young
a2f19ea6bb
Push m_forceMarkObstaclesMode down into the DRAGGER.
...
The existing flag was never read anyway, and it's only the DRAGGER
that knows that the starting state is already colliding and that we
need to force mark-obstacles mode.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8641
2023-10-28 17:52:15 +01:00
Ian McInerney
171458a27b
Introduce action friendly names
...
Friendly names can be used to display action information that is clearer
in non-hierarchical contexts (e.g. not in menus).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8075
2023-10-27 23:58:29 +01:00
Wayne Stambaugh
6269453416
Coverity warning fixes.
2023-10-27 16:48:14 -04:00
Jeff Young
8d3a3419f8
Honour 90-degree router mode in a few more places.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10421
2023-10-26 14:18:28 +01:00
jean-pierre charras
4ffa013467
Fix minor compil and Coverity warnings (not initialized vars)
2023-10-23 20:13:46 +02:00
Jeff Young
fb84f4592b
Check vias before holes as we assume any hole is non-pushable.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15840
2023-10-22 22:46:19 +01:00
Jeff Young
7c08aa09d5
Don't generate virtual vias when editing a tuning pattern.
2023-10-22 20:35:15 +01:00
Jeff Young
f1efae1e05
We don't want to do collision testing against virtual vias.
...
(Which means they had better not have a hole.)
2023-10-22 20:35:15 +01:00
Jeff Young
5da35d7750
Don't modify dp-tuning when doing skew tuning.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15901
2023-10-22 20:35:14 +01:00
Jeff Young
059a95a2f2
Lock generated tracks when routing.
...
Otherwise they lose their group status when being replaced by the
router (even if they weren't otherwise modified).
2023-10-19 11:39:01 +01:00
Mike Williams
70917a14e7
Route from end: fix crash and snapping bug
...
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/13992
2023-10-18 12:32:32 -04:00
Jeff Young
89011e888c
More modern look & feel for tuning status popup.
...
(Also includes min and max info, and move string processing out
of router.)
2023-10-17 13:30:58 +01:00
Jeff Young
9ed802e951
Support min/max rules in diff pair placer and skew placer.
2023-10-17 13:30:58 +01:00
Wayne Stambaugh
f629898c8b
Coding policy fixes.
2023-10-17 08:07:15 -04:00
Wayne Stambaugh
b5eee9dd7e
Coverity warning fixes.
2023-10-16 17:04:14 -04:00
Jeff Young
2c9d43474d
Formatting.
2023-10-16 13:44:05 +01:00
Jeff Young
64cc8dd6aa
Adjust dashed-box and edit-point locations to be outside meanders.
2023-10-16 13:44:05 +01:00
Jeff Young
d51e058e24
Move diff-pair netname resolution to BOARD.
...
Also adds reporting of dp gap constaints and max uncoupled to track
selections, and max uncoupled during routing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13748
2023-10-15 22:46:23 +01:00
Jeff Young
ccc20348bf
Don't start with MEANDER_SIDE_DEFAULT.
...
It means we get a different default for left-to-right-drawn than we
do when going the other way.
Also fixes bug in PNS::DP_MEANDER_PLACER so that it honours side
specified in settings.
2023-10-15 17:59:11 +01:00
Jeff Young
2450250ae7
Use "tuning pattern" in the GUI.
2023-10-15 17:59:11 +01:00
Jeff Young
5f5113c80a
Pick up current rule values when editing meanders.
2023-10-14 15:04:18 +01:00
Alex Shvartzkop
61bdee027b
Fix a crash when using length tuning tools.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15874
2023-10-14 16:53:28 +03:00
Jeff Young
0a111e9fbb
Hook up layer-toggle command to router.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15812
2023-10-13 21:33:27 +01:00
Jeff Young
62d959ed0e
Don't assume an error location for PAD::GetEffectivePolygon().
...
While ERROR_INSIDE was good for plotting, 3D generation, etc., it's
not good for generating router hulls.
Also reverts part of the change to always use polygons for PNS::SOLIDs. A single shape in a SHAPE_COMPOUND will be faster (and
more accurate).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14898
2023-10-13 13:59:26 +01:00
Jon Evans
96f9f2c658
PNS: Allow for approximation error in hull clearance
...
Also revert to using exact hulls for non-compound shapes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14898
2023-10-12 22:55:34 -04:00
Jeff Young
1b676985f6
Retire length tuning tool in favour of first-class meanders.
2023-10-12 17:54:34 +01:00
Jeff Young
d04641c868
ADDED: support for editing target length in Meander Properties dialog.
...
Also supports overriding the custom rules.
2023-10-12 17:54:34 +01:00
Jeff Young
d916e650f1
Tuning status popup for point editor.
2023-10-10 11:55:57 +01:00
Jeff Young
d10b0b053e
Move meander placer picker tool from item highlighting to net highlighting.
2023-10-09 22:32:32 +01:00
Jeff Young
35d8635a6b
Default skew tuning lenght to diff between N/P, but allow override.
2023-10-09 15:22:41 +01:00
Alex Shvartzkop
a4832dd3c8
ADDED: Interactive meander objects for length tuning.
2023-10-08 02:41:17 +00:00
Alex Shvartzkop
455268f45e
Allow to specify meander initial side via meander settings.
2023-10-08 02:41:17 +00:00
Alex Shvartzkop
ce8849f8bc
Skip move in meander placers if points match.
2023-10-08 02:41:17 +00:00
Alex Shvartzkop
8b21a260c9
Refactor MEANDER_PLACER_BASE::cutTunedLine to SHAPE_LINE_CHAIN::Split.
2023-10-08 02:41:17 +00:00
Alex Shvartzkop
546c7ed218
Introduce GENERATOR_TOOL.
2023-10-08 02:41:17 +00:00
Alex Shvartzkop
74075fe4d6
Fix target skew not working properly in meander skew placer.
2023-10-07 03:51:26 +03:00
Alex Shvartzkop
e4e769493c
Skip very short segments in MEANDER_SHAPE::forward.
2023-10-07 03:51:18 +03:00
Jeff Young
420cadab34
Separate meander settings from target length/skew.
...
Settings move to Board Setup, while target length is sourced from
the custom rules (or a text-entry dialog if no rules are active for
the track).
Target skew is sourced from the coupled-trace-length minus the
trace-to-be-tuned length.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/12075
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15826
2023-10-06 19:46:55 +01:00
Ian McInerney
0876fb0985
Re-implement direct layer switching in the router tool
...
Also add a new framework to allow grouping actions that are similar into
a single context that can then be used for mass comparisons.
2023-10-05 13:34:25 +01:00
Mike Williams
c2d7b26ebd
PCBNew: don't grab the wrong parameter type when placing vias
2023-10-04 12:17:15 -04:00
Jeff Young
9214e47367
Only allow switching to enabled layers.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15779
2023-10-01 15:27:55 +01:00
Jeff Young
be532e96d6
Fix errors in calculating tuning length.
...
Fix mismatched parameter passing in TOPOLOGY::followTrivialPath()
and TOPOLOGY::AssembleTrivialPath().
Fix logic error in PNS::JOINT::IsLineCorner().
Handle VVIAs in PNS::JOINT::IsNonFanoutVia().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10614
2023-09-25 15:50:44 +00:00
Jon Evans
d781d70a09
PNS fix dragging a single footprint
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15693
2023-09-20 11:53:43 -04:00
Jon Evans
5a9c028e85
PNS: Allow dragging more than one footprint
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/11312
2023-09-18 22:37:11 -04:00
Marek Roszko
22b733209d
Fail GAL on its header leaking audit
...
Maybe we should rethink directly accessing GAL so much, but at least 600 files didn't need GAL leaked into them due to view_overlay.h
2023-09-18 19:52:27 -04:00
Alex Shvartzkop
06463fd35a
Fixes for Wayland cursor warping:
...
- Emulate the mouse position, since no motion events are sent after warp
- Do not call wl_surface_commit to prevent an assert
- Re-organize code a bit
2023-09-18 12:56:54 +00:00
Jeff Young
ed292e180d
Don't assert on 0-width tracks. Just don't inherit from them.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14558
2023-09-15 19:09:58 +01:00
Jeff Young
408f505b75
Formatting.
2023-09-15 19:09:58 +01:00
Tomasz Wlostowski
a7ae4d8e9a
router: orphaned net is not the same as null net handle
2023-09-12 16:03:55 +02:00
Jeff Young
93f004ff65
Formatting, and a fix for a shadowed variable.
2023-09-12 13:45:28 +01:00
Marek Roszko
3bbf3a61b5
Remove PNS APIEXPORT that never made sense
...
It can't work because all base classes must be APIEXPORTed
2023-09-08 18:44:46 -04:00
Alex Shvartzkop
f211b2cdd0
Remove unused method from router_tool.h
2023-09-07 10:57:02 +03:00
Marek Roszko
67b031adab
Painter base class should just live in gal instead of being in denial
2023-09-06 20:23:19 -04:00
Jeff Young
43862d767e
Don't return separate shapes from a custom-shaped pad.
...
It just confuses the hull generator.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15553
2023-09-03 13:23:53 +01:00
Jeff Young
891583f616
Fix nullptr error.
2023-09-02 12:08:37 +01:00
Jeff Young
9a045af81f
Make all debugging statments use netcode (instead of some using netname).
2023-08-31 15:15:57 +01:00
Jeff Young
05135eed66
Extra debugging info for pns regression tests.
2023-08-31 15:15:57 +01:00
Jeff Young
c049e1e90d
Formatting (no functional changes).
2023-08-31 15:15:57 +01:00
Jeff Young
cf14b3c233
Fix conversion to netnames in PNS_DBG output.
2023-08-31 00:25:20 +01:00
Jeff Young
f24cf2250e
Make sure we have a BOARD when trying to read nets.
...
Also fixes a nullptr bug when trying to write nets when we don't
have a NODE.
2023-08-29 17:30:00 +01:00
Wayne Stambaugh
e4feb8826b
Coverity issue fixes.
2023-08-28 09:29:56 -04:00
Mike Williams
2b78c20a62
PCB: add grid overrides to graphics/router/etc.
2023-08-24 13:58:22 -04:00
Mike Williams
9079df85fd
PCB: check ratsnest for nullptr (segfaults)
2023-08-24 10:51:34 -04:00
Jeff Young
6040f49272
Don't write opaque data types to PNS log.
2023-08-24 12:12:16 +01:00
Roberto Fernandez Bautista
f4f1ca352a
Fix crash when running PNS Router Dump (pressing 0)
...
Some ITEMs don't have a Parent
2023-08-23 22:19:47 +02:00
Jeff Young
6166a96b8e
Update PSN logger to new NET_HANDLE architecture.
2023-08-23 14:10:03 +01:00
Jeff Young
76cd637895
Make the net identifier opaque to PNS router.
...
This also improves performance as we don't have to look up the
netcodes in a map.
2023-08-22 15:17:02 +00:00
Alex Shvartzkop
10e2e4a12d
Another try at fixing arcs.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15471
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15469
2023-08-22 16:10:58 +03:00
Jeff Young
8f1a987044
Fix typos.
2023-08-19 23:20:52 +01:00
Jeff Young
fa060c7c58
Make sure dummy tracks have ROUTER_TRANSIENT flags.
...
Also give them more info that might be queried by custom DRC rules.
This currently just includes positioning info (it already included
nets and principal layer). We *could* also try to figure out all
layers for dummy vias, and/or widths for dummy tracks / arcs....
2023-08-19 20:51:04 +00:00
Alex Shvartzkop
a0d96cea9f
Rename Save -> SaveBoard, Load -> LoadBoard in PLUGIN.
2023-08-15 05:26:12 +03:00
Jon Evans
a77e630901
ADDED: Connectivity for graphic shapes on copper layers
...
Graphic shapes (excluding text) can now have nets when on
copper layers. Shapes behave like tracks in that they will
pick up nets from connected pads, and follow track opacity
settings.
2023-08-10 21:47:43 -04:00
jean-pierre charras
cff2583f15
Minor fixes to help translations:
...
- do not translate a debug message.
- remove useless spaces at end of lines (always annoying for translators).
2023-08-10 10:16:24 +02:00
Roberto Fernandez Bautista
6ba250a4e6
PNS Log Viewer: Refactor loading/saving functions
2023-08-09 22:21:14 +00:00
Jon Evans
8776437f29
PNS: Placement is not valid if via can't be placed
2023-08-07 18:42:44 -04:00
Jon Evans
bb13e8e754
PNS: Use a via to resolve via sizes
2023-08-07 18:31:05 -04:00
Roberto Fernandez Bautista
feb887fe8f
PNS: Prevent re-entry events when saving log to file
2023-08-07 23:48:58 +02:00
Roberto Fernandez Bautista
79a6b0d129
PNS: Re-add debugging of via dragging
2023-08-07 23:48:24 +02:00
Roberto Fernandez Bautista
6ebc2fca15
PNS: Only log events when EnableRouterDump is true
2023-08-07 23:48:24 +02:00
Roberto Fernandez Bautista
3bf9797620
PNS: add new "EnableRouterDump" kicad_advanced setting
2023-08-07 23:43:54 +02:00
Jon Evans
103eb556f7
PNS: Make sure log viewer uses the actual design settings
2023-08-06 16:05:37 -04:00
Jeff Young
b401c214f5
Fix missing variable initialization.
2023-08-06 20:57:42 +01:00
Jon Evans
5cbe3c5d42
PNS: Fix a few issues with debug logging
...
Hide non-copper layers for clarity
Fix saving of router settings
2023-08-06 15:30:58 -04:00
jean-pierre charras
5e04e90fb3
LENGTH_TUNER_TOOL: fix a bug (missing initialization) creating a serious isse.
...
m_inLengthTuner was not initialized, preventing the tool to be started (sometimes)
Fix also a few not initialized members.
2023-08-06 13:20:43 +02:00
Jon Evans
6f2574d0d2
Manual cherry-pick of 2075a99c
2023-08-05 20:13:15 -04:00
Jeff Young
620b6b7169
Re-entrancy guard for length tuner tool.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15268
2023-08-04 17:37:09 +01:00
Jon Evans
ca4d6e8d1d
Fix msvc being unhappy
2023-08-01 19:59:58 -04:00