Corrected an error in the "cifspacing" rule check for non-Manhattan

geometry (which had gone unnoticed due to the lack of use of
"cifspacing" in any rule decks).  The rule was not checking for
all synthetic edges, because the tile type was expected to match
the rule type when the function is called, but with a non-Manhattan
tile, that may or may not be true and needs to be checked.
This commit is contained in:
Tim Edwards 2021-05-17 15:18:05 -04:00
parent 8d647287e2
commit 1c328dfe15
1 changed files with 17 additions and 0 deletions

View File

@ -613,6 +613,14 @@ drcCifTile (tile, arg)
if (SigInterruptPending) return 1;
DRCstatTiles++;
/* For non-Manhattan tiles, if the left side of tile is not the */
/* type that is declared by the rule, then skip the left-right */
/* check. */
if (IsSplit(tile))
if (SplitSide(tile))
goto tbcheck;
/*
* Check design rules along a vertical boundary between two tiles.
*
@ -801,6 +809,15 @@ drcCifTile (tile, arg)
}
}
tbcheck:
/* For non-Manhattan tiles, if the bottom side of tile is not */
/* the type that is declared by the rule, then skip the top- */
/* bottom check. */
if (IsSplit(tile))
if (SplitSide(tile) == SplitDirection(tile))
return 0;
/*
* Check design rules along a horizontal boundary between two tiles.