KiCad PCB EDA Suite
PNS::DIFF_PAIR Class Reference

DIFF_PAIR. More...

#include <pns_diff_pair.h>

Inheritance diagram for PNS::DIFF_PAIR:
PNS::LINK_HOLDER PNS::ITEM

Classes

struct  COUPLED_SEGMENTS
 

Public Types

typedef std::vector< COUPLED_SEGMENTSCOUPLED_SEGMENTS_VEC
 
typedef std::vector< LINKED_ITEM * > LINKS
 
enum  PnsKind {
  SOLID_T = 1, LINE_T = 2, JOINT_T = 4, SEGMENT_T = 8,
  ARC_T = 16, VIA_T = 32, DIFF_PAIR_T = 64, ANY_T = 0xff
}
 

Supported item types

More...
 

Public Member Functions

 DIFF_PAIR ()
 
 DIFF_PAIR (int aGap)
 
 DIFF_PAIR (const SHAPE_LINE_CHAIN &aP, const SHAPE_LINE_CHAIN &aN, int aGap=0)
 
 DIFF_PAIR (const LINE &aLineP, const LINE &aLineN, int aGap=0)
 
DIFF_PAIRClone () const override
 Function Clone() More...
 
virtual void ClearLinks () override
 

Erases the linking information. Used to detach the line from the owning node.

More...
 
void SetShape (const SHAPE_LINE_CHAIN &aP, const SHAPE_LINE_CHAIN &aN, bool aSwapLanes=false)
 
void SetShape (const DIFF_PAIR &aPair)
 
void SetNets (int aP, int aN)
 
void SetWidth (int aWidth)
 
int Width () const
 
void SetGap (int aGap)
 
int Gap () const
 
void AppendVias (const VIA &aViaP, const VIA &aViaN)
 
void RemoveVias ()
 
bool EndsWithVias () const
 
int NetP () const
 
int NetN () const
 
LINEPLine ()
 
LINENLine ()
 
DP_PRIMITIVE_PAIR EndingPrimitives ()
 
double CoupledLength () const
 
double TotalLength () const
 
double CoupledLengthFactor () const
 
double Skew () const
 
void CoupledSegmentPairs (COUPLED_SEGMENTS_VEC &aPairs) const
 
void Clear ()
 
void Append (const DIFF_PAIR &aOther)
 
bool Empty () const
 
const SHAPE_LINE_CHAINCP () const
 
const SHAPE_LINE_CHAINCN () const
 
bool BuildInitial (const DP_GATEWAY &aEntry, const DP_GATEWAY &aTarget, bool aPrefDiagonal)
 
bool CheckConnectionAngle (const DIFF_PAIR &aOther, int allowedAngles) const
 
int CoupledLength (const SEG &aP, const SEG &aN) const
 
int64_t CoupledLength (const SHAPE_LINE_CHAIN &aP, const SHAPE_LINE_CHAIN &aN) const
 
const RANGED_NUM< int > GapConstraint () const
 
void Link (LINKED_ITEM *aLink)
 

Adds a reference to an item registered in a NODE that is a part of this line.

More...
 
LINKSLinks ()
 

Returns the list of links from the owning node that constitute this line (or NULL if the line is not linked)

More...
 
bool IsLinked () const
 
bool ContainsLink (const LINKED_ITEM *aItem) const
 

Checks if the segment aLink is a part of the line.

More...
 
LINKED_ITEMGetLink (int aIndex) const
 
int LinkCount () const
 

Returns the number of segments that were assembled together to form this line.

More...
 
void ShowLinks () const
 
virtual const SHAPE_LINE_CHAIN Hull (int aClearance=0, int aWalkaroundThickness=0) const
 
PnsKind Kind () const
 Function Kind() More...
 
bool OfKind (int aKindMask) const
 Function OfKind() More...
 
std::string KindStr () const
 Function KindStr() More...
 
void SetParent (BOARD_CONNECTED_ITEM *aParent)
 
BOARD_CONNECTED_ITEMParent () const
 
void SetNet (int aNet)
 
int Net () const
 
const LAYER_RANGELayers () const
 
void SetLayers (const LAYER_RANGE &aLayers)
 
void SetLayer (int aLayer)
 
virtual int Layer () const
 
bool LayersOverlap (const ITEM *aOther) const
 Function LayersOverlap() More...
 
NODEOwner () const
 Function Owner() More...
 
void SetOwner (NODE *aOwner)
 Functon SetOwner() More...
 
bool BelongsTo (NODE *aNode) const
 Function BelongsTo() More...
 
virtual bool Collide (const ITEM *aOther, int aClearance, bool aNeedMTV, VECTOR2I *aMTV, const NODE *aParentNode, bool aDifferentNetsOnly=true) const
 Function Collide() More...
 
virtual const SHAPEShape () const
 Function Shape() More...
 
virtual void Mark (int aMarker)
 
virtual void Unmark (int aMarker=-1)
 
virtual int Marker () const
 
virtual void SetRank (int aRank)
 
virtual int Rank () const
 
virtual VECTOR2I Anchor (int n) const
 
virtual int AnchorCount () const
 
bool IsLocked () const
 
void SetRoutable (bool aRoutable)
 
bool IsRoutable () const
 

Static Public Member Functions

static bool ClassOf (const ITEM *aItem)
 
static DIFF_PAIRAssembleDp (LINE *aLine)
 

Static Public Attributes

static const int UnusedNet = INT_MAX
 

Protected Member Functions

void copyLinks (const LINK_HOLDER *aParent)
 

Copies m_links from the line aParent.

More...
 

Protected Attributes

LINKS m_links
 

List of segments in the owning NODE (ITEM::m_owner) that constitute this line, or NULL if the line is not a part of any node.

More...
 
PnsKind m_kind
 
BOARD_CONNECTED_ITEMm_parent
 
NODEm_owner
 
LAYER_RANGE m_layers
 
bool m_movable
 
int m_net
 
int m_marker
 
int m_rank
 
bool m_routable
 

Private Member Functions

void updateLine (LINE &aLine, const SHAPE_LINE_CHAIN &aShape, int aNet, VIA &aVia)
 

Private Attributes

SHAPE_LINE_CHAIN m_n
 
SHAPE_LINE_CHAIN m_p
 
LINE m_line_p
 
LINE m_line_n
 
VIA m_via_p
 
VIA m_via_n
 
bool m_hasVias
 
int m_net_p
 
int m_net_n
 
int m_width
 
int m_gap
 
int m_viaGap
 
int m_maxUncoupledLength
 
int m_chamferLimit
 
RANGED_NUM< int > m_gapConstraint
 

Detailed Description

DIFF_PAIR.

Basic class for a differential pair. Stores two PNS_LINEs (for positive and negative nets, respectively), the gap and coupling constraints.

Definition at line 266 of file pns_diff_pair.h.

Member Typedef Documentation

◆ COUPLED_SEGMENTS_VEC

Definition at line 288 of file pns_diff_pair.h.

◆ LINKS

typedef std::vector<LINKED_ITEM*> PNS::LINK_HOLDER::LINKS
inherited

Definition at line 33 of file pns_link_holder.h.

Member Enumeration Documentation

◆ PnsKind

enum PNS::ITEM::PnsKind
inherited

Supported item types

Enumerator
SOLID_T 
LINE_T 
JOINT_T 
SEGMENT_T 
ARC_T 
VIA_T 
DIFF_PAIR_T 
ANY_T 

Definition at line 59 of file pns_item.h.

60  {
61  SOLID_T = 1,
62  LINE_T = 2,
63  JOINT_T = 4,
64  SEGMENT_T = 8,
65  ARC_T = 16,
66  VIA_T = 32,
67  DIFF_PAIR_T = 64,
68  ANY_T = 0xff
69  };

Constructor & Destructor Documentation

◆ DIFF_PAIR() [1/4]

PNS::DIFF_PAIR::DIFF_PAIR ( )
inline

Definition at line 290 of file pns_diff_pair.h.

291  {
292  // Initialize some members, to avoid uninitialized variables.
293  m_net_p = 0;
294  m_net_n = 0;;
295  m_width = 0;
296  m_gap = 0;
297  m_viaGap = 0;
299  m_chamferLimit = 0;
300  }

References m_chamferLimit, m_gap, m_maxUncoupledLength, m_net_n, m_net_p, m_viaGap, and m_width.

◆ DIFF_PAIR() [2/4]

PNS::DIFF_PAIR::DIFF_PAIR ( int  aGap)
inline

Definition at line 302 of file pns_diff_pair.h.

302  :
304  m_hasVias( false )
305  {
306  m_gapConstraint = aGap;
307 
308  // Initialize other members, to avoid uninitialized variables.
309  m_net_p = 0;
310  m_net_n = 0;;
311  m_width = 0;
312  m_gap = 0;
313  m_viaGap = 0;
315  m_chamferLimit = 0;
316  }
RANGED_NUM< int > m_gapConstraint

References m_chamferLimit, m_gap, m_gapConstraint, m_maxUncoupledLength, m_net_n, m_net_p, m_viaGap, and m_width.

◆ DIFF_PAIR() [3/4]

PNS::DIFF_PAIR::DIFF_PAIR ( const SHAPE_LINE_CHAIN aP,
const SHAPE_LINE_CHAIN aN,
int  aGap = 0 
)
inline

Definition at line 318 of file pns_diff_pair.h.

318  :
320  m_n( aN ),
321  m_p( aP ),
322  m_hasVias( false )
323  {
324  m_gapConstraint = aGap;
325 
326  // Initialize other members, to avoid uninitialized variables.
327  m_net_p = 0;
328  m_net_n = 0;;
329  m_width = 0;
330  m_gap = 0;
331  m_viaGap = 0;
333  m_chamferLimit = 0;
334  }
RANGED_NUM< int > m_gapConstraint
SHAPE_LINE_CHAIN m_p
SHAPE_LINE_CHAIN m_n

References m_chamferLimit, m_gap, m_gapConstraint, m_maxUncoupledLength, m_net_n, m_net_p, m_viaGap, and m_width.

◆ DIFF_PAIR() [4/4]

PNS::DIFF_PAIR::DIFF_PAIR ( const LINE aLineP,
const LINE aLineN,
int  aGap = 0 
)
inline

Definition at line 336 of file pns_diff_pair.h.

336  :
338  m_line_p( aLineP ),
339  m_line_n( aLineN ),
340  m_hasVias( false )
341  {
342  m_gapConstraint = aGap;
343  m_net_p = aLineP.Net();
344  m_net_n = aLineN.Net();
345  m_p = aLineP.CLine();
346  m_n = aLineN.CLine();
347 
348  // Do not leave unitialized members, and keep static analyser quiet:
349  m_width = 0;
350  m_gap = 0;
351  m_viaGap = 0;
353  m_chamferLimit = 0;
354  }
RANGED_NUM< int > m_gapConstraint
SHAPE_LINE_CHAIN m_p
SHAPE_LINE_CHAIN m_n

References PNS::LINE::CLine(), m_chamferLimit, m_gap, m_gapConstraint, m_maxUncoupledLength, m_n, m_net_n, m_net_p, m_p, m_viaGap, m_width, and PNS::ITEM::Net().

Member Function Documentation

◆ Anchor()

virtual VECTOR2I PNS::ITEM::Anchor ( int  n) const
inlinevirtualinherited

◆ AnchorCount()

virtual int PNS::ITEM::AnchorCount ( ) const
inlinevirtualinherited

Reimplemented in PNS::VIA, PNS::SEGMENT, PNS::ARC, and PNS::SOLID.

Definition at line 231 of file pns_item.h.

232  {
233  return 0;
234  }

◆ Append()

void PNS::DIFF_PAIR::Append ( const DIFF_PAIR aOther)
inline

Definition at line 474 of file pns_diff_pair.h.

475  {
476  m_n.Append( aOther.m_n );
477  m_p.Append( aOther.m_p );
478  }
void Append(int aX, int aY, bool aAllowDuplication=false)
Function Append()
SHAPE_LINE_CHAIN m_p
SHAPE_LINE_CHAIN m_n

References SHAPE_LINE_CHAIN::Append(), m_n, and m_p.

◆ AppendVias()

void PNS::DIFF_PAIR::AppendVias ( const VIA aViaP,
const VIA aViaN 
)
inline

Definition at line 416 of file pns_diff_pair.h.

417  {
418  m_hasVias = true;
419  m_via_p = aViaP;
420  m_via_n = aViaN;
421  }

References m_hasVias, m_via_n, and m_via_p.

Referenced by PNS::DIFF_PAIR_PLACER::routeHead().

◆ AssembleDp()

static DIFF_PAIR* PNS::DIFF_PAIR::AssembleDp ( LINE aLine)
static

◆ BelongsTo()

bool PNS::ITEM::BelongsTo ( NODE aNode) const
inlineinherited

Function BelongsTo()

Returns
true if the item is owned by the node aNode.

Definition at line 187 of file pns_item.h.

188  {
189  return m_owner == aNode;
190  }
NODE * m_owner
Definition: pns_item.h:252

References PNS::ITEM::m_owner.

Referenced by PNS::NODE::doRemove().

◆ BuildInitial()

bool PNS::DIFF_PAIR::BuildInitial ( const DP_GATEWAY aEntry,
const DP_GATEWAY aTarget,
bool  aPrefDiagonal 
)

Definition at line 213 of file pns_diff_pair.cpp.

214 {
215  SHAPE_LINE_CHAIN p = DIRECTION_45().BuildInitialTrace ( aEntry.AnchorP(), aTarget.AnchorP(), aPrefDiagonal );
216  SHAPE_LINE_CHAIN n = DIRECTION_45().BuildInitialTrace ( aEntry.AnchorN(), aTarget.AnchorN(), aPrefDiagonal );
217 
218  int mask = aEntry.AllowedAngles() | DIRECTION_45::ANG_STRAIGHT | DIRECTION_45::ANG_OBTUSE;
219 
220  SHAPE_LINE_CHAIN sum_n, sum_p;
221  m_p = p;
222  m_n = n;
223 
224  if( aEntry.HasEntryLines() )
225  {
226  if( !aEntry.Entry().CheckConnectionAngle( *this, mask ) )
227  return false;
228 
229  sum_p = aEntry.Entry().CP();
230  sum_n = aEntry.Entry().CN();
231  sum_p.Append( p );
232  sum_n.Append( n );
233  }
234  else
235  {
236  sum_p = p;
237  sum_n = n;
238  }
239 
240  mask = aTarget.AllowedAngles() | DIRECTION_45::ANG_STRAIGHT | DIRECTION_45::ANG_OBTUSE;
241 
242  m_p = sum_p;
243  m_n = sum_n;
244 
245  if( aTarget.HasEntryLines() )
246  {
247  DP_GATEWAY t(aTarget) ;
248  t.Reverse();
249 
250  if( !CheckConnectionAngle( t.Entry(), mask ) )
251  return false;
252 
253  sum_p.Append( t.Entry().CP() );
254  sum_n.Append( t.Entry().CN() );
255  }
256 
257  m_p = sum_p;
258  m_n = sum_n;
259 
260  if( !checkGap ( p, n, m_gapConstraint ) )
261  return false;
262 
263  if( p.SelfIntersecting() || n.SelfIntersecting() )
264  return false;
265 
266  if( p.Intersects( n ) )
267  return false;
268 
269  return true;
270 }
static bool checkGap(const SHAPE_LINE_CHAIN &p, const SHAPE_LINE_CHAIN &n, int gap)
RANGED_NUM< int > m_gapConstraint
const OPT< INTERSECTION > SelfIntersecting() const
Function SelfIntersecting()
void Append(int aX, int aY, bool aAllowDuplication=false)
Function Append()
SHAPE_LINE_CHAIN m_p
DIRECTION_45.
Definition: direction45.h:37
bool Intersects(const SHAPE_LINE_CHAIN &aChain) const
SHAPE_LINE_CHAIN m_n
const SHAPE_LINE_CHAIN BuildInitialTrace(const VECTOR2I &aP0, const VECTOR2I &aP1, bool aStartDiagonal=false, int aMaxRadius=0) const
Function BuildInitialTrace()
bool CheckConnectionAngle(const DIFF_PAIR &aOther, int allowedAngles) const
SHAPE_LINE_CHAIN.

References PNS::DP_GATEWAY::AllowedAngles(), PNS::DP_GATEWAY::AnchorN(), PNS::DP_GATEWAY::AnchorP(), DIRECTION_45::ANG_OBTUSE, DIRECTION_45::ANG_STRAIGHT, SHAPE_LINE_CHAIN::Append(), DIRECTION_45::BuildInitialTrace(), CheckConnectionAngle(), PNS::checkGap(), CN(), CP(), PNS::DP_GATEWAY::Entry(), PNS::DP_GATEWAY::HasEntryLines(), SHAPE_LINE_CHAIN::Intersects(), m_gapConstraint, m_n, m_p, PNS::DP_GATEWAY::Reverse(), and SHAPE_LINE_CHAIN::SelfIntersecting().

Referenced by PNS::DP_GATEWAYS::FitGateways().

◆ CheckConnectionAngle()

bool PNS::DIFF_PAIR::CheckConnectionAngle ( const DIFF_PAIR aOther,
int  allowedAngles 
) const

Definition at line 273 of file pns_diff_pair.cpp.

274 {
275  bool checkP, checkN;
276 
277  if( m_p.SegmentCount() == 0 || aOther.m_p.SegmentCount() == 0 )
278  checkP = true;
279  else
280  {
281  DIRECTION_45 p0( m_p.CSegment( -1 ) );
282  DIRECTION_45 p1( aOther.m_p.CSegment( 0 ) );
283 
284  checkP = ( p0.Angle( p1 ) & aAllowedAngles ) != 0;
285  }
286 
287  if( m_n.SegmentCount() == 0 || aOther.m_n.SegmentCount() == 0 )
288  checkN = true;
289  else
290  {
291  DIRECTION_45 n0( m_n.CSegment( -1 ) );
292  DIRECTION_45 n1( aOther.m_n.CSegment( 0 ) );
293 
294  checkN = ( n0.Angle( n1 ) & aAllowedAngles ) != 0;
295  }
296 
297  return checkP && checkN;
298 }
SHAPE_LINE_CHAIN m_p
DIRECTION_45.
Definition: direction45.h:37
int SegmentCount() const
Function SegmentCount()
SHAPE_LINE_CHAIN m_n
const SEG CSegment(int aIndex) const
Function CSegment()

References SHAPE_LINE_CHAIN::CSegment(), m_n, m_p, and SHAPE_LINE_CHAIN::SegmentCount().

Referenced by BuildInitial().

◆ ClassOf()

static bool PNS::DIFF_PAIR::ClassOf ( const ITEM aItem)
inlinestatic

Definition at line 356 of file pns_diff_pair.h.

357  {
358  return aItem && ITEM::DIFF_PAIR_T == aItem->Kind();
359  }

References PNS::ITEM::DIFF_PAIR_T, and PNS::ITEM::Kind().

◆ Clear()

void PNS::DIFF_PAIR::Clear ( )
inline

Definition at line 468 of file pns_diff_pair.h.

469  {
470  m_n.Clear();
471  m_p.Clear();
472  }
SHAPE_LINE_CHAIN m_p
SHAPE_LINE_CHAIN m_n
void Clear()
Function Clear() Removes all points from the line chain.

References SHAPE_LINE_CHAIN::Clear(), m_n, and m_p.

◆ ClearLinks()

virtual void PNS::DIFF_PAIR::ClearLinks ( )
inlineoverridevirtual

Erases the linking information. Used to detach the line from the owning node.

Reimplemented from PNS::LINK_HOLDER.

Definition at line 363 of file pns_diff_pair.h.

364  {
365  m_links.clear();
368  }

References PNS::LINK_HOLDER::ClearLinks(), m_line_n, m_line_p, and PNS::LINK_HOLDER::m_links.

◆ Clone()

DIFF_PAIR* PNS::DIFF_PAIR::Clone ( ) const
inlineoverridevirtual

Function Clone()

Returns a deep copy of the item

Implements PNS::ITEM.

Definition at line 361 of file pns_diff_pair.h.

361 { assert( false ); return NULL; }
#define NULL

References NULL.

◆ CN()

◆ Collide()

bool PNS::ITEM::Collide ( const ITEM aOther,
int  aClearance,
bool  aNeedMTV,
VECTOR2I aMTV,
const NODE aParentNode,
bool  aDifferentNetsOnly = true 
) const
virtualinherited

Function Collide()

Checks for a collision (clearance violation) with between us and item aOther. Collision checking takes all PCB stuff into accound (layers, nets, DRC rules). Optionally returns a minimum translation vector for force propagation algorithm.

Parameters
aOtheritem to check collision against
aClearancedesired clearance
aNeedMTVwhen true, the minimum translation vector is calculated
aMTVthe minimum translation vector
Returns
true, if a collision was found.

Definition at line 48 of file pns_item.cpp.

50 {
51  if( collideSimple( aOther, aClearance, aNeedMTV, aMTV, aParentNode, aDifferentNetsOnly ) )
52  return true;
53 
54  // special case for "head" line with a via attached at the end.
55  if( aOther->m_kind == LINE_T )
56  {
57  const LINE* line = static_cast<const LINE*>( aOther );
58  int clearance = aClearance - line->Width() / 2;
59 
60  if( line->EndsWithVia() )
61  {
62  return collideSimple( &line->Via(), clearance, aNeedMTV, aMTV, aParentNode,
63  aDifferentNetsOnly );
64  }
65  }
66 
67  return false;
68 }
bool collideSimple(const ITEM *aOther, int aClearance, bool aNeedMTV, VECTOR2I *aMTV, const NODE *aParentNode, bool aDifferentNetsOnly) const
Definition: pns_item.cpp:30

References PNS::ITEM::collideSimple(), PNS::LINE::EndsWithVia(), PNS::ITEM::LINE_T, PNS::ITEM::m_kind, PNS::LINE::Via(), and PNS::LINE::Width().

Referenced by PNS::NODE::CheckColliding(), PNS::OPTIMIZER::CACHE_VISITOR::operator()(), and PNS::NODE::DEFAULT_OBSTACLE_VISITOR::operator()().

◆ ContainsLink()

bool PNS::LINK_HOLDER::ContainsLink ( const LINKED_ITEM aItem) const
inlineinherited

Checks if the segment aLink is a part of the line.

Definition at line 57 of file pns_link_holder.h.

58  {
59  return std::find( m_links.begin(), m_links.end(),
60  aItem ) != m_links.end();
61  }

References PNS::LINK_HOLDER::m_links.

◆ copyLinks()

void PNS::LINK_HOLDER::copyLinks ( const LINK_HOLDER aParent)
inlineprotectedinherited

Copies m_links from the line aParent.

Definition at line 98 of file pns_link_holder.h.

99  {
100  m_links = aParent->m_links;
101  }

References PNS::LINK_HOLDER::m_links.

Referenced by PNS::LINE::LINE(), and PNS::LINE::operator=().

◆ CoupledLength() [1/3]

double PNS::DIFF_PAIR::CoupledLength ( ) const

Definition at line 874 of file pns_diff_pair.cpp.

875 {
876  COUPLED_SEGMENTS_VEC pairs;
877 
878  CoupledSegmentPairs( pairs );
879 
880  double l = 0.0;
881  for( unsigned int i = 0; i < pairs.size(); i++ )
882  l += pairs[i].coupledP.Length();
883 
884  return l;
885 }
void CoupledSegmentPairs(COUPLED_SEGMENTS_VEC &aPairs) const
std::vector< COUPLED_SEGMENTS > COUPLED_SEGMENTS_VEC

References CoupledSegmentPairs().

Referenced by CoupledLengthFactor(), PNS::OPTIMIZER::mergeDpStep(), and PNS::DIFF_PAIR_PLACER::tryWalkDp().

◆ CoupledLength() [2/3]

int PNS::DIFF_PAIR::CoupledLength ( const SEG aP,
const SEG aN 
) const

Definition at line 908 of file pns_diff_pair.cpp.

909 {
910  SEG p_clip, n_clip;
911  int64_t dist = std::abs( aP.Distance( aN ) - m_width );
912 
913  if( aP.ApproxParallel( aN ) && m_gapConstraint.Matches( dist ) &&
914  commonParallelProjection ( aP, aN, p_clip, n_clip ) )
915  return p_clip.Length();
916 
917  return 0;
918 }
int Length() const
Function Length()
Definition: seg.h:319
int Distance(const SEG &aSeg) const
Function Distance()
Definition: seg.h:207
RANGED_NUM< int > m_gapConstraint
bool ApproxParallel(const SEG &aSeg) const
Definition: seg.h:265
Definition: seg.h:39
bool commonParallelProjection(SEG p, SEG n, SEG &pClip, SEG &nClip)
bool Matches(const T &aOther) const
Definition: ranged_num.h:43

References SEG::ApproxParallel(), PNS::commonParallelProjection(), SEG::Distance(), SEG::Length(), m_gapConstraint, m_width, and RANGED_NUM< T >::Matches().

◆ CoupledLength() [3/3]

int64_t PNS::DIFF_PAIR::CoupledLength ( const SHAPE_LINE_CHAIN aP,
const SHAPE_LINE_CHAIN aN 
) const

Definition at line 849 of file pns_diff_pair.cpp.

850 {
851  int64_t total = 0;
852 
853  for( int i = 0; i < aP.SegmentCount(); i++ )
854  {
855  for( int j = 0; j < aN.SegmentCount(); j++ )
856  {
857  SEG sp = aP.CSegment( i );
858  SEG sn = aN.CSegment( j );
859 
860  SEG p_clip, n_clip;
861 
862  int64_t dist = std::abs( sp.Distance(sn) - m_width );
863 
864  if( sp.ApproxParallel( sn ) && m_gapConstraint.Matches( dist ) &&
865  commonParallelProjection( sp, sn, p_clip, n_clip ) )
866  total += p_clip.Length();
867  }
868  }
869 
870  return total;
871 }
int Length() const
Function Length()
Definition: seg.h:319
int Distance(const SEG &aSeg) const
Function Distance()
Definition: seg.h:207
RANGED_NUM< int > m_gapConstraint
bool ApproxParallel(const SEG &aSeg) const
Definition: seg.h:265
int SegmentCount() const
Function SegmentCount()
Definition: seg.h:39
const SEG CSegment(int aIndex) const
Function CSegment()
bool commonParallelProjection(SEG p, SEG n, SEG &pClip, SEG &nClip)
bool Matches(const T &aOther) const
Definition: ranged_num.h:43

References SEG::ApproxParallel(), PNS::commonParallelProjection(), SHAPE_LINE_CHAIN::CSegment(), SEG::Distance(), SEG::Length(), m_gapConstraint, m_width, RANGED_NUM< T >::Matches(), and SHAPE_LINE_CHAIN::SegmentCount().

◆ CoupledLengthFactor()

double PNS::DIFF_PAIR::CoupledLengthFactor ( ) const

Definition at line 888 of file pns_diff_pair.cpp.

889 {
890  double t = TotalLength();
891 
892  if( t == 0.0 )
893  return 0.0;
894 
895  return CoupledLength() / t;
896 }
double CoupledLength() const
double TotalLength() const

References CoupledLength(), and TotalLength().

◆ CoupledSegmentPairs()

void PNS::DIFF_PAIR::CoupledSegmentPairs ( COUPLED_SEGMENTS_VEC aPairs) const

Definition at line 820 of file pns_diff_pair.cpp.

821 {
822  SHAPE_LINE_CHAIN p( m_p );
823  SHAPE_LINE_CHAIN n( m_n );
824 
825  p.Simplify();
826  n.Simplify();
827 
828  for( int i = 0; i < p.SegmentCount(); i++ )
829  {
830  for( int j = 0; j < n.SegmentCount(); j++ )
831  {
832  SEG sp = p.Segment( i );
833  SEG sn = n.Segment( j );
834 
835  SEG p_clip, n_clip;
836 
837  int64_t dist = std::abs( sp.Distance( sn ) - m_width );
838 
839  if( sp.ApproxParallel( sn ) && m_gapConstraint.Matches( dist ) && commonParallelProjection( sp, sn, p_clip, n_clip ) )
840  {
841  const COUPLED_SEGMENTS spair( p_clip, sp, i, n_clip, sn, j );
842  aPairs.push_back( spair );
843  }
844  }
845  }
846 }
int Distance(const SEG &aSeg) const
Function Distance()
Definition: seg.h:207
RANGED_NUM< int > m_gapConstraint
bool ApproxParallel(const SEG &aSeg) const
Definition: seg.h:265
SHAPE_LINE_CHAIN m_p
SHAPE_LINE_CHAIN m_n
Definition: seg.h:39
SHAPE_LINE_CHAIN.
bool commonParallelProjection(SEG p, SEG n, SEG &pClip, SEG &nClip)
bool Matches(const T &aOther) const
Definition: ranged_num.h:43

References SEG::ApproxParallel(), PNS::commonParallelProjection(), SEG::Distance(), m_gapConstraint, m_n, m_p, m_width, RANGED_NUM< T >::Matches(), SHAPE_LINE_CHAIN::Segment(), SHAPE_LINE_CHAIN::SegmentCount(), and SHAPE_LINE_CHAIN::Simplify().

Referenced by CoupledLength().

◆ CP()

◆ Empty()

bool PNS::DIFF_PAIR::Empty ( ) const
inline

Definition at line 480 of file pns_diff_pair.h.

481  {
482  return ( m_n.SegmentCount() == 0 ) || ( m_p.SegmentCount() == 0 );
483  }
SHAPE_LINE_CHAIN m_p
int SegmentCount() const
Function SegmentCount()
SHAPE_LINE_CHAIN m_n

References m_n, m_p, and SHAPE_LINE_CHAIN::SegmentCount().

◆ EndingPrimitives()

DP_PRIMITIVE_PAIR PNS::DIFF_PAIR::EndingPrimitives ( )

Definition at line 752 of file pns_diff_pair.cpp.

753 {
754  if( m_hasVias )
755  return DP_PRIMITIVE_PAIR( &m_via_p, &m_via_n );
756  else
757  {
758  const LINE lP( PLine() );
759  const LINE lN( NLine() );
760 
761  SEGMENT sP( lP, lP.CSegment( -1 ) );
762  SEGMENT sN( lN, lN.CSegment( -1 ) );
763 
764  DP_PRIMITIVE_PAIR dpair( &sP, &sN );
765  dpair.SetAnchors( sP.Seg().B, sN.Seg().B );
766 
767  return dpair;
768  }
769 }

References PNS::LINE::CSegment(), m_hasVias, m_via_n, m_via_p, NLine(), and PLine().

Referenced by PNS::DIFF_PAIR_PLACER::FixRoute().

◆ EndsWithVias()

bool PNS::DIFF_PAIR::EndsWithVias ( ) const
inline

Definition at line 428 of file pns_diff_pair.h.

429  {
430  return m_hasVias;
431  }

References m_hasVias.

Referenced by PNS::DIFF_PAIR_PLACER::FixRoute().

◆ Gap()

int PNS::DIFF_PAIR::Gap ( ) const
inline

◆ GapConstraint()

const RANGED_NUM<int> PNS::DIFF_PAIR::GapConstraint ( ) const
inline

Definition at line 494 of file pns_diff_pair.h.

495  {
496  return m_gapConstraint;
497  }
RANGED_NUM< int > m_gapConstraint

References m_gapConstraint.

Referenced by PNS::findCoupledVertices().

◆ GetLink()

LINKED_ITEM* PNS::LINK_HOLDER::GetLink ( int  aIndex) const
inlineinherited

Definition at line 63 of file pns_link_holder.h.

64  {
65  return m_links[aIndex];
66  }

References PNS::LINK_HOLDER::m_links.

Referenced by PNS::LINE_PLACER::removeLoops(), PNS::TOPOLOGY::SimplifyLine(), PNS::MEANDER_SKEW_PLACER::Start(), and PNS::DP_MEANDER_PLACER::Start().

◆ Hull()

virtual const SHAPE_LINE_CHAIN PNS::ITEM::Hull ( int  aClearance = 0,
int  aWalkaroundThickness = 0 
) const
inlinevirtualinherited

Reimplemented in PNS::VIA, PNS::SEGMENT, PNS::ARC, and PNS::SOLID.

Definition at line 113 of file pns_item.h.

114  {
115  return SHAPE_LINE_CHAIN();
116  }
SHAPE_LINE_CHAIN.

◆ IsLinked()

bool PNS::LINK_HOLDER::IsLinked ( ) const
inlineinherited

Definition at line 51 of file pns_link_holder.h.

52  {
53  return m_links.size() != 0;
54  }

References PNS::LINK_HOLDER::m_links.

Referenced by PNS::NODE::Add(), PNS::LINE::ClipVertexRange(), PNS::TOPOLOGY::followTrivialPath(), PNS::LINE::IsLinkedChecked(), NLine(), PLine(), PNS::LINE::Rank(), PNS::OPTIMIZER::removeCachedSegments(), PNS::LINK_HOLDER::ShowLinks(), and PNS::TOPOLOGY::SimplifyLine().

◆ IsLocked()

bool PNS::ITEM::IsLocked ( ) const
inlineinherited

Definition at line 236 of file pns_item.h.

237  {
238  return Marker() & MK_LOCKED;
239  }
virtual int Marker() const
Definition: pns_item.h:221

References PNS::ITEM::Marker(), and PNS::MK_LOCKED.

Referenced by ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), ROUTER_TOOL::performDragging(), and PNS::SHOVE::pushOrShoveVia().

◆ IsRoutable()

bool PNS::ITEM::IsRoutable ( ) const
inlineinherited

Definition at line 242 of file pns_item.h.

242 { return m_routable; }
bool m_routable
Definition: pns_item.h:259

References PNS::ITEM::m_routable.

Referenced by PNS::NODE::addSolid().

◆ Kind()

◆ KindStr()

std::string PNS::ITEM::KindStr ( ) const
inherited

Function KindStr()

Returns the kind of the item, as string

Definition at line 71 of file pns_item.cpp.

72 {
73  switch( m_kind )
74  {
75  case ARC_T: return "arc";
76  case LINE_T: return "line";
77  case SEGMENT_T: return "segment";
78  case VIA_T: return "via";
79  case JOINT_T: return "joint";
80  case SOLID_T: return "solid";
81  case DIFF_PAIR_T: return "diff-pair";
82  default: return "unknown";
83  }
84 }
PnsKind m_kind
Definition: pns_item.h:249

References PNS::ITEM::ARC_T, PNS::ITEM::DIFF_PAIR_T, PNS::ITEM::JOINT_T, PNS::ITEM::LINE_T, PNS::ITEM::m_kind, PNS::ITEM::SEGMENT_T, PNS::ITEM::SOLID_T, and PNS::ITEM::VIA_T.

Referenced by PNS::TOOL_BASE::pickSingleItem(), and PNS::TOOL_BASE::updateEndItem().

◆ Layer()

virtual int PNS::ITEM::Layer ( ) const
inlinevirtualinherited

Definition at line 155 of file pns_item.h.

155 { return Layers().Start(); }
int Start() const
Definition: pns_layerset.h:83
const LAYER_RANGE & Layers() const
Definition: pns_item.h:151

References PNS::ITEM::Layers(), and LAYER_RANGE::Start().

Referenced by PNS::OPTIMIZER::fanoutCleanup(), and PNS::OPTIMIZER::runSmartPads().

◆ Layers()

◆ LayersOverlap()

bool PNS::ITEM::LayersOverlap ( const ITEM aOther) const
inlineinherited

Function LayersOverlap()

Returns true if the set of layers spanned by aOther overlaps our layers.

Definition at line 163 of file pns_item.h.

164  {
165  return Layers().Overlaps( aOther->Layers() );
166  }
bool Overlaps(const LAYER_RANGE &aOther) const
Definition: pns_layerset.h:68
const LAYER_RANGE & Layers() const
Definition: pns_item.h:151

References PNS::ITEM::Layers(), and LAYER_RANGE::Overlaps().

Referenced by PNS::SHOVE::onCollidingArc(), PNS::SHOVE::onCollidingSegment(), PNS::SHOVE::ProcessSingleLine(), and PNS::NODE::rebuildJoint().

◆ Link()

void PNS::LINK_HOLDER::Link ( LINKED_ITEM aLink)
inlineinherited

Adds a reference to an item registered in a NODE that is a part of this line.

Definition at line 39 of file pns_link_holder.h.

40  {
41  m_links.push_back( aLink );
42  }

References PNS::LINK_HOLDER::m_links.

Referenced by PNS::NODE::Add(), and PNS::NODE::AssembleLine().

◆ LinkCount()

int PNS::LINK_HOLDER::LinkCount ( ) const
inlineinherited

Returns the number of segments that were assembled together to form this line.

Definition at line 75 of file pns_link_holder.h.

76  {
77  return m_links.size();
78  }

References PNS::LINK_HOLDER::m_links.

Referenced by PNS::LINE::IsLinkedChecked(), and PNS::LINE_PLACER::removeLoops().

◆ Links()

LINKS& PNS::LINK_HOLDER::Links ( )
inlineinherited

Returns the list of links from the owning node that constitute this line (or NULL if the line is not linked)

Definition at line 46 of file pns_link_holder.h.

47  {
48  return m_links;
49  }

References PNS::LINK_HOLDER::m_links.

Referenced by PNS::TOPOLOGY::followTrivialPath(), PNS::SHOVE::popLineStack(), PNS::SHOVE::ProcessSingleLine(), PNS::NODE::Remove(), PNS::OPTIMIZER::removeCachedSegments(), and PNS::SHOVE::unwindLineStack().

◆ Mark()

virtual void PNS::ITEM::Mark ( int  aMarker)
inlinevirtualinherited

Reimplemented in PNS::LINE.

Definition at line 219 of file pns_item.h.

219 { m_marker = aMarker; }
int m_marker
Definition: pns_item.h:257

References PNS::ITEM::m_marker.

◆ Marker()

virtual int PNS::ITEM::Marker ( ) const
inlinevirtualinherited

Reimplemented in PNS::LINE.

Definition at line 221 of file pns_item.h.

221 { return m_marker; }
int m_marker
Definition: pns_item.h:257

References PNS::ITEM::m_marker.

Referenced by PNS::ARC::ARC(), PNS::ITEM::IsLocked(), PNS::SHOVE::pushOrShoveVia(), and ROUTER_PREVIEW_ITEM::Update().

◆ Net()

◆ NetN()

int PNS::DIFF_PAIR::NetN ( ) const
inline

Definition at line 438 of file pns_diff_pair.h.

439  {
440  return m_net_n;
441  }

References m_net_n.

Referenced by PNS::DP_MEANDER_PLACER::CurrentNets().

◆ NetP()

int PNS::DIFF_PAIR::NetP ( ) const
inline

Definition at line 433 of file pns_diff_pair.h.

434  {
435  return m_net_p;
436  }

References m_net_p.

Referenced by PNS::DP_MEANDER_PLACER::CurrentNets().

◆ NLine()

◆ OfKind()

◆ Owner()

NODE* PNS::ITEM::Owner ( ) const
inlineinherited

Function Owner()

Returns the owner of this item, or NULL if there's none.

Definition at line 173 of file pns_item.h.

173 { return m_owner; }
NODE * m_owner
Definition: pns_item.h:252

References PNS::ITEM::m_owner.

Referenced by PNS::SIZES_SETTINGS::inheritTrackWidth(), and PNS::LINE_PLACER::Move().

◆ Parent()

◆ PLine()

◆ Rank()

virtual int PNS::ITEM::Rank ( ) const
inlinevirtualinherited

Reimplemented in PNS::LINE.

Definition at line 224 of file pns_item.h.

224 { return m_rank; }
int m_rank
Definition: pns_item.h:258

References PNS::ITEM::m_rank.

Referenced by PNS::ARC::ARC(), PNS::LINE::LINE(), PNS::SHOVE::onCollidingVia(), and PNS::SHOVE::shoveIteration().

◆ RemoveVias()

void PNS::DIFF_PAIR::RemoveVias ( )
inline

Definition at line 423 of file pns_diff_pair.h.

424  {
425  m_hasVias = false;
426  }

References m_hasVias.

◆ SetGap()

void PNS::DIFF_PAIR::SetGap ( int  aGap)
inline

◆ SetLayer()

void PNS::ITEM::SetLayer ( int  aLayer)
inlineinherited

◆ SetLayers()

void PNS::ITEM::SetLayers ( const LAYER_RANGE aLayers)
inlineinherited

Definition at line 152 of file pns_item.h.

152 { m_layers = aLayers; }
LAYER_RANGE m_layers
Definition: pns_item.h:253

References PNS::ITEM::m_layers.

Referenced by PNS::TOPOLOGY::AssembleDiffPair(), PNS::NODE::AssembleLine(), PNS::VIA::Clone(), and PNS::VIA::VIA().

◆ SetNet()

◆ SetNets()

void PNS::DIFF_PAIR::SetNets ( int  aP,
int  aN 
)
inline

Definition at line 392 of file pns_diff_pair.h.

393  {
394  m_net_p = aP;
395  m_net_n = aN;
396  }

References m_net_n, and m_net_p.

Referenced by PNS::DIFF_PAIR_PLACER::routeHead().

◆ SetOwner()

void PNS::ITEM::SetOwner ( NODE aOwner)
inlineinherited

Functon SetOwner()

Sets the node that owns this item. An item can belong to a single NODE or be unowned.

Definition at line 180 of file pns_item.h.

180 { m_owner = aOwner; }
NODE * m_owner
Definition: pns_item.h:252

References PNS::ITEM::m_owner.

Referenced by PNS::NODE::AssembleLine(), PNS::NODE::doRemove(), and PNS::NODE::Remove().

◆ SetParent()

void PNS::ITEM::SetParent ( BOARD_CONNECTED_ITEM aParent)
inlineinherited

Definition at line 145 of file pns_item.h.

145 { m_parent = aParent; }
BOARD_CONNECTED_ITEM * m_parent
Definition: pns_item.h:251

References PNS::ITEM::m_parent.

Referenced by PNS_KICAD_IFACE::AddItem().

◆ SetRank()

virtual void PNS::ITEM::SetRank ( int  aRank)
inlinevirtualinherited

Reimplemented in PNS::LINE.

Definition at line 223 of file pns_item.h.

223 { m_rank = aRank; }
int m_rank
Definition: pns_item.h:258

References PNS::ITEM::m_rank.

◆ SetRoutable()

void PNS::ITEM::SetRoutable ( bool  aRoutable)
inlineinherited

Definition at line 241 of file pns_item.h.

241 { m_routable = aRoutable; }
bool m_routable
Definition: pns_item.h:259

References PNS::ITEM::m_routable.

◆ SetShape() [1/2]

void PNS::DIFF_PAIR::SetShape ( const SHAPE_LINE_CHAIN aP,
const SHAPE_LINE_CHAIN aN,
bool  aSwapLanes = false 
)
inline

Definition at line 372 of file pns_diff_pair.h.

373  {
374  if( aSwapLanes )
375  {
376  m_p = aN;
377  m_n = aP;
378  }
379  else
380  {
381  m_p = aP;
382  m_n = aN;
383  }
384  }
SHAPE_LINE_CHAIN m_p
SHAPE_LINE_CHAIN m_n

References m_n, and m_p.

Referenced by PNS::DIFF_PAIR_PLACER::attemptWalk(), PNS::DP_GATEWAYS::FitGateways(), PNS::DIFF_PAIR_PLACER::FixRoute(), PNS::OPTIMIZER::mergeDpStep(), and PNS::DIFF_PAIR_PLACER::tryWalkDp().

◆ SetShape() [2/2]

void PNS::DIFF_PAIR::SetShape ( const DIFF_PAIR aPair)
inline

Definition at line 386 of file pns_diff_pair.h.

387  {
388  m_p = aPair.m_p;
389  m_n = aPair.m_n;
390  }
SHAPE_LINE_CHAIN m_p
SHAPE_LINE_CHAIN m_n

References m_n, and m_p.

◆ SetWidth()

void PNS::DIFF_PAIR::SetWidth ( int  aWidth)
inline

Definition at line 398 of file pns_diff_pair.h.

399  {
400  m_width = aWidth;
401  }

References m_width.

Referenced by PNS::TOPOLOGY::AssembleDiffPair(), and PNS::DIFF_PAIR_PLACER::routeHead().

◆ Shape()

virtual const SHAPE* PNS::ITEM::Shape ( ) const
inlinevirtualinherited

Function Shape()

Returns the geometrical shape of the item. Used for collision detection & spatial indexing.

Reimplemented in PNS::VIA, PNS::LINE, PNS::ARC, PNS::SEGMENT, and PNS::SOLID.

Definition at line 214 of file pns_item.h.

215  {
216  return NULL;
217  }
#define NULL

References NULL.

Referenced by PNS::DP_GATEWAYS::BuildFromPrimitivePair(), PNS_PCBNEW_RULE_RESOLVER::CollideHoles(), PNS::ITEM::collideSimple(), PNS::OPTIMIZER::computeBreakouts(), PNS::OPTIMIZER::customBreakouts(), PNS::SHOVE::onCollidingVia(), PNS::HIT_VISITOR::operator()(), PNS::INDEX::Query(), and ROUTER_PREVIEW_ITEM::Update().

◆ ShowLinks()

void PNS::LINK_HOLDER::ShowLinks ( ) const
inlineinherited

Definition at line 80 of file pns_link_holder.h.

81  {
82  #if 0 // fixme: move outside header
83  if( !IsLinked() )
84  {
85  wxLogTrace( "PNS", "item %p: no links", this );
86  return;
87  }
88 
89  wxLogTrace( "PNS", "item %p: %d links", this, (int) m_links.size() );
90 
91  for( int i = 0; i < (int) m_links.size(); i++ )
92  wxLogTrace( "PNS", "item %d: %p\n", i, m_links[i] );
93  #endif
94  }

References PNS::LINK_HOLDER::IsLinked(), and PNS::LINK_HOLDER::m_links.

◆ Skew()

double PNS::DIFF_PAIR::Skew ( ) const

Definition at line 814 of file pns_diff_pair.cpp.

815 {
816  return m_p.Length() - m_n.Length();
817 }
long long int Length() const
Function Length()
SHAPE_LINE_CHAIN m_p
SHAPE_LINE_CHAIN m_n

References SHAPE_LINE_CHAIN::Length(), m_n, and m_p.

Referenced by PNS::DIFF_PAIR_PLACER::tryWalkDp().

◆ TotalLength()

double PNS::DIFF_PAIR::TotalLength ( ) const

Definition at line 899 of file pns_diff_pair.cpp.

900 {
901  double lenP = m_p.Length();
902  double lenN = m_n.Length();
903 
904  return (lenN + lenP ) / 2.0;
905 }
long long int Length() const
Function Length()
SHAPE_LINE_CHAIN m_p
SHAPE_LINE_CHAIN m_n

References SHAPE_LINE_CHAIN::Length(), m_n, and m_p.

Referenced by CoupledLengthFactor().

◆ Unmark()

virtual void PNS::ITEM::Unmark ( int  aMarker = -1)
inlinevirtualinherited

Reimplemented in PNS::LINE.

Definition at line 220 of file pns_item.h.

220 { m_marker &= ~aMarker; }
int m_marker
Definition: pns_item.h:257

References PNS::ITEM::m_marker.

Referenced by PNS::DRAGGER::Start().

◆ updateLine()

void PNS::DIFF_PAIR::updateLine ( LINE aLine,
const SHAPE_LINE_CHAIN aShape,
int  aNet,
VIA aVia 
)
inlineprivate

Definition at line 500 of file pns_diff_pair.h.

501  {
502  aLine.SetShape( aShape );
503  aLine.SetWidth( m_width );
504  aLine.SetNet( aNet );
505  aLine.SetLayer( Layers().Start() );
506 
507  if( m_hasVias )
508  aLine.AppendVia( aVia );
509  }
const LAYER_RANGE & Layers() const
Definition: pns_item.h:151

References PNS::LINE::AppendVia(), PNS::ITEM::Layers(), m_hasVias, m_width, PNS::ITEM::SetLayer(), PNS::ITEM::SetNet(), PNS::LINE::SetShape(), and PNS::LINE::SetWidth().

Referenced by NLine(), and PLine().

◆ Width()

int PNS::DIFF_PAIR::Width ( ) const
inline

Definition at line 403 of file pns_diff_pair.h.

403 { return m_width; }

References m_width.

Referenced by PNS::findCoupledVertices(), and PNS::DP_MEANDER_PLACER::Start().

Member Data Documentation

◆ m_chamferLimit

int PNS::DIFF_PAIR::m_chamferLimit
private

Definition at line 521 of file pns_diff_pair.h.

Referenced by DIFF_PAIR().

◆ m_gap

int PNS::DIFF_PAIR::m_gap
private

Definition at line 518 of file pns_diff_pair.h.

Referenced by DIFF_PAIR(), Gap(), and SetGap().

◆ m_gapConstraint

RANGED_NUM<int> PNS::DIFF_PAIR::m_gapConstraint
private

◆ m_hasVias

bool PNS::DIFF_PAIR::m_hasVias
private

Definition at line 515 of file pns_diff_pair.h.

Referenced by AppendVias(), EndingPrimitives(), EndsWithVias(), RemoveVias(), and updateLine().

◆ m_kind

PnsKind PNS::ITEM::m_kind
protectedinherited

◆ m_layers

◆ m_line_n

LINE PNS::DIFF_PAIR::m_line_n
private

Definition at line 512 of file pns_diff_pair.h.

Referenced by ClearLinks(), and NLine().

◆ m_line_p

LINE PNS::DIFF_PAIR::m_line_p
private

Definition at line 512 of file pns_diff_pair.h.

Referenced by ClearLinks(), and PLine().

◆ m_links

◆ m_marker

◆ m_maxUncoupledLength

int PNS::DIFF_PAIR::m_maxUncoupledLength
private

Definition at line 520 of file pns_diff_pair.h.

Referenced by DIFF_PAIR().

◆ m_movable

bool PNS::ITEM::m_movable
protectedinherited

◆ m_n

◆ m_net

◆ m_net_n

int PNS::DIFF_PAIR::m_net_n
private

Definition at line 516 of file pns_diff_pair.h.

Referenced by DIFF_PAIR(), NetN(), NLine(), and SetNets().

◆ m_net_p

int PNS::DIFF_PAIR::m_net_p
private

Definition at line 516 of file pns_diff_pair.h.

Referenced by DIFF_PAIR(), NetP(), PLine(), and SetNets().

◆ m_owner

NODE* PNS::ITEM::m_owner
protectedinherited

◆ m_p

◆ m_parent

BOARD_CONNECTED_ITEM* PNS::ITEM::m_parent
protectedinherited

◆ m_rank

◆ m_routable

bool PNS::ITEM::m_routable
protectedinherited

Definition at line 259 of file pns_item.h.

Referenced by PNS::ITEM::IsRoutable(), PNS::ITEM::ITEM(), and PNS::ITEM::SetRoutable().

◆ m_via_n

VIA PNS::DIFF_PAIR::m_via_n
private

Definition at line 513 of file pns_diff_pair.h.

Referenced by AppendVias(), EndingPrimitives(), and NLine().

◆ m_via_p

VIA PNS::DIFF_PAIR::m_via_p
private

Definition at line 513 of file pns_diff_pair.h.

Referenced by AppendVias(), EndingPrimitives(), and PLine().

◆ m_viaGap

int PNS::DIFF_PAIR::m_viaGap
private

Definition at line 519 of file pns_diff_pair.h.

Referenced by DIFF_PAIR().

◆ m_width

int PNS::DIFF_PAIR::m_width
private

◆ UnusedNet

const int PNS::ITEM::UnusedNet = INT_MAX
staticinherited

Definition at line 56 of file pns_item.h.

Referenced by PNS::ITEM::ITEM().


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