23#ifndef __PNS_ROUTING_SETTINGS
24#define __PNS_ROUTING_SETTINGS
28#include <geometry/direction45.h>
30#include "time_limit.h"
46enum PNS_OPTIMIZATION_EFFORT
63 PNS_MODE
Mode()
const {
return m_routingMode; }
66 void SetMode( PNS_MODE aMode ) { m_routingMode = aMode; }
101 return m_followMouse && !(
Mode() == RM_MarkObstacles );
111 bool JumpOverObstacles()
const {
return m_jumpOverObstacles; }
112 void SetJumpOverObstacles(
bool aJump ) { m_jumpOverObstacles = aJump; }
114 void SetStartDiagonal(
bool aStartDiagonal ) { m_startDiagonal = aStartDiagonal; }
116 bool AllowDRCViolations()
const
118 return m_routingMode == PNS_MODE::RM_MarkObstacles && m_allowDRCViolations;
121 bool GetAllowDRCViolationsSetting()
const {
return m_allowDRCViolations; }
122 void SetAllowDRCViolations(
bool aViolate ) { m_allowDRCViolations = aViolate; }
124 bool GetFreeAngleMode()
const {
return m_freeAngleMode; }
126 void SetFreeAngleMode(
bool aEnable ) { m_freeAngleMode = aEnable; }
130 int ShoveIterationLimit()
const;
131 TIME_LIMIT ShoveTimeLimit()
const;
133 int WalkaroundIterationLimit()
const {
return m_walkaroundIterationLimit; };
134 TIME_LIMIT WalkaroundTimeLimit()
const;
136 void SetSnapToTracks(
bool aSnap ) { m_snapToTracks = aSnap; }
137 void SetSnapToPads(
bool aSnap ) { m_snapToPads = aSnap; }
139 bool GetSnapToTracks()
const {
return m_snapToTracks; }
140 bool GetSnapToPads()
const {
return m_snapToPads; }
145 bool GetOptimizeEntireDraggedTrack()
const {
return m_optimizeEntireDraggedTrack; }
146 void SetOptimizeEntireDraggedTrack(
bool aEnable ) { m_optimizeEntireDraggedTrack = aEnable; }
148 bool GetAutoPosture()
const {
return m_autoPosture; }
149 void SetAutoPosture(
bool aEnable ) { m_autoPosture = aEnable; }
151 bool GetFixAllSegments()
const {
return m_fixAllSegments; }
152 void SetFixAllSegments(
bool aEnable ) { m_fixAllSegments = aEnable; }
154 double WalkaroundHugLengthThreshold()
const {
return m_walkaroundHugLengthThreshold; }
158 bool m_startDiagonal;
161 bool m_suggestFinish;
163 bool m_jumpOverObstacles;
164 bool m_smoothDraggedSegments;
165 bool m_allowDRCViolations;
166 bool m_freeAngleMode;
169 bool m_optimizeEntireDraggedTrack;
171 bool m_fixAllSegments;
175 PNS_MODE m_routingMode;
176 PNS_OPTIMIZATION_EFFORT m_optimizerEffort;
178 int m_walkaroundIterationLimit;
179 int m_shoveIterationLimit;
180 double m_walkaroundHugLengthThreshold;
182 TIME_LIMIT m_shoveTimeLimit;
183 TIME_LIMIT m_walkaroundTimeLimit;
Represent route directions & corner angles in a 45-degree metric.
Definition direction45.h:37
CORNER_MODE
Corner modes.
Definition direction45.h:67
Contain all persistent settings of the router, such as the mode, optimization effort,...
Definition pns_routing_settings.h:58
ROUTING_SETTINGS()
Return the routing mode.
Definition pns_routing_settings.cpp:30
bool RemoveLoops() const
Enable/disable loop (redundant track) removal.
Definition pns_routing_settings.h:81
void SetShoveVias(bool aShoveVias)
Return true if loop (redundant track) removal is on.
Definition pns_routing_settings.h:78
bool SmoothDraggedSegments() const
Enable/disable smoothing segments during dragging.
Definition pns_routing_settings.h:105
PNS_OPTIMIZATION_EFFORT OptimizerEffort() const
Set the optimizer effort. Bigger means cleaner traces, but slower routing.
Definition pns_routing_settings.h:69
bool FollowMouse() const
Return true if smoothing segments during dragging is enabled.
Definition pns_routing_settings.h:99
void SetSmoothDraggedSegments(bool aSmooth)
Return true if jumping over unmovable obstacles is on.
Definition pns_routing_settings.h:108
bool ShoveVias() const
Enable/disable shoving vias.
Definition pns_routing_settings.h:75
bool SmartPads() const
Enable/disable Smart Pads (optimized connections).
Definition pns_routing_settings.h:93
void SetSuggestFinish(bool aSuggestFinish)
Return true if Smart Pads (optimized connections) is enabled.
Definition pns_routing_settings.h:90
bool SuggestFinish()
Enable displaying suggestions for finishing the currently placed track.
Definition pns_routing_settings.h:87
void SetMode(PNS_MODE aMode)
Return the optimizer effort. Bigger means cleaner traces, but slower routing.
Definition pns_routing_settings.h:66
PNS_MODE Mode() const
Set the routing mode.
Definition pns_routing_settings.h:63
void SetSmartPads(bool aSmartPads)
Return true if follow mouse mode is active (permanently on for the moment).
Definition pns_routing_settings.h:96
void SetOptimizerEffort(PNS_OPTIMIZATION_EFFORT aEffort)
Return true if shoving vias is enabled.
Definition pns_routing_settings.h:72
void SetRemoveLoops(bool aRemoveLoops)
Return true if suggesting the finish of currently placed track is on.
Definition pns_routing_settings.h:84