mirror of
https://github.com/RTimothyEdwards/magic.git
synced 2026-10-06 09:53:00 +02:00
Additional change: The switch to propagating DRC errors up from
the bottom in non-interacting areas means that any change in DRC to a subcell must be handled before checking DRC in the parent. Previously the order of checks was reversed, moving parent cells to the beginning of the check list. This prevents the error cited in the previous commit which was showing up as a delayed DRC check when creating parameterized cells.
This commit is contained in:
@@ -208,6 +208,13 @@ DRCCheckThis (celldef, operation, area)
|
||||
/* Insert celldef into list of Defs waiting to be checked, unless */
|
||||
/* it is already there. */
|
||||
|
||||
#if (0)
|
||||
|
||||
/* The switch to copying up DRC errors from non-interacting */
|
||||
/* child cells means that the child cells must be processed */
|
||||
/* first. So this routine changes from prepending the cell */
|
||||
/* to the list to appending it. */
|
||||
|
||||
pback = &DRCPendingRoot;
|
||||
p = DRCPendingRoot;
|
||||
|
||||
@@ -229,6 +236,33 @@ DRCCheckThis (celldef, operation, area)
|
||||
p->dpc_next = DRCPendingRoot;
|
||||
DRCPendingRoot = p;
|
||||
|
||||
#endif
|
||||
/* Append new cell to check to the pending list */
|
||||
if (DRCPendingRoot == NULL)
|
||||
{
|
||||
p = (DRCPendingCookie *) mallocMagic(sizeof (DRCPendingCookie));
|
||||
p->dpc_def = celldef;
|
||||
p->dpc_next = NULL;
|
||||
DRCPendingRoot = p;
|
||||
}
|
||||
else
|
||||
{
|
||||
DRCPendingCookie *plast;
|
||||
plast = DRCPendingRoot;
|
||||
while (plast->dpc_next != NULL)
|
||||
{
|
||||
if (plast->dpc_def == celldef) break;
|
||||
plast = plast->dpc_next;
|
||||
}
|
||||
if (plast->dpc_next == NULL)
|
||||
{
|
||||
p = (DRCPendingCookie *) mallocMagic(sizeof (DRCPendingCookie));
|
||||
p->dpc_def = celldef;
|
||||
p->dpc_next = NULL;
|
||||
plast->dpc_next = p;
|
||||
}
|
||||
}
|
||||
|
||||
/* Mark the area in this celldef (but don't worry about this stuff
|
||||
* for undo purposes). Also, it's important to disable interrupts
|
||||
* in here, or the paint operation could get aborted underneath us.
|
||||
|
||||
@@ -363,8 +363,6 @@ proc magic::gencell_change {instname gencell_type library parameters} {
|
||||
eval "box values $savebox"
|
||||
snap $snaptype
|
||||
resumeall
|
||||
puts stdout "Done."
|
||||
drc check
|
||||
redraw
|
||||
}
|
||||
|
||||
@@ -474,8 +472,6 @@ proc magic::gencell_create {gencell_type library parameters} {
|
||||
snap $snaptype
|
||||
resumeall
|
||||
redraw
|
||||
puts stdout "Done."
|
||||
drc check
|
||||
return $instname
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user