Modified the handling of polygon cells when writing GDS; if a

polygon cell has been created with the "gds polygon subcell"
option and the parent cell is read-only (vendor GDS), then the
polygon cell does not actually exist in the original GDS and
should not be output during a "gds write".
This commit is contained in:
Tim Edwards 2022-06-09 11:44:58 -04:00
parent d099562e85
commit 085131b090
3 changed files with 25 additions and 1 deletions

View File

@ -1 +1 @@
8.3.310
8.3.311

View File

@ -863,6 +863,7 @@ calmaProcessDef(def, outf, do_library)
bool do_library; /* If TRUE, output only children of def, but not def */
{
char *filename;
int polyidx;
bool isReadOnly, oldStyle, hasContent, isAbstract, hasGDSEnd;
HashEntry *he;
@ -1168,6 +1169,17 @@ calmaProcessDef(def, outf, do_library)
}
}
/* Quick check on "polygonXXXXX" cells---these are generated by the */
/* "gds polygon subcell" option, and if the parent cell is a vendor */
/* GDS file, then these cells do not actually exist in the layout */
/* and should not be output. */
if (isReadOnly == FALSE)
if (!strncmp(def->cd_name, "polygon", 7))
if (sscanf(def->cd_name + 7, "%d", &polyidx) == 1)
if (def->cd_parents->cu_parent != NULL)
DBPropGet(def->cd_parents->cu_parent, "GDS_FILE", &isReadOnly);
/* Output this cell definition from the Magic database */
if (!isReadOnly)
if (!do_library)

View File

@ -818,6 +818,7 @@ calmaProcessDefZ(def, outf, do_library)
bool do_library; /* If TRUE, output only children of def, but not def */
{
char *filename;
int polyidx;
bool isReadOnly, oldStyle, hasContent, isAbstract, hasGDSEnd;
HashEntry *he;
@ -1080,6 +1081,17 @@ calmaProcessDefZ(def, outf, do_library)
}
}
/* Quick check on "polygonXXXXX" cells---these are generated by the */
/* "gds polygon subcell" option, and if the parent cell is a vendor */
/* GDS file, then these cells do not actually exist in the layout */
/* and should not be output. */
if (isReadOnly == FALSE)
if (!strncmp(def->cd_name, "polygon", 7))
if (sscanf(def->cd_name + 7, "%d", &polyidx) == 1)
if (def->cd_parents->cu_parent != NULL)
DBPropGet(def->cd_parents->cu_parent, "GDS_FILE", &isReadOnly);
/* Output this cell definition from the Magic database */
if (!isReadOnly)
if (!do_library)