mirror of
https://github.com/RTimothyEdwards/magic.git
synced 2026-09-01 18:48:37 +02:00
Decided that a different approach needed to be taken for having
timestamps that are fixed, since the timestamp update routine is called from too many places, too many times. Instead created a new cell definition flag indicating a fixed timestamp, which can be set by "cellname timestamp" for an individual cell, or with "gds datestamp" for cells read from a GDS file.
This commit is contained in:
+12
-4
@@ -214,11 +214,18 @@ DBUpdateStamps(def)
|
||||
extern time_t time();
|
||||
|
||||
DBFixMismatch();
|
||||
|
||||
timestamp = time((time_t *) 0);
|
||||
if (def == NULL)
|
||||
(void) DBCellSrDefs(CDGETNEWSTAMP, dbStampFunc, (ClientData) NULL);
|
||||
|
||||
else if (def->cd_flags & CDGETNEWSTAMP)
|
||||
dbStampFunc(def);
|
||||
{
|
||||
if (def->cd_flags & CDFIXEDSTAMP)
|
||||
def->cd_flags &= ~CDGETNEWSTAMP;
|
||||
else
|
||||
dbStampFunc(def);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
@@ -234,11 +241,12 @@ dbStampFunc(cellDef)
|
||||
|
||||
if (cellDef->cd_timestamp == timestamp) return 0;
|
||||
|
||||
cellDef->cd_timestamp = timestamp;
|
||||
if (!(cellDef->cd_flags & CDFIXEDSTAMP))
|
||||
cellDef->cd_timestamp = timestamp;
|
||||
|
||||
cellDef->cd_flags &= ~CDGETNEWSTAMP;
|
||||
|
||||
/* printf("Writing new timestamp %d for %s.\n",
|
||||
timestamp, cellDef->cd_name); */
|
||||
// printf("Writing new timestamp %d for %s.\n", timestamp, cellDef->cd_name);
|
||||
|
||||
/* If a child's stamp has changed, then the stamps must change
|
||||
* in all its parents too. When the hierarchical DRC becomes
|
||||
|
||||
+22
-16
@@ -411,24 +411,30 @@ typedef struct celldef
|
||||
* CDDEREFERENCE is a flag indicating that when loading or expanding
|
||||
* children of a cell, the path should be ignored and the cell
|
||||
* path should be searched for the location.
|
||||
* CDFIXEDSTAMP is a flag indicating that the cell has a fixed
|
||||
* timestamp that should not be modified. This should be used
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#define CDAVAILABLE 0x0001
|
||||
#define CDMODIFIED 0x0002
|
||||
#define CDNOTFOUND 0x0004
|
||||
#define CDINTERNAL 0x0008
|
||||
#define CDGETNEWSTAMP 0x0010
|
||||
#define CDSTAMPSCHANGED 0x0020
|
||||
#define CDBOXESCHANGED 0x0040
|
||||
#define CDFIXEDBBOX 0x0080
|
||||
#define CDNOEDIT 0x0100
|
||||
#define CDPROCESSED 0x0200
|
||||
#define CDFLATGDS 0x0400
|
||||
#define CDFLATTENED 0x0800
|
||||
#define CDPROCESSEDGDS 0x1000
|
||||
#define CDVENDORGDS 0x2000
|
||||
#define CDVISITED 0x4000
|
||||
#define CDDEREFERENCE 0x8000
|
||||
#define CDAVAILABLE 0x00001
|
||||
#define CDMODIFIED 0x00002
|
||||
#define CDNOTFOUND 0x00004
|
||||
#define CDINTERNAL 0x00008
|
||||
#define CDGETNEWSTAMP 0x00010
|
||||
#define CDSTAMPSCHANGED 0x00020
|
||||
#define CDBOXESCHANGED 0x00040
|
||||
#define CDFIXEDBBOX 0x00080
|
||||
#define CDNOEDIT 0x00100
|
||||
#define CDPROCESSED 0x00200
|
||||
#define CDFLATGDS 0x00400
|
||||
#define CDFLATTENED 0x00800
|
||||
#define CDPROCESSEDGDS 0x01000
|
||||
#define CDVENDORGDS 0x02000
|
||||
#define CDVISITED 0x04000
|
||||
#define CDDEREFERENCE 0x08000
|
||||
#define CDFIXEDSTAMP 0x10000
|
||||
|
||||
/*
|
||||
* Description of an array.
|
||||
|
||||
Reference in New Issue
Block a user