From d099562e85e16654ef4573f1eb26c89d1b3d1ee2 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Wed, 8 Jun 2022 16:02:40 -0400 Subject: [PATCH] Fixed two issues: (1) Found a backwards-incompatibility with the fringe capacitance halo where the default halo distance was set to zero instead of one and caused divide-by-zero issues; (2) Found extraction issues where labels picked up from cells flattened during GDS reading cause the flattened/emptied cells to show up in the extraction with extra pins that can mess up LVS. Solved this by removing labels from flattened/emptied cells. --- VERSION | 2 +- calma/CalmaRdcl.c | 3 +++ cif/CIFrdcl.c | 5 ++++- extract/ExtCouple.c | 2 ++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 368eea4b..131e6042 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.309 +8.3.310 diff --git a/calma/CalmaRdcl.c b/calma/CalmaRdcl.c index 0d64c40f..436aea34 100644 --- a/calma/CalmaRdcl.c +++ b/calma/CalmaRdcl.c @@ -530,6 +530,9 @@ calmaParseStructure(filename) cifReadCellDef->cd_client = (ClientData) calmaExact(); cifReadCellDef->cd_flags |= CDFLATGDS; cifReadCellDef->cd_flags &= ~CDFLATTENED; + + /* Remove any labels in this cell */ + DBEraseLabel(cifReadCellDef, &TiPlaneRect, &DBAllTypeBits, NULL); } else { diff --git a/cif/CIFrdcl.c b/cif/CIFrdcl.c index a645bf3b..993900c2 100644 --- a/cif/CIFrdcl.c +++ b/cif/CIFrdcl.c @@ -1689,6 +1689,10 @@ CIFReadCellCleanup(filetype) if (def->cd_flags & CDFLATGDS) { /* These cells have been flattened and are no longer needed. */ + /* Do not remove the actual CellDef, though, because it is */ + /* still instanced, and that instance tells the GDS write */ + /* routine that the subcell needs to be included in the */ + /* output. But all clientdata and labels should be removed. */ int pNum; Plane **cifplanes = (Plane **)def->cd_client; @@ -1698,7 +1702,6 @@ CIFReadCellCleanup(filetype) /* cifplanes should be valid, but don't crash magic if not */ if (cifplanes != (Plane **)0) { - for (pNum = 0; pNum < MAXCIFRLAYERS; pNum++) { if (cifplanes[pNum] != NULL) diff --git a/extract/ExtCouple.c b/extract/ExtCouple.c index 8e7e8caa..c17d068c 100644 --- a/extract/ExtCouple.c +++ b/extract/ExtCouple.c @@ -722,6 +722,8 @@ extAddCouple(bp, ecs) distFringe = (ExtOptions & EXT_DOFRINGEHALO) ? ExtCurStyle->exts_fringeShieldHalo : 1; + if (distFringe == 0) distFringe = 1; + switch (bp->b_direction) { case BD_LEFT: /* Along left */