router: take track width changes into account when calculating trace length for tuning
This commit is contained in:
parent
a23cbe052d
commit
08178104bb
|
@ -102,6 +102,20 @@ public:
|
|||
return ( m_linkedItems.Size() == 3 && vias == 1 && segs == 2 );
|
||||
}
|
||||
|
||||
bool IsTraceWidthChange() const
|
||||
{
|
||||
if( m_linkedItems.Size() != 2 )
|
||||
return false;
|
||||
|
||||
if( m_linkedItems.Count( SEGMENT ) != 2)
|
||||
return false;
|
||||
|
||||
PNS_SEGMENT* seg1 = static_cast<PNS_SEGMENT*>( m_linkedItems[0] );
|
||||
PNS_SEGMENT* seg2 = static_cast<PNS_SEGMENT*>( m_linkedItems[1] );
|
||||
|
||||
return seg1->Width() != seg2->Width();
|
||||
}
|
||||
|
||||
///> Links the joint to a given board item (when it's added to the PNS_NODE)
|
||||
void Link( PNS_ITEM* aItem )
|
||||
{
|
||||
|
|
|
@ -183,7 +183,7 @@ bool PNS_TOPOLOGY::followTrivialPath( PNS_LINE* aLine, bool aLeft, PNS_ITEMSET&
|
|||
|
||||
aVisited.insert( last );
|
||||
|
||||
if( jt->IsNonFanoutVia() )
|
||||
if( jt->IsNonFanoutVia() || jt->IsTraceWidthChange() )
|
||||
{
|
||||
PNS_ITEM* via = NULL;
|
||||
PNS_SEGMENT* next_seg = NULL;
|
||||
|
@ -210,12 +210,16 @@ bool PNS_TOPOLOGY::followTrivialPath( PNS_LINE* aLine, bool aLeft, PNS_ITEMSET&
|
|||
|
||||
if( aLeft )
|
||||
{
|
||||
aSet.Prepend( via );
|
||||
if( via )
|
||||
aSet.Prepend( via );
|
||||
|
||||
aSet.Prepend( l );
|
||||
}
|
||||
else
|
||||
{
|
||||
aSet.Add( via );
|
||||
if( via )
|
||||
aSet.Add( via );
|
||||
|
||||
aSet.Add( l );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue