Found another issue with the substrate extraction, caused by the

fact that "extract all" does not enumerate cells from bottom up
as I had assumed---The order is roughly bottom-to-top, but cells
re-used in different places in the hierarchy could end up called
before one or more of their own subcells is extracted.  Since
this conflicted with the preparation of the substrate in each
extracted subcircuit, I changed the method to enumerate cells so
that it is properly bottom-to-top.  Also, methods were added to
"extract" (incremental), "extract cell", and "extract parents"
to ensure that the substrate is prepared on all subcells before
extraction.
This commit is contained in:
Tim Edwards
2022-04-05 21:33:15 -04:00
parent ff10aedf69
commit a09fa78d2c
5 changed files with 268 additions and 60 deletions
+3
View File
@@ -416,6 +416,8 @@ typedef struct celldef
* with caution as it messes with the usual timestamp tracking,
* but is useful for preparing libraries all cells of which have
* the same timestamp value.
* CDNOEXTRACT is used by incremental extraction to flag cells that
* are up-to-date and do not need to be re-extracted.
*/
#define CDAVAILABLE 0x00001
@@ -435,6 +437,7 @@ typedef struct celldef
#define CDVISITED 0x04000
#define CDDEREFERENCE 0x08000
#define CDFIXEDSTAMP 0x10000
#define CDNOEXTRACT 0x20000
/*
* Description of an array.