Enforce hole-to-hole min when placing diffpair vias.
Fixes https://gitlab.com/kicad/code/kicad/issues/6931
This commit is contained in:
parent
93bd2171ab
commit
f7b20611c1
|
@ -188,19 +188,14 @@ class DP_GATEWAYS
|
|||
{
|
||||
public:
|
||||
DP_GATEWAYS( int aGap ):
|
||||
m_gap( aGap ), m_viaGap( aGap )
|
||||
m_gap( aGap ),
|
||||
m_viaGap( aGap )
|
||||
{
|
||||
// Do not leave unitialized members, and keep static analyser quiet:
|
||||
m_viaDiameter = 0;
|
||||
m_fitVias = true;
|
||||
}
|
||||
|
||||
void SetGap( int aGap )
|
||||
{
|
||||
m_gap = aGap;
|
||||
m_viaGap = aGap;
|
||||
}
|
||||
|
||||
void Clear()
|
||||
{
|
||||
m_gateways.clear();
|
||||
|
@ -210,7 +205,8 @@ class DP_GATEWAYS
|
|||
{
|
||||
m_fitVias = aEnable;
|
||||
m_viaDiameter = aDiameter;
|
||||
if(aViaGap < 0)
|
||||
|
||||
if( aViaGap < 0 )
|
||||
m_viaGap = m_gap;
|
||||
else
|
||||
m_viaGap = aViaGap;
|
||||
|
|
|
@ -535,7 +535,7 @@ bool DIFF_PAIR_PLACER::findDpPrimitivePair( const VECTOR2I& aP, ITEM* aItem,
|
|||
|
||||
int DIFF_PAIR_PLACER::viaGap() const
|
||||
{
|
||||
return m_sizes.DiffPairViaGap();
|
||||
return m_sizes.DiffPairViaGap() + m_sizes.DiffPairWidth();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -498,6 +498,8 @@ bool PNS_KICAD_IFACE_BASE::ImportSizes( PNS::SIZES_SETTINGS& aSizes, PNS::ITEM*
|
|||
aSizes.SetDiffPairGap( diffPairGap );
|
||||
aSizes.SetDiffPairViaGap( diffPairViaGap );
|
||||
|
||||
aSizes.SetHoleToHole( bds.m_HoleToHoleMin );
|
||||
|
||||
aSizes.ClearLayerPairs();
|
||||
|
||||
return true;
|
||||
|
|
|
@ -39,13 +39,14 @@ class SIZES_SETTINGS
|
|||
public:
|
||||
SIZES_SETTINGS() :
|
||||
m_trackWidth( 155000 ),
|
||||
m_viaType( VIATYPE::THROUGH ),
|
||||
m_viaDiameter( 600000 ),
|
||||
m_viaDrill( 250000 ),
|
||||
m_diffPairWidth( 125000 ),
|
||||
m_diffPairGap( 180000 ),
|
||||
m_diffPairViaGap( 180000 ),
|
||||
m_viaDiameter( 600000 ),
|
||||
m_viaDrill( 250000 ),
|
||||
m_diffPairViaGapSameAsTraceGap( true ),
|
||||
m_viaType( VIATYPE::THROUGH )
|
||||
m_holeToHole( 0 )
|
||||
{};
|
||||
|
||||
~SIZES_SETTINGS() {};
|
||||
|
@ -61,10 +62,9 @@ public:
|
|||
|
||||
int DiffPairViaGap() const
|
||||
{
|
||||
if( m_diffPairViaGapSameAsTraceGap )
|
||||
return m_diffPairGap;
|
||||
else
|
||||
return m_diffPairViaGap;
|
||||
int netClassGap = m_diffPairViaGapSameAsTraceGap ? m_diffPairGap : m_diffPairViaGap;
|
||||
|
||||
return std::max( netClassGap, m_holeToHole - m_viaDiameter );
|
||||
}
|
||||
|
||||
bool DiffPairViaGapSameAsTraceGap() const { return m_diffPairViaGapSameAsTraceGap; }
|
||||
|
@ -91,19 +91,25 @@ public:
|
|||
int GetLayerTop() const;
|
||||
int GetLayerBottom() const;
|
||||
|
||||
void SetHoleToHole( int aHoleToHole ) { m_holeToHole = aHoleToHole; }
|
||||
int GetHoleToHole() const { return m_holeToHole; }
|
||||
|
||||
void SetViaType( VIATYPE aViaType ) { m_viaType = aViaType; }
|
||||
VIATYPE ViaType() const { return m_viaType; }
|
||||
|
||||
private:
|
||||
int m_trackWidth;
|
||||
|
||||
VIATYPE m_viaType;
|
||||
int m_viaDiameter;
|
||||
int m_viaDrill;
|
||||
|
||||
int m_diffPairWidth;
|
||||
int m_diffPairGap;
|
||||
int m_diffPairViaGap;
|
||||
int m_viaDiameter;
|
||||
int m_viaDrill;
|
||||
bool m_diffPairViaGapSameAsTraceGap;
|
||||
|
||||
VIATYPE m_viaType;
|
||||
int m_holeToHole;
|
||||
|
||||
std::map<int, int> m_layerPairs;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue