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 {