KiCad PCB EDA Suite
|
Differential Pair length-matching/meandering tool. More...
#include <pns_dp_meander_placer.h>
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_PAIR & | GetOriginPair () |
NODE * | CurrentNode (bool aLoopsRemoved=false) const override |
Return the most recent world state. | |
const ITEM_SET | Traces () override |
Function Traces() | |
const ITEM_SET | TunedPath () override |
const VECTOR2I & | CurrentStart () const override |
Function CurrentStart() | |
const VECTOR2I & | CurrentEnd () const override |
Function CurrentEnd() | |
const std::vector< NET_HANDLE > | CurrentNets () 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_SETTINGS & | MeanderSettings () const |
Return the current meandering configuration. | |
virtual void | UpdateSettings (const MEANDER_SETTINGS &aSettings) |
int | GetTotalPadToDieLength (const LINE &aLine) const |
virtual std::optional< VECTOR2I > | UnfixRoute () |
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. | |
ROUTER * | Router () const |
Return current router settings. | |
ROUTING_SETTINGS & | Settings () const |
Return the logger object, allowing to dump geometry to a file. | |
virtual LOGGER * | Logger () |
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 | |
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 | |
NODE * | m_world |
Width of the meandered trace(s). | |
int | m_currentWidth |
Meander settings. | |
MEANDER_SETTINGS | m_settings |
The current end point. | |
VECTOR2I | m_currentEnd |
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 | |
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. | |
NODE * | m_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_ITEM * | m_initialSegment |
long long int | m_lastLength |
int | m_padToDieP |
int | m_padToDieN |
TUNING_STATUS | m_lastStatus |
Friends | |
class | MEANDER_SHAPE |
Differential Pair length-matching/meandering tool.
Definition at line 48 of file pns_dp_meander_placer.h.
|
inherited |
< Result of the length tuning operation
Enumerator | |
---|---|
TOO_SHORT | |
TOO_LONG | |
TUNED |
Definition at line 49 of file pns_meander_placer_base.h.
PNS::DP_MEANDER_PLACER::DP_MEANDER_PLACER | ( | ROUTER * | aRouter | ) |
Definition at line 34 of file pns_dp_meander_placer.cpp.
References m_currentNode, m_initialSegment, m_lastLength, m_lastStatus, m_padToDieN, m_padToDieP, PNS::MEANDER_PLACER_BASE::m_world, and PNS::MEANDER_PLACER_BASE::TOO_SHORT.
PNS::DP_MEANDER_PLACER::~DP_MEANDER_PLACER | ( | ) |
Definition at line 50 of file pns_dp_meander_placer.cpp.
|
overridevirtual |
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 416 of file pns_dp_meander_placer.cpp.
References PNS::NODE::KillChildren(), and PNS::MEANDER_PLACER_BASE::m_world.
|
virtualinherited |
Increase/decreases the current meandering amplitude by one step.
aSign | direction (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().
|
private |
Definition at line 151 of file pns_dp_meander_placer.cpp.
References SEG::A, SEG::B, PNS::DIFF_PAIR::COUPLED_SEGMENTS::coupledN, and PNS::DIFF_PAIR::COUPLED_SEGMENTS::coupledP.
Referenced by Move().
|
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).
aShape | the shape to check. |
Reimplemented from PNS::MEANDER_PLACER_BASE.
Definition at line 439 of file pns_dp_meander_placer.cpp.
References PNS::NODE::CheckColliding(), PNS::MEANDERED_LINE::CheckSelfIntersections(), clearance, PNS::MEANDER_SHAPE::CLine(), m_currentNode, m_originPair, m_result, PNS::DIFF_PAIR::NLine(), PNS::DIFF_PAIR::PLine(), and PNS::MEANDER_SHAPE::Width().
|
virtualinherited |
Return the clearance of the track(s) being length tuned.
Definition at line 67 of file pns_meander_placer_base.cpp.
References PNS::ITEM_SET::CItems(), PNS::CT_CLEARANCE, PNS::PLACEMENT_ALGO::CurrentLayer(), PNS::ROUTER::GetRuleResolver(), MINOPTMAX< T >::HasMin(), PNS::MEANDER_PLACER_BASE::m_currentWidth, PNS::CONSTRAINT::m_Value, MINOPTMAX< T >::Min(), PNS::RULE_RESOLVER::QueryConstraint(), PNS::ALGO_BASE::Router(), and PNS::PLACEMENT_ALGO::Traces().
Referenced by PNS::MEANDER_SHAPE::spacing(), and PNS::MEANDER_PLACER_BASE::SpacingStep().
|
overridevirtual |
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 429 of file pns_dp_meander_placer.cpp.
References PNS::ROUTER::CommitRouting(), m_currentNode, and PNS::ALGO_BASE::Router().
Referenced by FixRoute().
|
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 491 of file pns_dp_meander_placer.cpp.
References PNS::MEANDER_PLACER_BASE::m_currentEnd.
|
overridevirtual |
Function CurrentLayer()
Returns the layer of currently routed track.
Implements PNS::PLACEMENT_ALGO.
Definition at line 497 of file pns_dp_meander_placer.cpp.
References PNS::ITEM::Layers(), m_initialSegment, and PNS_LAYER_RANGE::Start().
|
overridevirtual |
Function CurrentNets()
Returns the net(s) of currently routed track(s).
Implements PNS::PLACEMENT_ALGO.
Definition at line 518 of file pns_dp_meander_placer.cpp.
References m_originPair, PNS::DIFF_PAIR::NetN(), and PNS::DIFF_PAIR::NetP().
|
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.
|
overridevirtual |
Function CurrentStart()
Returns the current start of the line(s) being placed/tuned.
Implements PNS::PLACEMENT_ALGO.
Definition at line 485 of file pns_dp_meander_placer.cpp.
References m_currentStart.
|
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::pruneLineFromOptimizerQueue(), PNS::SHOVE::pruneRootLines(), PNS::SHOVE::pushLineStack(), PNS::SHOVE::pushOrShoveVia(), PNS::SHOVE::pushSpringback(), PNS::SHOVE::reconstructHeads(), PNS::SHOVE::reduceSpringback(), PNS::LINE_PLACER::reduceTail(), 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::LINE_PLACER::simplifyNewLine(), 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(), and PNS::MULTI_DRAGGER::tryWalkaround().
|
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).
Implements PNS::PLACEMENT_ALGO.
Definition at line 402 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().
|
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.
|
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.
const DIFF_PAIR & PNS::DP_MEANDER_PLACER::GetOriginPair | ( | ) |
Definition at line 61 of file pns_dp_meander_placer.cpp.
References m_originPair.
|
protectedinherited |
Definition at line 298 of file pns_meander_placer_base.cpp.
References PNS::ARC::Anchor(), PNS::ITEM::ARC_T, PNS::ITEM::Kind(), and PNS::ITEM::SEGMENT_T.
Referenced by Start(), PNS::MEANDER_PLACER::Start(), and PNS::MEANDER_SKEW_PLACER::Start().
|
inherited |
Definition at line 254 of file pns_meander_placer_base.cpp.
References end, PNS::NODE::FindLineEnds(), PNS::JOINT::LinkList(), and PNS::MEANDER_PLACER_BASE::m_world.
|
overridevirtual |
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 423 of file pns_dp_meander_placer.cpp.
References PNS::DIFF_PAIR::CN(), PNS::DIFF_PAIR::CP(), m_originPair, and SHAPE_LINE_CHAIN::SegmentCount().
|
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.
|
protectedinherited |
Calculate the total length of the line represented by an item set (tracks and vias)
aLine |
Definition at line 322 of file pns_meander_placer_base.cpp.
References PNS::ROUTER_IFACE::CalculateRoutedPathLength(), PNS::ITEM_SET::Empty(), PNS::ROUTER::GetInterface(), and PNS::ALGO_BASE::Router().
Referenced by origPathLength(), PNS::MEANDER_PLACER::origPathLength(), PNS::MEANDER_SKEW_PLACER::origPathLength(), and PNS::MEANDER_SKEW_PLACER::Start().
|
virtualinherited |
Definition at line 34 of file pns_algo_base.cpp.
References PNS::ALGO_BASE::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().
|
private |
|
virtualinherited |
Return the current meandering configuration.
Definition at line 292 of file pns_meander_placer_base.cpp.
References PNS::MEANDER_PLACER_BASE::m_settings.
Referenced by PNS::MEANDER_SHAPE::cornerRadius(), PNS::MEANDER_SHAPE::makeMiterShape(), PNS::MEANDERED_LINE::MeanderSegment(), PNS::MEANDER_SHAPE::MinAmplitude(), PNS::MEANDER_SHAPE::Settings(), PNS::MEANDERED_LINE::Settings(), and PCB_TUNING_PATTERN::Update().
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 170 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.
|
private |
Current routing start point (end of tail, beginning of head).
Definition at line 143 of file pns_dp_meander_placer.cpp.
References PNS::MEANDER_PLACER_BASE::lineLength(), PNS::MEANDER_PLACER_BASE::m_endPad_n, PNS::MEANDER_PLACER_BASE::m_endPad_p, m_padToDieN, m_padToDieP, PNS::MEANDER_PLACER_BASE::m_startPad_n, PNS::MEANDER_PLACER_BASE::m_startPad_p, m_tunedPathN, and m_tunedPathP.
Referenced by Move(), and TuningResult().
|
private |
Definition at line 160 of file pns_dp_meander_placer.cpp.
References SEG::A, PNS::DIFF_PAIR::COUPLED_SEGMENTS::coupledN, PNS::DIFF_PAIR::COUPLED_SEGMENTS::coupledP, and SEG::Side().
Referenced by Move().
|
private |
Definition at line 138 of file pns_dp_meander_placer.cpp.
|
inlineinherited |
Return current router settings.
Definition at line 54 of file pns_algo_base.h.
References PNS::ALGO_BASE::m_router.
Referenced by PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::MEANDER_PLACER_BASE::Clearance(), PNS::DIFF_PAIR_PLACER::CommitPlacement(), CommitPlacement(), PNS::LINE_PLACER::CommitPlacement(), PNS::MEANDER_PLACER::CommitPlacement(), PNS::COMPONENT_DRAGGER::FixRoute(), PNS::DRAGGER::FixRoute(), PNS::MULTI_DRAGGER::FixRoute(), PNS::DIFF_PAIR_PLACER::initPlacement(), PNS::LINE_PLACER::initPlacement(), PNS::MEANDER_PLACER_BASE::lineLength(), PNS::LINE_PLACER::makeVia(), PNS::MULTI_DRAGGER::multidragShove(), PNS::SHOVE::onCollidingSolid(), PNS::SHOVE::reconstructHeads(), PNS::SHOVE::removeHeads(), PNS::LINE_PLACER::rhWalkBase(), PNS::SHOVE::Run(), PNS::SHOVE::runOptimizer(), PNS::SHOVE::shoveIteration(), PNS::DIFF_PAIR_PLACER::Start(), Start(), PNS::LINE_PLACER::Start(), PNS::MEANDER_PLACER::Start(), PNS::MEANDER_SKEW_PLACER::Start(), PNS::DRAGGER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().
|
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().
|
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.
|
inlineinherited |
Definition at line 65 of file pns_algo_base.h.
References PNS::ALGO_BASE::m_logger.
Referenced by PNS::LINE_PLACER::rhWalkBase(), PNS::DRAGGER::tryWalkaround(), and PNS::MULTI_DRAGGER::tryWalkaround().
|
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.
|
inherited |
Return the logger object, allowing to dump geometry to a file.
Definition at line 28 of file pns_algo_base.cpp.
References PNS::ALGO_BASE::m_router, and PNS::ROUTER::Settings().
Referenced by PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::LINE_PLACER::buildInitialLine(), PNS::LINE_PLACER::CommitPlacement(), PNS::MULTI_DRAGGER::Drag(), PNS::DRAGGER::dragMarkObstacles(), PNS::DRAGGER::dragShove(), PNS::DRAGGER::dragWalkaround(), PNS::COMPONENT_DRAGGER::FixRoute(), PNS::MULTI_DRAGGER::FixRoute(), PNS::DIFF_PAIR_PLACER::FixRoute(), PNS::LINE_PLACER::FixRoute(), PNS::LINE_PLACER::Move(), PNS::SHOVE::onCollidingSolid(), PNS::DRAGGER::optimizeAndUpdateDraggedLine(), PNS::DIFF_PAIR_PLACER::propagateDpHeadForces(), PNS::DRAGGER::propagateViaForces(), PNS::SHOVE::pushOrShoveVia(), PNS::LINE_PLACER::rhMarkObstacles(), PNS::LINE_PLACER::rhShoveOnly(), PNS::LINE_PLACER::rhWalkBase(), PNS::LINE_PLACER::rhWalkOnly(), PNS::DIFF_PAIR_PLACER::route(), PNS::LINE_PLACER::routeHead(), PNS::LINE_PLACER::routeStep(), PNS::SHOVE::runOptimizer(), PNS::SHOVE::shoveMainLoop(), PNS::WALKAROUND::singleStep(), PNS::LINE_PLACER::Start(), PNS::DRAGGER::Start(), PNS::MULTI_DRAGGER::Start(), PNS::DRAGGER::tryWalkaround(), PNS::MULTI_DRAGGER::tryWalkaround(), PNS::LINE_PLACER::UnfixRoute(), and PNS::WALKAROUND::WALKAROUND().
|
private |
|
virtualinherited |
Increase/decrease the current meandering spacing by one step.
aSign | direction (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 routing a single track at point aP, taking item aStartItem as anchor (unless NULL).
Implements PNS::PLACEMENT_ALGO.
Definition at line 76 of file pns_dp_meander_placer.cpp.
References _, PNS::ITEM::ARC_T, PNS::TOPOLOGY::AssembleDiffPair(), PNS::TOPOLOGY::AssembleTuningPath(), PNS::NODE::Branch(), PNS::DIFF_PAIR::Gap(), PNS::LINK_HOLDER::GetLink(), PNS::SOLID::GetPadToDie(), PNS::MEANDER_PLACER_BASE::getSnappedStartPoint(), PNS::ROUTER::GetWorld(), m_currentNode, m_currentStart, PNS::MEANDER_PLACER_BASE::m_currentWidth, PNS::MEANDER_PLACER_BASE::m_endPad_n, PNS::MEANDER_PLACER_BASE::m_endPad_p, m_initialSegment, m_originPair, m_padToDieN, m_padToDieP, PNS::MEANDER_PLACER_BASE::m_startPad_n, PNS::MEANDER_PLACER_BASE::m_startPad_p, m_tunedPathN, m_tunedPathP, PNS::MEANDER_PLACER_BASE::m_world, PNS::DIFF_PAIR::NLine(), PNS::ITEM::OfKind(), PNS::DIFF_PAIR::PLine(), PNS::NODE::Remove(), PNS::ALGO_BASE::Router(), PNS::ITEM::SEGMENT_T, PNS::LINE::SegmentCount(), PNS::ROUTER::SetFailureReason(), PNS::DIFF_PAIR::SetGap(), and PNS::DIFF_PAIR::Width().
|
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.
long long int PNS::DP_MEANDER_PLACER::totalLength | ( | ) |
const LINE PNS::DP_MEANDER_PLACER::Trace | ( | ) | const |
Definition at line 55 of file pns_dp_meander_placer.cpp.
References m_currentTraceP.
|
overridevirtual |
Function Traces()
Returns all routed/tuned traces.
Implements PNS::PLACEMENT_ALGO.
Definition at line 457 of file pns_dp_meander_placer.cpp.
References PNS::ITEM_SET::Add(), m_currentTraceN, m_currentTraceP, m_finalShapeN, m_finalShapeP, m_originPair, PNS::DIFF_PAIR::NLine(), and PNS::DIFF_PAIR::PLine().
|
overridevirtual |
Implements PNS::MEANDER_PLACER_BASE.
Definition at line 471 of file pns_dp_meander_placer.cpp.
References PNS::ITEM_SET::Add(), m_tunedPathN, and m_tunedPathP.
|
protectedinherited |
Take a set of meanders in aTuned and tunes their length to extend the original line length by aElongation.
Definition at line 156 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 Move().
|
overridevirtual |
Return the resultant length or skew of the tuned traces.
Implements PNS::MEANDER_PLACER_BASE.
Definition at line 503 of file pns_dp_meander_placer.cpp.
References m_lastLength, and origPathLength().
|
overridevirtual |
Return the tuning status (too short, too long, etc.) of the trace(s) being tuned.
Implements PNS::MEANDER_PLACER_BASE.
Definition at line 512 of file pns_dp_meander_placer.cpp.
References m_lastStatus.
|
inlinevirtualinherited |
Reimplemented in PNS::LINE_PLACER.
Definition at line 81 of file pns_placement_algo.h.
|
virtualinherited |
Definition at line 84 of file pns_meander_placer_base.cpp.
References PNS::MEANDER_PLACER_BASE::m_settings.
Referenced by PNS::MEANDERED_LINE::MeanderSegment(), and PCB_TUNING_PATTERN::Update().
|
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.
|
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().
|
friend |
Definition at line 118 of file pns_dp_meander_placer.h.
|
private |
Definition at line 140 of file pns_dp_meander_placer.h.
|
protectedinherited |
Definition at line 145 of file pns_meander_placer_base.h.
Referenced by CurrentEnd(), PNS::MEANDER_PLACER::CurrentEnd(), PNS::MEANDER_PLACER::Start(), and PNS::MEANDER_SKEW_PLACER::Start().
|
private |
Definition at line 137 of file pns_dp_meander_placer.h.
Referenced by CheckFit(), CommitPlacement(), CurrentNode(), DP_MEANDER_PLACER(), FixRoute(), Move(), and Start().
|
private |
Current world state.
Definition at line 134 of file pns_dp_meander_placer.h.
Referenced by CurrentStart(), Move(), and Start().
|
private |
Definition at line 142 of file pns_dp_meander_placer.h.
Referenced by Traces().
|
private |
Definition at line 142 of file pns_dp_meander_placer.h.
|
protectedinherited |
Meander settings.
Definition at line 139 of file pns_meander_placer_base.h.
Referenced by PNS::MEANDER_PLACER_BASE::Clearance(), PNS::MEANDER_PLACER_BASE::MEANDER_PLACER_BASE(), PNS::MEANDER_PLACER_BASE::SpacingStep(), Start(), PNS::MEANDER_PLACER::Start(), and PNS::MEANDER_SKEW_PLACER::Start().
|
protectedinherited |
Definition at line 86 of file pns_algo_base.h.
Referenced by PNS::ALGO_BASE::Dbg(), and PNS::ALGO_BASE::SetDebugDecorator().
|
protectedinherited |
Definition at line 150 of file pns_meander_placer_base.h.
Referenced by PNS::MEANDER_PLACER_BASE::MEANDER_PLACER_BASE(), origPathLength(), PNS::MEANDER_PLACER::origPathLength(), PNS::MEANDER_SKEW_PLACER::origPathLength(), Start(), PNS::MEANDER_PLACER::Start(), and PNS::MEANDER_SKEW_PLACER::Start().
|
protectedinherited |
Definition at line 148 of file pns_meander_placer_base.h.
Referenced by PNS::MEANDER_PLACER_BASE::MEANDER_PLACER_BASE(), origPathLength(), PNS::MEANDER_SKEW_PLACER::origPathLength(), Start(), and PNS::MEANDER_SKEW_PLACER::Start().
|
private |
Definition at line 145 of file pns_dp_meander_placer.h.
Referenced by FixRoute(), Move(), and Traces().
|
private |
Definition at line 145 of file pns_dp_meander_placer.h.
Referenced by FixRoute(), Move(), and Traces().
|
private |
Definition at line 147 of file pns_dp_meander_placer.h.
Referenced by CurrentLayer(), DP_MEANDER_PLACER(), and Start().
|
private |
Definition at line 149 of file pns_dp_meander_placer.h.
Referenced by DP_MEANDER_PLACER(), Move(), and TuningResult().
|
private |
Definition at line 152 of file pns_dp_meander_placer.h.
Referenced by DP_MEANDER_PLACER(), Move(), and TuningStatus().
|
protectedinherited |
Definition at line 88 of file pns_algo_base.h.
Referenced by PNS::ALGO_BASE::Logger(), and PNS::ALGO_BASE::SetLogger().
|
private |
Definition at line 139 of file pns_dp_meander_placer.h.
Referenced by CheckFit(), CurrentNets(), FixRoute(), GetOriginPair(), HasPlacedAnything(), Move(), Start(), and Traces().
|
private |
Definition at line 151 of file pns_dp_meander_placer.h.
Referenced by DP_MEANDER_PLACER(), origPathLength(), and Start().
|
private |
Definition at line 150 of file pns_dp_meander_placer.h.
Referenced by DP_MEANDER_PLACER(), origPathLength(), and Start().
|
private |
Definition at line 146 of file pns_dp_meander_placer.h.
Referenced by CheckFit(), and Move().
|
protectedinherited |
Definition at line 87 of file pns_algo_base.h.
Referenced by PNS::MEANDER_PLACER::doMove(), PNS::LINE_PLACER::FixRoute(), Move(), PNS::MEANDER_SKEW_PLACER::Move(), PNS::ALGO_BASE::Router(), PNS::ALGO_BASE::Settings(), PNS::DIFF_PAIR_PLACER::updateLeadingRatLine(), PNS::LINE_PLACER::updateLeadingRatLine(), and PNS::ALGO_BASE::VisibleViewArea().
|
protectedinherited |
The current end point.
Definition at line 142 of file pns_meander_placer_base.h.
Referenced by PNS::MEANDER_PLACER_BASE::AmplitudeStep(), PNS::MEANDER_PLACER::CheckFit(), PNS::MEANDER_PLACER::doMove(), PNS::MEANDER_PLACER_BASE::MeanderSettings(), Move(), PNS::MEANDER_PLACER::Move(), PNS::MEANDER_SKEW_PLACER::Move(), PNS::MEANDER_PLACER_BASE::SpacingStep(), and PNS::MEANDER_PLACER_BASE::UpdateSettings().
|
protectedinherited |
Definition at line 149 of file pns_meander_placer_base.h.
Referenced by PNS::MEANDER_PLACER_BASE::MEANDER_PLACER_BASE(), origPathLength(), PNS::MEANDER_PLACER::origPathLength(), PNS::MEANDER_SKEW_PLACER::origPathLength(), Start(), PNS::MEANDER_PLACER::Start(), and PNS::MEANDER_SKEW_PLACER::Start().
|
protectedinherited |
Definition at line 147 of file pns_meander_placer_base.h.
Referenced by PNS::MEANDER_PLACER_BASE::MEANDER_PLACER_BASE(), origPathLength(), PNS::MEANDER_SKEW_PLACER::origPathLength(), Start(), and PNS::MEANDER_SKEW_PLACER::Start().
|
private |
Definition at line 143 of file pns_dp_meander_placer.h.
|
private |
Definition at line 143 of file pns_dp_meander_placer.h.
Referenced by Move(), origPathLength(), Start(), and TunedPath().
|
private |
Definition at line 143 of file pns_dp_meander_placer.h.
Referenced by Move(), origPathLength(), Start(), and TunedPath().
|
protectedinherited |
Width of the meandered trace(s).
Definition at line 136 of file pns_meander_placer_base.h.
Referenced by AbortPlacement(), PNS::MEANDER_PLACER::AbortPlacement(), CurrentNode(), PNS::MEANDER_PLACER::CurrentNode(), PNS::MEANDER_PLACER::doMove(), DP_MEANDER_PLACER(), PNS::MEANDER_PLACER_BASE::GetTotalPadToDieLength(), PNS::MEANDER_PLACER_BASE::MEANDER_PLACER_BASE(), Move(), Start(), PNS::MEANDER_PLACER::Start(), and PNS::MEANDER_SKEW_PLACER::Start().