Working through various issues with parasitic capacitance extraction

using the newer methods for nearest-edge searching and fringe area
of effect.  Removed a same-net check in a routine that removes
capacitances that are redundant due to hierarchical overlaps;  these
redundancies must be checked on shapes within the same net.  Corrected
(again) an out-of-clip-bounds check.
This commit is contained in:
Tim Edwards 2022-06-04 08:16:50 -07:00
parent 3d4b3ad914
commit bcf35db713
3 changed files with 6 additions and 10 deletions

View File

@ -1 +1 @@
8.3.308
8.3.309

View File

@ -4016,11 +4016,11 @@ extNodeAreaFunc(tile, arg)
if (extNodeClipArea)
{
TITORECT(tile, &r);
GEOCLIP(&r, extNodeClipArea);
/* Check if the tile is outside the clip area */
if ((r.r_xtop <= r.r_xbot) || (r.r_ytop < r.r_ybot)) continue;
if (!GEO_OVERLAP(&r, extNodeClipArea)) continue;
GEOCLIP(&r, extNodeClipArea);
area = (dlong)(r.r_xtop - r.r_xbot) * (dlong)(r.r_ytop - r.r_ybot);
}
else area = (dlong)(TOP(tile) - BOTTOM(tile)) * (dlong)(RIGHT(tile) - LEFT(tile));

View File

@ -706,11 +706,10 @@ extAddCouple(bp, ecs)
bpCopy = *bp;
bp = &bpCopy;
GEOCLIP(&bp->b_segment, extCoupleSearchArea);
if ((bp->b_segment.r_ytop <= bp->b_segment.r_ybot) ||
(bp->b_segment.r_xtop <= bp->b_segment.r_xbot))
if (!GEO_OVERLAP(&bp->b_segment, extCoupleSearchArea))
return 0;
GEOCLIP(&bp->b_segment, extCoupleSearchArea);
}
r = ovr = bp->b_segment;
@ -894,9 +893,6 @@ extSideOverlap(tp, esws)
tb = TiGetType(tp);
if (tb == TT_SPACE) return (0);
/* If shapes belong to the same node then there is no coupling. */
if (rtp == rbp) return (0);
if (bp->b_segment.r_xtop == bp->b_segment.r_xbot)
{
length = MIN(bp->b_segment.r_ytop, TOP(tp))