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.
This commit is contained in:
R. Timothy Edwards 2026-05-15 11:04:23 -04:00
parent db224105a7
commit b983e33be7
3 changed files with 13 additions and 2 deletions

View File

@ -1 +1 @@
8.3.643
8.3.644

View File

@ -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;

View File

@ -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)