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:
parent
1d570a5b67
commit
d099562e85
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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 */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue