Do not create "small" BIGVIA (less than two holes).
* Bug: In <rds>, in rfmaccess.c viambkrds(), the holes of the BIGVIAs are aligned on a design-wide matrix to allow two overlapping BIGVIAs to have their holes exactly at the same places (one consequence is that the holes of a BIGVIA may be off-center). But, if the BIGVIA is "too small", that is, it's area cannot accomodate at least one "on grid" hole, it silently replaced by a default (i.e. minimal size VIA). In that case you may endup with a mixture of BIGVIA (when the hole is aligned) and default VIA, when it is not... The fun part, is that it is DRC correct, but looks messy. To avoid this, we systematically use the default VIA when the side of the BIGVIA is less than two holes wide (in either direction).
This commit is contained in:
parent
b7ac3afd80
commit
d1c952b7f1
|
@ -1,5 +1,6 @@
|
|||
cvsCommit.txt
|
||||
gitCommit.txt
|
||||
patchs/
|
||||
Linux.*/
|
||||
Darwin/
|
||||
Solaris/
|
||||
|
|
|
@ -369,6 +369,8 @@ rdsrec_list *viambkrds( Figure, Via, Lynx )
|
|||
phvia_list *Via;
|
||||
char Lynx;
|
||||
{
|
||||
fprintf( stderr, "viambkrds()\n" );
|
||||
|
||||
rdsrec_list *Rectangle;
|
||||
rdsrec_list *First;
|
||||
rdsrec_list *Link;
|
||||
|
@ -436,13 +438,13 @@ rdsrec_list *viambkrds( Figure, Via, Lynx )
|
|||
MIN_DWR = -1;
|
||||
MAX_OVER = 0;
|
||||
LayerRds = GET_BIGVIA_METAL_LAYER( ViaMbk, Index );
|
||||
|
||||
|
||||
while ( LayerRds != RDS_BIGVIA_METAL_EMPTY )
|
||||
{
|
||||
DWR = GET_BIGVIA_METAL_DWR( ViaMbk, Index );
|
||||
OVERLAP = GET_BIGVIA_METAL_OVERLAP( ViaMbk, Index );
|
||||
USE = GET_BIGVIA_METAL_USE( ViaMbk, Index );
|
||||
|
||||
|
||||
if ( ( ( USE == RDS_USE_ALL ) ) ||
|
||||
( ( USE == RDS_USE_EXTRACT ) && ( Lynx ) ) ||
|
||||
( ( USE == RDS_USE_DRC ) && ( ! Lynx ) ) )
|
||||
|
@ -478,6 +480,8 @@ rdsrec_list *viambkrds( Figure, Via, Lynx )
|
|||
( ( USE == RDS_USE_DRC ) && ( ! Lynx ) ) )
|
||||
{
|
||||
if ( SIDE_STEP == 0 ) break;
|
||||
if ( WSX < (SIDE_STEP << 1) ) break;
|
||||
if ( WSY < (SIDE_STEP << 1) ) break;
|
||||
|
||||
X1R = Xvia + OVERLAP - ( ( WSX + DWR ) >> 1 );
|
||||
Y1R = Yvia + OVERLAP - ( ( WSY + DWR ) >> 1 );
|
||||
|
@ -705,7 +709,7 @@ rdsrec_list *viambkrds( Figure, Via, Lynx )
|
|||
}
|
||||
|
||||
if ( First != (rdsrec_list *)NULL ) Link->USER = (void *)First;
|
||||
|
||||
|
||||
return( First );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue