diff --git a/pcbnew/router/pns_diff_pair.h b/pcbnew/router/pns_diff_pair.h index 98ad7b7cd8..65680c16d8 100644 --- a/pcbnew/router/pns_diff_pair.h +++ b/pcbnew/router/pns_diff_pair.h @@ -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; diff --git a/pcbnew/router/pns_diff_pair_placer.cpp b/pcbnew/router/pns_diff_pair_placer.cpp index ef07374bed..45a44b1708 100644 --- a/pcbnew/router/pns_diff_pair_placer.cpp +++ b/pcbnew/router/pns_diff_pair_placer.cpp @@ -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(); } diff --git a/pcbnew/router/pns_kicad_iface.cpp b/pcbnew/router/pns_kicad_iface.cpp index 674d2d81ac..86ab35d0a7 100644 --- a/pcbnew/router/pns_kicad_iface.cpp +++ b/pcbnew/router/pns_kicad_iface.cpp @@ -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; diff --git a/pcbnew/router/pns_sizes_settings.h b/pcbnew/router/pns_sizes_settings.h index 26190ddcfa..4667a3f633 100644 --- a/pcbnew/router/pns_sizes_settings.h +++ b/pcbnew/router/pns_sizes_settings.h @@ -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 m_layerPairs; };