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.
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.
where the function drcFindOtherCells() was missing, which causes
interaction areas to be missed and messes up the DRC checks between
parent and child cells.
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.
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".
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.
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.
to have come from an unfinished (or at least unchecked) development
effort on improving the checks for DRC interaction errors (which
also affects extraction).
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.