From ebe12fecfef8466462f1f47b544e0ad98f77836e Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Thu, 10 Sep 2020 21:44:02 -0400 Subject: [PATCH] Corrected an extraction error that prevented the use of the same device layer type to describe the extraction for both a regular FET and an extended-drain device. Note that the current code still requires that the extended-drain device be declared first, and does not check for this or attempt to reorder if incorrect. --- VERSION | 2 +- extract/ExtBasic.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 5b22f009..a6167b75 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.55 +8.3.56 diff --git a/extract/ExtBasic.c b/extract/ExtBasic.c index 6d048629..d4c37554 100644 --- a/extract/ExtBasic.c +++ b/extract/ExtBasic.c @@ -1724,7 +1724,14 @@ extOutputDevices(def, transList, outFile) continue; /* This terminal already found by perimeter search */ tmask = &devptr->exts_deviceSDTypes[termcount]; - if (TTMaskIsZero(tmask)) break; /* End of SD terminals */ + if (TTMaskIsZero(tmask)) { + if (termcount < nsd) { + /* See if there is another matching device record with */ + /* a different number of terminals, and try again. */ + devptr = extDevFindMatch(devptr, t); + } + break; /* End of SD terminals */ + } else if (!TTMaskIntersect(tmask, &DBPlaneTypes[reg->treg_pnum])) { node = NULL; @@ -2749,6 +2756,7 @@ extTransPerimFunc(bp) else { TxError("Error: Asymmetric device with multiple terminals!\n"); + break; } /* Add the length to this terminal's perimeter */