Corrected error in the bplane implementation that accidentally

called the undo record generation twice when transforming (move,
copy, etc.) cell instances.  This would cause the "undo" command
to regenerate the old instance position in the bplane records,
generally causing trouble down the road (did not encounter any
fatal errors, but it can't be good).
This commit is contained in:
Tim Edwards 2020-04-14 11:00:51 -04:00
parent 97df4e8dd1
commit 4b31af66b1
3 changed files with 36 additions and 16 deletions

41
README
View File

@ -19,7 +19,22 @@
--------------------------------- ---------------------------------
See the file "INSTALL" in this directory. See the file "INSTALL" in this directory.
3. Version 8.2 Release Notes: 3. Version 8.3 Release Notes:
---------------------------------
During the course of version 8.2, magic moved to a git-oriented
development. There are no longer "stable" and "distribution"
versions. There is only the git repo with various development
branches.
First release contains the "bplane" implementation for the cell
plane pulled from the open source code for micromagic. This is
much more efficient than using the corner-stitched tile plane
for cells, and speeds up a number of methods, such as extraction,
by a factor of 3 to 5 or so, depending on the amount of hierarchy
in the design.
4. Version 8.2 Release Notes:
--------------------------------- ---------------------------------
As of the release of version 8.2, Version 8.1 is now the new stable As of the release of version 8.2, Version 8.1 is now the new stable
@ -40,7 +55,15 @@
magic extensions since version 7, including non-manhattan geometry, magic extensions since version 7, including non-manhattan geometry,
stacked contacts, and DRC rule extensions. stacked contacts, and DRC rule extensions.
4. Version 8.1 Release Notes: Extended the extraction method to allow multiple extracted device
types per magic layer, depending on the surrounding context
(connecting layers, substrate, identifier layers, etc.).
Corrected the "extresist" method for non-FET devices, although it
continues to need fundamental work to remove its dependence on the
".sim" format files.
5. Version 8.1 Release Notes:
--------------------------------- ---------------------------------
As of the release of version 8.1, Version 8.0 is now the new stable As of the release of version 8.1, Version 8.0 is now the new stable
@ -54,7 +77,7 @@
name without any understanding of a substrate node and name without any understanding of a substrate node and
connectivity. connectivity.
5. Version 8.0 Release Notes: 6. Version 8.0 Release Notes:
--------------------------------- ---------------------------------
As of the release of version 8.0, Version 7.5 is now the new stable As of the release of version 8.0, Version 7.5 is now the new stable
@ -82,7 +105,7 @@
7) New extraction method "msubcircuit" with methods for specifying 7) New extraction method "msubcircuit" with methods for specifying
parameter names for source/drain area and perimeter. parameter names for source/drain area and perimeter.
6. Version 7.5 Release Notes: 7. Version 7.5 Release Notes:
--------------------------------- ---------------------------------
Version 7.5 is the development branch. Version 7.5.0 is the same as Version 7.5 is the development branch. Version 7.5.0 is the same as
@ -137,7 +160,7 @@
See the online release notes for a more thorough list of features. See the online release notes for a more thorough list of features.
7. Version 7.4 Release Notes: 8. Version 7.4 Release Notes:
--------------------------------- ---------------------------------
Version 7.4 is the new stable distribution version of magic. Version 7.4 is the new stable distribution version of magic.
@ -149,7 +172,7 @@
not be a "What's new in 7.4" section, as there is not supposed not be a "What's new in 7.4" section, as there is not supposed
to be anything new in version 7.4. to be anything new in version 7.4.
8. Version 7.3 Release Notes: 9. Version 7.3 Release Notes:
--------------------------------- ---------------------------------
Magic release 7.3 incorporates a stacked contact model which is, Magic release 7.3 incorporates a stacked contact model which is,
@ -197,7 +220,7 @@
28) New method for crash backups, including restore with "magic -r" 28) New method for crash backups, including restore with "magic -r"
29) A number of other technology file additions and enhancements 29) A number of other technology file additions and enhancements
9. Version 7.2 Release Notes: 10. Version 7.2 Release Notes:
--------------------------------- ---------------------------------
Magic release 7.2 incorporates the capability to run magic from the Tcl Magic release 7.2 incorporates the capability to run magic from the Tcl
@ -255,7 +278,7 @@
26) Improved techfile format with asterisk-notation and DRC 26) Improved techfile format with asterisk-notation and DRC
"surround", "overhang", and "rect_only" statements. "surround", "overhang", and "rect_only" statements.
10. Version 7.1 Release Notes: 11. Version 7.1 Release Notes:
--------------------------------- ---------------------------------
Magic release 7.1 consolidates all known patches/features Magic release 7.1 consolidates all known patches/features
@ -283,7 +306,7 @@
- tons of other small things that hopefully make the build process - tons of other small things that hopefully make the build process
nicer. nicer.
11. Releases prior to version 7: 12. Releases prior to version 7:
--------------------------------- ---------------------------------
What's new in 6.5.2: What's new in 6.5.2:

View File

@ -65,12 +65,7 @@ dbInstanceUnplace(CellUse *use)
* or else we could leave the subcell tile plane in a weird * or else we could leave the subcell tile plane in a weird
* state. * state.
*/ */
SigDisableInterrupts();
BPDelete(use->cu_parent->cd_cellPlane, use); BPDelete(use->cu_parent->cd_cellPlane, use);
DBUndoCellUse(use, UNDO_CELL_DELETE);
SigEnableInterrupts();
} }
@ -187,14 +182,13 @@ DBDeleteCell (use)
{ {
ASSERT(use != (CellUse *) NULL, "DBDeleteCell"); ASSERT(use != (CellUse *) NULL, "DBDeleteCell");
dbInstanceUnplace(use);
/* It's important that this code run with interrupts disabled, /* It's important that this code run with interrupts disabled,
* or else we could leave the subcell tile plane in a weird * or else we could leave the subcell tile plane in a weird
* state. * state.
*/ */
SigDisableInterrupts(); SigDisableInterrupts();
dbInstanceUnplace(use);
use->cu_parent->cd_flags |= CDMODIFIED|CDGETNEWSTAMP; use->cu_parent->cd_flags |= CDMODIFIED|CDGETNEWSTAMP;
if (UndoIsEnabled()) if (UndoIsEnabled())
DBUndoCellUse(use, UNDO_CELL_DELETE); DBUndoCellUse(use, UNDO_CELL_DELETE);

View File

@ -29,6 +29,7 @@ static char rcsid[] __attribute__ ((unused)) = "$Header: /usr/cvsroot/magic-8.0/
#include "tiles/tile.h" #include "tiles/tile.h"
#include "utils/signals.h" #include "utils/signals.h"
#include "utils/hash.h" #include "utils/hash.h"
#include "utils/undo.h"
#include "database/database.h" #include "database/database.h"
#include "database/databaseInt.h" #include "database/databaseInt.h"
#include "utils/malloc.h" #include "utils/malloc.h"
@ -829,6 +830,8 @@ DBClearCellPlane(def)
int dbDeleteCellUse(CellUse *use, ClientData arg) int dbDeleteCellUse(CellUse *use, ClientData arg)
{ {
dbInstanceUnplace(use); dbInstanceUnplace(use);
if (UndoIsEnabled())
DBUndoCellUse(use, UNDO_CELL_DELETE);
return 0; return 0;
} }