Commit Graph

21 Commits

Author SHA1 Message Date
Tim Edwards db4fa65bfc Corrected some issues related to the handling of substrate hierarchy.
Most of this had to do with the incorrect use of the parent's substrate
name in extHierSubstrate().  After the correction, there still remains
an issue that is caused when a labeled isolated substrate region overlaps
an extraction tile boundary.  I believe that this particular error has
existed for some time and is not new, so I am committing these changes.
2022-02-24 16:47:11 -05:00
Tim Edwards f8390b78f8 Tackling a section of code with poor performance in extraction.
The extSubtree() routine cuts a layout into squares and extracts
each separately, checking for subcell interactions.  In each
square it parses all labels looking for unconnected ones.  This
section of code not only parses all labels M x N times, but it
then marks interaction areas where there may be none, forcing
additional unnecessary processing.  This commit makes the first
quick optimization, which is to change the return value of
DRCFindInteractions() from boolean to integer, allowing it to
return a value indicating that there are no subcells in the
area.  This prevents the loop through labels from happening in
cases where there can never be interactions.  More to come.
2022-02-20 17:36:49 -05:00
Tim Edwards 56d1d9380e Corrected an error caused by the modifications to the DRC engine
to copy up errors from non-interacting subcells.  The routine was
only copying up TT_ERROR_P type errors, but for deep hierarchies,
TT_ERROR_S type errors may have to be propagated up as well.
2021-08-20 21:49:27 -04:00
Tim Edwards 94a6daa9b0 Corrected the array DRC checking, which was clipping to the error
area + halo but then failing to limit overlap checks to that clip
area, resulting in bizarre errors whenever an array is made.  Not
sure why the error didn't show up more often.
2021-05-07 10:42:44 -04:00
Tim Edwards 2d79e0e0ce Corrected variables that set the PaintPlane routine, which had been
changed from returning void to returning int without changing the
type of the variable, thus causing a compiler warning.
2021-02-18 15:47:40 -05:00
Tim Edwards 48b04385c3 Corrected an error with the new off-grid DRC check that can cause
a crash condition during GDS read-in.
2021-02-16 10:05:59 -05:00
Tim Edwards e53a23de59 Added an "off-grid geometry" check, in two versions. The simple
one is an "off_grid" DRC type, which can be used to check geometry
that is below the manufacturing grid.  Normally magic prevents the
grid from being subdivided below the manufacturing grid, but this
limit can be removed and replaced by DRC checks to check for such
errors in a GDS file of unknown origin.  The second version looks
for interactions between subcells that end up with intersections
of non-manhattan geometry landing on points that are not on the
database internal grid.  Such errors cannot be seen by magic's DRC
engine by definition, and so must be detected while flattening
geometry for the DRC checks.
2021-02-04 17:35:43 -05:00
Tim Edwards 114982fc72 Corrected the handling of DRC in cell instance arrays so that it matches
the handling of subcell instances generally.  Previously it would check
the interaction between neighboring cells in an array without regard to
any material in the parent cell which might remove those errors;
consequently, the array would have to be DRC clean by itself in order for
the parent cell to show as DRC clean.  The array check has been moved
inside the DRCInteractionCheck() routine, so that it runs only where
arrayed instances do not interact with anything else.  Within interaction
areas, the area is flattened and checked, so the array check is not
needed.
2020-11-11 11:50:16 -05:00
Tim Edwards be17067e13 Corrected a problem with argument passing in the DRC subcell
copying up of DRC errors into the parent cell.
2020-10-22 10:44:59 -04:00
Tim Edwards 6b633be797 Corrected the algorithm created yesterday for copying up DRC errors
from child cells, which was incorrectly descending all the way down
into the hierarchy;  not only can this produce the incorrect result
but it also wastes time searching cells that don't need to be
searched.
2020-10-17 11:26:01 -04:00
Tim Edwards 2a4baa82c3 Substantially overhauled the way that the DRC checker finds and
processes "interaction areas".  This should eliminate weirdnesses
where errors will fail to show up in a subcell that does not
interact with paint or other subcells in the top level edit cell.
These errors cannot be reported directly in the top level cell,
but a new error message has been created to direct the user to
check the subcell for errors.  Also:  Modified the toolkit procedures
to force DRC to be run on newly created or modified parameterized
cell layouts.  There is some oddity about the process that causes
DRC errors to be delayed unless a print statement is put before the
DRC check;  I would like to investigate this further.
2020-10-15 17:31:20 -04:00
Tim Edwards 2af38a4191 Updates from running the fix-ending-whitespace script. 2020-05-23 17:13:14 -04:00
Tim Edwards 4777ced813 Corrected the bplane branch implementation of DRCFindInteractions,
where the function drcFindOtherCells() was missing, which causes
interaction areas to be missed and messes up the DRC checks between
parent and child cells.
2020-03-22 17:08:21 -04:00
Tim Edwards cd87b08b21 Merge branch 'master' into bplane
Conflicts:
	VERSION
	database/DBcellsrch.c
	database/DBconnect.c
	extract/ExtInter.c
	lef/Depend
	utils/Depend

Updated bplane branch with all changes to master since the bplane branch
was last modified.
2020-03-12 08:29:33 -04:00
Tim Edwards 2beb5ee0e9 Modified the handling of "why" strings in the DRC mechanism, so that
DRC records contain an index into a string array instead of containing
a copy of a string.  This is preliminary to changing the way the DRC
error plane is painted, so that the types painted will mark the error
type.  This will (1) allow "drc why" to simply scan the DRC error
plane rather than running the DRC engine, (2) allow DRC errors to be
counted by area rather than by tile, and (3) let the DRC count be the
same whether done by "drc listall why" or "drc count".
2020-02-25 13:57:41 -05:00
Tim Edwards 1d04f20f5d Moved new work on magic-8.4 (experimental merging of micromagic bplane structure
into magic-8.2) into the newly-reorganized git repo as branch "bplane".
2019-03-22 19:58:47 -04:00
Tim Edwards b2b6882096 Once again reworked the DRC code. The function that clears DRC
errors from the area checked must use the same area as is used
by the interaction checker to recompute errors.  In earlier code,
both these areas were much larger than necessary.  In the last
code update, the area to make revised checks was reduced, but
the area cleared of errors was not, resulting in errors that
would disappear from the layout as paint changes were made, until
a full "drc check" was run again.  This code commit makes the
areas the same again so that no errors are lost.
2018-03-19 14:57:31 -04:00
Tim Edwards 6492061480 Corrected two errors in the DRC checking, one of which passed a
much larger area than necessary to the interaction check, and
the other which failed to scale the tech halo distance down
after scaling all the rules.  Both of these led to huge areas
of a layout being unnecessarily checked when even a tiny part
of the layout was modified.  Corrected behavior matches
expectations for interactive DRC response.
2018-03-15 10:51:07 -04:00
Tim Edwards 4af736b18a Corrected error in the extraction for magic-8.2 (only) that appears
to have come from an unfinished (or at least unchecked) development
effort on improving the checks for DRC interaction errors (which
also affects extraction).
2017-12-14 16:55:06 -05:00
Tim Edwards f116c1e448 Experimental change in the way hierarchical DRC is handled. To
avoid the problem where subcells violate DRC themselves but do
not violate DRC in the context of the parent (i.e., the parent
adds metal to avoid minimum area error), DRC errors in subcells
are neither counted nor displayed, but they remain present in
the subcell database.  The DRC check enumerates all subcell
errors as mandatory check areas in DRCFindInteractions(), so
that those areas are always counted with the interaction areas.
Previously, if a subcell violated a DRC rule by itself, that
error would be counted and displayed in the parent even if the
parent had paint causing the error to no longer exist.
2017-10-06 12:38:48 -04:00
Tim Edwards 231a299b16 Initial commit at Tue Apr 25 08:41:48 EDT 2017 by tim on stravinsky 2017-04-25 08:41:48 -04:00