69 "net for skew tuning. Make sure the names of the nets belonging "
70 "to a differential pair end with either _N/_P or +/-." ) );
145 if(
const LINE* l = dyn_cast<const LINE*>( item ) )
147 PNS_DBG(
Dbg(), AddItem, l,
BLUE, 10000, wxT(
"tuned-path-skew-p" ) );
155 if(
const LINE* l = dyn_cast<const LINE*>( item ) )
ROUTER * Router() const
Return current router settings.
DEBUG_DECORATOR * Dbg() const
const std::vector< ITEM * > & CItems() const
Base class for PNS router board items.
virtual NET_HANDLE Net() const
bool OfKind(int aKindMask) const
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads,...
int Width() const
Return true if the line is geometrically identical as line aOther.
LINKED_ITEM * GetLink(int aIndex) const
Erase the linking information. Used to detach the line from the owning node.
int m_currentWidth
Meander settings.
MEANDER_SETTINGS m_settings
The current end point.
NODE * m_world
Width of the meandered trace(s).
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)
Single track length matching/meandering tool.
bool doMove(const VECTOR2I &aP, ITEM *aEndItem, long long int aTargetLength, long long int aTargetMin, long long int aTargetMax)
LINKED_ITEM * m_initialSegment
Total length added by pad to die size.
VECTOR2I m_currentStart
Current world state.
long long int m_lastLength
MINOPTMAX< int > m_targetSkew
long long int origPathLength() const override
current routing start point (end of tail, beginning of head)
long long int m_coupledLength
MEANDER_SKEW_PLACER(ROUTER *aRouter)
bool Move(const VECTOR2I &aP, ITEM *aEndItem) override
Function Move()
bool Start(const VECTOR2I &aP, ITEM *aStartItem) override
Function Start()
long long int CurrentSkew() const
long long int TuningResult() const override
Return the resultant length or skew of the tuned traces.
NODE * Branch()
Create a lightweight copy (called branch) of self that tracks the changes (added/removed items) wrs t...
void Remove(ARC *aArc)
Remove an item from this branch.
const LINE AssembleLine(LINKED_ITEM *aSeg, int *aOriginSegmentIndex=nullptr, bool aStopAtLockedJoints=false, bool aFollowLockedSegments=false)
Follow the joint map to assemble a line connecting two non-trivial joints starting from segment aSeg.
virtual void DisplayPathLine(const SHAPE_LINE_CHAIN &aLine, int aImportance)=0
ROUTER_IFACE * GetInterface() const
void SetFailureReason(const wxString &aReason)
const DIFF_PAIR AssembleDiffPair(SEGMENT *aStart)
const ITEM_SET AssembleTrivialPath(ITEM *aStart, std::pair< const JOINT *, const JOINT * > *aTerminalJoints=nullptr, bool aFollowLockedSegments=false)
Assemble a trivial path between two joints given a starting item.
const ITEM_SET AssembleTuningPath(ITEM *aStart, SOLID **aStartPad=nullptr, SOLID **aEndPad=nullptr)
Like AssembleTrivialPath, but follows the track length algorithm, which discards segments that are fu...
Push and Shove diff pair dimensions (gap) settings dialog.
#define PNS_DBG(dbg, method,...)
VECTOR2< int32_t > VECTOR2I