Modified the routine that determines contact size from the CIF rules

to accomodate a method used for processes that require additional
spacing between contacts for large via arrays;  this requires
distinguishing between large and small areas to output vias, and
so requires use of "and" and "and-not" before "squares".  This
highlights the arbitrary nature of this routine, which probably
works better getting data from cifinput, or not at all (i.e., it is
used when reading LEF, but it is known that the LEF read routines
would be better implemented by running input through CIFGen().  If
that were done, then this problem would not come up).
This commit is contained in:
Tim Edwards 2020-07-31 14:11:24 -04:00
parent 2e0e7af3f3
commit 5fb41a68c8
2 changed files with 6 additions and 2 deletions

View File

@ -1 +1 @@
8.3.44
8.3.45

View File

@ -2143,7 +2143,11 @@ CIFGetContactSize(type, edge, spacing, border)
/* Anything other than an OR function will break */
/* the relationship between magic layers and cuts. */
else if (sop->co_opcode != CIFOP_OR)
/* NOTE: Making an exception for AND_NOT, which is */
/* used to distinguish between small and large via */
/* areas. */
else if ((sop->co_opcode != CIFOP_OR) &&
(sop->co_opcode != CIFOP_ANDNOT))
break;
}
}