Rewrote the hierarchical check routine so that it does not report

disagreements between parent and child cells on GDS generation for
templayers, as these layers are not output;  any resulting differences
showing up eventually on an output layer will be reported.
This commit is contained in:
Tim Edwards 2020-11-18 22:31:19 -05:00
parent f934fc3cf5
commit 960be0e9b0
2 changed files with 47 additions and 4 deletions

View File

@ -1 +1 @@
8.3.84
8.3.85

View File

@ -421,6 +421,44 @@ cifHierCheckFunc(tile, plane)
return 0;
}
/*
* ----------------------------------------------------------------------------
*
* cifHierTempCheckFunc --
*
* This function is like cifHierCheckFunc() (see above), but is used
* for "templayers", where any parent/child disagreement should be
* considered a non-issue as far as output is concerned. Only the
* actual mask layer will report any problems.
*
* Results:
* Always returns 0 to keep the search alive.
*
* Side effects:
* Error messages may be output.
*
* ----------------------------------------------------------------------------
*/
int
cifHierTempCheckFunc(tile, plane)
Tile *tile; /* Tile containing CIF. */
Plane *plane; /* Plane to check against and modify. */
{
Rect area;
TiToRect(tile, &area);
if (IsSplit(tile))
DBNMPaintPlane(plane, TiGetTypeExact(tile), &area, CIFEraseTable,
(PaintUndoInfo *) NULL);
else
DBPaintPlane(plane, &area, CIFEraseTable, (PaintUndoInfo *) NULL);
CIFTileOps++;
return 0;
}
/*
* ----------------------------------------------------------------------------
*
@ -490,9 +528,14 @@ cifCheckAndErase(style)
{
CIFErrorLayer = i;
if (CIFComponentPlanes[i] == NULL) continue;
(void) DBSrPaintArea((Tile *) NULL, CIFComponentPlanes[i],
&TiPlaneRect, &CIFSolidBits, cifHierCheckFunc,
(ClientData) CIFTotalPlanes[i]);
if (CIFCurStyle->cs_layers[i]->cl_flags & CIF_TEMP)
(void) DBSrPaintArea((Tile *) NULL, CIFComponentPlanes[i],
&TiPlaneRect, &CIFSolidBits, cifHierTempCheckFunc,
(ClientData) CIFTotalPlanes[i]);
else
(void) DBSrPaintArea((Tile *) NULL, CIFComponentPlanes[i],
&TiPlaneRect, &CIFSolidBits, cifHierCheckFunc,
(ClientData) CIFTotalPlanes[i]);
}
}