From b983e33be750c80258af3db79e49e5128fc44d52 Mon Sep 17 00:00:00 2001 From: "R. Timothy Edwards" Date: Fri, 15 May 2026 11:04:23 -0400 Subject: [PATCH] Corrected an error with the recently-added "exception" DRC rule. The logical expression for determining an excepted area was wrong for one direction, resulting in false positive DRC violations. --- VERSION | 2 +- drc/DRCbasic.c | 2 +- resis/ResMerge.c | 11 +++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index a3977136..858efdc7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.643 +8.3.644 diff --git a/drc/DRCbasic.c b/drc/DRCbasic.c index 8c97c866..91a97459 100644 --- a/drc/DRCbasic.c +++ b/drc/DRCbasic.c @@ -830,7 +830,7 @@ drcTile (tile, dinfo, arg) * an exception area. Exception rules are ignored if * the edge is outside an exception area. */ - if (!isinside && (!(cptr->drcc_exception & DRC_EXCEPTION_MASK) == 0)) + if (!isinside && ((cptr->drcc_exception & DRC_EXCEPTION_MASK) == 0)) continue; if (isinside && ((cptr->drcc_exception & DRC_EXCEPTION_MASK) != 0)) continue; diff --git a/resis/ResMerge.c b/resis/ResMerge.c index 667fcaad..4a65c507 100644 --- a/resis/ResMerge.c +++ b/resis/ResMerge.c @@ -413,6 +413,17 @@ ResParallelCheck(resptr) int status = UNTOUCHED; resElement *rcell1, *rcell2; +#if 0 + /* XXX WIP XXX Diagnostic! */ + /* This double loop needs to be replaced with something more efficient, + * or else long arrays of contact cuts can take an unexpectedly long time + * to process. + */ + int rcount = 0; + for (rcell1 = resptr->rn_re; rcell1->re_nextEl != NULL; rcell1 = rcell1->re_nextEl) + rcount++; + TxPrintf("ResParallelCheck(): Resistor list length = %d\n", rcount); +#endif for (rcell1 = resptr->rn_re; rcell1->re_nextEl != NULL; rcell1 = rcell1->re_nextEl)