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

MEANDER_SKEW_PLACER. More...

#include <pns_meander_skew_placer.h>

Inheritance diagram for PNS::MEANDER_SKEW_PLACER:
PNS::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

 MEANDER_SKEW_PLACER (ROUTER *aRouter)
 
 ~MEANDER_SKEW_PLACER ()
 
bool Start (const VECTOR2I &aP, ITEM *aStartItem) override
 Start placement/drag operation 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 primtive(s) to the point aP, taking aEndItem as the anchor (if not NULL).
 
long long int TuningLengthResult () const override
 Return the resultant length or skew of the tuned traces.
 
int64_t TuningDelayResult () const override
 Return the resultant delay or skew of the tuned traces.
 
long long int CurrentSkew () const
 
const std::vector< NET_HANDLE > CurrentNets () const override
 Returns the net(s) of currently routed track(s).
 
virtual bool FixRoute (const VECTOR2I &aP, ITEM *aEndItem, bool aForceFinish=false) override
 Commit the currently routed items 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
 
NODE * CurrentNode (bool aLoopsRemoved=false) const override
 Return the most recent board state.
 
const ITEM_SET Traces () override
 Return all routed/tuned traces.
 
const ITEM_SET TunedPath () override
 
const VECTOR2I & CurrentStart () const override
 Return the current start of the line(s) being placed/tuned.
 
const VECTOR2I & CurrentEnd () const override
 Return the current end of the line(s) being placed/tuned.
 
int CurrentLayer () const override
 Return the layer of currently routed track.
 
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.
 
bool HasBaseline () const
 
long long int TuningLengthDelta () const
 
int64_t TuningDelayDelta () const
 
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_SETTINGS & MeanderSettings () const
 Return the current meandering configuration.
 
virtual void UpdateSettings (const MEANDER_SETTINGS &aSettings)
 
virtual std::optional< VECTOR2I > UnfixRoute ()
 
virtual bool ToggleVia (bool aEnabled)
 Enable/disable a via at the end of currently routed trace.
 
virtual bool IsPlacingVia () const
 Return true if the placer is placing a via (or more vias).
 
virtual bool SetLayer (int aLayer)
 Set the current routing layer.
 
virtual void FlipPosture ()
 Toggle the current posture (straight/diagonal) of the trace head.
 
virtual void UpdateSizes (const SIZES_SETTINGS &aSizes)
 Perform on-the-fly update of the width, via diameter & drill size from a settings class.
 
virtual void SetOrthoMode (bool aOrthoMode)
 Force 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.
 
virtual void GetModifiedNets (std::vector< NET_HANDLE > &aNets) const
 Return the nets of all currently routed trace(s)
 
ROUTER * Router () const
 Return the instance of our router.
 
ROUTING_SETTINGS & Settings () const
 Return current router settings.
 
virtual LOGGER * Logger ()
 Return the logger object, allowing to dump geometry to a file.
 
void SetLogger (LOGGER *aLogger)
 
void SetDebugDecorator (DEBUG_DECORATOR *aDecorator)
 Assign a debug decorator allowing this algo to draw extra graphics for visual debugging.
 
DEBUG_DECORATOR * Dbg () const
 
const BOX2I & VisibleViewArea () const
 

Protected Member Functions

bool doMove (const VECTOR2I &aP, ITEM *aEndItem, long long int aTargetLength, long long int aTargetMin, long long int aTargetMax)
 
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.
 
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)
 
int64_t lineDelay (const ITEM_SET &aLine, const SOLID *aStartPad, const SOLID *aEndPad) const
 Calculate the total delay of the line represented by an item set (tracks and vias)
 
void initChainExtras ()
 Cache the per-session chain-extras length/delay (other nets in the same chain) so per-Move use does not re-walk the live BOARD.
 
long long int chainNarrowingOffset () const
 Return the length offset to subtract when converting a user-facing total signal length target into a meander-only doMove target.
 
virtual bool removeLoops (NODE *aNode, LINE &aLatest)
 
virtual bool simplifyNewLine (NODE *aNode, LINKED_ITEM *aLatest)
 Assemble a line starting from segment or arc aLatest, removes collinear segments and redundant vertices.
 

Protected Attributes

VECTOR2I m_currentStart
 current routing start point (end of tail, beginning of head)
 
NODE * m_currentNode
 Current world state.
 
LINE m_originLine
 
LINE m_currentTrace
 
ITEM_SET m_tunedPath
 
SHAPE_LINE_CHAIN m_finalShape
 
MEANDERED_LINE m_result
 
LINKED_ITEM * m_initialSegment
 
int m_padToDieLength
 Total length added by pad to die size.
 
int m_padToDieDelay
 Total length added by pad to die size.
 
NETCLASS * m_netClass
 The netclass for the placed segments.
 
long long int m_lastLength
 
int64_t m_lastDelay
 
TUNING_STATUS m_lastStatus
 
long long int m_baselineLength = 0
 The tuning results as they were at Start(). The deltas measure change from these.
 
int64_t m_baselineDelay = 0
 
bool m_hasBaseline = false
 
long long int m_startPathLength = 0
 Active path length at Start().
 
long long int m_chainExtrasLength = 0
 Aggregate length/delay of other nets in the same chain, cached at Start().
 
long long int m_chainExtrasDelay = 0
 
bool m_chainExtrasValid = false
 
NODE * m_world
 Pointer to world to search colliding items.
 
int m_currentWidth
 Width of the meandered trace(s).
 
MEANDER_SETTINGS m_settings
 Meander settings.
 
VECTOR2I m_currentEnd
 The current end point.
 
SOLID * m_startPad_p
 
SOLID * m_endPad_p
 
SOLID * m_startPad_n
 
SOLID * m_endPad_n
 
DEBUG_DECORATOR * m_debugDecorator
 
ROUTER * m_router
 
LOGGER * m_logger
 

Private Member Functions

long long int origPathLength () const override
 
int64_t origPathDelay () const override
 
void calculateTimeDomainTargets () override
 

Private Attributes

DIFF_PAIR m_originPair
 
ITEM_SET m_tunedPathP
 
ITEM_SET m_tunedPathN
 
long long int m_coupledLength
 
int64_t m_coupledDelay
 
int m_padToDieLengthP
 
int m_padToDieLengthN
 
int64_t m_padToDieDelayP
 
int64_t m_padToDieDelayN
 

Detailed Description

MEANDER_SKEW_PLACER.

Differential pair skew adjustment algorithm.

Definition at line 39 of file pns_meander_skew_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

◆ MEANDER_SKEW_PLACER()

PNS::MEANDER_SKEW_PLACER::MEANDER_SKEW_PLACER ( ROUTER * aRouter)

◆ ~MEANDER_SKEW_PLACER()

PNS::MEANDER_SKEW_PLACER::~MEANDER_SKEW_PLACER ( )

Definition at line 54 of file pns_meander_skew_placer.cpp.

Member Function Documentation

◆ AbortPlacement()

bool PNS::MEANDER_PLACER::AbortPlacement ( )
overridevirtualinherited

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 379 of file pns_meander_placer.cpp.

References 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 96 of file pns_meander_placer_base.cpp.

References m_settings.

◆ calculateTimeDomainTargets()

void PNS::MEANDER_SKEW_PLACER::calculateTimeDomainTargets ( )
overrideprivatevirtual

◆ chainNarrowingOffset()

long long int PNS::MEANDER_PLACER_BASE::chainNarrowingOffset ( ) const
protectedinherited

Return the length offset to subtract when converting a user-facing total signal length target into a meander-only doMove target.

The offset combines the chain-extras aggregate (other nets in the same chain) with any unmeasured stub on the actively-tuned net that lives outside the PNS-measured baseline.

Single-ended and skew tuning both rely on this so the meander does not over-correct by the chain budget already absorbed by sibling nets.

Definition at line 78 of file pns_meander_placer_base.cpp.

References PNS::PLACEMENT_ALGO::CurrentNets(), PNS::ROUTER::GetInterface(), PNS::ROUTER_IFACE::GetNetBoardLength(), m_chainExtrasLength, m_chainExtrasValid, m_startPathLength, and PNS::ALGO_BASE::Router().

Referenced by PNS::DP_MEANDER_PLACER::Move(), PNS::MEANDER_PLACER::Move(), and PNS::MEANDER_SKEW_PLACER::Move().

◆ CheckFit()

bool PNS::MEANDER_PLACER::CheckFit ( MEANDER_SHAPE * aShape)
overridevirtualinherited

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 402 of file pns_meander_placer.cpp.

References clearance, PNS::MEANDER_SHAPE::CLine(), m_currentNode, m_originLine, m_result, PNS::MEANDER_PLACER_BASE::m_settings, and PNS::MEANDER_SHAPE::Width().

◆ Clearance()

int PNS::MEANDER_PLACER_BASE::Clearance ( )
virtualinherited

◆ CommitPlacement()

bool PNS::MEANDER_PLACER::CommitPlacement ( )
overridevirtualinherited

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 392 of file pns_meander_placer.cpp.

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

Referenced by FixRoute().

◆ CurrentEnd()

const VECTOR2I & PNS::MEANDER_PLACER::CurrentEnd ( ) const
overridevirtualinherited

Return 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 432 of file pns_meander_placer.cpp.

References PNS::MEANDER_PLACER_BASE::m_currentEnd.

◆ CurrentLayer()

int PNS::MEANDER_PLACER::CurrentLayer ( ) const
overridevirtualinherited

Return the layer of currently routed track.

Implements PNS::PLACEMENT_ALGO.

Definition at line 437 of file pns_meander_placer.cpp.

References m_initialSegment.

◆ CurrentNets()

const std::vector< NET_HANDLE > PNS::MEANDER_SKEW_PLACER::CurrentNets ( ) const
inlineoverridevirtual

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

Reimplemented from PNS::MEANDER_PLACER.

Definition at line 60 of file pns_meander_skew_placer.h.

References PNS::MEANDER_PLACER::m_originLine, and m_originPair.

◆ CurrentNode()

NODE * PNS::MEANDER_PLACER::CurrentNode ( bool aLoopsRemoved = false) const
overridevirtualinherited

Return the most recent board state.

Implements PNS::PLACEMENT_ALGO.

Definition at line 60 of file pns_meander_placer.cpp.

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

◆ CurrentSkew()

long long int PNS::MEANDER_SKEW_PLACER::CurrentSkew ( ) const

◆ CurrentStart()

const VECTOR2I & PNS::MEANDER_PLACER::CurrentStart ( ) const
overridevirtualinherited

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

Implements PNS::PLACEMENT_ALGO.

Definition at line 427 of file pns_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 m_debugDecorator.

Referenced by PNS::SHOVE::AddLockedSpringbackNode(), PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::DRAGGER::bestAnchorForPoint(), PNS::LINE_PLACER::buildInitialLine(), PNS::SHOVE::checkShoveDirection(), PNS::LINE_PLACER::clipAndCheckCollisions(), PNS::MEANDER_PLACER::doMove(), PNS::COMPONENT_DRAGGER::Drag(), PNS::MULTI_DRAGGER::Drag(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragWalkaround(), PNS::DIFF_PAIR_PLACER::FindDpPrimitivePair(), PNS::MULTI_DRAGGER::findNewLeaderSegment(), PNS::DIFF_PAIR_PLACER::FixRoute(), PNS::SHOVE::fixupViaCollisions(), PNS::LINE_PLACER::handlePullback(), PNS::DIFF_PAIR_PLACER::initPlacement(), PNS::LINE_PLACER::mergeHead(), PNS::DIFF_PAIR_PLACER::Move(), 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::pruneLineFromOptimizerQueue(), PNS::SHOVE::pruneRootLines(), PNS::SHOVE::pushLineStack(), PNS::SHOVE::pushOrShoveVia(), PNS::SHOVE::pushSpringback(), PNS::SHOVE::reconstructHeads(), PNS::MULTI_DRAGGER::reconstructOriginalDpCoupling(), PNS::SHOVE::reduceSpringback(), PNS::LINE_PLACER::reduceTail(), PNS::PLACEMENT_ALGO::removeLoops(), PNS::SHOVE::replaceItems(), PNS::SHOVE::replaceLine(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::LINE_PLACER::rhWalkOnly(), PNS::WALKAROUND::Route(), PNS::DIFF_PAIR_PLACER::routeHead(), PNS::LINE_PLACER::routeStep(), PNS::SHOVE::Run(), PNS::SHOVE::runOptimizer(), PNS::SHOVE::shoveIteration(), PNS::SHOVE::shoveLineToHullSet(), PNS::SHOVE::shoveMainLoop(), PNS::SHOVE::ShoveObstacleLine(), PNS::PLACEMENT_ALGO::simplifyNewLine(), PNS::WALKAROUND::singleStep(), PNS::LINE_PLACER::splitHeadTail(), PNS::DRAGGER::Start(), PNS::LINE_PLACER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::SHOVE::touchRootLine(), PNS::SHOVE::touchRootLine(), PNS::LINE_PLACER::Trace(), PNS::MULTI_DRAGGER::tryAssembleDiffPair(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().

◆ doMove()

◆ FixRoute()

bool PNS::MEANDER_PLACER::FixRoute ( const VECTOR2I & aP,
ITEM * aEndItem,
bool aForceFinish = false )
overridevirtualinherited

Commit the currently routed items 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 case, the track is only committed if ROUTING_SETTINGS::AllowDRCViolations() is on.

Implements PNS::PLACEMENT_ALGO.

Definition at line 366 of file pns_meander_placer.cpp.

References CommitPlacement(), LINE, m_currentNode, m_currentTrace, m_finalShape, and m_originLine.

◆ FlipPosture()

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

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

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

Definition at line 139 of file pns_placement_algo.h.

◆ GetModifiedNets()

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

Return the nets of all currently routed trace(s)

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

Definition at line 164 of file pns_placement_algo.h.

◆ HasBaseline()

bool PNS::MEANDER_PLACER_BASE::HasBaseline ( ) const
inlineinherited

Definition at line 68 of file pns_meander_placer_base.h.

References m_hasBaseline.

Referenced by BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().

◆ HasPlacedAnything()

bool PNS::MEANDER_PLACER::HasPlacedAnything ( ) const
overridevirtualinherited

Reimplemented from PNS::PLACEMENT_ALGO.

Definition at line 386 of file pns_meander_placer.cpp.

References m_currentTrace.

◆ initChainExtras()

void PNS::MEANDER_PLACER_BASE::initChainExtras ( )
protectedinherited

Cache the per-session chain-extras length/delay (other nets in the same chain) so per-Move use does not re-walk the live BOARD.

Called from Start() of each derived placer.

Definition at line 51 of file pns_meander_placer_base.cpp.

References PNS::PLACEMENT_ALGO::CurrentNets(), m_chainExtrasDelay, m_chainExtrasLength, m_chainExtrasValid, and PNS::ALGO_BASE::Router().

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

◆ IsPlacingVia()

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

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

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

Definition at line 92 of file pns_placement_algo.h.

◆ lineDelay()

int64_t PNS::MEANDER_PLACER_BASE::lineDelay ( const ITEM_SET & aLine,
const SOLID * aStartPad,
const SOLID * aEndPad ) const
protectedinherited

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

Parameters
aLineis the set of segments of the line.
aStartPadis the starting pad of the line.
aEndPadis the ending pad of the line.
Returns
the line delay (in what units?).

Definition at line 317 of file pns_meander_placer_base.cpp.

References PNS::ROUTER_IFACE::CalculateRoutedPathDelay(), PNS::ITEM_SET::Empty(), PNS::ROUTER::GetInterface(), m_settings, and PNS::ALGO_BASE::Router().

Referenced by PNS::MEANDER_PLACER::doMove(), PNS::DP_MEANDER_PLACER::origPathDelay(), PNS::MEANDER_PLACER::origPathDelay(), PNS::MEANDER_SKEW_PLACER::origPathDelay(), and PNS::MEANDER_SKEW_PLACER::Start().

◆ 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
aLineis the set of segments of the line.
aStartPadis the starting pad of the line.
aEndPadis the ending pad of the line.
Returns
the line length.

Definition at line 307 of file pns_meander_placer_base.cpp.

References PNS::ROUTER_IFACE::CalculateRoutedPathLength(), PNS::ITEM_SET::Empty(), PNS::ROUTER::GetInterface(), m_settings, and PNS::ALGO_BASE::Router().

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

◆ Logger()

LOGGER * PNS::ALGO_BASE::Logger ( )
virtualinherited

Return the logger object, allowing to dump geometry to a file.

Definition at line 34 of file pns_algo_base.cpp.

References m_logger.

Referenced by PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::DRAGGER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().

◆ MeanderSettings()

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

Return the current meandering configuration.

Returns
the settings

Definition at line 301 of file pns_meander_placer_base.cpp.

References m_settings.

Referenced by PCB_TUNING_PATTERN::Update().

◆ Move()

bool PNS::MEANDER_SKEW_PLACER::Move ( const VECTOR2I & aP,
ITEM * aEndItem )
overridevirtual

◆ origPathDelay()

◆ origPathLength()

◆ removeLoops()

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

Referenced by PNS::DIFF_PAIR_PLACER::attemptWalk(), 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

Set the current routing layer.

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

Definition at line 100 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

Force 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 157 of file pns_placement_algo.h.

◆ Settings()

◆ simplifyNewLine()

bool PNS::PLACEMENT_ALGO::simplifyNewLine ( NODE * aNode,
LINKED_ITEM * aLatest )
protectedvirtualinherited

◆ 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 105 of file pns_meander_placer_base.cpp.

References Clearance(), m_currentWidth, and m_settings.

◆ Start()

bool PNS::MEANDER_SKEW_PLACER::Start ( const VECTOR2I & aP,
ITEM * aStartItem )
overridevirtual

Start placement/drag operation at point aP, taking item aStartItem as anchor (unless NULL).

Reimplemented from PNS::MEANDER_PLACER.

Definition at line 59 of file pns_meander_skew_placer.cpp.

References _, PNS::ITEM::ARC_T, PNS::TOPOLOGY::AssembleDiffPair(), PNS::TOPOLOGY::AssembleTrivialPath(), PNS::TOPOLOGY::AssembleTuningPath(), PNS::NODE::Branch(), calculateTimeDomainTargets(), BOARD_CONNECTED_ITEM::GetEffectiveNetClass(), PNS::ROUTER::GetInterface(), PNS::ROUTER_IFACE::GetSignalAggregate(), PNS::HELPERS::GetSnappedStartPoint(), PNS::ITEM::GetSourceItem(), PNS::ROUTER::GetWorld(), PNS::MEANDER_PLACER_BASE::initChainExtras(), PNS::MEANDER_PLACER_BASE::lineDelay(), PNS::MEANDER_PLACER_BASE::lineLength(), PNS::MEANDER_PLACER_BASE::m_baselineDelay, PNS::MEANDER_PLACER_BASE::m_baselineLength, m_coupledDelay, m_coupledLength, PNS::MEANDER_PLACER_BASE::m_currentEnd, PNS::MEANDER_PLACER::m_currentNode, PNS::MEANDER_PLACER::m_currentStart, PNS::MEANDER_PLACER_BASE::m_currentWidth, PNS::MEANDER_PLACER_BASE::m_endPad_n, PNS::MEANDER_PLACER_BASE::m_endPad_p, PNS::MEANDER_PLACER_BASE::m_hasBaseline, PNS::MEANDER_PLACER::m_initialSegment, PNS::MEANDER_PLACER::m_lastDelay, PNS::MEANDER_PLACER::m_lastLength, PNS::MEANDER_PLACER::m_netClass, PNS::MEANDER_PLACER::m_originLine, m_originPair, m_padToDieDelayN, m_padToDieDelayP, m_padToDieLengthN, m_padToDieLengthP, PNS::MEANDER_PLACER_BASE::m_settings, PNS::MEANDER_PLACER_BASE::m_startPad_n, PNS::MEANDER_PLACER_BASE::m_startPad_p, PNS::MEANDER_PLACER_BASE::m_startPathLength, PNS::MEANDER_PLACER::m_tunedPath, m_tunedPathN, m_tunedPathP, PNS::MEANDER_PLACER_BASE::m_world, PNS::ITEM::OfKind(), origPathLength(), PNS::ALGO_BASE::Router(), PNS::ITEM::SEGMENT_T, PNS::ROUTER::SetFailureReason(), TuningDelayResult(), and TuningLengthResult().

Referenced by BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().

◆ ToggleVia()

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

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

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

Definition at line 84 of file pns_placement_algo.h.

◆ Traces()

const ITEM_SET PNS::MEANDER_PLACER::Traces ( )
overridevirtualinherited

Return all routed/tuned traces.

Implements PNS::PLACEMENT_ALGO.

Definition at line 416 of file pns_meander_placer.cpp.

References LINE, m_currentTrace, m_finalShape, and m_originLine.

◆ TunedPath()

const ITEM_SET PNS::MEANDER_PLACER::TunedPath ( )
overridevirtualinherited

Implements PNS::MEANDER_PLACER_BASE.

Definition at line 422 of file pns_meander_placer.cpp.

References m_tunedPath.

◆ tuneLineLength()

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

Take a set of meanders in aTuned and tunes their length to extend the original line length by aElongation.

Definition at line 203 of file pns_meander_placer_base.cpp.

References end, PNS::findAmplitudeForLength(), PNS::MEANDERED_LINE::Meanders(), PNS::MT_ARC, PNS::MT_CORNER, PNS::MT_EMPTY, PNS::MT_FINISH, PNS::MT_SINGLE, and PNS::MT_START.

Referenced by PNS::MEANDER_PLACER::doMove(), and PNS::DP_MEANDER_PLACER::Move().

◆ TuningDelayDelta()

int64_t PNS::MEANDER_PLACER_BASE::TuningDelayDelta ( ) const
inlineinherited

Definition at line 71 of file pns_meander_placer_base.h.

References m_baselineDelay, and TuningDelayResult().

◆ TuningDelayResult()

int64_t PNS::MEANDER_SKEW_PLACER::TuningDelayResult ( ) const
overridevirtual

Return the resultant delay or skew of the tuned traces.

Reimplemented from PNS::MEANDER_PLACER.

Definition at line 248 of file pns_meander_skew_placer.cpp.

References m_coupledDelay, and PNS::MEANDER_PLACER::m_lastDelay.

Referenced by Start().

◆ TuningLengthDelta()

long long int PNS::MEANDER_PLACER_BASE::TuningLengthDelta ( ) const
inlineinherited

Definition at line 70 of file pns_meander_placer_base.h.

References m_baselineLength, and TuningLengthResult().

Referenced by BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().

◆ TuningLengthResult()

long long int PNS::MEANDER_SKEW_PLACER::TuningLengthResult ( ) const
overridevirtual

Return the resultant length or skew of the tuned traces.

Reimplemented from PNS::MEANDER_PLACER.

Definition at line 242 of file pns_meander_skew_placer.cpp.

References m_coupledLength, and PNS::MEANDER_PLACER::m_lastLength.

Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), and Start().

◆ TuningStatus()

MEANDER_PLACER::TUNING_STATUS PNS::MEANDER_PLACER::TuningStatus ( ) const
overridevirtualinherited

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

Implements PNS::MEANDER_PLACER_BASE.

Definition at line 461 of file pns_meander_placer.cpp.

References m_lastStatus.

◆ UnfixRoute()

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

Reimplemented in PNS::LINE_PLACER.

Definition at line 73 of file pns_placement_algo.h.

◆ UpdateSettings()

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

Definition at line 131 of file pns_meander_placer_base.cpp.

References m_settings.

Referenced by PCB_TUNING_PATTERN::Update().

◆ UpdateSizes()

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

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

Definition at line 148 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 m_router.

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

Member Data Documentation

◆ m_baselineDelay

int64_t PNS::MEANDER_PLACER_BASE::m_baselineDelay = 0
protectedinherited

◆ m_baselineLength

long long int PNS::MEANDER_PLACER_BASE::m_baselineLength = 0
protectedinherited

The tuning results as they were at Start(). The deltas measure change from these.

Definition at line 174 of file pns_meander_placer_base.h.

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

◆ m_chainExtrasDelay

long long int PNS::MEANDER_PLACER_BASE::m_chainExtrasDelay = 0
protectedinherited

◆ m_chainExtrasLength

long long int PNS::MEANDER_PLACER_BASE::m_chainExtrasLength = 0
protectedinherited

Aggregate length/delay of other nets in the same chain, cached at Start().

The non-edited members of a chain don't change during a tuning session, so we avoid walking the live BOARD on every Move event.

Definition at line 184 of file pns_meander_placer_base.h.

Referenced by chainNarrowingOffset(), and initChainExtras().

◆ m_chainExtrasValid

bool PNS::MEANDER_PLACER_BASE::m_chainExtrasValid = false
protectedinherited

◆ m_coupledDelay

int64_t PNS::MEANDER_SKEW_PLACER::m_coupledDelay
private

◆ m_coupledLength

long long int PNS::MEANDER_SKEW_PLACER::m_coupledLength
private

◆ m_currentEnd

VECTOR2I PNS::MEANDER_PLACER_BASE::m_currentEnd
protectedinherited

◆ m_currentNode

NODE* PNS::MEANDER_PLACER::m_currentNode
protectedinherited

◆ m_currentStart

VECTOR2I PNS::MEANDER_PLACER::m_currentStart
protectedinherited

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

Definition at line 116 of file pns_meander_placer.h.

Referenced by CurrentStart(), doMove(), Start(), and PNS::MEANDER_SKEW_PLACER::Start().

◆ m_currentTrace

LINE PNS::MEANDER_PLACER::m_currentTrace
protectedinherited

Definition at line 122 of file pns_meander_placer.h.

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

◆ m_currentWidth

int PNS::MEANDER_PLACER_BASE::m_currentWidth
protectedinherited

◆ m_debugDecorator

DEBUG_DECORATOR* PNS::ALGO_BASE::m_debugDecorator
protectedinherited

Definition at line 86 of file pns_algo_base.h.

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

◆ m_endPad_n

◆ m_endPad_p

◆ m_finalShape

SHAPE_LINE_CHAIN PNS::MEANDER_PLACER::m_finalShape
protectedinherited

Definition at line 125 of file pns_meander_placer.h.

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

◆ m_hasBaseline

bool PNS::MEANDER_PLACER_BASE::m_hasBaseline = false
protectedinherited

◆ m_initialSegment

LINKED_ITEM* PNS::MEANDER_PLACER::m_initialSegment
protectedinherited

◆ m_lastDelay

◆ m_lastLength

long long int PNS::MEANDER_PLACER::m_lastLength
protectedinherited

◆ m_lastStatus

TUNING_STATUS PNS::MEANDER_PLACER::m_lastStatus
protectedinherited

Definition at line 140 of file pns_meander_placer.h.

Referenced by doMove(), MEANDER_PLACER(), and TuningStatus().

◆ m_logger

LOGGER* PNS::ALGO_BASE::m_logger
protectedinherited

Definition at line 88 of file pns_algo_base.h.

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

◆ m_netClass

NETCLASS* PNS::MEANDER_PLACER::m_netClass
protectedinherited

◆ m_originLine

◆ m_originPair

DIFF_PAIR PNS::MEANDER_SKEW_PLACER::m_originPair
private

◆ m_padToDieDelay

int PNS::MEANDER_PLACER::m_padToDieDelay
protectedinherited

Total length added by pad to die size.

Definition at line 133 of file pns_meander_placer.h.

Referenced by MEANDER_PLACER(), origPathDelay(), and Start().

◆ m_padToDieDelayN

int64_t PNS::MEANDER_SKEW_PLACER::m_padToDieDelayN
private

Definition at line 87 of file pns_meander_skew_placer.h.

Referenced by MEANDER_SKEW_PLACER(), origPathDelay(), and Start().

◆ m_padToDieDelayP

int64_t PNS::MEANDER_SKEW_PLACER::m_padToDieDelayP
private

Definition at line 86 of file pns_meander_skew_placer.h.

Referenced by MEANDER_SKEW_PLACER(), origPathDelay(), and Start().

◆ m_padToDieLength

int PNS::MEANDER_PLACER::m_padToDieLength
protectedinherited

Total length added by pad to die size.

Definition at line 130 of file pns_meander_placer.h.

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

◆ m_padToDieLengthN

int PNS::MEANDER_SKEW_PLACER::m_padToDieLengthN
private

Definition at line 85 of file pns_meander_skew_placer.h.

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

◆ m_padToDieLengthP

int PNS::MEANDER_SKEW_PLACER::m_padToDieLengthP
private

Definition at line 84 of file pns_meander_skew_placer.h.

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

◆ m_result

MEANDERED_LINE PNS::MEANDER_PLACER::m_result
protectedinherited

Definition at line 126 of file pns_meander_placer.h.

Referenced by CheckFit(), and doMove().

◆ m_router

◆ m_settings

◆ m_startPad_n

◆ m_startPad_p

◆ m_startPathLength

long long int PNS::MEANDER_PLACER_BASE::m_startPathLength = 0
protectedinherited

◆ m_tunedPath

◆ m_tunedPathN

ITEM_SET PNS::MEANDER_SKEW_PLACER::m_tunedPathN
private

Definition at line 80 of file pns_meander_skew_placer.h.

Referenced by Move(), and Start().

◆ m_tunedPathP

ITEM_SET PNS::MEANDER_SKEW_PLACER::m_tunedPathP
private

Definition at line 80 of file pns_meander_skew_placer.h.

Referenced by Move(), and Start().

◆ m_world


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