KiCad PCB EDA Suite
Loading...
Searching...
No Matches
PNS::DIFF_PAIR_PLACER Class Reference

Single track placement algorithm. More...

#include <pns_diff_pair_placer.h>

Inheritance diagram for PNS::DIFF_PAIR_PLACER:
PNS::PLACEMENT_ALGO PNS::ALGO_BASE

Public Member Functions

 DIFF_PAIR_PLACER (ROUTER *aRouter)
 
 ~DIFF_PAIR_PLACER ()
 
bool Start (const VECTOR2I &aP, ITEM *aStartItem) override
 Start routing a single track at point aP, taking item aStartItem as anchor (unless NULL).
 
bool Move (const VECTOR2I &aP, ITEM *aEndItem) override
 Move the end of the currently routed trace to the point aP, taking aEndItem as anchor (if not NULL).
 
bool FixRoute (const VECTOR2I &aP, ITEM *aEndItem, bool aForceFinish) override
 Commit the currently routed track to the parent node, taking aP as the final end point and aEndItem as the final anchor (if provided).
 
bool CommitPlacement () override
 
bool AbortPlacement () override
 
bool HasPlacedAnything () const override
 
bool ToggleVia (bool aEnabled) override
 Enable/disable a via at the end of currently routed trace.
 
bool SetLayer (int aLayer) override
 Set the current routing layer.
 
const ITEM_SET Traces () override
 Return the complete routed line, as a single-member ITEM_SET.
 
const VECTOR2ICurrentStart () const override
 Return the current start of the line being placed.
 
const VECTOR2ICurrentEnd () const override
 Return the current end of the line being placed.
 
const std::vector< NET_HANDLECurrentNets () const override
 Return the net of currently routed track.
 
int CurrentLayer () const override
 Return the layer of currently routed track.
 
NODECurrentNode (bool aLoopsRemoved=false) const override
 Return the most recent world state.
 
void FlipPosture () override
 Toggle the current posture (straight/diagonal) of the trace head.
 
void UpdateSizes (const SIZES_SETTINGS &aSizes) override
 Perform on-the-fly update of the width, via diameter & drill size from a settings class.
 
bool IsPlacingVia () const override
 Function IsPlacingVia()
 
void SetOrthoMode (bool aOrthoMode) override
 Function SetOrthoMode()
 
void GetModifiedNets (std::vector< NET_HANDLE > &aNets) const override
 Function GetModifiedNets.
 
virtual std::optional< VECTOR2IUnfixRoute ()
 
ROUTERRouter () const
 Return current router settings.
 
ROUTING_SETTINGSSettings () const
 Return the logger object, allowing to dump geometry to a file.
 
virtual LOGGERLogger ()
 
void SetLogger (LOGGER *aLogger)
 
void SetDebugDecorator (DEBUG_DECORATOR *aDecorator)
 Assign a debug decorator allowing this algo to draw extra graphics for visual debugging.
 
DEBUG_DECORATORDbg () const
 
const BOX2IVisibleViewArea () const
 

Static Public Member Functions

static bool FindDpPrimitivePair (NODE *aWorld, const VECTOR2I &aP, ITEM *aItem, DP_PRIMITIVE_PAIR &aPair, wxString *aErrorMsg=nullptr)
 

Protected Attributes

DEBUG_DECORATORm_debugDecorator
 
ROUTERm_router
 
LOGGERm_logger
 

Private Types

enum  State { RT_START = 0 , RT_ROUTE = 1 , RT_FINISH = 2 }
 

Private Member Functions

int viaGap () const
 
int gap () const
 
bool route (const VECTOR2I &aP)
 Re-route the current track to point aP.
 
void updateLeadingRatLine ()
 Draw the "leading" ratsnest line, which connects the end of currently routed track and the nearest yet unrouted item.
 
void setWorld (NODE *aWorld)
 Set the board to route.
 
void initPlacement ()
 Initialize placement of a new line with given parameters.
 
void setInitialDirection (const DIRECTION_45 &aDirection)
 Set preferred direction of the very first track segment to be laid.
 
bool routeHead (const VECTOR2I &aP)
 
bool tryWalkDp (NODE *aNode, DIFF_PAIR &aPair, bool aSolidsOnly)
 route step, walk around mode
 
bool rhWalkOnly (const VECTOR2I &aP)
 route step, shove mode
 
bool rhShoveOnly (const VECTOR2I &aP)
 route step, mark obstacles mode
 
bool rhMarkObstacles (const VECTOR2I &aP)
 
const VIA makeVia (const VECTOR2I &aP, NET_HANDLE aNet)
 
bool attemptWalk (NODE *aNode, DIFF_PAIR *aCurrent, DIFF_PAIR &aWalk, bool aPFirst, bool aWindCw, bool aSolidsOnly)
 
bool propagateDpHeadForces (const VECTOR2I &aP, VECTOR2I &aNewP)
 

Private Attributes

State m_state
 
bool m_chainedPlacement
 
bool m_initialDiagonal
 
bool m_startDiagonal
 
bool m_fitOk
 
NET_HANDLE m_netP
 
NET_HANDLE m_netN
 
DP_PRIMITIVE_PAIR m_start
 
std::optional< DP_PRIMITIVE_PAIRm_prevPair
 current algorithm iteration
 
int m_iteration
 pointer to world to search colliding items
 
NODEm_world
 current routing start point (end of tail, beginning of head)
 
VECTOR2I m_p_start
 The shove engine.
 
std::unique_ptr< SHOVEm_shove
 Current world state.
 
NODEm_currentNode
 Postprocessed world state (including marked collisions & removed loops)
 
NODEm_lastNode
 
SIZES_SETTINGS m_sizes
 Are we placing a via?
 
bool m_placingVia
 current via diameter
 
int m_viaDiameter
 current via drill
 
int m_viaDrill
 current track width
 
int m_currentWidth
 
int m_currentLayer
 
bool m_startsOnVia
 
bool m_orthoMode
 
bool m_snapOnTarget
 
VECTOR2I m_currentEnd
 
VECTOR2I m_currentStart
 
DIFF_PAIR m_currentTrace
 
bool m_currentTraceOk
 
ITEMm_currentEndItem
 
bool m_idle
 

Detailed Description

Single track placement algorithm.

Interactively routes a track and applies shove and walk around algorithms when needed.

Definition at line 52 of file pns_diff_pair_placer.h.

Member Enumeration Documentation

◆ State

Enumerator
RT_START 
RT_ROUTE 
RT_FINISH 

Definition at line 217 of file pns_diff_pair_placer.h.

Constructor & Destructor Documentation

◆ DIFF_PAIR_PLACER()

◆ ~DIFF_PAIR_PLACER()

PNS::DIFF_PAIR_PLACER::~DIFF_PAIR_PLACER ( )

Definition at line 61 of file pns_diff_pair_placer.cpp.

Member Function Documentation

◆ AbortPlacement()

bool PNS::DIFF_PAIR_PLACER::AbortPlacement ( )
overridevirtual

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 848 of file pns_diff_pair_placer.cpp.

References PNS::NODE::KillChildren(), and m_world.

◆ attemptWalk()

◆ CommitPlacement()

bool PNS::DIFF_PAIR_PLACER::CommitPlacement ( )
overridevirtual

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 861 of file pns_diff_pair_placer.cpp.

References PNS::ROUTER::CommitRouting(), m_currentNode, m_lastNode, and PNS::ALGO_BASE::Router().

Referenced by FixRoute().

◆ CurrentEnd()

const VECTOR2I & PNS::DIFF_PAIR_PLACER::CurrentEnd ( ) const
inlineoverridevirtual

Return the current end of the line being placed.

It may not be equal to the cursor position due to collisions.

Implements PNS::PLACEMENT_ALGO.

Definition at line 118 of file pns_diff_pair_placer.h.

References m_currentEnd.

◆ CurrentLayer()

int PNS::DIFF_PAIR_PLACER::CurrentLayer ( ) const
inlineoverridevirtual

Return the layer of currently routed track.

Implements PNS::PLACEMENT_ALGO.

Definition at line 131 of file pns_diff_pair_placer.h.

References m_currentLayer.

◆ CurrentNets()

const std::vector< NET_HANDLE > PNS::DIFF_PAIR_PLACER::CurrentNets ( ) const
overridevirtual

Return the net of currently routed track.

Implements PNS::PLACEMENT_ALGO.

Definition at line 892 of file pns_diff_pair_placer.cpp.

References m_netN, and m_netP.

◆ CurrentNode()

NODE * PNS::DIFF_PAIR_PLACER::CurrentNode ( bool  aLoopsRemoved = false) const
overridevirtual

Return the most recent world state.

Implements PNS::PLACEMENT_ALGO.

Definition at line 411 of file pns_diff_pair_placer.cpp.

References m_currentNode, and m_lastNode.

◆ CurrentStart()

const VECTOR2I & PNS::DIFF_PAIR_PLACER::CurrentStart ( ) const
inlineoverridevirtual

Return the current start of the line being placed.

Implements PNS::PLACEMENT_ALGO.

Definition at line 109 of file pns_diff_pair_placer.h.

References m_currentStart.

◆ Dbg()

DEBUG_DECORATOR * PNS::ALGO_BASE::Dbg ( ) const
inlineinherited

Definition at line 78 of file pns_algo_base.h.

References PNS::ALGO_BASE::m_debugDecorator.

Referenced by PNS::SHOVE::AddLockedSpringbackNode(), PNS::LINE_PLACER::buildInitialLine(), PNS::LINE_PLACER::clipAndCheckCollisions(), PNS::MEANDER_PLACER::doMove(), PNS::COMPONENT_DRAGGER::Drag(), PNS::MULTI_DRAGGER::Drag(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragWalkaround(), PNS::MULTI_DRAGGER::findNewLeaderSegment(), PNS::SHOVE::fixupViaCollisions(), PNS::LINE_PLACER::handlePullback(), PNS::LINE_PLACER::mergeHead(), PNS::DP_MEANDER_PLACER::Move(), PNS::MEANDER_SKEW_PLACER::Move(), PNS::MULTI_DRAGGER::multidragShove(), PNS::MULTI_DRAGGER::multidragWalkaround(), PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingLine(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PNS::SHOVE::preShoveCleanup(), PNS::SHOVE::pruneRootLines(), PNS::SHOVE::pushLineStack(), PNS::SHOVE::pushOrShoveVia(), PNS::SHOVE::pushSpringback(), PNS::SHOVE::reconstructHeads(), PNS::SHOVE::reduceSpringback(), PNS::LINE_PLACER::reduceTail(), PNS::SHOVE::removeHeads(), PNS::LINE_PLACER::removeLoops(), PNS::SHOVE::replaceItems(), PNS::SHOVE::replaceLine(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::LINE_PLACER::rhWalkOnly(), PNS::WALKAROUND::Route(), PNS::LINE_PLACER::routeStep(), PNS::SHOVE::Run(), PNS::SHOVE::runOptimizer(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::shoveMainLoop(), PNS::SHOVE::ShoveObstacleLine(), PNS::WALKAROUND::singleStep(), PNS::LINE_PLACER::splitHeadTail(), PNS::LINE_PLACER::Start(), PNS::DRAGGER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::SHOVE::touchRootLine(), PNS::LINE_PLACER::Trace(), PNS::DRAGGER::tryWalkaround(), PNS::MULTI_DRAGGER::tryWalkaround(), and PNS::SHOVE::unwindLineStack().

◆ FindDpPrimitivePair()

◆ FixRoute()

bool PNS::DIFF_PAIR_PLACER::FixRoute ( const VECTOR2I aP,
ITEM aEndItem,
bool  aForceFinish 
)
overridevirtual

Commit the currently routed track to the parent node, taking aP as the final end point and aEndItem as the final anchor (if provided).

Returns
true if route has been committed. May return false if the routing result is violating design rules. In such cases, the track is only committed if #Settings.CanViolateDRC() is on.

Implements PNS::PLACEMENT_ALGO.

Definition at line 782 of file pns_diff_pair_placer.cpp.

References PNS::NODE::Add(), PNS::Clone(), PNS::DIFF_PAIR::CN(), CommitPlacement(), PNS::DIFF_PAIR::CP(), SHAPE_LINE_CHAIN::CSegment(), PNS::DIFF_PAIR::EndingPrimitives(), PNS::DIFF_PAIR::EndsWithVias(), initPlacement(), DIRECTION_45::IsDiagonal(), m_chainedPlacement, m_currentTrace, m_fitOk, m_idle, m_initialDiagonal, m_lastNode, m_placingVia, m_prevPair, m_snapOnTarget, PNS::DIFF_PAIR::NLine(), PNS::DIFF_PAIR::PLine(), SHAPE_LINE_CHAIN::Remove(), SHAPE_LINE_CHAIN::SegmentCount(), PNS::DIFF_PAIR::SetShape(), PNS::ALGO_BASE::Settings(), PNS::TOPOLOGY::SimplifyLine(), and PNS::LINE::Via().

◆ FlipPosture()

void PNS::DIFF_PAIR_PLACER::FlipPosture ( )
overridevirtual

Toggle the current posture (straight/diagonal) of the trace head.

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 402 of file pns_diff_pair_placer.cpp.

References m_currentEnd, m_idle, m_startDiagonal, and Move().

◆ gap()

int PNS::DIFF_PAIR_PLACER::gap ( ) const
private

◆ GetModifiedNets()

void PNS::DIFF_PAIR_PLACER::GetModifiedNets ( std::vector< NET_HANDLE > &  aNets) const
overridevirtual

Function GetModifiedNets.

Returns the nets of all currently routed trace(s)

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 872 of file pns_diff_pair_placer.cpp.

References m_netN, and m_netP.

◆ HasPlacedAnything()

bool PNS::DIFF_PAIR_PLACER::HasPlacedAnything ( ) const
overridevirtual

◆ initPlacement()

void PNS::DIFF_PAIR_PLACER::initPlacement ( )
private

◆ IsPlacingVia()

bool PNS::DIFF_PAIR_PLACER::IsPlacingVia ( ) const
inlineoverridevirtual

Function IsPlacingVia()

Returns true if the placer is placing a via (or more vias).

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 153 of file pns_diff_pair_placer.h.

References m_placingVia.

◆ Logger()

◆ makeVia()

◆ Move()

bool PNS::DIFF_PAIR_PLACER::Move ( const VECTOR2I aP,
ITEM aEndItem 
)
overridevirtual

Move the end of the currently routed trace to the point aP, taking aEndItem as anchor (if not NULL).

Implements PNS::PLACEMENT_ALGO.

Definition at line 742 of file pns_diff_pair_placer.cpp.

References PNS::NODE::Branch(), m_currentEnd, m_currentEndItem, m_currentNode, m_fitOk, m_lastNode, route(), and updateLeadingRatLine().

Referenced by FlipPosture(), SetLayer(), SetOrthoMode(), and ToggleVia().

◆ propagateDpHeadForces()

◆ rhMarkObstacles()

bool PNS::DIFF_PAIR_PLACER::rhMarkObstacles ( const VECTOR2I aP)
private

◆ rhShoveOnly()

bool PNS::DIFF_PAIR_PLACER::rhShoveOnly ( const VECTOR2I aP)
private

◆ rhWalkOnly()

bool PNS::DIFF_PAIR_PLACER::rhWalkOnly ( const VECTOR2I aP)
private

route step, shove mode

Definition at line 322 of file pns_diff_pair_placer.cpp.

References m_currentNode, m_currentTrace, m_fitOk, routeHead(), and tryWalkDp().

Referenced by route().

◆ route()

bool PNS::DIFF_PAIR_PLACER::route ( const VECTOR2I aP)
private

Re-route the current track to point aP.

Returns true, when routing has completed successfully (i.e. the trace end has reached point aP), and false if the trace was stuck somewhere on the way. May call routeStep() repetitively due to mouse smoothing.

Parameters
aPis the ending point of current route.
Returns
true if the routing is complete.

Definition at line 333 of file pns_diff_pair_placer.cpp.

References rhMarkObstacles(), rhShoveOnly(), rhWalkOnly(), PNS::RM_MarkObstacles, PNS::RM_Shove, PNS::RM_Walkaround, and PNS::ALGO_BASE::Settings().

Referenced by Move().

◆ routeHead()

◆ Router()

◆ SetDebugDecorator()

void PNS::ALGO_BASE::SetDebugDecorator ( DEBUG_DECORATOR aDecorator)
inlineinherited

Assign a debug decorator allowing this algo to draw extra graphics for visual debugging.

Definition at line 73 of file pns_algo_base.h.

References PNS::ALGO_BASE::m_debugDecorator.

Referenced by PNS::SHOVE::onCollidingSolid(), PNS::LINE_PLACER::rhWalkBase(), PNS::SHOVE::SHOVE(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().

◆ setInitialDirection()

void PNS::DIFF_PAIR_PLACER::setInitialDirection ( const DIRECTION_45 aDirection)
private

Set preferred direction of the very first track segment to be laid.

Used by posture switching mechanism.

◆ SetLayer()

bool PNS::DIFF_PAIR_PLACER::SetLayer ( int  aLayer)
overridevirtual

Set the current routing layer.

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 420 of file pns_diff_pair_placer.cpp.

References initPlacement(), m_chainedPlacement, m_currentEnd, m_currentLayer, m_idle, m_prevPair, m_start, Move(), and PNS::ITEM::VIA_T.

◆ SetLogger()

void PNS::ALGO_BASE::SetLogger ( LOGGER aLogger)
inlineinherited

◆ SetOrthoMode()

void PNS::DIFF_PAIR_PLACER::SetOrthoMode ( bool  aOrthoMode)
overridevirtual

Function SetOrthoMode()

Forces the router to place a straight 90/45 degree trace (with the end as near to the cursor as possible) instead of a standard 135 degree two-segment bend.

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 81 of file pns_diff_pair_placer.cpp.

References m_currentEnd, m_idle, m_orthoMode, and Move().

◆ Settings()

◆ setWorld()

void PNS::DIFF_PAIR_PLACER::setWorld ( NODE aWorld)
private

Set the board to route.

Definition at line 65 of file pns_diff_pair_placer.cpp.

References m_world.

Referenced by initPlacement(), and Start().

◆ Start()

bool PNS::DIFF_PAIR_PLACER::Start ( const VECTOR2I aP,
ITEM aStartItem 
)
overridevirtual

◆ ToggleVia()

bool PNS::DIFF_PAIR_PLACER::ToggleVia ( bool  aEnabled)
overridevirtual

Enable/disable a via at the end of currently routed trace.

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 90 of file pns_diff_pair_placer.cpp.

References m_currentEnd, m_idle, m_placingVia, and Move().

◆ Traces()

const ITEM_SET PNS::DIFF_PAIR_PLACER::Traces ( )
overridevirtual

Return the complete routed line, as a single-member ITEM_SET.

Implements PNS::PLACEMENT_ALGO.

Definition at line 391 of file pns_diff_pair_placer.cpp.

References PNS::ITEM_SET::Add(), m_currentTrace, PNS::DIFF_PAIR::NLine(), and PNS::DIFF_PAIR::PLine().

◆ tryWalkDp()

bool PNS::DIFF_PAIR_PLACER::tryWalkDp ( NODE aNode,
DIFF_PAIR aPair,
bool  aSolidsOnly 
)
private

◆ UnfixRoute()

virtual std::optional< VECTOR2I > PNS::PLACEMENT_ALGO::UnfixRoute ( )
inlinevirtualinherited

Reimplemented in PNS::LINE_PLACER.

Definition at line 81 of file pns_placement_algo.h.

◆ updateLeadingRatLine()

void PNS::DIFF_PAIR_PLACER::updateLeadingRatLine ( )
private

Draw the "leading" ratsnest line, which connects the end of currently routed track and the nearest yet unrouted item.

If the routing for current net is complete, draws nothing.

Definition at line 879 of file pns_diff_pair_placer.cpp.

References PNS::ROUTER_IFACE::DisplayRatline(), PNS::ROUTER::GetInterface(), PNS::TOPOLOGY::LeadingRatLine(), m_currentTrace, m_lastNode, m_netN, m_netP, PNS::ALGO_BASE::m_router, PNS::DIFF_PAIR::NLine(), and PNS::DIFF_PAIR::PLine().

Referenced by Move().

◆ UpdateSizes()

void PNS::DIFF_PAIR_PLACER::UpdateSizes ( const SIZES_SETTINGS aSizes)
overridevirtual

Perform on-the-fly update of the width, via diameter & drill size from a settings class.

Used to dynamically change these parameters as the track is routed.

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 764 of file pns_diff_pair_placer.cpp.

References PNS::SIZES_SETTINGS::DiffPairGap(), PNS::SIZES_SETTINGS::DiffPairWidth(), PNS::DIFF_PAIR::EndsWithVias(), m_currentTrace, m_idle, m_sizes, PNS::DIFF_PAIR::SetGap(), PNS::DIFF_PAIR::SetViaDiameter(), PNS::DIFF_PAIR::SetViaDrill(), PNS::DIFF_PAIR::SetWidth(), PNS::SIZES_SETTINGS::ViaDiameter(), and PNS::SIZES_SETTINGS::ViaDrill().

◆ viaGap()

◆ VisibleViewArea()

const BOX2I & PNS::ALGO_BASE::VisibleViewArea ( ) const
inherited

Definition at line 40 of file pns_algo_base.cpp.

References PNS::ALGO_BASE::m_router, and PNS::ROUTER::VisibleViewArea().

Referenced by PNS::SHOVE::runOptimizer().

Member Data Documentation

◆ m_chainedPlacement

bool PNS::DIFF_PAIR_PLACER::m_chainedPlacement
private

Definition at line 225 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER(), FixRoute(), SetLayer(), and Start().

◆ m_currentEnd

VECTOR2I PNS::DIFF_PAIR_PLACER::m_currentEnd
private

◆ m_currentEndItem

ITEM* PNS::DIFF_PAIR_PLACER::m_currentEndItem
private

Definition at line 277 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER(), initPlacement(), Move(), and routeHead().

◆ m_currentLayer

int PNS::DIFF_PAIR_PLACER::m_currentLayer
private

◆ m_currentNode

NODE* PNS::DIFF_PAIR_PLACER::m_currentNode
private

Postprocessed world state (including marked collisions & removed loops)

Definition at line 248 of file pns_diff_pair_placer.h.

Referenced by CommitPlacement(), CurrentNode(), DIFF_PAIR_PLACER(), initPlacement(), Move(), propagateDpHeadForces(), rhMarkObstacles(), rhShoveOnly(), rhWalkOnly(), routeHead(), Start(), and tryWalkDp().

◆ m_currentStart

VECTOR2I PNS::DIFF_PAIR_PLACER::m_currentStart
private

Definition at line 273 of file pns_diff_pair_placer.h.

Referenced by CurrentStart(), and Start().

◆ m_currentTrace

◆ m_currentTraceOk

bool PNS::DIFF_PAIR_PLACER::m_currentTraceOk
private

Definition at line 275 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER(), routeHead(), and Start().

◆ m_currentWidth

int PNS::DIFF_PAIR_PLACER::m_currentWidth
private

Definition at line 265 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER().

◆ m_debugDecorator

DEBUG_DECORATOR* PNS::ALGO_BASE::m_debugDecorator
protectedinherited

Definition at line 86 of file pns_algo_base.h.

Referenced by PNS::ALGO_BASE::Dbg(), and PNS::ALGO_BASE::SetDebugDecorator().

◆ m_fitOk

bool PNS::DIFF_PAIR_PLACER::m_fitOk
private

◆ m_idle

bool PNS::DIFF_PAIR_PLACER::m_idle
private

◆ m_initialDiagonal

bool PNS::DIFF_PAIR_PLACER::m_initialDiagonal
private

Definition at line 226 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER(), FixRoute(), and initPlacement().

◆ m_iteration

int PNS::DIFF_PAIR_PLACER::m_iteration
private

pointer to world to search colliding items

Definition at line 236 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER().

◆ m_lastNode

NODE* PNS::DIFF_PAIR_PLACER::m_lastNode
private

◆ m_logger

LOGGER* PNS::ALGO_BASE::m_logger
protectedinherited

Definition at line 88 of file pns_algo_base.h.

Referenced by PNS::ALGO_BASE::Logger(), and PNS::ALGO_BASE::SetLogger().

◆ m_netN

NET_HANDLE PNS::DIFF_PAIR_PLACER::m_netN
private

◆ m_netP

NET_HANDLE PNS::DIFF_PAIR_PLACER::m_netP
private

◆ m_orthoMode

bool PNS::DIFF_PAIR_PLACER::m_orthoMode
private

Definition at line 270 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER(), initPlacement(), and SetOrthoMode().

◆ m_p_start

VECTOR2I PNS::DIFF_PAIR_PLACER::m_p_start
private

The shove engine.

Definition at line 242 of file pns_diff_pair_placer.h.

◆ m_placingVia

bool PNS::DIFF_PAIR_PLACER::m_placingVia
private

current via diameter

Definition at line 256 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER(), FixRoute(), IsPlacingVia(), propagateDpHeadForces(), routeHead(), Start(), and ToggleVia().

◆ m_prevPair

std::optional<DP_PRIMITIVE_PAIR> PNS::DIFF_PAIR_PLACER::m_prevPair
private

current algorithm iteration

Definition at line 233 of file pns_diff_pair_placer.h.

Referenced by FixRoute(), routeHead(), and SetLayer().

◆ m_router

◆ m_shove

std::unique_ptr<SHOVE> PNS::DIFF_PAIR_PLACER::m_shove
private

Current world state.

Definition at line 245 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER(), initPlacement(), and rhShoveOnly().

◆ m_sizes

SIZES_SETTINGS PNS::DIFF_PAIR_PLACER::m_sizes
private

Are we placing a via?

Definition at line 253 of file pns_diff_pair_placer.h.

Referenced by gap(), makeVia(), propagateDpHeadForces(), routeHead(), UpdateSizes(), and viaGap().

◆ m_snapOnTarget

bool PNS::DIFF_PAIR_PLACER::m_snapOnTarget
private

Definition at line 271 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER(), FixRoute(), and routeHead().

◆ m_start

DP_PRIMITIVE_PAIR PNS::DIFF_PAIR_PLACER::m_start
private

Definition at line 232 of file pns_diff_pair_placer.h.

Referenced by routeHead(), SetLayer(), and Start().

◆ m_startDiagonal

bool PNS::DIFF_PAIR_PLACER::m_startDiagonal
private

Definition at line 227 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER(), FlipPosture(), initPlacement(), and routeHead().

◆ m_startsOnVia

bool PNS::DIFF_PAIR_PLACER::m_startsOnVia
private

Definition at line 269 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER().

◆ m_state

State PNS::DIFF_PAIR_PLACER::m_state
private

Definition at line 223 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER().

◆ m_viaDiameter

int PNS::DIFF_PAIR_PLACER::m_viaDiameter
private

current via drill

Definition at line 259 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER().

◆ m_viaDrill

int PNS::DIFF_PAIR_PLACER::m_viaDrill
private

current track width

Definition at line 262 of file pns_diff_pair_placer.h.

Referenced by DIFF_PAIR_PLACER().

◆ m_world

NODE* PNS::DIFF_PAIR_PLACER::m_world
private

current routing start point (end of tail, beginning of head)

Definition at line 239 of file pns_diff_pair_placer.h.

Referenced by AbortPlacement(), DIFF_PAIR_PLACER(), setWorld(), and Start().


The documentation for this class was generated from the following files: