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:
parent
3d4b3ad914
commit
bcf35db713
|
|
@ -4016,11 +4016,11 @@ extNodeAreaFunc(tile, arg)
|
||||||
if (extNodeClipArea)
|
if (extNodeClipArea)
|
||||||
{
|
{
|
||||||
TITORECT(tile, &r);
|
TITORECT(tile, &r);
|
||||||
GEOCLIP(&r, extNodeClipArea);
|
|
||||||
|
|
||||||
/* Check if the tile is outside the clip area */
|
/* 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);
|
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));
|
else area = (dlong)(TOP(tile) - BOTTOM(tile)) * (dlong)(RIGHT(tile) - LEFT(tile));
|
||||||
|
|
|
||||||
|
|
@ -706,11 +706,10 @@ extAddCouple(bp, ecs)
|
||||||
bpCopy = *bp;
|
bpCopy = *bp;
|
||||||
bp = &bpCopy;
|
bp = &bpCopy;
|
||||||
|
|
||||||
GEOCLIP(&bp->b_segment, extCoupleSearchArea);
|
if (!GEO_OVERLAP(&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))
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
GEOCLIP(&bp->b_segment, extCoupleSearchArea);
|
||||||
}
|
}
|
||||||
r = ovr = bp->b_segment;
|
r = ovr = bp->b_segment;
|
||||||
|
|
||||||
|
|
@ -894,9 +893,6 @@ extSideOverlap(tp, esws)
|
||||||
tb = TiGetType(tp);
|
tb = TiGetType(tp);
|
||||||
if (tb == TT_SPACE) return (0);
|
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)
|
if (bp->b_segment.r_xtop == bp->b_segment.r_xbot)
|
||||||
{
|
{
|
||||||
length = MIN(bp->b_segment.r_ytop, TOP(tp))
|
length = MIN(bp->b_segment.r_ytop, TOP(tp))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue