PNS: Diff pairs can have different hole-to-hole size
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13993
(cherry picked from commit f12f2b8420
)
This commit is contained in:
parent
8845cc0556
commit
cb334be8c4
|
@ -559,7 +559,7 @@ bool DIFF_PAIR_PLACER::FindDpPrimitivePair( NODE* aWorld, const VECTOR2I& aP, IT
|
||||||
int DIFF_PAIR_PLACER::viaGap() const
|
int DIFF_PAIR_PLACER::viaGap() const
|
||||||
{
|
{
|
||||||
return std::max( m_sizes.DiffPairViaGap(),
|
return std::max( m_sizes.DiffPairViaGap(),
|
||||||
m_sizes.GetHoleToHole() + m_sizes.ViaDrill() - m_sizes.ViaDiameter() );
|
m_sizes.GetDiffPairHoleToHole() + m_sizes.ViaDrill() - m_sizes.ViaDiameter() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -736,10 +736,13 @@ bool PNS_KICAD_IFACE_BASE::ImportSizes( PNS::SIZES_SETTINGS& aSizes, PNS::ITEM*
|
||||||
aSizes.SetDiffPairViaGapSameAsTraceGap( false );
|
aSizes.SetDiffPairViaGapSameAsTraceGap( false );
|
||||||
|
|
||||||
int holeToHoleMin = bds.m_HoleToHoleMin;
|
int holeToHoleMin = bds.m_HoleToHoleMin;
|
||||||
PNS::VIA dummyVia;
|
PNS::VIA dummyVia, coupledVia;
|
||||||
|
|
||||||
if( aStartItem )
|
if( aStartItem )
|
||||||
|
{
|
||||||
dummyVia.SetNet( aStartItem->Net() );
|
dummyVia.SetNet( aStartItem->Net() );
|
||||||
|
coupledVia.SetNet( m_ruleResolver->DpCoupledNet( aStartItem->Net() ) );
|
||||||
|
}
|
||||||
|
|
||||||
if( m_ruleResolver->QueryConstraint( PNS::CONSTRAINT_TYPE::CT_HOLE_TO_HOLE, &dummyVia,
|
if( m_ruleResolver->QueryConstraint( PNS::CONSTRAINT_TYPE::CT_HOLE_TO_HOLE, &dummyVia,
|
||||||
&dummyVia, UNDEFINED_LAYER, &constraint ) )
|
&dummyVia, UNDEFINED_LAYER, &constraint ) )
|
||||||
|
@ -749,6 +752,14 @@ bool PNS_KICAD_IFACE_BASE::ImportSizes( PNS::SIZES_SETTINGS& aSizes, PNS::ITEM*
|
||||||
|
|
||||||
aSizes.SetHoleToHole( holeToHoleMin );
|
aSizes.SetHoleToHole( holeToHoleMin );
|
||||||
|
|
||||||
|
if( m_ruleResolver->QueryConstraint( PNS::CONSTRAINT_TYPE::CT_HOLE_TO_HOLE, &dummyVia,
|
||||||
|
&coupledVia, UNDEFINED_LAYER, &constraint ) )
|
||||||
|
{
|
||||||
|
holeToHoleMin = constraint.m_Value.Min();
|
||||||
|
}
|
||||||
|
|
||||||
|
aSizes.SetDiffPairHoleToHole( holeToHoleMin );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -122,6 +122,9 @@ public:
|
||||||
wxString GetDiffPairGapSource() const { return m_diffPairGapSource; }
|
wxString GetDiffPairGapSource() const { return m_diffPairGapSource; }
|
||||||
void SetDiffPairGapSource( const wxString& aSource ) { m_diffPairGapSource = aSource; }
|
void SetDiffPairGapSource( const wxString& aSource ) { m_diffPairGapSource = aSource; }
|
||||||
|
|
||||||
|
void SetDiffPairHoleToHole( int aHoleToHole ) { m_diffPairHoleToHole = aHoleToHole; }
|
||||||
|
int GetDiffPairHoleToHole() const { return m_diffPairHoleToHole; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_clearance;
|
int m_clearance;
|
||||||
int m_minClearance;
|
int m_minClearance;
|
||||||
|
@ -138,6 +141,7 @@ private:
|
||||||
bool m_diffPairViaGapSameAsTraceGap;
|
bool m_diffPairViaGapSameAsTraceGap;
|
||||||
|
|
||||||
int m_holeToHole;
|
int m_holeToHole;
|
||||||
|
int m_diffPairHoleToHole;
|
||||||
|
|
||||||
std::map<int, int> m_layerPairs;
|
std::map<int, int> m_layerPairs;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue