Got rid of one problem with timestamps, which was the requirement

to force an update on a child cell to match the timestamp of the
parent.  This is no longer done on read-only cells, although it
probably ought to be applied to all cells.  A timestamp should
change when a cell has been modified, but a parent cell should never
force a child cell to update its timestamp if the child cell has
not been modified.  The main problem is that "drc check" runs checks
on all child cells, and they then are marked as modified without
consideration of whether the child's DRC status changed.  A better
solution would be to avoid unnecessary updates by detecting a
change in DRC results, but for now, just disabling updates on
read-only cells (which can't be updated anyway) should suffice.
This commit is contained in:
R. Timothy Edwards
2025-11-29 13:24:23 -05:00
parent 98aa2f760a
commit ff718c3ecf
3 changed files with 14 additions and 3 deletions
+11 -2
View File
@@ -247,9 +247,18 @@ dbStampFunc(cellDef)
if (cellDef->cd_timestamp == timestamp) return 0;
if (!(cellDef->cd_flags & CDFIXEDSTAMP))
cellDef->cd_timestamp = timestamp;
/*
* Do not force a non-edit cell or a cell with a fixed timestamp
* to update its timestamp, as it cannot or should not. Just clear
* any flag suggesting that it needs a new timestamp.
*/
if (!(cellDef->cd_flags & (CDNOEDIT | CDFIXEDSTAMP)))
{
cellDef->cd_flags &= ~CDGETNEWSTAMP;
return 0;
}
cellDef->cd_timestamp = timestamp;
cellDef->cd_flags &= ~CDGETNEWSTAMP;
// printf("Writing new timestamp %d for %s.\n", timestamp, cellDef->cd_name);