KiCad PCB EDA Suite
|
#include <pns_meander_skew_placer.h>
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 |
Function Start() | |
bool | Move (const VECTOR2I &aP, ITEM *aEndItem) override |
Function Move() | |
long long int | TuningResult () const override |
Return the resultant length or skew of the tuned traces. | |
long long int | CurrentSkew () const |
virtual bool | FixRoute (const VECTOR2I &aP, ITEM *aEndItem, bool aForceFinish=false) override |
Function FixRoute() | |
bool | CommitPlacement () override |
bool | AbortPlacement () override |
bool | HasPlacedAnything () const override |
NODE * | CurrentNode (bool aLoopsRemoved=false) const override |
Function CurrentNode() | |
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() | |
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 | |
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. | |
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 | |
VECTOR2I | m_currentStart |
Current world state. | |
NODE * | m_currentNode |
LINE | m_originLine |
LINE | m_currentTrace |
ITEM_SET | m_tunedPath |
SHAPE_LINE_CHAIN | m_finalShape |
MEANDERED_LINE | m_result |
LINKED_ITEM * | m_initialSegment |
Total length added by pad to die size. | |
int | m_padToDieLength |
long long int | m_lastLength |
TUNING_STATUS | m_lastStatus |
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 | |
long long int | origPathLength () const override |
current routing start point (end of tail, beginning of head) | |
Private Attributes | |
DIFF_PAIR | m_originPair |
ITEM_SET | m_tunedPathP |
ITEM_SET | m_tunedPathN |
long long int | m_coupledLength |
int | m_padToDieP |
int | m_padToDieN |
Differential pair skew adjustment algorithm.
Definition at line 39 of file pns_meander_skew_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::MEANDER_SKEW_PLACER::MEANDER_SKEW_PLACER | ( | ROUTER * | aRouter | ) |
Definition at line 33 of file pns_meander_skew_placer.cpp.
References m_coupledLength, m_padToDieN, and m_padToDieP.
PNS::MEANDER_SKEW_PLACER::~MEANDER_SKEW_PLACER | ( | ) |
Definition at line 43 of file pns_meander_skew_placer.cpp.
|
overridevirtualinherited |
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 238 of file pns_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().
|
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).
aShape | the shape to check. |
Reimplemented from PNS::MEANDER_PLACER_BASE.
Definition at line 261 of file pns_meander_placer.cpp.
References PNS::NODE::CheckColliding(), PNS::MEANDERED_LINE::CheckSelfIntersections(), PNS::MEANDER_SHAPE::CLine(), PNS::MEANDER_PLACER::m_currentNode, PNS::MEANDER_PLACER::m_originLine, PNS::MEANDER_PLACER::m_result, PNS::MEANDER_PLACER_BASE::m_settings, PNS::MEANDER_SETTINGS::m_spacing, 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().
|
overridevirtualinherited |
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 251 of file pns_meander_placer.cpp.
References PNS::ROUTER::CommitRouting(), PNS::MEANDER_PLACER::m_currentNode, and PNS::ALGO_BASE::Router().
Referenced by PNS::MEANDER_PLACER::FixRoute().
|
overridevirtualinherited |
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 291 of file pns_meander_placer.cpp.
References PNS::MEANDER_PLACER_BASE::m_currentEnd.
|
overridevirtualinherited |
Function CurrentLayer()
Returns the layer of currently routed track.
Implements PNS::PLACEMENT_ALGO.
Definition at line 296 of file pns_meander_placer.cpp.
References PNS::ITEM::Layers(), PNS::MEANDER_PLACER::m_initialSegment, and PNS_LAYER_RANGE::Start().
|
inlineoverridevirtualinherited |
Function CurrentNets()
Returns the net(s) of currently routed track(s).
Implements PNS::PLACEMENT_ALGO.
Definition at line 86 of file pns_meander_placer.h.
References PNS::MEANDER_PLACER::m_originLine, and PNS::ITEM::Net().
|
overridevirtualinherited |
Function CurrentNode()
Returns the most recent board state.
Implements PNS::PLACEMENT_ALGO.
Definition at line 50 of file pns_meander_placer.cpp.
References PNS::MEANDER_PLACER::m_currentNode, and PNS::MEANDER_PLACER_BASE::m_world.
long long int PNS::MEANDER_SKEW_PLACER::CurrentSkew | ( | ) | const |
Definition at line 133 of file pns_meander_skew_placer.cpp.
References m_coupledLength, and PNS::MEANDER_PLACER::m_lastLength.
|
overridevirtualinherited |
Function CurrentStart()
Returns the current start of the line(s) being placed/tuned.
Implements PNS::PLACEMENT_ALGO.
Definition at line 286 of file pns_meander_placer.cpp.
References PNS::MEANDER_PLACER::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(), PNS::DP_MEANDER_PLACER::Move(), 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().
|
protectedinherited |
Definition at line 107 of file pns_meander_placer.cpp.
References SEG::A, PNS::MEANDERED_LINE::AddArc(), PNS::MEANDERED_LINE::AddCorner(), SHAPE_LINE_CHAIN::Append(), SHAPE_LINE_CHAIN::Arc(), SHAPE_LINE_CHAIN::ArcIndex(), SEG::B, BLUE, PNS::NODE::Branch(), PNS::ITEM_SET::CItems(), SHAPE_LINE_CHAIN::Clear(), PNS::LINE::CLine(), SHAPE_LINE_CHAIN::CSegment(), PNS::ALGO_BASE::Dbg(), PNS::ROUTER_IFACE::DisplayPathLine(), PNS::ROUTER::GetInterface(), SHAPE_LINE_CHAIN::IsArcSegment(), SHAPE_LINE_CHAIN::Length(), PNS::MEANDER_PLACER::m_currentNode, PNS::MEANDER_PLACER::m_currentStart, PNS::MEANDER_PLACER::m_finalShape, PNS::MEANDER_SETTINGS::m_initialSide, PNS::MEANDER_SETTINGS::m_keepEndpoints, PNS::MEANDER_PLACER::m_lastLength, PNS::MEANDER_PLACER::m_lastStatus, PNS::MEANDER_PLACER::m_originLine, PNS::MEANDER_PLACER::m_result, PNS::ALGO_BASE::m_router, PNS::MEANDER_PLACER_BASE::m_settings, PNS::MEANDER_SETTINGS::m_targetLength, PNS::MEANDER_PLACER::m_tunedPath, PNS::MEANDER_PLACER_BASE::m_world, MINOPTMAX< T >::Max(), PNS::MEANDERED_LINE::Meanders(), PNS::MEANDERED_LINE::MeanderSegment(), PNS::MT_EMPTY, SHAPE_LINE_CHAIN::NextShape(), PNS::MEANDER_PLACER::origPathLength(), PNS_DBG, SHAPE_LINE_CHAIN::SegmentCount(), PNS::MEANDERED_LINE::SetBaselineOffset(), 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(), and PNS::LINE::Width().
Referenced by PNS::MEANDER_PLACER::Move(), and Move().
|
overridevirtualinherited |
Function FixRoute()
Commits the currently routed items 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 225 of file pns_meander_placer.cpp.
References PNS::NODE::Add(), PNS::MEANDER_PLACER::CommitPlacement(), PNS::MEANDER_PLACER::m_currentNode, PNS::MEANDER_PLACER::m_currentTrace, PNS::MEANDER_PLACER::m_finalShape, and PNS::MEANDER_PLACER::m_originLine.
|
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.
|
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 PNS::DP_MEANDER_PLACER::Start(), PNS::MEANDER_PLACER::Start(), and Start().
|
inherited |
Definition at line 254 of file pns_meander_placer_base.cpp.
References PNS::NODE::FindLineEnds(), PNS::JOINT::LinkList(), and PNS::MEANDER_PLACER_BASE::m_world.
|
overridevirtualinherited |
Reimplemented from PNS::PLACEMENT_ALGO.
Definition at line 245 of file pns_meander_placer.cpp.
References PNS::MEANDER_PLACER::m_currentTrace, and PNS::LINE::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 |
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 PNS::DP_MEANDER_PLACER::origPathLength(), PNS::MEANDER_PLACER::origPathLength(), origPathLength(), and 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().
|
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().
Function Move()
Moves the end of the currently routed primtive(s) to the point aP, taking aEndItem as the anchor (if not NULL). (unless NULL).
Reimplemented from PNS::MEANDER_PLACER.
Definition at line 139 of file pns_meander_skew_placer.cpp.
References BLUE, PNS::ITEM_SET::CItems(), PNS::ALGO_BASE::Dbg(), PNS::ROUTER_IFACE::DisplayPathLine(), PNS::MEANDER_PLACER::doMove(), PNS::ROUTER::GetInterface(), m_coupledLength, PNS::MEANDER_PLACER::m_originLine, m_originPair, PNS::ALGO_BASE::m_router, PNS::MEANDER_PLACER_BASE::m_settings, PNS::MEANDER_SETTINGS::m_targetSkew, m_tunedPathN, m_tunedPathP, MINOPTMAX< T >::Max(), MINOPTMAX< T >::Min(), PNS::ITEM::Net(), PNS::DIFF_PAIR::NetP(), MINOPTMAX< T >::Opt(), PNS_DBG, and YELLOW.
|
overrideprivatevirtual |
current routing start point (end of tail, beginning of head)
Reimplemented from PNS::MEANDER_PLACER.
Definition at line 123 of file pns_meander_skew_placer.cpp.
References PNS::MEANDER_PLACER_BASE::lineLength(), PNS::MEANDER_PLACER_BASE::m_endPad_n, PNS::MEANDER_PLACER_BASE::m_endPad_p, PNS::MEANDER_PLACER::m_originLine, m_originPair, m_padToDieN, m_padToDieP, PNS::MEANDER_PLACER_BASE::m_startPad_n, PNS::MEANDER_PLACER_BASE::m_startPad_p, PNS::MEANDER_PLACER::m_tunedPath, PNS::ITEM::Net(), and PNS::DIFF_PAIR::NetP().
|
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(), PNS::DP_MEANDER_PLACER::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::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(), PNS::DP_MEANDER_PLACER::Start(), PNS::LINE_PLACER::Start(), PNS::MEANDER_PLACER::Start(), 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().
|
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().
Function Start()
Starts placement/drag operation at point aP, taking item aStartItem as anchor (unless NULL).
Reimplemented from PNS::MEANDER_PLACER.
Definition at line 48 of file pns_meander_skew_placer.cpp.
References _, PNS::ITEM::ARC_T, PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::TOPOLOGY::AssembleTrivialPath(), 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(), PNS::MEANDER_PLACER_BASE::lineLength(), 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::m_initialSegment, PNS::MEANDER_PLACER::m_lastLength, PNS::MEANDER_PLACER::m_originLine, m_originPair, m_padToDieN, m_padToDieP, PNS::MEANDER_PLACER_BASE::m_startPad_n, PNS::MEANDER_PLACER_BASE::m_startPad_p, PNS::MEANDER_PLACER::m_tunedPath, m_tunedPathN, m_tunedPathP, PNS::MEANDER_PLACER_BASE::m_world, PNS::ITEM::Net(), PNS::DIFF_PAIR::NetP(), 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::LINE::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.
|
overridevirtualinherited |
Function Traces()
Returns all routed/tuned traces.
Implements PNS::PLACEMENT_ALGO.
Definition at line 275 of file pns_meander_placer.cpp.
References PNS::MEANDER_PLACER::m_currentTrace, PNS::MEANDER_PLACER::m_finalShape, and PNS::MEANDER_PLACER::m_originLine.
|
overridevirtualinherited |
Implements PNS::MEANDER_PLACER_BASE.
Definition at line 281 of file pns_meander_placer.cpp.
References PNS::MEANDER_PLACER::m_tunedPath.
|
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 PNS::MEANDER_SHAPE::BaselineLength(), PNS::MEANDER_SHAPE::CurrentLength(), PNS::findAmplitudeForLength(), PNS::MEANDERED_LINE::Meanders(), PNS::MT_ARC, PNS::MT_CORNER, PNS::MT_EMPTY, PNS::MT_FINISH, PNS::MT_SINGLE, PNS::MT_START, PNS::MEANDER_SHAPE::Recalculate(), and PNS::MEANDER_SHAPE::SetType().
Referenced by PNS::MEANDER_PLACER::doMove(), and PNS::DP_MEANDER_PLACER::Move().
|
overridevirtual |
Return the resultant length or skew of the tuned traces.
Reimplemented from PNS::MEANDER_PLACER.
Definition at line 169 of file pns_meander_skew_placer.cpp.
References m_coupledLength, and PNS::MEANDER_PLACER::m_lastLength.
|
overridevirtualinherited |
Return the tuning status (too short, too long, etc.) of the trace(s) being tuned.
Implements PNS::MEANDER_PLACER_BASE.
Definition at line 311 of file pns_meander_placer.cpp.
References PNS::MEANDER_PLACER::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().
|
private |
Definition at line 62 of file pns_meander_skew_placer.h.
Referenced by CurrentSkew(), MEANDER_SKEW_PLACER(), Move(), Start(), and TuningResult().
|
protectedinherited |
Definition at line 145 of file pns_meander_placer_base.h.
Referenced by PNS::DP_MEANDER_PLACER::CurrentEnd(), PNS::MEANDER_PLACER::CurrentEnd(), PNS::MEANDER_PLACER::Start(), and Start().
|
protectedinherited |
Definition at line 113 of file pns_meander_placer.h.
Referenced by PNS::MEANDER_PLACER::CheckFit(), PNS::MEANDER_PLACER::CommitPlacement(), PNS::MEANDER_PLACER::CurrentNode(), PNS::MEANDER_PLACER::doMove(), PNS::MEANDER_PLACER::FixRoute(), PNS::MEANDER_PLACER::MEANDER_PLACER(), PNS::MEANDER_PLACER::Start(), and Start().
|
protectedinherited |
Current world state.
Definition at line 110 of file pns_meander_placer.h.
Referenced by PNS::MEANDER_PLACER::CurrentStart(), PNS::MEANDER_PLACER::doMove(), PNS::MEANDER_PLACER::Start(), and Start().
|
protectedinherited |
Definition at line 116 of file pns_meander_placer.h.
Referenced by PNS::MEANDER_PLACER::FixRoute(), PNS::MEANDER_PLACER::HasPlacedAnything(), and PNS::MEANDER_PLACER::Traces().
|
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(), PNS::DP_MEANDER_PLACER::Start(), PNS::MEANDER_PLACER::Start(), and 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(), PNS::DP_MEANDER_PLACER::origPathLength(), PNS::MEANDER_PLACER::origPathLength(), origPathLength(), PNS::DP_MEANDER_PLACER::Start(), PNS::MEANDER_PLACER::Start(), and Start().
|
protectedinherited |
Definition at line 148 of file pns_meander_placer_base.h.
Referenced by PNS::MEANDER_PLACER_BASE::MEANDER_PLACER_BASE(), PNS::DP_MEANDER_PLACER::origPathLength(), origPathLength(), PNS::DP_MEANDER_PLACER::Start(), and Start().
|
protectedinherited |
Definition at line 119 of file pns_meander_placer.h.
Referenced by PNS::MEANDER_PLACER::doMove(), PNS::MEANDER_PLACER::FixRoute(), and PNS::MEANDER_PLACER::Traces().
|
protectedinherited |
Total length added by pad to die size.
Definition at line 121 of file pns_meander_placer.h.
Referenced by PNS::MEANDER_PLACER::CurrentLayer(), PNS::MEANDER_PLACER::MEANDER_PLACER(), PNS::MEANDER_PLACER::Start(), and Start().
|
protectedinherited |
Definition at line 126 of file pns_meander_placer.h.
Referenced by CurrentSkew(), PNS::MEANDER_PLACER::doMove(), PNS::MEANDER_PLACER::MEANDER_PLACER(), Start(), PNS::MEANDER_PLACER::TuningResult(), and TuningResult().
|
protectedinherited |
Definition at line 127 of file pns_meander_placer.h.
Referenced by PNS::MEANDER_PLACER::doMove(), PNS::MEANDER_PLACER::MEANDER_PLACER(), and PNS::MEANDER_PLACER::TuningStatus().
|
protectedinherited |
Definition at line 88 of file pns_algo_base.h.
Referenced by PNS::ALGO_BASE::Logger(), and PNS::ALGO_BASE::SetLogger().
|
protectedinherited |
Definition at line 115 of file pns_meander_placer.h.
Referenced by PNS::MEANDER_PLACER::CheckFit(), PNS::MEANDER_PLACER::CurrentNets(), PNS::MEANDER_PLACER::doMove(), PNS::MEANDER_PLACER::FixRoute(), Move(), origPathLength(), PNS::MEANDER_PLACER::Start(), Start(), and PNS::MEANDER_PLACER::Traces().
|
private |
Definition at line 59 of file pns_meander_skew_placer.h.
Referenced by Move(), origPathLength(), and Start().
|
protectedinherited |
Definition at line 124 of file pns_meander_placer.h.
Referenced by PNS::MEANDER_PLACER::MEANDER_PLACER(), PNS::MEANDER_PLACER::origPathLength(), and PNS::MEANDER_PLACER::Start().
|
private |
Definition at line 64 of file pns_meander_skew_placer.h.
Referenced by MEANDER_SKEW_PLACER(), origPathLength(), and Start().
|
private |
Definition at line 63 of file pns_meander_skew_placer.h.
Referenced by MEANDER_SKEW_PLACER(), origPathLength(), and Start().
|
protectedinherited |
Definition at line 120 of file pns_meander_placer.h.
Referenced by PNS::MEANDER_PLACER::CheckFit(), and PNS::MEANDER_PLACER::doMove().
|
protectedinherited |
Definition at line 87 of file pns_algo_base.h.
Referenced by PNS::MEANDER_PLACER::doMove(), PNS::LINE_PLACER::FixRoute(), PNS::MEANDER_PLACER_BASE::lineLength(), PNS::DP_MEANDER_PLACER::Move(), 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(), PNS::DP_MEANDER_PLACER::Move(), PNS::MEANDER_PLACER::Move(), 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(), PNS::DP_MEANDER_PLACER::origPathLength(), PNS::MEANDER_PLACER::origPathLength(), origPathLength(), PNS::DP_MEANDER_PLACER::Start(), PNS::MEANDER_PLACER::Start(), and Start().
|
protectedinherited |
Definition at line 147 of file pns_meander_placer_base.h.
Referenced by PNS::MEANDER_PLACER_BASE::MEANDER_PLACER_BASE(), PNS::DP_MEANDER_PLACER::origPathLength(), origPathLength(), PNS::DP_MEANDER_PLACER::Start(), and Start().
|
protectedinherited |
Definition at line 117 of file pns_meander_placer.h.
Referenced by PNS::MEANDER_PLACER::doMove(), PNS::MEANDER_PLACER::origPathLength(), origPathLength(), PNS::MEANDER_PLACER::Start(), Start(), and PNS::MEANDER_PLACER::TunedPath().
|
private |
Definition at line 60 of file pns_meander_skew_placer.h.
|
private |
Definition at line 60 of file pns_meander_skew_placer.h.
|
protectedinherited |
Width of the meandered trace(s).
Definition at line 136 of file pns_meander_placer_base.h.
Referenced by PNS::DP_MEANDER_PLACER::AbortPlacement(), PNS::MEANDER_PLACER::AbortPlacement(), PNS::DP_MEANDER_PLACER::CurrentNode(), PNS::MEANDER_PLACER::CurrentNode(), PNS::MEANDER_PLACER::doMove(), PNS::DP_MEANDER_PLACER::DP_MEANDER_PLACER(), PNS::MEANDER_PLACER_BASE::GetTotalPadToDieLength(), PNS::MEANDER_PLACER_BASE::MEANDER_PLACER_BASE(), PNS::DP_MEANDER_PLACER::Move(), PNS::DP_MEANDER_PLACER::Start(), PNS::MEANDER_PLACER::Start(), and Start().