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.
This commit is contained in:
Tim Edwards 2022-06-08 16:02:40 -04:00
parent 1d570a5b67
commit d099562e85
4 changed files with 10 additions and 2 deletions

View File

@ -1 +1 @@
8.3.309 8.3.310

View File

@ -530,6 +530,9 @@ calmaParseStructure(filename)
cifReadCellDef->cd_client = (ClientData) calmaExact(); cifReadCellDef->cd_client = (ClientData) calmaExact();
cifReadCellDef->cd_flags |= CDFLATGDS; cifReadCellDef->cd_flags |= CDFLATGDS;
cifReadCellDef->cd_flags &= ~CDFLATTENED; cifReadCellDef->cd_flags &= ~CDFLATTENED;
/* Remove any labels in this cell */
DBEraseLabel(cifReadCellDef, &TiPlaneRect, &DBAllTypeBits, NULL);
} }
else else
{ {

View File

@ -1689,6 +1689,10 @@ CIFReadCellCleanup(filetype)
if (def->cd_flags & CDFLATGDS) if (def->cd_flags & CDFLATGDS)
{ {
/* These cells have been flattened and are no longer needed. */ /* 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; int pNum;
Plane **cifplanes = (Plane **)def->cd_client; Plane **cifplanes = (Plane **)def->cd_client;
@ -1698,7 +1702,6 @@ CIFReadCellCleanup(filetype)
/* cifplanes should be valid, but don't crash magic if not */ /* cifplanes should be valid, but don't crash magic if not */
if (cifplanes != (Plane **)0) if (cifplanes != (Plane **)0)
{ {
for (pNum = 0; pNum < MAXCIFRLAYERS; pNum++) for (pNum = 0; pNum < MAXCIFRLAYERS; pNum++)
{ {
if (cifplanes[pNum] != NULL) if (cifplanes[pNum] != NULL)

View File

@ -722,6 +722,8 @@ extAddCouple(bp, ecs)
distFringe = (ExtOptions & EXT_DOFRINGEHALO) ? distFringe = (ExtOptions & EXT_DOFRINGEHALO) ?
ExtCurStyle->exts_fringeShieldHalo : 1; ExtCurStyle->exts_fringeShieldHalo : 1;
if (distFringe == 0) distFringe = 1;
switch (bp->b_direction) switch (bp->b_direction)
{ {
case BD_LEFT: /* Along left */ case BD_LEFT: /* Along left */