mirror of
https://github.com/RTimothyEdwards/magic.git
synced 2026-08-22 06:07:34 +02:00
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:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user