From 88e23a114e40c1afd1a2238e3c27ecc75c53c1c4 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Thu, 23 Apr 2020 14:41:29 -0400 Subject: [PATCH] Corrected CalmaWrite behavior to be as was intended for handling vendor GDS of abstract views, such that if the cellname being dumped is the same as the library name, then no prefix is added to subcells. This behavior may be changed in the future. --- TODO | 16 ++++++++++++++++ VERSION | 2 +- calma/CalmaWrite.c | 7 +++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 43a8972b..eb05461e 100644 --- a/TODO +++ b/TODO @@ -14,3 +14,19 @@ I. Bugs to fix unusual geometry situations. That these situations would be DRC errors does not excuse the infinite loop behavior. The geometry required is unusual enough that this is not a high priority item. + + 4. The LEF read/write should operate from the GDS rules and layers, not + the magic database layers. LEF setup should be put in the cifinput + and cifoutput sections in the techfile, not in its own section. + + 5. Implement a CRC checksum to replace (or complement) timestamps. + Cells are marked as invalid only if the checksum fails to match, not + if the timestamp is outdated. This helps with two problems: (1) + PDKs which are reinstalled but not changed, and (2) libraries which + are copied from one place to another but not changed. + + 6. Implement tile planes that can be defined as either maximum horizontal + stripes (default) or maximum vertical stripes. The latter, if applied + to vertically oriented route layers, vastly speeds up searches on + those layers. The code for manipulating tile planes with maximum + vertical stripes exists but is used only in by the maze router. diff --git a/VERSION b/VERSION index b105b3a9..74d1f38c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.4 +8.3.5 diff --git a/calma/CalmaWrite.c b/calma/CalmaWrite.c index 1d65a5fa..9bc244c6 100644 --- a/calma/CalmaWrite.c +++ b/calma/CalmaWrite.c @@ -444,13 +444,15 @@ calmaDumpStructure(def, outf, calmaDefHash, filename) if (edef != NULL) { bool isAbstract, isReadOnly; - char *chklibname; + char *chklibname, *dotptr; /* Is view abstract? */ DBPropGet(edef, "LEFview", &isAbstract); chklibname = (char *)DBPropGet(edef, "GDS_FILE", &isReadOnly); + dotptr = strrchr(filename, '.'); + if (dotptr) *dotptr = '\0'; - /* Is the library name the same? */ + /* Is the library name the same as the filename (less extension)? */ if (isAbstract && isReadOnly && !strcmp(filename, chklibname)) { /* Same library, so keep the cellname and mark the cell */ @@ -473,6 +475,7 @@ calmaDumpStructure(def, outf, calmaDefHash, filename) HashSetValue(he, (char *)newnameptr); } } + if (dotptr) *dotptr = '.'; } else {