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:
parent
d099562e85
commit
085131b090
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue