From e80bdf934a1063918a2d0b67113f8d6787f87674 Mon Sep 17 00:00:00 2001 From: Tomasz Wlostowski Date: Thu, 27 Oct 2022 00:15:55 +0200 Subject: [PATCH] router: add via force propagation iteration limit as a user-controllable parameter in ROUTING_SETTINGS --- pcbnew/router/pns_routing_settings.cpp | 2 ++ pcbnew/router/pns_routing_settings.h | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/pcbnew/router/pns_routing_settings.cpp b/pcbnew/router/pns_routing_settings.cpp index 95935ebb6d..cc585d0d3b 100644 --- a/pcbnew/router/pns_routing_settings.cpp +++ b/pcbnew/router/pns_routing_settings.cpp @@ -54,6 +54,7 @@ ROUTING_SETTINGS::ROUTING_SETTINGS( JSON_SETTINGS* aParent, const std::string& a m_walkaroundHugLengthThreshold = 1.5; m_autoPosture = true; m_fixAllSegments = true; + m_viaForcePropIterationLimit = 40; m_params.emplace_back( new PARAM( "mode", reinterpret_cast( &m_routingMode ), static_cast( RM_Walkaround ) ) ); @@ -68,6 +69,7 @@ ROUTING_SETTINGS::ROUTING_SETTINGS( JSON_SETTINGS* aParent, const std::string& a m_params.emplace_back( new PARAM( "follow_mouse", &m_followMouse, true ) ); m_params.emplace_back( new PARAM( "start_diagonal", &m_startDiagonal, false ) ); m_params.emplace_back( new PARAM( "shove_iteration_limit", &m_shoveIterationLimit, 250 ) ); + m_params.emplace_back( new PARAM( "via_force_prop_iteration_limit", &m_viaForcePropIterationLimit, 40 ) ); m_params.emplace_back( new PARAM_LAMBDA( "shove_time_limit", [this] () -> int diff --git a/pcbnew/router/pns_routing_settings.h b/pcbnew/router/pns_routing_settings.h index fb2158674f..0304baa1a1 100644 --- a/pcbnew/router/pns_routing_settings.h +++ b/pcbnew/router/pns_routing_settings.h @@ -154,6 +154,9 @@ public: double WalkaroundHugLengthThreshold() const { return m_walkaroundHugLengthThreshold; } + int ViaForcePropIterationLimit() const { return m_viaForcePropIterationLimit; } + void SetViaForcePropIterationLimit(int aLimit) { m_viaForcePropIterationLimit = aLimit; } + private: bool m_shoveVias; bool m_startDiagonal; @@ -178,6 +181,7 @@ private: int m_walkaroundIterationLimit; int m_shoveIterationLimit; + int m_viaForcePropIterationLimit; double m_walkaroundHugLengthThreshold; TIME_LIMIT m_shoveTimeLimit;