From 2561afd402cae5614002dd6f0a1b06ed7166ea09 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Thu, 25 Aug 2022 11:03:56 -0400 Subject: [PATCH] Implemented the correction of Anton Blanchard's git pull request #180 "Antenna checker should ignore vias in partial mode". I changed the implementation by moving the correction into the antennaAccumFunc() subroutine so that it skips the area calculations for the contacts, avoiding unnecessary computation. Otherwise, it's the same (vias do not contribute to the surface area of the antenna when calculating antenna area in "partial" mode). --- VERSION | 2 +- extflat/EFantenna.c | 34 +++++++++++++++++++--------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/VERSION b/VERSION index 73c2e376..d63d5488 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.316 +8.3.317 diff --git a/extflat/EFantenna.c b/extflat/EFantenna.c index 14824026..a92a32f6 100644 --- a/extflat/EFantenna.c +++ b/extflat/EFantenna.c @@ -801,22 +801,26 @@ antennaAccumFunc(tile, aaptr) typeareas[ttype] += (dlong)((float)perimeter * thick); } - if (type >= DBNumUserLayers) + /* NOTE: The "partial" model ignores the contribution of vias. */ + if (!(ExtCurStyle->exts_antennaModel & ANTENNAMODE_PARTIAL)) { - DBResidueMask(type, &sMask); - for (ttype = TT_TECHDEPBASE; ttype < DBNumTypes; ttype++) - if (TTMaskHasType(&sMask, ttype)) - if (DBTypeOnPlane(ttype, plane)) - { - thick = ExtCurStyle->exts_thick[ttype]; - typeareas[ttype] += (dlong)((float)perimeter * thick); - break; - } - } - else - { - thick = ExtCurStyle->exts_thick[type]; - typeareas[type] += (dlong)((float)perimeter * thick); + if (type >= DBNumUserLayers) + { + DBResidueMask(type, &sMask); + for (ttype = TT_TECHDEPBASE; ttype < DBNumTypes; ttype++) + if (TTMaskHasType(&sMask, ttype)) + if (DBTypeOnPlane(ttype, plane)) + { + thick = ExtCurStyle->exts_thick[ttype]; + typeareas[ttype] += (dlong)((float)perimeter * thick); + break; + } + } + else + { + thick = ExtCurStyle->exts_thick[type]; + typeareas[type] += (dlong)((float)perimeter * thick); + } } } else