Update DRC MatchDPSuffix routine
This matches the router matchDPSuffix routine until we merge the two into a common utility
This commit is contained in:
parent
7aa3514042
commit
fce054319c
|
@ -1261,55 +1261,46 @@ int DRC_ENGINE::MatchDpSuffix( const wxString& aNetName, wxString& aComplementNe
|
||||||
wxString& aBaseDpName )
|
wxString& aBaseDpName )
|
||||||
{
|
{
|
||||||
int rv = 0;
|
int rv = 0;
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
if( aNetName.EndsWith( "+" ) )
|
for( auto it = aNetName.rbegin(); it != aNetName.rend() && rv == 0; ++it, ++count )
|
||||||
|
{
|
||||||
|
int ch = *it;
|
||||||
|
|
||||||
|
if( ( ch >= '0' && ch <= '9' ) || ch == '_' )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if( ch == '+' )
|
||||||
{
|
{
|
||||||
aComplementNet = "-";
|
aComplementNet = "-";
|
||||||
rv = 1;
|
rv = 1;
|
||||||
}
|
}
|
||||||
else if( aNetName.EndsWith( "P" ) )
|
else if( ch == '-' )
|
||||||
{
|
|
||||||
aComplementNet = "N";
|
|
||||||
rv = 1;
|
|
||||||
}
|
|
||||||
else if( aNetName.EndsWith( "-" ) )
|
|
||||||
{
|
{
|
||||||
aComplementNet = "+";
|
aComplementNet = "+";
|
||||||
rv = -1;
|
rv = -1;
|
||||||
}
|
}
|
||||||
else if( aNetName.EndsWith( "N" ) )
|
else if( ch == 'N' )
|
||||||
{
|
{
|
||||||
aComplementNet = "P";
|
aComplementNet = "P";
|
||||||
rv = -1;
|
rv = -1;
|
||||||
}
|
}
|
||||||
// Match P followed by 2 digits
|
else if ( ch == 'P' )
|
||||||
else if( aNetName.Right( 2 ).IsNumber() && aNetName.Right( 3 ).Left( 1 ) == "P" )
|
|
||||||
{
|
{
|
||||||
aComplementNet = "N" + aNetName.Right( 2 );
|
aComplementNet = "N";
|
||||||
rv = 1;
|
rv = 1;
|
||||||
}
|
}
|
||||||
// Match P followed by 1 digit
|
else
|
||||||
else if( aNetName.Right( 1 ).IsNumber() && aNetName.Right( 2 ).Left( 1 ) == "P" )
|
|
||||||
{
|
{
|
||||||
aComplementNet = "N" + aNetName.Right( 1 );
|
break;
|
||||||
rv = 1;
|
|
||||||
}
|
}
|
||||||
// Match N followed by 2 digits
|
|
||||||
else if( aNetName.Right( 2 ).IsNumber() && aNetName.Right( 3 ).Left( 1 ) == "N" )
|
|
||||||
{
|
|
||||||
aComplementNet = "P" + aNetName.Right( 2 );
|
|
||||||
rv = -1;
|
|
||||||
}
|
}
|
||||||
// Match N followed by 1 digit
|
|
||||||
else if( aNetName.Right( 1 ).IsNumber() && aNetName.Right( 2 ).Left( 1 ) == "N" )
|
if( rv != 0 && count >= 1 )
|
||||||
{
|
{
|
||||||
aComplementNet = "P" + aNetName.Right( 1 );
|
aBaseDpName = aNetName.Left( aNetName.Length() - count );
|
||||||
rv = -1;
|
aComplementNet = aBaseDpName + aComplementNet + aNetName.Right( count - 1 );
|
||||||
}
|
|
||||||
if( rv != 0 )
|
|
||||||
{
|
|
||||||
aBaseDpName = aNetName.Left( aNetName.Length() - aComplementNet.Length() );
|
|
||||||
aComplementNet = aBaseDpName + aComplementNet;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
|
|
Loading…
Reference in New Issue