kicad/pcbnew/router
Seth Hillbrand fb565caf7b pcbnew: Optimize pad connection revision
This modifies that logic for optimizing pad connections.

1) Custom pads now prefer the connections to their longer side.  This is
particularly important to match the behavior in a rectangular pad
2) Costs for straight lines are non-zero.  This favors fewer connections
3) Custom pad breakouts are at the polygon boundary rather than offset
by 0.1mm.  This also matches the circular and rectangular paradigm.
4) Line Heads contained in the pad itself are not optimized.  This
prevents escaping the pad unnecessarily

Fixes: lp:1824182
* https://bugs.launchpad.net/kicad/+bug/1824182

(cherry picked from commit 06cb21cc47)
2019-08-20 19:37:59 -07:00
..
CMakeLists.txt router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-05-01 11:39:15 +01:00
length_tuner_tool.cpp pcbnew: disable autopanning when cursor entered auto-pan margin following a keyboard cursor move command 2018-12-23 18:58:12 +01:00
length_tuner_tool.h Prevent creating too many transitions by TOOL_MANAGER 2017-07-31 15:09:19 +02:00
pns_algo_base.cpp Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_algo_base.h Coverity fixes 2017-03-11 22:20:08 +01:00
pns_debug_decorator.h Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_diff_pair.cpp router: DP_GATEWAYS::FilterByOrientation() should have exactly opposite filtering condition! 2018-10-18 14:29:19 +02:00
pns_diff_pair.h Fix unnecessary value parameter detected by clang-tidy. - Replace value parameter by const reference parameter or move-assignement in some cases 2018-01-09 18:55:51 -05:00
pns_diff_pair_placer.cpp router: Take track width in dp from dp 2019-02-04 03:48:08 +01:00
pns_diff_pair_placer.h router: allow placing tracks/diff pairs without continuing routing by Shift+L-Click 2018-06-19 19:30:03 +02:00
pns_dp_meander_placer.cpp router: don't cross DP lines when length tuning, fix swap pair polarity bug 2018-10-18 13:48:43 +02:00
pns_dp_meander_placer.h router: don't cross DP lines when length tuning, fix swap pair polarity bug 2018-10-18 13:48:43 +02:00
pns_dragger.cpp pcbnew: Do not allow drag to violate DRC without permission 2018-09-27 13:08:22 -07:00
pns_dragger.h Few improvements to the GAL router: 2017-08-07 14:28:46 +02:00
pns_index.cpp router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-05-01 11:39:15 +01:00
pns_index.h router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-05-01 11:39:15 +01:00
pns_item.cpp router: treat negative net indices as always colliding 2018-02-17 18:25:20 +01:00
pns_item.h router: don't create incorrect non-45 degree connections when routing a track that doesn't have a net assigned 2019-02-03 12:37:27 +01:00
pns_itemset.cpp Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_itemset.h Code cleanup: Fixing assignment operators 2018-09-20 20:15:47 -07:00
pns_joint.h Don't shove stitching vias. 2019-07-21 16:41:56 -06:00
pns_kicad_iface.cpp PNS: Don't allow routing on hidden layers 2019-08-15 12:38:16 -07:00
pns_kicad_iface.h PNS: Don't allow routing on hidden layers 2019-08-15 12:38:16 -07:00
pns_layerset.h Code cleanup: Fixing assignment operators 2018-09-20 20:15:47 -07:00
pns_line.cpp router: correct walkaround corner case when both ends of the line lie on the hull edge 2019-02-03 11:22:18 +01:00
pns_line.h Code cleanup: Fixing assignment operators 2018-09-20 20:15:47 -07:00
pns_line_placer.cpp pcbnew: Allow DRC violations when marked 2019-06-09 13:00:13 -07:00
pns_line_placer.h router: allow placing tracks/diff pairs without continuing routing by Shift+L-Click 2018-06-19 19:30:03 +02:00
pns_logger.cpp Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_logger.h Fix unnecessary value parameter detected by clang-tidy. - Replace value parameter by const reference parameter or move-assignement in some cases 2018-01-09 18:55:51 -05:00
pns_meander.cpp Fix a bug in how we check for differential pair tuning. 2018-05-21 13:49:40 +01:00
pns_meander.h Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_meander_placer.cpp Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_placer.h Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_placer_base.cpp Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_meander_placer_base.h Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_skew_placer.cpp Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_skew_placer.h Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_node.cpp router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-05-01 11:39:15 +01:00
pns_node.h pcbnew: Set dp clearance based on netclass 2018-06-18 14:23:25 -07:00
pns_optimizer.cpp pcbnew: Optimize pad connection revision 2019-08-20 19:37:59 -07:00
pns_optimizer.h Adjusting the breakout optimizer for custom pads 2018-05-04 08:23:20 -07:00
pns_placement_algo.h router: allow placing tracks/diff pairs without continuing routing by Shift+L-Click 2018-06-19 19:30:03 +02:00
pns_router.cpp pcbnew: Show clearance when editing tracks 2019-04-07 21:26:06 -07:00
pns_router.h PNS: Don't allow routing on hidden layers 2019-08-15 12:38:16 -07:00
pns_routing_settings.cpp Few improvements to the GAL router: 2017-08-07 14:28:46 +02:00
pns_routing_settings.h Change "Automatic neckdown" to "Optimize pad connections". 2018-02-15 17:02:44 +01:00
pns_segment.h Revert "pcbnew: Adding copy constructors to PNS items" 2018-10-09 14:50:20 -07:00
pns_shove.cpp Don't shove stitching vias. 2019-07-21 16:41:56 -06:00
pns_shove.h refactoring: wrapped boost::optional in OPT<> class for the purpose of easier transition to C++17 in the future 2017-11-03 23:59:02 +01:00
pns_sizes_settings.cpp Honour diff-pair dimension changes while routing. 2018-09-18 20:37:00 +01:00
pns_sizes_settings.h refactoring: wrapped boost::optional in OPT<> class for the purpose of easier transition to C++17 in the future 2017-11-03 23:59:02 +01:00
pns_solid.cpp Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_solid.h Revert "pcbnew: Adding copy constructors to PNS items" 2018-10-09 14:50:20 -07:00
pns_tool_base.cpp pcbnew: Adjust drag snapping to avoid start 2019-08-15 12:43:19 -07:00
pns_tool_base.h pcbnew: Adjust drag snapping to avoid start 2019-08-15 12:43:19 -07:00
pns_topology.cpp pcbnew: Fix minor miscalculation in dp length 2018-10-09 05:37:48 -07:00
pns_topology.h Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_tune_status_popup.cpp colors: Add HSL conversion and tune colors 2019-02-11 22:08:41 -08:00
pns_tune_status_popup.h Bring PICKER_TOOL in line with other tools. 2018-08-23 00:58:01 +01:00
pns_utils.cpp Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_utils.h Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_via.cpp Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_via.h Revert "pcbnew: Adding copy constructors to PNS items" 2018-10-09 14:50:20 -07:00
pns_walkaround.cpp router: prevent a very unlikely infinite loop in PNS::LINE::Walkaround() causing an OOM&segfault 2018-05-02 15:06:08 -07:00
pns_walkaround.h Add more "override" markers. 2016-09-25 13:59:41 -04:00
range.h Code formatting. 2015-02-18 17:53:46 +01:00
ranged_num.h Code formatting. 2015-02-18 17:53:46 +01:00
router_preview_item.cpp pcbnew: Make clearance translucent 2019-07-18 10:44:44 -07:00
router_preview_item.h Display clearance for routed tracks (GAL) 2017-01-27 19:11:12 +01:00
router_tool.cpp pcbnew: Adjust drag snapping to avoid start 2019-08-15 12:43:19 -07:00
router_tool.h pcbnew: Break track in edit mode 2018-12-14 09:59:25 -08:00
time_limit.cpp Move PNS router code into namespace PNS 2016-09-06 16:06:06 +02:00
time_limit.h Move PNS router code into namespace PNS 2016-09-06 16:06:06 +02:00