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:
parent
8d647287e2
commit
1c328dfe15
17
drc/DRCcif.c
17
drc/DRCcif.c
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Reference in New Issue