From d99d84c5337268107ee120c94fb1d2b55d42e0c4 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Fri, 16 Oct 2020 09:37:24 -0400 Subject: [PATCH] Removed the scalefactor from the DRC-CIF rule parsing, so that rules are interpreted in the dimensions used in the cifoutput section rather than always in centimicrons (otherwise, rules at, say, 5nm cannot be represented in the DRC section). --- VERSION | 2 +- drc/DRCcif.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/VERSION b/VERSION index f3d26a30..721cea68 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.67 +8.3.68 diff --git a/drc/DRCcif.c b/drc/DRCcif.c index 942501e1..c280c4bd 100644 --- a/drc/DRCcif.c +++ b/drc/DRCcif.c @@ -157,6 +157,13 @@ drcCifWarning() * Side effects: * Updates the DRC technology variables. * + * Notes: "centidistance" is by default in centimicrons, but it is really in + * whatever units are declared in the cifoutput section; so if cifoutput + * declares nanometers, then units are in nanometers. This may be in + * different units from the non-CIF part of the DRC section. The escape + * sequence substitution in the "Why" text will make sure that the correct + * physical dimensions are presented to the end user. + * * ---------------------------------------------------------------------------- */ @@ -194,7 +201,7 @@ drcCifWidth(argc, argv) } scalefactor = drcCifStyle->cs_scaleFactor; - centidistance *= drcCifStyle->cs_expander; // BSI + // centidistance *= drcCifStyle->cs_expander; // BSI dpnext = drcCifRules[thislayer][DRC_CIF_SPACE]; dpnew = (DRCCookie *) mallocMagic((unsigned) (sizeof (DRCCookie))); @@ -287,7 +294,7 @@ drcCifSpacing(argc, argv) } scalefactor = drcCifStyle->cs_scaleFactor; - centidistance *= drcCifStyle->cs_expander; // BSI + // centidistance *= drcCifStyle->cs_expander; // BSI dpnext = drcCifRules[layer[0]][DRC_CIF_SOLID]; dpnew = (DRCCookie *) mallocMagic((unsigned) sizeof (DRCCookie)); drcCifAssign(dpnew, centidistance, dpnext, &DBSpaceBits, @@ -1167,7 +1174,7 @@ drcCifMaxwidth(argc, argv) } scalefactor = drcCifStyle->cs_scaleFactor; - centidistance *= drcCifStyle->cs_expander; // BSI + // centidistance *= drcCifStyle->cs_expander; // BSI dpnext = drcCifRules[thislayer][DRC_CIF_SPACE]; dpnew = (DRCCookie *) mallocMagic((unsigned) (sizeof (DRCCookie))); drcCifAssign(dpnew, centidistance, dpnext, &CIFSolidBits, &CIFSolidBits,