router: add via force propagation iteration limit as a user-controllable parameter in ROUTING_SETTINGS

This commit is contained in:
Tomasz Wlostowski 2022-10-27 00:15:55 +02:00
parent 247922ca2d
commit e80bdf934a
2 changed files with 6 additions and 0 deletions

View File

@ -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<int>( "mode", reinterpret_cast<int*>( &m_routingMode ),
static_cast<int>( RM_Walkaround ) ) );
@ -68,6 +69,7 @@ ROUTING_SETTINGS::ROUTING_SETTINGS( JSON_SETTINGS* aParent, const std::string& a
m_params.emplace_back( new PARAM<bool>( "follow_mouse", &m_followMouse, true ) );
m_params.emplace_back( new PARAM<bool>( "start_diagonal", &m_startDiagonal, false ) );
m_params.emplace_back( new PARAM<int>( "shove_iteration_limit", &m_shoveIterationLimit, 250 ) );
m_params.emplace_back( new PARAM<int>( "via_force_prop_iteration_limit", &m_viaForcePropIterationLimit, 40 ) );
m_params.emplace_back( new PARAM_LAMBDA<int>( "shove_time_limit",
[this] () -> int

View File

@ -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;