From 5fb41a68c8042660006d60b45f6409b15fefc58c Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Fri, 31 Jul 2020 14:11:24 -0400 Subject: [PATCH] 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). --- VERSION | 2 +- cif/CIFtech.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 49d92867..aba983b0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.44 +8.3.45 diff --git a/cif/CIFtech.c b/cif/CIFtech.c index d7a310cf..0c905592 100644 --- a/cif/CIFtech.c +++ b/cif/CIFtech.c @@ -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; } }