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 */
|
bool do_library; /* If TRUE, output only children of def, but not def */
|
||||||
{
|
{
|
||||||
char *filename;
|
char *filename;
|
||||||
|
int polyidx;
|
||||||
bool isReadOnly, oldStyle, hasContent, isAbstract, hasGDSEnd;
|
bool isReadOnly, oldStyle, hasContent, isAbstract, hasGDSEnd;
|
||||||
HashEntry *he;
|
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 */
|
/* Output this cell definition from the Magic database */
|
||||||
if (!isReadOnly)
|
if (!isReadOnly)
|
||||||
if (!do_library)
|
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 */
|
bool do_library; /* If TRUE, output only children of def, but not def */
|
||||||
{
|
{
|
||||||
char *filename;
|
char *filename;
|
||||||
|
int polyidx;
|
||||||
bool isReadOnly, oldStyle, hasContent, isAbstract, hasGDSEnd;
|
bool isReadOnly, oldStyle, hasContent, isAbstract, hasGDSEnd;
|
||||||
HashEntry *he;
|
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 */
|
/* Output this cell definition from the Magic database */
|
||||||
if (!isReadOnly)
|
if (!isReadOnly)
|
||||||
if (!do_library)
|
if (!do_library)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue