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_flags |= CDFLATGDS;
cifReadCellDef->cd_flags &= ~CDFLATTENED;
/* Remove any labels in this cell */
DBEraseLabel(cifReadCellDef, &TiPlaneRect, &DBAllTypeBits, NULL);
}
else
{

View File

@ -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)

View File

@ -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 */