Apply 0ef63aca47
to diff pairs.
Fixes https://gitlab.com/kicad/code/kicad/issues/6314
This commit is contained in:
parent
a8269b6380
commit
c0a9742b3a
|
@ -260,13 +260,14 @@ class DP_GATEWAYS
|
||||||
/**
|
/**
|
||||||
* DIFF_PAIR
|
* DIFF_PAIR
|
||||||
*
|
*
|
||||||
* Basic class for a differential pair. Stores two PNS_LINEs (for positive and negative nets, respectively),
|
* Basic class for a differential pair. Stores two PNS_LINEs (for positive and negative nets,
|
||||||
* the gap and coupling constraints.
|
* respectively), the gap and coupling constraints.
|
||||||
**/
|
**/
|
||||||
class DIFF_PAIR : public LINK_HOLDER {
|
class DIFF_PAIR : public LINK_HOLDER
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
struct COUPLED_SEGMENTS {
|
struct COUPLED_SEGMENTS
|
||||||
|
{
|
||||||
COUPLED_SEGMENTS ( const SEG& aCoupledP, const SEG& aParentP, int aIndexP,
|
COUPLED_SEGMENTS ( const SEG& aCoupledP, const SEG& aParentP, int aIndexP,
|
||||||
const SEG& aCoupledN, const SEG& aParentN, int aIndexN ) :
|
const SEG& aCoupledN, const SEG& aParentN, int aIndexN ) :
|
||||||
coupledP( aCoupledP ),
|
coupledP( aCoupledP ),
|
||||||
|
@ -287,7 +288,9 @@ public:
|
||||||
|
|
||||||
typedef std::vector<COUPLED_SEGMENTS> COUPLED_SEGMENTS_VEC;
|
typedef std::vector<COUPLED_SEGMENTS> COUPLED_SEGMENTS_VEC;
|
||||||
|
|
||||||
DIFF_PAIR() : LINK_HOLDER( ITEM::DIFF_PAIR_T ), m_hasVias( false )
|
DIFF_PAIR() :
|
||||||
|
LINK_HOLDER( ITEM::DIFF_PAIR_T ),
|
||||||
|
m_hasVias( false )
|
||||||
{
|
{
|
||||||
// Initialize some members, to avoid uninitialized variables.
|
// Initialize some members, to avoid uninitialized variables.
|
||||||
m_net_p = 0;
|
m_net_p = 0;
|
||||||
|
@ -315,7 +318,7 @@ public:
|
||||||
m_chamferLimit = 0;
|
m_chamferLimit = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DIFF_PAIR( const SHAPE_LINE_CHAIN &aP, const SHAPE_LINE_CHAIN& aN, int aGap = 0 ):
|
DIFF_PAIR( const SHAPE_LINE_CHAIN &aP, const SHAPE_LINE_CHAIN& aN, int aGap = 0 ) :
|
||||||
LINK_HOLDER( ITEM::DIFF_PAIR_T ),
|
LINK_HOLDER( ITEM::DIFF_PAIR_T ),
|
||||||
m_n( aN ),
|
m_n( aN ),
|
||||||
m_p( aP ),
|
m_p( aP ),
|
||||||
|
@ -333,7 +336,7 @@ public:
|
||||||
m_chamferLimit = 0;
|
m_chamferLimit = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DIFF_PAIR( const LINE &aLineP, const LINE &aLineN, int aGap = 0 ):
|
DIFF_PAIR( const LINE &aLineP, const LINE &aLineN, int aGap = 0 ) :
|
||||||
LINK_HOLDER( ITEM::DIFF_PAIR_T ),
|
LINK_HOLDER( ITEM::DIFF_PAIR_T ),
|
||||||
m_line_p( aLineP ),
|
m_line_p( aLineP ),
|
||||||
m_line_n( aLineN ),
|
m_line_n( aLineN ),
|
||||||
|
@ -398,6 +401,8 @@ public:
|
||||||
void SetWidth( int aWidth )
|
void SetWidth( int aWidth )
|
||||||
{
|
{
|
||||||
m_width = aWidth;
|
m_width = aWidth;
|
||||||
|
m_n.SetWidth( aWidth );
|
||||||
|
m_p.SetWidth( aWidth );
|
||||||
}
|
}
|
||||||
|
|
||||||
int Width() const { return m_width; }
|
int Width() const { return m_width; }
|
||||||
|
@ -430,6 +435,18 @@ public:
|
||||||
return m_hasVias;
|
return m_hasVias;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetViaDiameter( int aDiameter )
|
||||||
|
{
|
||||||
|
m_via_p.SetDiameter( aDiameter );
|
||||||
|
m_via_n.SetDiameter( aDiameter );
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetViaDrill( int aDrill )
|
||||||
|
{
|
||||||
|
m_via_p.SetDrill( aDrill );
|
||||||
|
m_via_n.SetDrill( aDrill );
|
||||||
|
}
|
||||||
|
|
||||||
int NetP() const
|
int NetP() const
|
||||||
{
|
{
|
||||||
return m_net_p;
|
return m_net_p;
|
||||||
|
|
|
@ -738,8 +738,14 @@ void DIFF_PAIR_PLACER::UpdateSizes( const SIZES_SETTINGS& aSizes )
|
||||||
|
|
||||||
if( !m_idle )
|
if( !m_idle )
|
||||||
{
|
{
|
||||||
initPlacement();
|
m_currentTrace.SetWidth( m_sizes.DiffPairWidth() );
|
||||||
Move( m_currentEnd, NULL );
|
m_currentTrace.SetGap( m_sizes.DiffPairGap() );
|
||||||
|
|
||||||
|
if( m_currentTrace.EndsWithVias() )
|
||||||
|
{
|
||||||
|
m_currentTrace.SetViaDiameter( m_sizes.ViaDiameter() );
|
||||||
|
m_currentTrace.SetViaDrill( m_sizes.ViaDrill() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue