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

Differential Pair length-matching/meandering tool. More...

#include <pns_dp_meander_placer.h>

Inheritance diagram for PNS::DP_MEANDER_PLACER:
PNS::MEANDER_PLACER_BASE PNS::PLACEMENT_ALGO PNS::ALGO_BASE

Public Types

enum  TUNING_STATUS { TOO_SHORT = 0 , TOO_LONG , TUNED }
 < Result of the length tuning operation More...
 

Public Member Functions

 DP_MEANDER_PLACER (ROUTER *aRouter)
 
 ~DP_MEANDER_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=false) 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
 
const LINE Trace () const
 
const DIFF_PAIRGetOriginPair ()
 
NODECurrentNode (bool aLoopsRemoved=false) const override
 Return the most recent world state.
 
const ITEM_SET Traces () override
 Function Traces()
 
const ITEM_SET TunedPath () override
 
const VECTOR2ICurrentStart () const override
 Function CurrentStart()
 
const VECTOR2ICurrentEnd () const override
 Function CurrentEnd()
 
const std::vector< NET_HANDLECurrentNets () const override
 Function CurrentNets()
 
int CurrentLayer () const override
 Function CurrentLayer()
 
long long int totalLength ()
 
long long int TuningResult () const override
 Return the resultant length or skew of the tuned traces.
 
TUNING_STATUS TuningStatus () const override
 Return the tuning status (too short, too long, etc.) of the trace(s) being tuned.
 
bool CheckFit (MEANDER_SHAPE *aShape) override
 Checks if it's OK to place the shape aShape (i.e.
 
virtual void AmplitudeStep (int aSign)
 Increase/decreases the current meandering amplitude by one step.
 
virtual void SpacingStep (int aSign)
 Increase/decrease the current meandering spacing by one step.
 
virtual int Clearance ()
 Return the clearance of the track(s) being length tuned.
 
virtual const MEANDER_SETTINGSMeanderSettings () const
 Return the current meandering configuration.
 
virtual void UpdateSettings (const MEANDER_SETTINGS &aSettings)
 
int GetTotalPadToDieLength (const LINE &aLine) const
 
virtual std::optional< VECTOR2IUnfixRoute ()
 
virtual bool ToggleVia (bool aEnabled)
 Function ToggleVia()
 
virtual bool IsPlacingVia () const
 Function IsPlacingVia()
 
virtual bool SetLayer (int aLayer)
 Function SetLayer()
 
virtual void FlipPosture ()
 Function FlipPosture()
 
virtual void UpdateSizes (const SIZES_SETTINGS &aSizes)
 Function UpdateSizes()
 
virtual void SetOrthoMode (bool aOrthoMode)
 Function SetOrthoMode()
 
virtual void GetModifiedNets (std::vector< NET_HANDLE > &aNets) const
 Function GetModifiedNets.
 
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
 

Protected Member Functions

void tuneLineLength (MEANDERED_LINE &aTuned, long long int aElongation)
 Take a set of meanders in aTuned and tunes their length to extend the original line length by aElongation.
 
VECTOR2I getSnappedStartPoint (LINKED_ITEM *aStartItem, VECTOR2I aStartPoint)
 
long long int lineLength (const ITEM_SET &aLine, const SOLID *aStartPad, const SOLID *aEndPad) const
 Calculate the total length of the line represented by an item set (tracks and vias)
 

Protected Attributes

NODEm_world
 Width of the meandered trace(s).
 
int m_currentWidth
 Meander settings.
 
MEANDER_SETTINGS m_settings
 The current end point.
 
VECTOR2I m_currentEnd
 
SOLIDm_startPad_p
 
SOLIDm_endPad_p
 
SOLIDm_startPad_n
 
SOLIDm_endPad_n
 
DEBUG_DECORATORm_debugDecorator
 
ROUTERm_router
 
LOGGERm_logger
 

Private Member Functions

void meanderSegment (const SEG &aBase)
 
const SEG baselineSegment (const DIFF_PAIR::COUPLED_SEGMENTS &aCoupledSegs)
 
bool pairOrientation (const DIFF_PAIR::COUPLED_SEGMENTS &aPair)
 
void setWorld (NODE *aWorld)
 
void release ()
 
long long int origPathLength () const
 Current routing start point (end of tail, beginning of head).
 

Private Attributes

VECTOR2I m_currentStart
 Current world state.
 
NODEm_currentNode
 
DIFF_PAIR m_originPair
 
DIFF_PAIR::COUPLED_SEGMENTS_VEC m_coupledSegments
 
LINE m_currentTraceN
 
LINE m_currentTraceP
 
ITEM_SET m_tunedPath
 
ITEM_SET m_tunedPathP
 
ITEM_SET m_tunedPathN
 
SHAPE_LINE_CHAIN m_finalShapeP
 
SHAPE_LINE_CHAIN m_finalShapeN
 
MEANDERED_LINE m_result
 
LINKED_ITEMm_initialSegment
 
long long int m_lastLength
 
int m_padToDieP
 
int m_padToDieN
 
TUNING_STATUS m_lastStatus
 

Friends

class MEANDER_SHAPE
 

Detailed Description

Differential Pair length-matching/meandering tool.

Definition at line 48 of file pns_dp_meander_placer.h.

Member Enumeration Documentation

◆ TUNING_STATUS

< Result of the length tuning operation

Enumerator
TOO_SHORT 
TOO_LONG 
TUNED 

Definition at line 49 of file pns_meander_placer_base.h.

Constructor & Destructor Documentation

◆ DP_MEANDER_PLACER()

PNS::DP_MEANDER_PLACER::DP_MEANDER_PLACER ( ROUTER aRouter)

◆ ~DP_MEANDER_PLACER()

PNS::DP_MEANDER_PLACER::~DP_MEANDER_PLACER ( )

Definition at line 50 of file pns_dp_meander_placer.cpp.

Member Function Documentation

◆ AbortPlacement()

bool PNS::DP_MEANDER_PLACER::AbortPlacement ( )
overridevirtual

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 414 of file pns_dp_meander_placer.cpp.

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

◆ AmplitudeStep()

void PNS::MEANDER_PLACER_BASE::AmplitudeStep ( int  aSign)
virtualinherited

Increase/decreases the current meandering amplitude by one step.

Parameters
aSigndirection (negative = decrease, positive = increase).

Definition at line 49 of file pns_meander_placer_base.cpp.

References PNS::MEANDER_SETTINGS::m_maxAmplitude, PNS::MEANDER_SETTINGS::m_minAmplitude, PNS::MEANDER_PLACER_BASE::m_settings, and PNS::MEANDER_SETTINGS::m_step.

Referenced by DRAWING_TOOL::PlaceTuningPattern().

◆ baselineSegment()

const SEG PNS::DP_MEANDER_PLACER::baselineSegment ( const DIFF_PAIR::COUPLED_SEGMENTS aCoupledSegs)
private

◆ CheckFit()

bool PNS::DP_MEANDER_PLACER::CheckFit ( MEANDER_SHAPE aShape)
overridevirtual

Checks if it's OK to place the shape aShape (i.e.

if it doesn't cause DRC violations or collide with other meanders).

Parameters
aShapethe shape to check.
Returns
true if the shape fits.

Reimplemented from PNS::MEANDER_PLACER_BASE.

Definition at line 437 of file pns_dp_meander_placer.cpp.

References PNS::NODE::CheckColliding(), PNS::MEANDERED_LINE::CheckSelfIntersections(), PNS::MEANDER_SHAPE::CLine(), m_currentNode, m_originPair, m_result, PNS::DIFF_PAIR::NLine(), PNS::DIFF_PAIR::PLine(), and PNS::MEANDER_SHAPE::Width().

◆ Clearance()

◆ CommitPlacement()

bool PNS::DP_MEANDER_PLACER::CommitPlacement ( )
overridevirtual

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 427 of file pns_dp_meander_placer.cpp.

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

Referenced by FixRoute().

◆ CurrentEnd()

const VECTOR2I & PNS::DP_MEANDER_PLACER::CurrentEnd ( ) const
overridevirtual

Function CurrentEnd()

Returns the current end of the line(s) being placed/tuned. It may not be equal to the cursor position due to collisions.

Implements PNS::PLACEMENT_ALGO.

Definition at line 489 of file pns_dp_meander_placer.cpp.

References PNS::MEANDER_PLACER_BASE::m_currentEnd.

◆ CurrentLayer()

int PNS::DP_MEANDER_PLACER::CurrentLayer ( ) const
overridevirtual

Function CurrentLayer()

Returns the layer of currently routed track.

Implements PNS::PLACEMENT_ALGO.

Definition at line 495 of file pns_dp_meander_placer.cpp.

References PNS::ITEM::Layers(), m_initialSegment, and PNS_LAYER_RANGE::Start().

◆ CurrentNets()

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

Function CurrentNets()

Returns the net(s) of currently routed track(s).

Implements PNS::PLACEMENT_ALGO.

Definition at line 516 of file pns_dp_meander_placer.cpp.

References m_originPair, PNS::DIFF_PAIR::NetN(), and PNS::DIFF_PAIR::NetP().

◆ CurrentNode()

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

Return the most recent world state.

Implements PNS::PLACEMENT_ALGO.

Definition at line 67 of file pns_dp_meander_placer.cpp.

References m_currentNode, and PNS::MEANDER_PLACER_BASE::m_world.

◆ CurrentStart()

const VECTOR2I & PNS::DP_MEANDER_PLACER::CurrentStart ( ) const
overridevirtual

Function CurrentStart()

Returns the current start of the line(s) being placed/tuned.

Implements PNS::PLACEMENT_ALGO.

Definition at line 483 of file pns_dp_meander_placer.cpp.

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(), 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().

◆ FixRoute()

bool PNS::DP_MEANDER_PLACER::FixRoute ( const VECTOR2I aP,
ITEM aEndItem,
bool  aForceFinish = false 
)
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 400 of file pns_dp_meander_placer.cpp.

References PNS::NODE::Add(), CommitPlacement(), m_currentNode, m_finalShapeN, m_finalShapeP, m_originPair, PNS::DIFF_PAIR::NLine(), and PNS::DIFF_PAIR::PLine().

◆ FlipPosture()

virtual void PNS::PLACEMENT_ALGO::FlipPosture ( )
inlinevirtualinherited

Function FlipPosture()

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

Reimplemented in PNS::DIFF_PAIR_PLACER, and PNS::LINE_PLACER.

Definition at line 167 of file pns_placement_algo.h.

◆ GetModifiedNets()

virtual void PNS::PLACEMENT_ALGO::GetModifiedNets ( std::vector< NET_HANDLE > &  aNets) const
inlinevirtualinherited

Function GetModifiedNets.

Returns the nets of all currently routed trace(s)

Reimplemented in PNS::DIFF_PAIR_PLACER, and PNS::LINE_PLACER.

Definition at line 198 of file pns_placement_algo.h.

◆ GetOriginPair()

const DIFF_PAIR & PNS::DP_MEANDER_PLACER::GetOriginPair ( )

Definition at line 61 of file pns_dp_meander_placer.cpp.

References m_originPair.

◆ getSnappedStartPoint()

VECTOR2I PNS::MEANDER_PLACER_BASE::getSnappedStartPoint ( LINKED_ITEM aStartItem,
VECTOR2I  aStartPoint 
)
protectedinherited

◆ GetTotalPadToDieLength()

int PNS::MEANDER_PLACER_BASE::GetTotalPadToDieLength ( const LINE aLine) const
inherited

◆ HasPlacedAnything()

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

◆ IsPlacingVia()

virtual bool PNS::PLACEMENT_ALGO::IsPlacingVia ( ) const
inlinevirtualinherited

Function IsPlacingVia()

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

Reimplemented in PNS::DIFF_PAIR_PLACER, and PNS::LINE_PLACER.

Definition at line 104 of file pns_placement_algo.h.

◆ lineLength()

long long int PNS::MEANDER_PLACER_BASE::lineLength ( const ITEM_SET aLine,
const SOLID aStartPad,
const SOLID aEndPad 
) const
protectedinherited

Calculate the total length of the line represented by an item set (tracks and vias)

Parameters
aLine
Returns
Pointer to world to search colliding items.

If there is a start pad but the pad's layers do not overlap the first track layer, then there must be a fanout via on the line. If there isn't, we still need to have the via back to the pad, so count the distance in the line tuning

Definition at line 322 of file pns_meander_placer_base.cpp.

References PNS::ITEM_SET::Empty(), PNS::ROUTER::GetInterface(), PNS::ITEM::Layer(), PNS::ITEM::LayersOverlap(), PNS::ALGO_BASE::m_router, PNS::ITEM::OfKind(), PNS::ITEM_SET::Size(), PNS::ROUTER_IFACE::StackupHeight(), and PNS::ITEM::VIA_T.

Referenced by origPathLength(), PNS::MEANDER_PLACER::origPathLength(), PNS::MEANDER_SKEW_PLACER::origPathLength(), and PNS::MEANDER_SKEW_PLACER::Start().

◆ Logger()

◆ meanderSegment()

void PNS::DP_MEANDER_PLACER::meanderSegment ( const SEG aBase)
private

◆ MeanderSettings()

const MEANDER_SETTINGS & PNS::MEANDER_PLACER_BASE::MeanderSettings ( ) const
virtualinherited

◆ Move()

bool PNS::DP_MEANDER_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 168 of file pns_dp_meander_placer.cpp.

References PNS::MEANDERED_LINE::AddArcAndPt(), PNS::MEANDERED_LINE::AddCorner(), PNS::MEANDERED_LINE::AddPtAndArc(), SHAPE_LINE_CHAIN::Append(), SHAPE_LINE_CHAIN::Arc(), SHAPE_LINE_CHAIN::ArcIndex(), baselineSegment(), PNS::NODE::Branch(), PNS::ITEM_SET::CItems(), SHAPE_LINE_CHAIN::Clear(), PNS::DIFF_PAIR::CN(), PNS::DIFF_PAIR::CoupledSegmentPairs(), PNS::DIFF_PAIR::CP(), SHAPE_LINE_CHAIN::CPoint(), PNS::ALGO_BASE::Dbg(), PNS::ROUTER_IFACE::DisplayPathLine(), PNS::DIFF_PAIR::Gap(), PNS::ROUTER::GetInterface(), GREEN, SHAPE_LINE_CHAIN::IsArcSegment(), SHAPE_LINE_CHAIN::Length(), m_currentNode, m_currentStart, m_finalShapeN, m_finalShapeP, PNS::MEANDER_SETTINGS::m_initialSide, PNS::MEANDER_SETTINGS::m_keepEndpoints, m_lastLength, m_lastStatus, m_originPair, m_result, PNS::ALGO_BASE::m_router, PNS::MEANDER_PLACER_BASE::m_settings, PNS::MEANDER_SETTINGS::m_targetLength, m_tunedPathN, m_tunedPathP, PNS::MEANDER_PLACER_BASE::m_world, MINOPTMAX< T >::Max(), PNS::MEANDERED_LINE::Meanders(), PNS::MEANDERED_LINE::MeanderSegment(), MINOPTMAX< T >::Min(), PNS::MT_EMPTY, SHAPE_LINE_CHAIN::NextShape(), MINOPTMAX< T >::Opt(), origPathLength(), pairOrientation(), PNS_DBG, SHAPE_LINE_CHAIN::PointCount(), PNS::MEANDERED_LINE::SetBaselineOffset(), PNS::DIFF_PAIR::SetShape(), PNS::MEANDERED_LINE::SetWidth(), SEG::Side(), SHAPE_LINE_CHAIN::Simplify(), SHAPE_LINE_CHAIN::Split(), PNS::MEANDER_PLACER_BASE::TOO_LONG, PNS::MEANDER_PLACER_BASE::TOO_SHORT, PNS::MEANDER_PLACER_BASE::TUNED, PNS::MEANDER_PLACER_BASE::tuneLineLength(), PNS::DIFF_PAIR::Width(), and YELLOW.

◆ origPathLength()

long long int PNS::DP_MEANDER_PLACER::origPathLength ( ) const
private

◆ pairOrientation()

bool PNS::DP_MEANDER_PLACER::pairOrientation ( const DIFF_PAIR::COUPLED_SEGMENTS aPair)
private

◆ release()

void PNS::DP_MEANDER_PLACER::release ( )
private

Definition at line 136 of file pns_dp_meander_placer.cpp.

◆ 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().

◆ SetLayer()

virtual bool PNS::PLACEMENT_ALGO::SetLayer ( int  aLayer)
inlinevirtualinherited

Function SetLayer()

Sets the current routing layer.

Reimplemented in PNS::DIFF_PAIR_PLACER, and PNS::LINE_PLACER.

Definition at line 114 of file pns_placement_algo.h.

◆ SetLogger()

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

◆ SetOrthoMode()

virtual void PNS::PLACEMENT_ALGO::SetOrthoMode ( bool  aOrthoMode)
inlinevirtualinherited

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 in PNS::DIFF_PAIR_PLACER, and PNS::LINE_PLACER.

Definition at line 189 of file pns_placement_algo.h.

◆ Settings()

◆ setWorld()

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

◆ SpacingStep()

void PNS::MEANDER_PLACER_BASE::SpacingStep ( int  aSign)
virtualinherited

Increase/decrease the current meandering spacing by one step.

Parameters
aSigndirection (negative = decrease, positive = increase).

Definition at line 58 of file pns_meander_placer_base.cpp.

References PNS::MEANDER_PLACER_BASE::Clearance(), PNS::MEANDER_PLACER_BASE::m_currentWidth, PNS::MEANDER_PLACER_BASE::m_settings, PNS::MEANDER_SETTINGS::m_spacing, and PNS::MEANDER_SETTINGS::m_step.

Referenced by DRAWING_TOOL::PlaceTuningPattern().

◆ Start()

◆ ToggleVia()

virtual bool PNS::PLACEMENT_ALGO::ToggleVia ( bool  aEnabled)
inlinevirtualinherited

Function ToggleVia()

Enables/disables a via at the end of currently routed trace.

Reimplemented in PNS::DIFF_PAIR_PLACER, and PNS::LINE_PLACER.

Definition at line 94 of file pns_placement_algo.h.

◆ totalLength()

long long int PNS::DP_MEANDER_PLACER::totalLength ( )

◆ Trace()

const LINE PNS::DP_MEANDER_PLACER::Trace ( ) const

Definition at line 55 of file pns_dp_meander_placer.cpp.

References m_currentTraceP.

◆ Traces()

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

◆ TunedPath()

const ITEM_SET PNS::DP_MEANDER_PLACER::TunedPath ( )
overridevirtual

Implements PNS::MEANDER_PLACER_BASE.

Definition at line 469 of file pns_dp_meander_placer.cpp.

References PNS::ITEM_SET::Add(), m_tunedPathN, and m_tunedPathP.

◆ tuneLineLength()

void PNS::MEANDER_PLACER_BASE::tuneLineLength ( MEANDERED_LINE aTuned,
long long int  aElongation 
)
protectedinherited

◆ TuningResult()

long long int PNS::DP_MEANDER_PLACER::TuningResult ( ) const
overridevirtual

Return the resultant length or skew of the tuned traces.

Implements PNS::MEANDER_PLACER_BASE.

Definition at line 501 of file pns_dp_meander_placer.cpp.

References m_lastLength, and origPathLength().

◆ TuningStatus()

DP_MEANDER_PLACER::TUNING_STATUS PNS::DP_MEANDER_PLACER::TuningStatus ( ) const
overridevirtual

Return the tuning status (too short, too long, etc.) of the trace(s) being tuned.

Implements PNS::MEANDER_PLACER_BASE.

Definition at line 510 of file pns_dp_meander_placer.cpp.

References m_lastStatus.

◆ 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.

◆ UpdateSettings()

void PNS::MEANDER_PLACER_BASE::UpdateSettings ( const MEANDER_SETTINGS aSettings)
virtualinherited

◆ UpdateSizes()

virtual void PNS::PLACEMENT_ALGO::UpdateSizes ( const SIZES_SETTINGS aSizes)
inlinevirtualinherited

Function UpdateSizes()

Performs 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 in PNS::DIFF_PAIR_PLACER, and PNS::LINE_PLACER.

Definition at line 178 of file pns_placement_algo.h.

◆ 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().

Friends And Related Function Documentation

◆ MEANDER_SHAPE

friend class MEANDER_SHAPE
friend

Definition at line 118 of file pns_dp_meander_placer.h.

Member Data Documentation

◆ m_coupledSegments

DIFF_PAIR::COUPLED_SEGMENTS_VEC PNS::DP_MEANDER_PLACER::m_coupledSegments
private

Definition at line 140 of file pns_dp_meander_placer.h.

◆ m_currentEnd

VECTOR2I PNS::MEANDER_PLACER_BASE::m_currentEnd
protectedinherited

◆ m_currentNode

NODE* PNS::DP_MEANDER_PLACER::m_currentNode
private

◆ m_currentStart

VECTOR2I PNS::DP_MEANDER_PLACER::m_currentStart
private

Current world state.

Definition at line 134 of file pns_dp_meander_placer.h.

Referenced by CurrentStart(), Move(), and Start().

◆ m_currentTraceN

LINE PNS::DP_MEANDER_PLACER::m_currentTraceN
private

Definition at line 142 of file pns_dp_meander_placer.h.

Referenced by Traces().

◆ m_currentTraceP

LINE PNS::DP_MEANDER_PLACER::m_currentTraceP
private

Definition at line 142 of file pns_dp_meander_placer.h.

Referenced by Trace(), and Traces().

◆ m_currentWidth

◆ 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_endPad_n

◆ m_endPad_p

◆ m_finalShapeN

SHAPE_LINE_CHAIN PNS::DP_MEANDER_PLACER::m_finalShapeN
private

Definition at line 145 of file pns_dp_meander_placer.h.

Referenced by FixRoute(), Move(), and Traces().

◆ m_finalShapeP

SHAPE_LINE_CHAIN PNS::DP_MEANDER_PLACER::m_finalShapeP
private

Definition at line 145 of file pns_dp_meander_placer.h.

Referenced by FixRoute(), Move(), and Traces().

◆ m_initialSegment

LINKED_ITEM* PNS::DP_MEANDER_PLACER::m_initialSegment
private

Definition at line 147 of file pns_dp_meander_placer.h.

Referenced by CurrentLayer(), DP_MEANDER_PLACER(), and Start().

◆ m_lastLength

long long int PNS::DP_MEANDER_PLACER::m_lastLength
private

Definition at line 149 of file pns_dp_meander_placer.h.

Referenced by DP_MEANDER_PLACER(), Move(), and TuningResult().

◆ m_lastStatus

TUNING_STATUS PNS::DP_MEANDER_PLACER::m_lastStatus
private

Definition at line 152 of file pns_dp_meander_placer.h.

Referenced by DP_MEANDER_PLACER(), Move(), and TuningStatus().

◆ 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_originPair

DIFF_PAIR PNS::DP_MEANDER_PLACER::m_originPair
private

◆ m_padToDieN

int PNS::DP_MEANDER_PLACER::m_padToDieN
private

Definition at line 151 of file pns_dp_meander_placer.h.

Referenced by DP_MEANDER_PLACER(), origPathLength(), and Start().

◆ m_padToDieP

int PNS::DP_MEANDER_PLACER::m_padToDieP
private

Definition at line 150 of file pns_dp_meander_placer.h.

Referenced by DP_MEANDER_PLACER(), origPathLength(), and Start().

◆ m_result

MEANDERED_LINE PNS::DP_MEANDER_PLACER::m_result
private

Definition at line 146 of file pns_dp_meander_placer.h.

Referenced by CheckFit(), and Move().

◆ m_router

◆ m_settings

◆ m_startPad_n

◆ m_startPad_p

SOLID* PNS::MEANDER_PLACER_BASE::m_startPad_p
protectedinherited

◆ m_tunedPath

ITEM_SET PNS::DP_MEANDER_PLACER::m_tunedPath
private

Definition at line 143 of file pns_dp_meander_placer.h.

◆ m_tunedPathN

ITEM_SET PNS::DP_MEANDER_PLACER::m_tunedPathN
private

Definition at line 143 of file pns_dp_meander_placer.h.

Referenced by Move(), origPathLength(), Start(), and TunedPath().

◆ m_tunedPathP

ITEM_SET PNS::DP_MEANDER_PLACER::m_tunedPathP
private

Definition at line 143 of file pns_dp_meander_placer.h.

Referenced by Move(), origPathLength(), Start(), and TunedPath().

◆ m_world


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