Merge branch 'master' into magic-8.2

This commit is contained in:
Tim Edwards 2019-09-14 03:00:04 -04:00
commit a170fde1ba
1 changed files with 34 additions and 34 deletions

View File

@ -375,7 +375,7 @@ calmaDumpStructure(def, outf, calmaDefHash, filename)
char *strname = NULL, *newnameptr, newname[CALMANAMELENGTH*2];
HashEntry *he, *he2;
CellDef *edef;
char *prefix;
char *prefix = NULL;
/* Make sure this is a structure; if not, let the caller know we're done */
PEEKRH(nbytes, rtype);
@ -397,23 +397,35 @@ calmaDumpStructure(def, outf, calmaDefHash, filename)
calmaOutDate(def->cd_timestamp, outf);
calmaOutDate(time((time_t *) 0), outf);
/* Find the structure's unique prefix, in case structure calls subcells */
/* that are not yet defined. */
he2 = HashFind(&calmaLibHash, filename);
if (he2 == NULL)
TxError("Fatal error: Library %s not recorded!\n", filename);
else
prefix = (char *)HashGetValue(he2);
/* Prefix structure name with def name, and output new structure name */
he = HashFind(calmaDefHash, strname);
if ((newnameptr = (char *)HashGetValue(he)) != NULL)
{
/* Structure is defined more than once */
TxError("Structure %s defined redundantly in GDS\n", strname);
if (*newnameptr != '0')
TxError("Structure %s defined redundantly in GDS\n", strname);
else
*newnameptr = '1';
/* To be considered: Should the structure be output more than once? */
calmaOutStringRecord(CALMA_STRNAME, newnameptr, outf);
calmaOutStringRecord(CALMA_STRNAME, newnameptr + 1, outf);
}
else if (!strcmp(strname, def->cd_name))
{
/* This is the top level cell being defined. Its name */
/* does not get modified. */
newnameptr = mallocMagic(strlen(strname) + 1);
sprintf(newnameptr, "%s", strname);
calmaOutStringRecord(CALMA_STRNAME, newnameptr, outf);
newnameptr = mallocMagic(strlen(strname) + 2);
sprintf(newnameptr, "1%s", strname);
calmaOutStringRecord(CALMA_STRNAME, newnameptr + 1, outf);
HashSetValue(he, (char *)newnameptr);
}
else
@ -444,26 +456,20 @@ calmaDumpStructure(def, outf, calmaDefHash, filename)
/* Same library, so keep the cellname and mark the cell */
/* as having been written to GDS. */
newnameptr = mallocMagic(strlen(strname) + 1);
sprintf(newnameptr, "%s", strname);
newnameptr = mallocMagic(strlen(strname) + 2);
sprintf(newnameptr, "1%s", strname);
HashSetValue(he, (char *)newnameptr);
}
else
{
/* Find the unique library prefix and prepend it to the cell name */
he2 = HashFind(&calmaLibHash, filename);
if (he2 == NULL)
{
/* Should never happen */
TxError("Fatal error: Library %s not recorded!\n", filename);
newnameptr = strname;
}
if (prefix == NULL)
newnameptr = strname; /* Should never happen */
else
{
prefix = (char *)HashGetValue(he2);
newnameptr = mallocMagic(strlen(strname) + strlen(prefix) + 8);
sprintf(newnameptr, "%s_%s", prefix, strname);
newnameptr = mallocMagic(strlen(strname) + strlen(prefix) + 9);
sprintf(newnameptr, "1%s_%s", prefix, strname);
HashSetValue(he, (char *)newnameptr);
}
}
@ -472,18 +478,12 @@ calmaDumpStructure(def, outf, calmaDefHash, filename)
{
/* Find the unique library prefix and prepend it to the cell name */
he2 = HashFind(&calmaLibHash, filename);
if (he2 == NULL)
{
/* Should never happen */
TxError("Fatal error: Library %s not recorded!\n", filename);
newnameptr = strname;
}
if (prefix == NULL)
newnameptr = strname; /* Should never happen */
else
{
prefix = (char *)HashGetValue(he2);
newnameptr = mallocMagic(strlen(strname) + strlen(prefix) + 8);
sprintf(newnameptr, "%s_%s", prefix, strname);
newnameptr = mallocMagic(strlen(strname) + strlen(prefix) + 9);
sprintf(newnameptr, "1%s_%s", prefix, strname);
HashSetValue(he, (char *)newnameptr);
}
}
@ -525,7 +525,7 @@ calmaDumpStructure(def, outf, calmaDefHash, filename)
newnameptr = (char *)HashGetValue(he);
if (newnameptr != NULL)
{
calmaOutStringRecord(CALMA_SNAME, newnameptr, outf);
calmaOutStringRecord(CALMA_SNAME, newnameptr + 1, outf);
}
else
{
@ -535,14 +535,14 @@ calmaDumpStructure(def, outf, calmaDefHash, filename)
/* the same way used for structure definitions. */
newnameptr = (char *)mallocMagic(strlen(strname) +
strlen(prefix) + 8);
sprintf(newnameptr, "%s_%s", prefix, strname);
strlen(prefix) + 9);
sprintf(newnameptr, "0%s_%s", prefix, strname);
edef = DBCellLookDef(newnameptr);
edef = DBCellLookDef(newnameptr + 1);
if (edef != NULL)
sprintf(newnameptr, "%s_%s[[0]]", prefix, strname);
sprintf(newnameptr, "0%s_%s[[0]]", prefix, strname);
HashSetValue(he, (char *)newnameptr);
calmaOutStringRecord(CALMA_SNAME, newnameptr, outf);
calmaOutStringRecord(CALMA_SNAME, newnameptr + 1, outf);
}
break;